task3前馈神经网络
(Datawhale31期组队学习)
文章目录
基础点
- 神经元模型
- 神经元(M-P)
- 网络结构
- 感知器、多层感知器
- 单层感知器
- 多层感知器
- BP算法
- 基本过程
- 激活函数
- 示例
- 优化
知识点
1 神经元模型
神经网络是最早的一种连接模型
1.1 神经元(M-P)
M-P模型,神经元接受其他n个神经元输入信号(0or1),经权重加权求和,结果与阈值(threshold) θ 比较,经过激活函数处理得到神经元输出。(人为确定参数)
y
=
f
(
∑
i
=
1
n
w
i
j
x
i
−
θ
)
y=f(\sum_{i=1}^nw_{ij}x_i-θ)
y=f(i=1∑nwijxi−θ)
运算:
- 取反,单输入单输出
- 逻辑或、逻辑与,双输入单输出
1.2 网络结构
神经元模型构成,由许多神经元组成的信息处理网络具有并行分布结构
一个圆点表示一个神经元,方形点表示一组神经元。
2 感知器
2.1 单层感知器-线性可分
-
通过训练自动确定参数
-
有监督学习,设定样本与期望,调整实际输出与期望输出之差(误差修正学习)
w i ← w i + α ( γ − y ) x w_i \leftarrow w_i+\alpha(\gamma-y)x wi←wi+α(γ−y)x θ ← θ − α ( γ − y ) \theta \leftarrow \theta - \alpha(\gamma-y) θ←θ−α(γ−y)
α \alpha α学习率, γ \gamma γ期望输出, y y y实际输出 -
调整权重
- 实际输出y与期望输出r相等, w w w、 θ \theta θ 不变
- 实际输出y与期望输出r不相等,按公式调整
w
w
w、
θ
\theta
θ
-
训练
2.2 多层感知器-线性不可分
多层感知器指的是由多层结构的感知器递阶组成的输入值向前传播的网络,也被称为前馈网络或正向传播网络。
- 与M-P模型相同,中间感知器通过权重与输入层各单元相连接,通过阈值函数计算中间层各单元的输出值
- 中间层与输出层间同样通过权重连接
3 BP算法
误差反向传播算法(ErrorBackPropagation)BP算法:训练调整参数。
3.1 过程
- 前向传播计算:由输入层经过隐含层向输出层的计算网络输出
- 误差反向逐层传递:网络的期望输出与实际输出之差的误差信号由输出层经过隐含层逐层向输入层传递
- 由“前向传播计算”与“误差反向逐层传递”的反复进行的网络训练,调整各层的连接权重以减小误差,到达阈值后训练好模型
- 调整方法:典型的梯度下降法
Δ w = − α ∂ E ∂ w \Delta w = - \alpha \frac{\partial E}{\partial w} Δw=−α∂w∂E
3.2 激活函数
- M-P 模型中使用阶跃函数作为激活函数,只能输出 0或 1,不连续所以 不可导
- Sigmoid函数,可导,用于二分类
d f ( u ) d u = f ( u ) ( 1 − f ( u ) ) \frac{df(u)}{du}=f(u)(1-f(u)) dudf(u)=f(u)(1−f(u))
- ReLU(修正线性单元)
- tanh
3.3 BP示例
包含一个中间层和一个输出单元 y y y的多层感知器为例: w 1 i j w_{1ij} w1ij表示输 入层与中间层之间的连接权重, w 2 j 1 w_{2j1} w2j1表示中间层与输出层之间的连接权重, i i i表示输入层单元, j j j表示中间层单元
- 调整中间层与输出层之间的连接权重,
y
=
f
(
u
)
y=f(u)
y=f(u),
f
f
f是激活函数,
u
21
=
∑
j
=
1
m
w
2
j
1
z
j
u_{21}=\sum_{j=1}^mw_{2j1}z_j
u21=∑j=1mw2j1zj,把误差函数E对连接权重
w
2
j
1
w_{2j1}
w2j1的求导展开复合函数求导:
∂ E ∂ w 2 j 1 = ∂ E ∂ y ∂ y ∂ u 21 ∂ u 21 ∂ w 2 j 1 = − ( r − y ) y ( 1 − y ) z j \frac{\partial E}{\partial w_{2j1}}=\frac{\partial E}{\partial y} \frac{\partial y}{\partial u_{21}} \frac{\partial u_{21}}{\partial w_{2j1}} =-(r-y)y(1-y)z_j ∂w2j1∂E=∂y∂E∂u21∂y∂w2j1∂u21=−(r−y)y(1−y)zj
z j z_j zj中间层的值 - 中间层到输出层的连接权重调整值
Δ w 2 j 1 = α ( r − y ) y ( 1 − y ) z j \Delta w_{2j1}= \alpha(r-y)y(1-y)z_j Δw2j1=α(r−y)y(1−y)zj - 调整输入层与中间层间的连接权重
∂ E ∂ w 1 i j = ∂ E ∂ y ∂ y ∂ u 21 ∂ u 21 ∂ w 1 i j = − ( r − y ) y ( 1 − y ) ∂ u 21 ∂ w 1 i j \frac{\partial E}{\partial w_{1ij}}=\frac{\partial E}{\partial y} \frac{\partial y}{\partial u_{21}} \frac{\partial u_{21}}{\partial w_{1ij}} =-(r-y)y(1-y) \frac{\partial u_{21}}{\partial w_{1ij}} ∂w1ij∂E=∂y∂E∂u21∂y∂w1ij∂u21=−(r−y)y(1−y)∂w1ij∂u21
中间层到输出层
输入层到中间层
4 优化问题
4.1 难点
- 参数过多,影响训练
- 非凸优化问题,即存在局部最优而非全局最优解,影响迭代
- 梯度消失问题,下层参数比较难调
- 参数解释起来比较困难
4.2 需求
- 计算资源更大
- 数据要多
- 算法效率要好,及收敛好
4.3 非凸优化问题
4.4 梯度消失问题
参考
- https://datawhalechina.github.io/unusual-deep-learning