下图为M-P神经元模型
神经元收到其他n个神经元传递的输入信号,输入信号通过带权重的连接进行连接,神经元将总输入值与神经元阈值进行比较,通过激活函数处理,产生输出。即
y = f ( ∑ i = 1 n w i x i − θ ) y = f(\sum_{i=1}^n w_ix_i - \theta) y=f(i=1∑nwixi−θ)
激活函数为sigmoid函数
s i g m o i d ( x ) = 1 1 + e − x sigmoid(x) =\frac{1}{1+e^{-x}} sigmoid(x)=1+e−x1
把许多这样的神经元按一定层次结构连接起来就得到神经网络。
由两层神经元组成,例:
可以把阈值 θ \theta θ看成一个值衡为-1,权重 w n + 1 w_{n+1} wn+1的输入。
如果一个二分类的感知机(分类结果为0,1),两个模式线性可分,可以用下式学习(损失函数为 ∑ ( y ^ − y ) w T x \sum(\hat y-y)w^Tx ∑(y^−y)wTx)
w i ← w i + Δ w i Δ w i = η ( y − y ^ ) x i \begin{aligned} w_i &\leftarrow w_i + \Delta w_i \\ \Delta w_i &= \eta(y-\hat y)x_i \end {aligned} wiΔwi←wi+Δwi=η(y−y^)xi
如果是非线性可分问题,需要考虑多层功能神经元。即有隐藏层,隐藏层和输出层都是有激活函数的功能神经元。
多层前馈神经网络(multi-layer feedforwaed neural networks):每层神经元和下一层神经元全连接,神经元间没有同层连接,不存在跨层连接。
神经网络学习过程,就是学习权重和阈值的过程。
误差逆传播/反向传播(back propagation),BP算法。
训练集 D = ( x 1 , y − 1 ) , ( x 2 , y 2 ) , ⋯   , ( x m , y m ) , x i ∈ R d , y i ∈ R l D={(x_1,y-1),(x_2,y_2),\cdots,(x_m,y_m)},x_i \in R^d,y_i \in R^l D=(x1,y−1),(x2,y2),⋯,(xm,ym),xi∈Rd,yi∈Rl。
α h = ∑ i = 1 d v i h x i b h = f ( α h − γ h ) = 1 1 + e − ( α h − γ h ) β j = ∑ h = 1 q w h j b h y j = f ( β j − θ j ) = 1 1 + e − ( β j − θ j ) \begin{aligned} \alpha_h &= \sum_{i=1}^d v_{ih}x_i \\ b_h &= f(\alpha_h - \gamma_h) = \frac{1}{1+e^{-(\alpha_h -\gamma_h)}} \\ \beta_j &= \sum_{h=1}^q w_{hj}b_h \\ y_j &= f(\beta_j - \theta_j) = \frac{1}{1+e^{-(\beta_j-\theta_j)}} \end{aligned} αhbhβjyj=i=1∑dvihxi=f(αh−γh)=1+e−(αh−γh)1=h=1∑qwhjbh=f(βj−θj)=1+e−(βj−θj)1
在样本 ( x k , y k ) (x_k,y_k) (xk,yk)上的损失函数为
E k = ∑ j = 1 l ( y j − y ^ j ) 2 E_k = \sum_{j=1}^l(y_j - \hat y_j)^2 Ek=j=1∑l(yj−y^j)2
梯度下降法迭代参数
∇ θ j = ∂ E k ∂ y ^ j ∂ y ^ j ∂ θ j = − ( y ^ j − y j ) y ^ j ( 1 − y ^ j ) ∇ w h j = ∂ E k ∂ y ^ j ∂ y ^ j ∂ β j ∂ β j ∂ w h j = ( y ^ j − y j ) y ^ j ( 1 − y ^ j ) b h ∇ v i h = ∑ j = 1 l ∂ E k ∂ y ^ j ∂ y ^ j ∂ β j ∂ β j ∂ b h ∂ b h ∂ α h ∂ α h ∂ v i h = ∑ j = 1 l ( y ^ j − y j ) y ^ j ( 1 − y ^ j ) w h j b h ( 1 − b h ) x i = b h ( 1 − b h ) x i ∑ j = 1 l ( y ^ j − y j ) y ^ j ( 1 − y ^ j ) w h j ∇ γ h = ∑ j = 1 l ∂ E k ∂ y ^ j ∂ y ^ j ∂ β j ∂ β j ∂ b h ∂ b h ∂ γ h = ∑ j = 1 l ( y ^ j − y j ) y ^ j ( 1 − y ^ j ) ( − w h j b h ( 1 − b h ) ) = − b h ( 1 − b h ) ∑ j = 1 l ( y ^ j − y j ) y ^ j ( 1 − y ^ j ) w h j \begin{aligned} \nabla \theta_j &= \frac{\partial E_k}{\partial \hat y_j}\frac{ \partial\hat y_j}{\partial \theta_j} =- (\hat y_j- y_j)\hat y_j(1-\hat y_j) \\ \nabla w_{hj} &= \frac{\partial E_k}{\partial \hat y_j}\frac{ \partial\hat y_j}{\partial \beta_j}\frac{\partial \beta_j}{\partial w_{hj}}= (\hat y_j- y_j)\hat y_j(1-\hat y_j)b_h\\ \nabla v_{ih} &= \sum_{j=1}^l \frac{\partial E_k}{\partial \hat y_j}\frac{ \partial\hat y_j}{\partial \beta_j}\frac{\partial \beta_j}{\partial b_h}\frac{\partial b_h}{\partial \alpha_h}\frac{\partial \alpha_h}{\partial v_{ih}} = \sum_{j=1}^l (\hat y_j- y_j)\hat y_j(1-\hat y_j)w_{hj}b_h(1-b_h)x_i\\ &= b_h(1-b_h)x_i\sum_{j=1}^l (\hat y_j- y_j)\hat y_j(1-\hat y_j)w_{hj}\\ \nabla \gamma_h & = \sum_{j=1}^l \frac{\partial E_k}{\partial \hat y_j}\frac{ \partial\hat y_j}{\partial \beta_j}\frac{\partial \beta_j}{\partial b_h}\frac{\partial b_h}{\partial \gamma_h} =\sum_{j=1}^l (\hat y_j- y_j)\hat y_j(1-\hat y_j) (- w_{hj}b_h(1-b_h))\\ &= -b_h(1-b_h)\sum_{j=1}^l (\hat y_j- y_j)\hat y_j(1-\hat y_j)w_{hj} \end{aligned} ∇θj∇whj∇vih∇γh=∂y^j∂Ek∂θj∂y^j=−(y^j−yj)y^j(1−y^j)=∂y^j∂Ek∂βj∂y^j∂whj∂βj=(y^j−yj)y^j(1−y^j)bh=j=1∑l∂y^j∂Ek∂βj∂y^j∂bh∂βj∂αh∂bh∂vih∂αh=j=1∑l(y^j−yj)y^j(1−y^j)whjbh(1−bh)xi=bh(1−bh)xij=1∑l(y^j−yj)y^j(1−y^j)whj=j=1∑l∂y^j∂Ek∂βj∂y^j∂bh∂βj∂γh∂bh=j=1∑l(y^j−yj)y^j(1−y^j)(−whjbh(1−bh))=−bh(1−bh)j=1∑l(y^j−yj)y^j(1−y^j)whj
令
g j = ( y ^ j − y j ) y ^ j ( 1 − y ^ j ) e h = b h ( 1 − b h ) ∑ j = 1 l w h j g j \begin{aligned} g_j &= (\hat y_j- y_j)\hat y_j(1-\hat y_j) \\ e_h &= b_h(1-b_h) \sum_{j=1}^lw_{hj}g_j \end{aligned} gjeh=(y^j−yj)y^j(1−y^j)=bh(1−bh)j=1∑lwhjgj
这时,梯度下降更新
Δ θ j = η g j Δ w h j = − η g j b h Δ v i h = − η e h x i Δ γ h = η e h \begin{aligned} \Delta \theta_j &= \eta g_j\\ \Delta w_{hj} &= - \eta g_j b_h \\ \Delta v_{ih} &= - \eta e_h x_i \\ \Delta \gamma_h &= \eta e_h \end{aligned} ΔθjΔwhjΔvihΔγh=ηgj=−ηgjbh=−ηehxi=ηeh
算法的目标是最小化训练集D上的累计误差
E = 1 m ∑ k = 1 m E k E=\frac{1}{m} \sum_{k=1}^m E_k E=m1k=1∑mEk
标准BP算法
累计误差逆传播(accumulated error backpropagation)
读取整个训练集D一遍后才对参数进行更新,更新频率低。
早停,early stopping
将数据集分为训练集和验证集,训练集用来计算梯度、更新权重、阈值;验证机用来估计误差。若训练集误差降低但验证机误差升高,停止训练,并返回有最小验证集误差的参数。
正则化,regularization
在误差目标函数中增加一个用于描述网络复杂度的部分。例如连接权和阈值的平方和。
E = λ 1 m ∑ k = 1 k E k + ( 1 − λ ) ∑ i w i 2 E = \lambda \frac{1}{m}\sum_{k=1}^kE_k + (1-\lambda)\sum_i w_i^2 E=λm1k=1∑kEk+(1−λ)i∑wi2
其中 λ ∈ ( 0 , 1 ) \lambda\in (0,1) λ∈(0,1),用于对经验误差和网络复杂度这两项进行折中。
跳出局部最小的策略:
该网络由比较层、识别层、识别阈值和重置模块构成。
深度学习中每层神经元对上层的输出进行处理,目的是把和输出目标间联系不太紧密的输入表示,转化为与输出目标联系更密切的表示。通过多层处理,把初始的“底层”特征表示转为“高层”特征表示,用简单模型即可完成复杂的分类等学习任务。可将深度学习理解为“特征学习”(feature learning)或“表示学习”(representation learning)