简易深度学习(1)深入分析神经元及多层感知机

一、神经元

单个神经元结构其实可以认为是一个线性回归模型。例如下图中

该神经元输入为三个特征(x1,x2,x3),为了方便理解,大家可以认为每条线上都有一个权重和特征对应(w1,w2,w3)。当w1x1+w2x2+w3x3输入到神经元时,会加入一个偏置b,变为w1x1+w2x2+w3x3+b。我们可以把这个值当作f(x)。然后把f(x)送入激活函数比如sigmoid。最后得到的输出结果g(x) = sigmoid(f(x))。最后的g(x)作为xn会输入到下一个神经元。

记忆技巧tips:每个神经元,有多少个输入特征就有多少个边,边上就有多少个w,但有且只有一个b。

在这里插入图片描述

图1


二、MLP

多个神经元按照一层层连接就组成了多层感知机(MLP)。如果是全连接网络((Fully Connected Netural Network,FCN),则每个神经元都会和它前层、后层所有神经元相连。

1、结构

(1)图2,是两层全连接神经网络,明明是三层为什么叫两层神经网络?不是输入层(第0层),隐藏层,和输出层三层吗?在书中,只有隐藏层和输出层算层,输入层不算。可能设计输入的第0层的原因是:

可以理解为这一层主要是处理数据,也就是变换X,比如让数据归一化,one-hot编码什么的。

在这里插入图片描述

图2


(2)上图是课本标准的多层神经网络,下面是为了理解绘制的不标准的示意图。其中画虚线的部分(第0层和第3层)不算神经网络的层,它只是最初的输入数据和最后的输出数据,是个名词相当于一个变量。我们看第1层(隐藏层)做了什么,它把第0层的输入x1和x2变为了输出(把黄色和绿色的线变为紫色)。第二层输出层把隐藏层的输出变为了整体的输出y(把紫色的线变为蓝色的线)。大家可以看出神经网络的层类似于动词相当于一个函数。下面的图是为了方便大家理解,如果绘制的话,还是要按照标准来。

在这里插入图片描述

图3


(3)每一层有n个神经元,为了区分不同神经元上的w,使用带两个数字的w(第一个数字是连接到本层个神经元,第二个数字是上层个神经元)来标识,比如图4,第1层的神经元中,w11标识本层第一个神经元和上层第一个神经元相连,w32表示本层第三个和上层第二个相连。b的话就是本层第几个神经元就是b几,比如b2表示本层第二个神经元上的偏置。
在这里插入图片描述

图4


(4)我们再把视野扩大,刚刚说的是一层,如何标识不同的w和b呢,比如第1层的w11和第2层的w11如何区别呢?一般我们会使用参数上标来标识是第几层的参数。如下图,比如w1表示第一层的w

在这里插入图片描述

图5


tips:其实在日常情况下使用上标标识第几层,使用下标来标识参数关系的,比如w[1]11 这是标准写法,而不是w[1]11

2、分类 or 回归

回归:最后的输出层只有一个神经元,一般预测结果是float值,比如根据x1房子面积,x2房子年龄,预测最后的房屋价格。
分类:几个分类,最后输出层就有几个神经元。比如猫狗二分类,最后输出层是两个神经元,如果最后是十分类,那么最后一层就是十个神经元。

图6

图6




3、前向传播

(1)从神经网络前面把数据从输入到输出的过程为前向传播。比如图2,数据x1,x2输入到隐藏层1,然后计算后输入到输出层,最后输出结果。
类似线性模型,即输入x,使用参数w,b计算wx+b的过程。
(2)平时都是按照一个批次进行矩阵计算的,下面是批量为3时输入到图5第一层神经网络的情况。
输入的数据为(批量*特征个数)形状的矩阵,
隐藏层的参数W为(特征个数*本层神经元个数)形状的矩阵,
b为(1*神经元个数)形状的向量。
在这里插入图片描述

图7




4、反向传播

反向传播的是梯度,梯度下降是为了优化每一层的参数。
step1:
神经网络最后的输出结果为y_hat,训练数据中的标签为y,使用损失函数计算两者的误差。此时,第2层的w、b参数可以使用梯度下降直接更新了,因为本层的w,b直接组成了loss函数即 :   loss(w[2]11O1+w[2]12O2+w[2]13O3+w[2]14O4+b[2]1-y),比如该值为loss1,loss1对w[2]11求偏导,然后乘以学习率得出更新的值,w[2]11减去更新的值即为更新后的w[2]11
step2:
把第2层的梯度传到第1层,根据链式法则,第1层的参数可以进行更新。
在这里插入图片描述

图8


下面我们举个例子详细说一下反向传播梯度。
下图中x,y,z都可以看作是w参数,f函数看为损失函数。绿色为特征x,y,z现在的值,红色为对应的导数(梯度)。比如求x的梯度,根据链式法则,先f对q求导,然后求q对x的导数,结果为-4*1,1是本地计算的梯度,-4是反向传过来的梯度。

在这里插入图片描述

图9 图片来源:李飞飞cs231n 2017_lecture4




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/35469.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从源码到上线:直播带货系统与短视频商城APP开发全流程

很多人问小编,一个完整的直播带货系统和短视频商城APP是如何从源码开发到最终上线的呢?今天,笔者将详细介绍这一全过程。 一、需求分析与规划 1.市场调研与需求分析:首先需要进行市场调研,了解当前市场的需求和竞争情…

入职必备-Git 2种方式拉取代码

【SSH方式】: 1.复制电子邮箱 2.git bash 打开窗口 ssh-keygen -t rsa -C liuchangprimecare.group 3.一路回车,然后查看C:\Users\LiuChang.ssh里面的文件 打开id_rsa.pub文件,复制代码 4.添加到GitLab的公钥输入框 5.然后 git clone gitgitlab.pr…

使用容器配置文件构建任意应用镜像_并将应用镜像推送到公共仓库共享_应用分享与启动---分布式云原生部署架构搭建012

上面我们编写好了应用,并且,安装好了redis 现在我们把应用打包成镜像. 以前是这样做的,不方便,因为需要在服务器上,安装jdk什么的,现在有了 镜像就不用,给服务器安装镜像什么的了 以后所有机器都安装docker以后,就直接运行就可以了 首先看一下,安装java应用,需要 用到openjd…

指纹浏览器是什么?跨境多账号安全如何保证?

随着电子商务的蓬勃发展,越来越多的商家选择开设多店来扩大经营规模。然而多店运营也带来了一系列的挑战,其中之一就是账号安全。 1. 了解反检测浏览器和代理服务器 在我们开始讨论如何有效地使用反检测浏览器之前,我们首先需要了解这两个工…

openlayer 我的标注功能

背景: 通过openlayer库,可以在地图上实现绘制点、线、面。 并把绘制的结果添加到我的标注的弹框。 我的标注功能,包括:我的标注查询结果的数据展示;添加分组;添加我的标注;编辑分组、删除分组&a…

经典神经网络(13)GPT-1、GPT-2原理及nanoGPT源码分析(GPT-2)

经典神经网络(13)GPT-1、GPT-2原理及nanoGPT源码分析(GPT-2) 2022 年 11 月,ChatGPT 成功面世,成为历史上用户增长最快的消费者应用。与 Google、FaceBook等公司不同,OpenAI 从初代模型 GPT-1 开始,始终贯彻只有解码器&#xff0…

【机器学习300问】134、什么是主成分分析(PCA)?

假设你的房间堆满了各种各样的物品,书籍、衣服、玩具等等,它们杂乱无章地散落各处。现在,你想要清理房间,但又不想扔掉任何东西,只是希望让房间看起来更整洁,更容易管理。 你开始思考,能否将物品…

以数治税时代来临,企业如何应对?

全电发票是数字经济时代发票的新形态,顺应了数字经济潮流。现如今,国家正全力推动行业数字化进程,预计,2025年将基本实现发票全领域、全环节、全要素电子化,实现税务执法、服务、监管与大数据智能化应用深度融合、高效…

Spring事务的源码底层实现

文章目录 事务理论执行过程EnableTransactionManagement底层实现 事务 在线流程图 理论执行过程 通过事务管理器创建一个连接对象connection1设置事务隔离级别、是否只读等conn1.autocommit(false)将conn1存入ThreadLocal中Map<DataSource,Connection>执行目标方法、多…

Session会话与请求域的区别

session会话和请求域&#xff08;也称为request域&#xff09;都是用于存储和管理用户特定信息的重要概念&#xff0c;但它们在作用范围和生命周期上有显著的不同。 请求域 (Request Domain) 作用范围&#xff1a;请求域是面向单次请求的。每次HTTP请求都会创建一个新的request…

Java中的程序异常处理介绍

一、异常处理机制 Java提供了更加优秀的解决办法&#xff1a;异常处理机制。 异常处理机制能让程序在异常发生时&#xff0c;按照代码的预先设定的异常处理逻辑&#xff0c;针对性地处理异常&#xff0c;让程序尽最大可能恢复正常并继续执行&#xff0c;且保持代码的清晰。 Ja…

算法刷题日志 —— 数组和位运算

文章目录 [461. 汉明距离](https://leetcode.cn/problems/hamming-distance/submissions/542447020/)[448. 找到所有数组中消失的数字](https://leetcode.cn/problems/find-all-numbers-disappeared-in-an-array/submissions/)[136. 只出现一次的数字](https://leetcode.cn/pro…

最长回文串

描述&#xff1a; 最长回文串 思路&#xff1a; 统计每个字母出现次数&#xff0c;如果是偶数&#xff0c;ret x;如果是存在奇数的话&#xff0c;就可以放在中间&#xff0c;ret 1. 代码&#xff1a; class Solution { public:int hash[200];int longestPalindrome(str…

AI智能修复视频,垃圾画质也变高清 HD——牛小影

很多时候&#xff0c;从网上下载的视频或监控视频都是模糊的。有什么方法或者软件可以让哪些模糊的视频恢复清晰吗&#xff1f;今天就给大家推荐一个可以使模糊的视频变清晰的软件。 我们都知道用PS或者一些修复工具可以修复模糊的图片&#xff0c;但是很多人不知道的是视频也可…

构建LangChain应用程序的示例代码:46、使用 Meta-Prompt 构建自我改进代理的 LangChain 实现

Meta-Prompt 实现 摘要&#xff1a; 本文介绍了 Noah Goodman 提出的 Meta-Prompt 方法的 LangChain 实现&#xff0c;该方法用于构建能够自我反思和改进的智能代理。 核心思想&#xff1a; Meta-Prompt 的核心思想是促使代理反思自己的性能&#xff0c;并修改自己的指令。…

上班族要怎么挑选智能猫砂盆?今年最受欢迎的牌子都在这里了!

对于上班族来说&#xff0c;猫砂盆里的猫屎到底该如何是好&#xff0c;放到下班回来再铲&#xff0c;猫砂的臭味早就飘满屋子&#xff0c;想立刻铲掉吧&#xff0c;班不要上啦&#xff1f;可是不铲就会生细菌&#xff0c;谁也不想花个几千块去给猫咪看病吧&#xff0c;谁不希望…

Linux:进程和计划任务管理

目录 一、程序和进程 1.1、程序 1.2、进程 1.3、线程 1.4、协程 二、查看进程相关命令 2.1、ps命令&#xff08;查看静态的进程统计信息&#xff09; 第一行为列表标题&#xff0c;其中各字段的含义描述如下 2.2、top命令&#xff08;查看进程动态信息&#xff09; 2…

商城积分系统的设计方案(上)-- 需求分析

一、背景 用户在参与公司的促销活动&#xff0c;比如邀请用户下单支付&#xff0c;可以获得虚拟货币。它可以用于解锁学习课程。 商品在定价的时候&#xff0c;需支持虚拟货币&#xff0c;用户在购买该商品的时候&#xff0c;可使用虚拟货币进行支付。 在电商体系中&#xf…

PID算法介绍以及代码实现过程说明

写在正文之前 在上一篇文章就说会在这两天会基于PID写一个文章&#xff0c;这里的原理部分值得大家都看一下&#xff0c;代码部分的实现是基于python的&#xff0c;但是对于使用其他编程语言的朋友&#xff0c;由于我写的很通俗易懂&#xff0c;所以也值得借鉴。 一、PID算法…

linux基于wifi,Xshell的远程连接

最近有个比赛&#xff0c;要使用ros小车但是系统是ubuntu20.04无桌面系统刚开始接触linux的我啥都不会&#xff0c;就一个简单的连接wifi都搞了3天才搞通。再此进行一个总结。参考博客原文链接&#xff1a;https://blog.csdn.net/qq_51491920/article/details/126221940 一、什…