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

ops/2024/9/23 10:39:54/

一、神经元

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

该神经元输入为三个特征(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.ppmy.cn/ops/53649.html

相关文章

LeetCode 每日一题 2024/6/24-2024/6/30

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 6/24 503. 下一个更大元素 II6/25 2732. 找到矩阵中的好子集6/26 2741. 特别的排列6/27 2734. 执行子串操作后的字典序最小字符串6/28 2742. 给墙壁刷油漆6/29 2710. 移除字…

C# Web控件与数据感应之数据返写

目录 关于数据返写 准备视图 范例运行环境 ControlInducingFieldName 方法 设计与实现 如何根据 ID 查找控件 FindControlEx 方法 调用示例 小结 关于数据返写 数据感应也即数据捆绑,是一种动态的,Web控件与数据源之间的交互,数据…

react native优质开源项目

React Native 是一个非常流行的用于构建跨平台移动应用程序的框架,开源社区贡献了许多优质的项目和库。以下是一些备受认可的 React Native 开源项目,适合用来学习和参考: ### 1. **React Native Elements** [React Native Elements](https:…

社交App广告优化新篇章:Xinstall引领用户体验升级,助力买量效果提升

随着移动互联网的快速发展,社交App已经成为人们生活中不可或缺的一部分。然而,在竞争激烈的市场环境下,如何有效地进行广告投放,吸引并留住用户,成为了每个社交App运营者面临的重大挑战。今天,我们就来谈谈…

MongoDB的核心点是什么,选择是否使用!

MongoDB概述 定义: MongoDB是一个文档数据库,设计目的在于简化应用程序的开发和扩展。起源: 由DoubleClick创始人Dwight Merriman和Kevin O’Connor于2007年启动,以应对大规模流量需求。 MongoDB发展历程 开发背景: 由于关系型数据库无法满足DoubleCl…

MySQL之索引失效的情况

什么情况下索引会失效? 违反最左前缀原则范围查询右边的列不能使用索引不要在索引列上进行运算操作字符串不加单引号导致索引失效以%开头的like模糊查询 什么情况下索引会失效? 示例,有user表如下 CREATE TABLE user (id bigint(20) NOT NU…

【高考志愿】机械工程

目录 一、专业概述 二、学科特点 三、就业前景 四、机械工程学科排名 五、专业选择建议 高考志愿选择机械工程,这是一个需要深思熟虑的决定,因为它不仅关乎未来的学习和职业发展,更是对自我兴趣和潜能的一次重要考量。 一、专业概述 机…

Visual Studio 工具使用 之 即时窗口

即时窗口:是Visual Studio中的一个调试工具,它允许开发人员在调试过程中执行代码并查看结果。开发人员可以在即时窗口中输入和执行表达式、调用方法,并查看变量的值。即时窗口通常用于调试过程中的快速测试和验证代码的正确性。 就是下面的这…