1. 权重初始化
- 不初始化时,为0学不到东西
- 应使各层的激活值既不饱和也不为0,正确的初始化可以加快收敛,降低梯度消失、爆炸的风险
- 常见的初始化方法,小随机数初始化、服从一个多变量高斯分布或多变量均匀分布
- 初始化不合适,训练变慢难收敛
诊断方法- 观察所有层的激活值和梯度分布的柱状图
例:双曲正切激活函数在区间[-1,1]内都有分布,全为0或者全饱和都是有问题的 - 检查每一层的激活值和梯度方差
- 观察所有层的激活值和梯度分布的柱状图
2. 偏置初始化
b:0
(relu有时用一个小值如0.01)
3. 损失函数loss
loss函数是定量估测预测值和目标值的偏差
L
(
w
,
x
,
y
)
=
1
N
∑
i
L
i
(
f
(
x
i
,
w
)
,
y
i
)
L(w, x, y)=\frac{1}{N}\sum_iL_i(f(x_i, w),y_i)
L(w,x,y)=N1i∑Li(f(xi,w),yi)
其中,N是数据集数量,{(
x
i
x_i
xi,
y
i
y_i
yi),…} 数据集,
x
i
x_i
xi是数据图像,
y
i
y_i
yi是标签值,w参数矩阵
其中
L
i
L_i
Li需要根据网络不同进行不同的设置
如:
- 针对回归问题
- 均方误差(MSE)
L = 1 N ∑ ∣ y i − s i ∣ 2 L=\frac1N\sum|y_i-s_i|^2 L=N1∑∣yi−si∣2
y i y_i yi为目标标签值, s i s_i si是输出的预测值
- 针对分类问题
- 交叉熵损失函数
交叉熵的含义:两个概率分布之间的差异程度(相关程度)
设有两概率分布: p ( x ) p(x) p(x), q ( x ) q(x) q(x) p表示目标分布, q表示预测分布,有
H ( p , q ) = − ∑ x p ( x ) log ( q ( x ) ) H(p, q)=-\sum_x p(x)\log(q(x)) H(p,q)=−x∑p(x)log(q(x))
注意: H ( p , q ) ≠ H ( q , p ) H(p,q)≠H(q,p) H(p,q)=H(q,p)
物理意义:用 q ( x ) q(x) q(x)来表示概率 p ( x ) p(x) p(x)的困难程度
交叉熵损失函数
L = − ∑ i y i log f ( x i , w ) L=-\sum_iy_i\log {f(x_i, w)} L=−i∑yilogf(xi,w)
其中 f ( x i , w ) f(x_i, w) f(xi,w)为输出分布, y i y_i yi取值范围为0或1, 其中目标类别取1,其他类别为0, w w w为参数矩阵 - Softmax
f ( x i , w ) = e s i ∑ j e s j f(x_i,w)=\frac{e^{s_i}}{ \sum_j e^{s_j}} f(xi,w)=∑jesjesi
s i s_i si:输入样本 x i x_i xi时,softmax层之前的神经网络的输出得分
4.反向传播
逐层反向求损失函数对神经网络参数矩阵的梯度,用于参数更新
-
法则1、感知器法则(前提数据是线性可分的)
训练过程:从随机参数开始用感知器对每一个训练数据进行训练,当错误分类时,修改参数,如此重复,直到正确分类所有训练数据。
w i ← w i + Δ w i w_i \leftarrow w_i + \Delta w_i wi←wi+Δwi Δ w i ← η ( t − o ) x i \Delta w_i \leftarrow \eta(t-o)x_i Δwi←η(t−o)xi
x i x_i xi是第 i i i个输入, w i w_i wi每次训练时 x i x_i xi对应的参数
w i w_i wi修正值, t t t是当前训练数据目标标签, o o o是感知器输出, η \eta η是学习速率,通常设为较小的值,如0.1、0.01,且会随训练数据的增加而变小。 -
法则2、delta法则
BP反向传播 (backpropagation)
使用梯度下降法来逐步逼近最佳参数
输出 o = w x o=wx o=wx
均方差损失
E ( w i , x ) = 1 2 ∑ d ∈ D ( t d − o d ) 2 E(w_i, x)=\frac12\sum_{d\in D}(td-od)^2 E(wi,x)=21d∈D∑(td−od)2
其中,D训练数据集, t d td td输入d的目标输出, o d od od实际预测输出
从随机参数开始,以很小的步伐,每一步都沿着梯度方向,修改参数,反复执行,知道找到全局最小误差点
w ← w + Δ w w \leftarrow w + \Delta w w←w+Δw Δ w ← − η ∇ E ( w ) \Delta w \leftarrow -\eta\nabla E(w) Δw←−η∇E(w)
其中 η \eta η为梯度下降中的步长,负号代表参数方向损失函数E下降的方向移动
w i ← w i + Δ w i w_i \leftarrow w_i + \Delta w_i wi←wi+Δwi Δ w i ← − η ∂ E ∂ w i \Delta w_i \leftarrow -\eta\frac {\partial E}{\partial{w_i}} Δwi←−η∂wi∂E Δ w i ← η ∑ d ∈ D ( t d − o d ) ∂ o d − t d ∂ w i = η ∑ d ∈ D ( t d − o d ) x i d \Delta w_i \leftarrow \eta\sum_{d\in D}(td-od)\frac {\partial od-td}{\partial{w_i}} = \eta\sum_{d\in D}(td-od)x_{id} Δwi←ηd∈D∑(td−od)∂wi∂od−td=ηd∈D∑(td−od)xid
链式法则:将链路中所有局部梯度相乘
神
经
元
:
∂
z
∂
x
、
∂
z
∂
y
神经元: \frac{\partial z}{\partial x} 、\frac{\partial z}{\partial y}
神经元:∂x∂z、∂y∂z
X
:
∂
l
∂
x
=
∂
l
∂
z
∂
z
∂
x
X: \frac{\partial l}{\partial x} = \frac{\partial l}{\partial z} \frac{\partial z}{\partial x}
X:∂x∂l=∂z∂l∂x∂z
Y
:
∂
l
∂
y
=
∂
l
∂
z
∂
z
∂
y
Y: \frac{\partial l}{\partial y} = \frac{\partial l}{\partial z} \frac{\partial z}{\partial y}
Y:∂y∂l=∂z∂l∂y∂z