神经网络

1.简介

神经网络可以看成是含有多个变换层的感知机模型,变换层会把上一层的输出当成输入,经过一番内部护理后把输出传给下一
一般而言,神经网络算法包含以下三部分

  • 将输入经过多层变换层后得到输出
  • 将输出与真值比较得到损失函数梯度
  • 利用梯度更新模型各参数

2.前向传导算法

即将激活值从前向后传导,对于层 L i L_i Li,接收输入值为 u i = v i − 1 × w i − 1 + b i − 1 u^i=v^{i-1}\times w^{i-1}+b^{i-1} ui=vi1×wi1+bi1,经过激活函数后输出 v i = ϕ ( u i ) v^i=\phi{(u^i)} vi=ϕ(ui)

3.常见激活函数

3.1逻辑函数sigmoid
ϕ ( x ) = 1 1 + e − x \phi(x)=\frac{1}{1+e^{-x}} ϕ(x)=1+ex1

3.2正切函数
ϕ ( x ) = t a n h ( x ) = 1 − e − 2 x 1 + e − 2 x \phi(x)=tanh(x)=\frac{1-e^{-2x}}{1+e^{-2x}} ϕ(x)=tanh(x)=1+e2x1e2x

3.3线性整流函数(Rectified Linear Unit,ReLU)
ϕ ( x ) = m a x ( 0 , x ) \phi(x)=max(0,x) ϕ(x)=max(0,x)

3.4ELU函数(Exponential Linear Unit)
ϕ ( x ) = { x ,    x ≥ 0 a ( e x − 1 ) , x < 0 \phi(x)=\left\{ \begin{aligned} x, \; x\ge 0\\ a(e^x-1),x<0 \end{aligned} \right. ϕ(x)={x,x0a(ex1),x<0

3.5Softplus函数
ϕ ( x ) = l n ( 1 + e x ) \phi(x)=ln(1+e^x) ϕ(x)=ln(1+ex)

3.6恒同映射(Identity)
ϕ ( x ) = x \phi(x)=x ϕ(x)=x

3.7softmax映射
ϕ ( x ) = e x i ∑ e x i \phi(x)=\frac{e^{x_i}}{\sum e^{x_i}} ϕ(x)=exiexi

4.常用损失函数

4.1距离损失函数
L ( y , G ( x ) ) = [ y − G ( x ) ] 2 L(y,G(x))=[y-G(x)]^2 L(y,G(x))=[yG(x)]2
即最小平方误差准则MSE

4.2交叉熵损失函数
该损失函数要求G(x)取值在(0,1)之间
L ( y , G ( x ) ) = − [ y l n G ( x ) + ( 1 − y ) l n ( 1 − G ( x ) ) ] L(y,G(x))=-[ylnG(x)+(1-y)ln(1-G(x))] L(y,G(x))=[ylnG(x)+(1y)ln(1G(x))]

4.3log-likelihood损失函数
要求G(x)是一个概率向量,一般与softmax激活函数共同使用,可以认为是交叉熵的一种特殊形式
y p = { 1 , p = k 0 , p ! = k y_p=\left\{ \begin{aligned} 1,p=k\\ 0,p!=k \end{aligned} \right. yp={1,p=k0,p!=k
L ( y , G ( x ) ) = − l n v k L(y,G(x))=-lnv_k L(y,G(x))=lnvk

5.反向传播算法(BP算法,Backpropagation)

反向传播即将梯度一路往后(靠近输入层)传播,通过损失函数确定,梯度下降方法更新权重
梯度: δ ( i ) = δ L ( x ) δ u ( i ) \delta^{(i)}=\frac{\delta L(x)}{\delta u^{(i)}} δ(i)=δu(i)δL(x)
若为最后一层: δ ( m ) = δ L ( y , v ( m ) ) v ( m ) ∗ ϕ ′ ( u ( m ) ) \delta^{(m)}=\frac{\delta L(y,v^{(m)})}{v^{(m)}}*\phi'(u^{(m)}) δ(m)=v(m)δL(y,v(m))ϕ(u(m))
否则反向传导: δ ( i ) = δ ( i + 1 ) × w ( i ) T ∗ ϕ ′ ( u ( i ) ) \delta^{(i)}=\delta ^{(i+1)}\times w^{(i)T}*\phi'(u^{(i)}) δ(i)=δ(i+1)×w(i)Tϕ(u(i))
因此更新梯度:
w p q ( i − 1 ) = w ( i − 1 ) − η δ i v ( i − 1 ) w^{(i-1)}_{pq}=w^{(i-1)}-\eta\delta^{i}v^{(i-1)} wpq(i1)=w(i1)ηδiv(i1)

6.损失函数的选择

为避免梯度爆炸/梯度消失的问题,使得梯度下降尽量平稳,对于损失函数与激活函数的组合需要注意
6.1sigmoid系以外+距离损失函数MSE
然而,MSE往往不能很好地解决问题

6.2 sigmoid+cross entropy交叉熵

6.3softmax+cross entopy/log-likelihood
softmax更像是进行标准化的一个函数
v n ( m ) = e u n m ∑ n e u n m v_n^{(m)}=\frac{e^{u_n^m}}{\sum_n{e^{u^m_n}}} vn(m)=neunmeunm

7.常见优化算法

7.1 Vanilla Update
即梯度下降法的普通形式,通常以MBGD(mini batch)小批量梯度下降法形式出现
△ ∗ w t = △ w t \triangle^*w_t = \triangle w_t wt=wt

7.2 Momentum Update
△ ∗ w t = △ w t − ρ η v ( t − 1 ) \triangle^*w_t = \triangle w_t-\frac{\rho}{\eta}v_{(t-1)} wt=wtηρv(t1)
ρ视为惯性,逐步增大到0.99,即可以认为逐步减小当前方向的下降速度

7.3 Nesterov Momentum Update
可以认为是momentum方法的改进,其使用当前速度作为更新值
v t = ρ v t − 1 − η △ w t v_t=\rho v_{t-1}-\eta \triangle w_t vt=ρvt1ηwt
△ w t = w t − 1 + ρ v t − η △ w t \triangle w_t=w_{t-1}+\rho v_t-\eta \triangle w_t wt=wt1+ρvtηwt

7.4 RMSProp
通过调整学习速率进行优化
中间变量 ▽ 2 = ρ ▽ 2 + ( 1 − ρ ) △ 2 w t \bigtriangledown^2=\rho \bigtriangledown^2+(1-\rho)\triangle^2 w_t 2=ρ2+(1ρ)2wt
衰减系数 ρ \rho ρ反映较早的梯度对当前梯度的影响,ρ越小影响越小
更新值
△ w t = △ w t ▽ + ϵ \triangle w_t=\frac{\triangle w_t}{\bigtriangledown+\epsilon} wt=+ϵwt

7.5Adam
同时更新方向以及学习速率:
△ = β 1 △ + ( 1 − β 1 ) △ w t \triangle = \beta_1 \triangle+(1-\beta_1)\triangle w_t =β1+(1β1)wt
▽ 2 = β 2 ▽ 2 + ( 1 − β 2 ) △ 2 w t \bigtriangledown^2=\beta_2\bigtriangledown^2+(1-\beta_2)\triangle^2w_t 2=β22+(1β2)2wt
△ w t = △ ▽ + ϵ \triangle w_t=\frac{\triangle}{\bigtriangledown+\epsilon} wt=+ϵ

8.分批(Batch)思想

8.1分批思想

  • 每个batch放入k个数据
  • 分成k个batch
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值