文章目录
5.神经网络
5.1 神经元(neuron)模型
下图为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
把许多这样的神经元按一定层次结构连接起来就得到神经网络。
5.2感知机与多层网络
5.2.1 感知机(perceptron)
由两层神经元组成,例:

可以把阈值 θ \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):每层神经元和下一层神经元全连接,神经元间没有同层连接,不存在跨层连接。
- 输入层接受外界输入
- 隐层和输出层包含功能神经元
- “前馈”是指网络拓扑结构上不存在环或回路,并不是指网络中信号不能向后传。
-
神经网络学习过程,就是学习权重和阈值的过程。
5.3 误差逆传播算法
误差逆传播/反向传播(back propagation),BP算法。
5.3.1 推导
训练集 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。
- 神经网络中,输入d维,输出
l
l
l维,隐藏层q维
α
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
5.3.2 算法
算法的目标是最小化训练集D上的累计误差
E
=
1
m
∑
k
=
1
m
E
k
E=\frac{1}{m} \sum_{k=1}^m E_k
E=m1k=1∑mEk
标准BP算法
- 初始化所有权重和阈值
- 对于每个样本
(
x
k
,
y
k
)
(x_k,y_k)
(xk,yk)循环:
- 提供输入,计算隐藏层输出 b ^ h \hat b_h b^h及输出层输出 y ^ j \hat y_j y^j
- 根据 y ^ j \hat y_j y^j计算 g j g_j gj,再计算 e h e_h eh
- 更新权重 w h j , v i h w_{hj},v_{ih} whj,vih和阈值 θ j , γ h \theta_j,\gamma_h θj,γh
累计误差逆传播(accumulated error backpropagation)
读取整个训练集D一遍后才对参数进行更新,更新频率低。
5.3.3 缓解过拟合
早停,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),用于对经验误差和网络复杂度这两项进行折中。
5.4 全局最小与局部最小
跳出局部最小的策略:
- 以多组不同的参数值初始化多个神经网络,即从多个不同的初始点开始搜索,这样有可能陷入不同的局部极小;取其中误差最小的解作为最终参数。
- 使用“模拟退火”技术:在每一步都以一定的概率接受比当前解更差的结果,从而有助于“跳出”局部极小。每步迭代中,接受“次优解”的概率随时间的推移而逐渐降低,保证算法稳定。
- 使用随机梯度下降。即便陷入局部极小,计算出的梯度仍可能不为0.
5.5 其他常见的神经网络
5.5.1 REF(radial basis function ,径向基函数)网络
- 单隐层前馈神经网络
- 使用径向基函数作为隐层神经元激活函数;输出层是对隐层输出的线性组合
ϕ ( x ) = ∑ i = 1 q w i ρ ( x , c i ) \phi(x) = \sum_{i=1}^qw_i\rho(x,c_i) ϕ(x)=i=1∑qwiρ(x,ci)
其中q是隐层神经元个数, c i , w i c_i,w_i ci,wi是神经元对应的中心和权重; ρ \rho ρ是径向基函数。
ρ ( x , c i ) = e − β i ∥ x − c i ∥ 2 \rho(x,c_i) = e^{-\beta_i\parallel x-c_i\parallel^2} ρ(x,ci)=e−βi∥x−ci∥2
通常先确定神经元中心 c i c_i ci,包括随机采样、聚类等;再利用BP确定参数 w i , β i w_i,\beta_i wi,βi
5.5.2 ART(adaptive rsonance theory,自适应谐振理论)网络
该网络由比较层、识别层、识别阈值和重置模块构成。
- 比较层接受输入样本,传递给识别层
- 识别层每个神经元对应一个模式类,神经元数目可在训练过程中动态增长以增加新的模式类
- 识别神经元间相互竞争,产生获胜神经元。
- 计算输入向量与每个识别神经元对应的模式类的代表向量间距离,距离最小者胜
- 获胜神经元抑制其他神经元的激活
- 如果与获胜样本相似度大于阈值,将样本归于获胜神经元对应的模式
- 网络连接权更新,使以后接受相似样本时会计算出更大相似度
- 如果与获胜样本相似度小于阈值,重置模块在识别层增设新的神经元,代表向量设为当前输入向量。
5.6 深度学习
- 无监督逐层训练:
- “预训练”:每次训练一层隐节点,训练时将上一层隐节点的输出作为输入,而本层隐节点的输出作为下一层隐节点的输入
- 预训练完成后,对整个网络进行“微调”训练(fine tuning)
- 可以视为将大量参数分组,每组先找到局部较好,再基于局部较优联合寻找全局最优。
- “权共享”,让一组神经元使用相同的连接权,在卷积神经网络(convolutional neural network,CNN)中发挥了重要作用。
深度学习中每层神经元对上层的输出进行处理,目的是把和输出目标间联系不太紧密的输入表示,转化为与输出目标联系更密切的表示。通过多层处理,把初始的“底层”特征表示转为“高层”特征表示,用简单模型即可完成复杂的分类等学习任务。可将深度学习理解为“特征学习”(feature learning)或“表示学习”(representation learning)