【原创】深度学习学习笔记(二)-神经网络训练过程(1)

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)=N1iLi(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需要根据网络不同进行不同的设置
如:

  1. 针对回归问题
  • 均方误差(MSE)
    L = 1 N ∑ ∣ y i − s i ∣ 2 L=\frac1N\sum|y_i-s_i|^2 L=N1yisi2
    y i y_i yi为目标标签值, s i s_i si是输出的预测值
  1. 针对分类问题
  • 交叉熵损失函数
    交叉熵的含义:两个概率分布之间的差异程度(相关程度)
    设有两概率分布: 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)=xp(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=iyilogf(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 wiwi+Δwi Δ w i ← η ( t − o ) x i \Delta w_i \leftarrow \eta(t-o)x_i Δwiη(to)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)=21dD(tdod)2
    其中,D训练数据集, t d td td输入d的目标输出, o d od od实际预测输出
    从随机参数开始,以很小的步伐,每一步都沿着梯度方向,修改参数,反复执行,知道找到全局最小误差点
    w ← w + Δ w w \leftarrow w + \Delta w ww+Δ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 wiwi+Δwi Δ w i ← − η ∂ E ∂ w i \Delta w_i \leftarrow -\eta\frac {\partial E}{\partial{w_i}} ΔwiηwiE Δ 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ηdD(tdod)wiodtd=ηdD(tdod)xid

链式法则:将链路中所有局部梯度相乘

X
神经元
Y
L

神 经 元 : ∂ z ∂ x 、 ∂ z ∂ y 神经元: \frac{\partial z}{\partial x} 、\frac{\partial z}{\partial y} :xzyz
X : ∂ l ∂ x = ∂ l ∂ z ∂ z ∂ x X: \frac{\partial l}{\partial x} = \frac{\partial l}{\partial z} \frac{\partial z}{\partial x} X:xl=zlxz
Y : ∂ l ∂ y = ∂ l ∂ z ∂ z ∂ y Y: \frac{\partial l}{\partial y} = \frac{\partial l}{\partial z} \frac{\partial z}{\partial y} Y:yl=zlyz

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A.Star

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值