《机器学习》阅读笔记(五)
5 神经网络
5.1 神经元模型
- 神经网络(neural networks):由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应
对比 | 描述 |
---|---|
生物神经网络 | 每个神经元与其他神经元相连,当它“兴奋”时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;如果某神经元的电位超过了一个“阈值”(threshold),那么它就会被激活,即“兴奋”起来,向其他神经元发送化学物质。 |
M-P神经元模型 | 神经元接收到来自 n n n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接(connection)进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过“激活函数”(activation function)处理以产生神经元的输出 y = f ( ∑ i = 1 n w i x i − θ ) y=f\left(\sum\limits^n_{i=1}w_ix_i-\theta\right) y=f(i=1∑nwixi−θ) |
5.2 感知机与多层网络
术语 | 感知机 | 多层前馈神经网络 |
---|---|---|
en | Perceptron | multi-layer feedforward neural networks |
神经元层数 | 2 | 多层 |
输入 | 接收外界输入信号后传递给输出层 | 接收外界输入 |
隐藏 | - | 对信号进行加工 |
输出 | M-P神经元(阈值逻辑单元(threshold logic unit)) | 对信号进行加工,并输出最终结果 |
规则 | (阈值
θ
\theta
θ可看作一个固定输入为-0.1的“哑结点”所对应的连接权重
w
n
+
1
w_{n+1}
wn+1) 对训练样例 ( x , y ) (\boldsymbol{x},y) (x,y),若当前感知机的输出为 y ^ \hat{y} y^,则感知机的权重将这样调整 w i ← w i + Δ w i w_i\leftarrow w_i+\Delta w_i wi←wi+Δwi Δ w i = η ( y − y ^ ) x i \Delta w_i=\eta(y-\hat{y})x_i Δwi=η(y−y^)xi其中 η ∈ ( 0 , 1 ) \eta\in(0,1) η∈(0,1)称为学习率 | - |
解决的问题 | 线性可分(linearly separable) | 非线性可分问题 |
5.3 误差逆传播算法(error BackPropagation,BP)(反向传播算法)
- 给定
- D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x m , y m ) } D=\{(\boldsymbol{x}_1,\boldsymbol{y}_1),(\boldsymbol{x}_2,\boldsymbol{y}_2),\dots,(\boldsymbol{x}_m,\boldsymbol{y}_m)\} D={(x1,y1),(x2,y2),…,(xm,ym)}:数据集
- x i ∈ R d \boldsymbol{x}_i\in\mathbb{R}^d xi∈Rd:输入示例由 d d d个属性描述
- y i ∈ R l \boldsymbol{y}_i\in\mathbb{R}^l yi∈Rl:输出 l l l维实值向量
- 神经层
神经层 | 神经元个数 | 阈值 | 函数 |
---|---|---|---|
输入层 | d d d | - | - |
隐藏层 | q q q | γ h \gamma_h γh | S i g m o i d \mathrm{Sigmoid} Sigmoid |
输出层 | l l l | θ j \theta_j θj | S i g m o i d \mathrm{Sigmoid} Sigmoid |
层-第 ∗ * ∗个神经元 → \rightarrow →层-第 ∗ * ∗个神经元 | 权重 |
---|---|
输入层- i i i → \rightarrow →隐藏层- h h h | v i h v_{ih} vih |
隐藏层- h h h → \rightarrow →输出层- j j j | w h j w_{hj} whj |
层-第 ∗ * ∗个神经元 | 输入 | 输出 |
---|---|---|
输入层- i i i | x i x_i xi | x i x_i xi |
隐藏层- h h h | α h = ∑ i = 1 d v i h x i \alpha_h=\sum^d_{i=1}v_{ih}x_i αh=∑i=1dvihxi | b h b_h bh |
输出层- j j j | β j = ∑ h = 1 q w h j b h \beta_j=\sum^q_{h=1}w_{hj}b_h βj=∑h=1qwhjbh | y j y_j yj |
-
训练:样例 ( x k , y k ) (\boldsymbol{x}_k,\boldsymbol{y}_k) (xk,yk)
- 神经网络输出 y ^ k = ( y ^ 1 k , y ^ 2 k , … , y ^ l k ) \hat{\boldsymbol{y}}_k=(\hat{y}^k_1,\hat{y}^k_2,\dots,\hat{y}^k_l) y^k=(y^1k,y^2k,…,y^lk) y ^ j k = f ( β j − θ j ) \hat{y}^k_j=f(\beta_j-\theta_j) y^jk=f(βj−θj)
- 均方误差 E k = 1 2 ∑ j = 1 l ( y ^ j k − y j k ) 2 E_k=\frac{1}{2}\sum\limits^l_{j=1}(\hat{y}^k_j-y^k_j)^2 Ek=21j=1∑l(y^jk−yjk)2
- 参数个数
参数 ( d + l + 1 ) q + l (d+l+1)q+l (d+l+1)q+l 类型 输入层 → \rightarrow →隐藏层 d × q d\times q d×q 权值 隐藏层 → \rightarrow →输出层 q × l q\times l q×l 权值 隐藏层 q q q 阈值 输出层 l l l 阈值 - 迭代 ( v ← v + Δ v ) (v\leftarrow v+\Delta v) (v←v+Δv) :以 w h j w_{hj} whj为例(梯度下降) Δ w h j = − η ∂ E k ∂ w h j \Delta w_{hj}=-\eta\frac{\partial E_k}{\partial w_{hj}} Δwhj=−η∂whj∂Ek ∂ E k ∂ w h j = ∂ E k ∂ y ^ j k ⋅ ∂ y ^ j k ∂ β j ⋅ ∂ β j ∂ w h j \frac{\partial E_k}{\partial w_{hj}}=\frac{\partial E_k}{\partial\hat{y}^k_j}\cdot\frac{\partial\hat{y}^k_j}{\partial\beta_j}\cdot\frac{\partial\beta_j}{\partial w_{hj}} ∂whj∂Ek=∂y^jk∂Ek⋅∂βj∂y^jk⋅∂whj∂βj ∂ β j ∂ w h j = b h \frac{\partial\beta_j}{\partial w_{hj}}=b_h ∂whj∂βj=bh
- S i g m o i d \mathrm{Sigmoid} Sigmoid函数性质: f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) f'(x)=f(x)(1-f(x)) f′(x)=f(x)(1−f(x))
- 有 g j = − ∂ E k ∂ y ^ j k ⋅ ∂ y ^ j k ∂ β j g_j=-\frac{\partial E_k}{\partial\hat{y}^k_j}\cdot\frac{\partial\hat{y}^k_j}{\partial\beta_j} gj=−∂y^jk∂Ek⋅∂βj∂y^jk = − ( y ^ j k − y j k ) f ′ ( β j − θ j ) =-(\hat{y}^k_j-y^k_j)f'(\beta_j-\theta_j) =−(y^jk−yjk)f′(βj−θj) = y ^ j k ( 1 − y ^ j k ) ( y j k − y ^ j k ) =\hat{y}^k_j(1-\hat{y}^k_j)(y^k_j-\hat{y}^k_j) =y^jk(1−y^jk)(yjk−y^jk)
- 得到 Δ w h j = η g j b h \Delta w_{hj}=\eta g_jb_h Δwhj=ηgjbh
- 类似可得 Δ θ = − η g j \Delta\theta=-\eta g_j Δθ=−ηgj Δ v i h = η e h x i \Delta v_{ih}=\eta e_hx_i Δvih=ηehxi Δ γ h = − η e h \Delta\gamma_h=-\eta e_h Δγh=−ηeh ( e h = − ∂ E k ∂ b h ⋅ ∂ b h ∂ α h = b h ( 1 − b h ) ∑ j = 1 l w h j g j ) \left(\begin{matrix}e_h=-\frac{\partial E_k}{\partial b_h}\cdot\frac{\partial b_h}{\partial\alpha_h}\\=b_h(1-b_h)\sum\limits^l_{j=1}w_{hj}g_j\end{matrix}\right) ⎝⎜⎛eh=−∂bh∂Ek⋅∂αh∂bh=bh(1−bh)j=1∑lwhjgj⎠⎟⎞
- 目标:最小化训练集D上的累积误差(训练集大小为k) E = 1 m ∑ k = 1 m E k E=\frac{1}{m}\sum\limits^m_{k=1}E_k E=m1k=1∑mEk
-
累积BP算法:基于累积误差最小化的更新规则
-
缓解过拟合策略
策略 | en | 描述 |
---|---|---|
早停 | early stopping | 将数据氛围训练集和验证集,训练集用来计算梯度、更新连接权和阈值,验证集用于估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值 |
正则化 | regularization | 在误差目标函数中增加一个用于描述网络复杂度的部分,例如连接权与阈值的平方和
E
=
λ
1
m
∑
k
=
1
m
E
k
+
(
1
−
λ
)
∑
i
w
i
2
E=\lambda\frac{1}{m}\sum\limits^m_{k=1}E_k+(1-\lambda)\sum\limits_iw_i^2
E=λm1k=1∑mEk+(1−λ)i∑wi2其中 E k E_k Ek:第k个训练样例上的误差 w i w_i wi:连接权和阈值 λ ∈ ( 0 , 1 ) \lambda\in(0,1) λ∈(0,1):用于对经验误差与网络复杂度这两项进行折中 (训练过程将会偏好比较小的连接权和阈值,使网络输出更加“光滑”,从而对过拟合有所缓解) |
5.4 全局最小与局部最小
- 参数寻优 → \rightarrow →全局最小
- “跳出”局部最小(大多为启发式)
策略 | en | 描述 |
---|---|---|
- | - | 以多组不同参数值初始化多个神经网络,按标准方法训练后,取其中误差最小的解作为最终参数 |
模拟退火 | simulated annealing | 在每一步都以一定的概率接收比当前解更差的结果,从而有助于“跳出”局部极小 |
随机梯度下降 | - | 在计算梯度时加入了随机因素,于是,即便陷入局部极小点,它计算出的梯度仍可能不为零,这样就有机会跳出局部极小继续搜索 |
遗传算法 | genetic algorithms | - |
5.5 其他常见神经网络
类型 | en | 描述 |
---|---|---|
竞争型学习 | competitive learning | (无监督学习)网络的输出神经元相互竞争,每一时刻仅有一个竞争获胜的神经元被激活,其他神经元的状态被抑制(“胜者通吃”原则) |
结构自适应网络 | - | 出利用训练样本来确定合适的连接权、阈值等参数,网络结构也作为学习的目标之一 |
递归神经网络 | recurrent neural networks | 允许网络中出现环状结构,从而可让一些神经元的输出反馈回来作为输入信号 |
基于能量的模型 | energy-based model | 定义“能量”,能量最小化时网络达到理想状态,而网络的训练就是在最小化这个能量函数 |
神经网络 | en | 概述 | 特殊 |
---|---|---|---|
径向基函数 | Radial Basis Function,RBF | 单隐层前馈神经网络 | 隐层神经元激活函数:径向基函数 输出层:对隐层神经元输出的线性组合 |
自适应谐振理论 | Adaptive Resonance Theory,ART | 竞争型学习,可进行增量学习或在线学习 | 构成:比较层、识别层、识别阈值和重置模块 比较层:接收输入样本,并将其传递给识别层神经元 识别层:每个神经元对应一个模式类,神经元数目可在训练过程中动态增长以增加新的模式类 识别阈值:输入向量与识别层神经元所对应的模式类的代表向量之间的距离,该相似度与识别阈值进行比较 重置模块:当相似度不大于识别阈值,重置模块将在识别层增设一个新的神经元,其代表向量就设置为当前输入向量 |
自组织映射 | Self-Organizing Map,SOM | 竞争性学习 | 能将高纬输入数据映射到低纬空间,同时保持输入数据在高纬空间的拓扑结构,即在高纬空间中相似的样本点映射到网络输出层中的邻近神经元 |
级联相关 | Cascade-Correlation | 结构自适应网络 | 开始训练时,网络只有输入层和输出层,处于最小拓扑结构;随着训练的进行,新的隐层神经元加入,建立起层级结构,当新的隐层神经元加入时,其输入端连接权是冻结固定的 成分:“级联”、“相关” 级联:建立层次连接的层级结构 相关:通过最大化新神经元的输出与网络误差之间的相关性来训练相关参数 |
Elman | - | 递归神经网络 | 结构与多层前馈网络很相似,但隐层神经元的输出被反馈回来,与下一时刻输入层神经元提供的信号一起,作为隐层神经元在下一时刻的输入 |
Boltzmann机 | - | 基于能量的模型 | 神经元分为:显层、隐层 显层:数据的输入与输出 隐层:数据的内在表达 |
5.6 深度学习
多隐层神经网络中,误差逆传播时,往往会发散而不能收敛到稳定状态
训练手段 | en | 思想 |
---|---|---|
无监督逐层训练 | unsuoervised layer-wise training | 预训练(pre-training):每次训练一层隐结点,训练时将上一层隐结点的输出作为输入,而本层隐结点的输出作为下一层隐结点的输入 微调(fine-tuning):在预训练全部完成后,再对整个网络进行“微调”训练 |
权共享 | weight sharing | 一组神经元使用相同的连接权 |