神经网络(neural network)

目录

  • 1 神经元模型
  • 2 BP(误差逆传播算法)
  • 3 参数寻优
  • 4 常见神经网络
    • RBF(径向基函数)网络
    • ART网络
    • SOM网络
    • 级联相关网络
    • Elman网络
    • Boltzmann机
  • 5 深度学习
    • DBN(深度信念网络)
    • CNN(卷积神经网络)
  • 6 总结

1 神经元模型

神经网络是由好多个神经元模型组成的网络。

生物神经网络:每个神经元与其他神经元相连,当它"兴奋"时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;如果某神经元的电位超过了一个"阔值" ,那么它就会被激活,即“兴奋”起来,向其他神经元发送化学物质。

将上面的生物神经网络抽象成模型,得到M-P神经元模型
神经网络(neural network)_第1张图片
图中的输出 y = f (…) 就是激活函数,常用Sigmoid函数作为激活函数:
神经网络(neural network)_第2张图片
两层这样的神经元连接起来,就得到了感知机
神经网络(neural network)_第3张图片

这样的感知机可以处理与或非等线性可分问题,但学习能力太弱,无法处理非线性可分问题。要解决非线性可分问题,两层不够,需要多层。

三层这样的神经元按照一定结构(每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接)连接起来,就得到了单隐层前馈网络
神经网络(neural network)_第4张图片
四层这样的神经元按照同样的结构连接起来,就得到了双隐层前馈网络
神经网络(neural network)_第5张图片

2 BP(误差逆传播算法)

训练单层感知机用的是这样简单的学习规则:
神经网络(neural network)_第6张图片
训练多层神经网络需要用更强大的学习规则,BP就是其中一种。

  1. BP基本思想:输入一个样本给输入层神经元,将信号通过隐层逐层前传,直到输出层产生结果,然后计算输出层的误差,将误差逆向传播至隐层神经元,根据误差调整隐层神经元的连接权和阈值,循环进行以上步骤,直到达到停止条件(例如训练误差己达到一个很小的值。
  2. 符号说明
    神经网络(neural network)_第7张图片
    BP神经网络由输入层,隐层,输出层组成。
    如图,从下往上看,输入层神经元的个数由样本决定,一个样本 x 由 d 个属性来描述,那输入层就有 d 个神经元。
    输入层神经元与隐层神经元之间全互连,它们之间有d×q个连接权值,第i个输入层神经元与第h个隐层神经元的连接权值为 v i h v_{ih} vih
    有了连接权值,就可以得到隐层的输入。第h个隐层神经元的输入 α h = ∑ i = 1 d v i h x i = v 1 h x 1 + . . . + v i h x i + . . . + v d h x d \alpha_h=\sum_{i=1}^{d}{v_{ih}x_i}=v_{1h}x_1+...+v_{ih}x_i+...+v_{dh}x_d αh=i=1dvihxi=v1hx1+...+vihxi+...+vdhxd,其实就是一个相乘相加操作。
    隐层每个神经元都有自己的阈值,设第h个隐层神经元的阈值为 γ h \gamma_h γh
    有了隐层的输入和阈值,经过函数运算(如sigmoid)就可以得到隐层的输出 b 1 , . . . , b h , . . . , b q b_1,...,b_h,...,b_q b1,...,bh,...,bq(q为隐层神经元的个数,q的设定是一个值得研究的问题)。
    隐层神经元与输出层神经元之间全互连,它们之间有q×l个连接权值,第h个隐层神经元与第j个输出层神经元的连接权值为 ω h j \omega_{hj} ωhj
    有了连接权值,就可以得到输出层的输入。第j个输出层神经元的输入 β j = ∑ h = 1 q ω h j b h \beta_j=\sum_{h=1}^{q}{\omega_{hj}b_h} βj=h=1qωhjbh,其实也是一个相乘相加操作。
    输出层每个神经元也有自己的阈值,设第j个输出层神经元的阈值为 θ j \theta_j θj
    有了输出层的输入和阈值,经过函数运算就可以得到输出层的输出 y 1 , . . . , y j , . . . , y l y_1,...,y_j,...,y_l y1,...,yj,...,yl(l为输出层神经元的个数,也就是描述结果的特征个数,是已知条件)。
    总结:在这么多参数中,只有连接权值和阈值( v i h , γ h , ω h j , θ j v_{ih},\gamma_h,\omega_{hj},\theta_j vihγhωhjθj)不是已知条件,需要在循环过程中不断调整。
  3. 误差
    对于训练样本 ( x , y ) (x,y) (x,y),BP网络对其进行一轮迭代后得到的预测值为 y ^ = ( y ^ 1 , . . , y ^ l ) \hat y=(\hat y_1,..,\hat y_l) y^=(y^1,..,y^l),预测的对应均方误差为:
    E k = 1 2 ∑ j = 1 l ( y ^ j − y j ) 2 E_k=\frac{1}{2}\sum_{j=1}^{l}(\hat y_j-y_j)^2 Ek=21j=1l(y^jyj)2
  4. 参数更新
    参数v的更新估计式为:
    v = v + Δ v v=v+\Delta v v=v+Δv
    这里的v可以是上面四种参数中的任意一种,当 v = v i h , γ h , ω h j , θ j v=v_{ih},\gamma_h,\omega_{hj},\theta_j v=vihγhωhjθj时,更新式分别为:
    v i h = v i h + Δ v i h γ h = γ h + Δ γ h ω h j = ω h j + Δ ω h j θ j = θ j + Δ θ j v_{ih}=v_{ih}+\Delta v_{ih} \\ \gamma_h=\gamma_h+\Delta \gamma_h \\ \omega_{hj}=\omega_{hj}+\Delta\omega_{hj} \\ \theta_j=\theta_j+\Delta\theta_j vih=vih+Δvihγh=γh+Δγhωhj=ωhj+Δωhjθj=θj+Δθj
    其中
    Δ v i h = η e h x i Δ γ h = − η e h Δ ω h j = η g j b h Δ θ j = − η g j \Delta v_{ih}=\eta e_h x_i \\ \Delta \gamma_h=-\eta e_h \\ \Delta\omega_{hj}=\eta g_j b_h \\ \Delta\theta_j=-\eta g_j Δvih=ηehxiΔγh=ηehΔωhj=ηgjbhΔθj=ηgj
    其中 η ∈ ( 0 , 1 ) \eta\in(0,1) η(0,1)是学习率,决定了每一次迭代中的更新步长,一般固定值取0.1,也可以取自适应的 η \eta η,即刚开始较大,收敛速度很快,后面较小,防止震荡。
    x i x_i xi是输入的样本,属于已知条件; b h b_h bh可以通过隐层的输入和阈值,经过函数运算得到; e h e_h eh g j g_j gj是基于梯度下降策略计算过程中的中间变量,根据均方误差 E k E_k Ek得到,具体推导见西瓜书P102.
  5. 最终目标
    最小化训练集D上的累积误差:
    m i n E = 1 m ∑ k = 1 m E k min E=\frac{1}{m}\sum_{k=1}^{m}E_k minE=m1k=1mEk
    其实就是分别最小化所有样本的单个误差 E k E_k Ek

如果每次基于单个样本的误差 E k E_k Ek最小化来更新连接权值和阈值,就是标准BP
如果每次基于全部样本的累积误差 E E E最小化来更新连接权值和阈值,就是累积BP
标准BP与累积BP的优劣:标准BP参数更新得非常频繁,而且对不同样本进行更新的效果可能出现"抵消"现象;累积BP参数更新的频率很低,但在很多任务中,累积误差下降到一定程度之后,进一步下降会非常缓慢,这时标准 BP 往往会更快获得较好的解,尤其是在训练集很大时更明显。

3 参数寻优

神经网络的训练问题就这样转换成了一个参数寻优的问题,涉及到寻优,就会有局部最优值和全局最优值,而我们致力于用最快的速度找到全局最优值

最常用的梯度下降方法容易陷入局部最优,跳出局部最优的方法包括但不限于:

  1. 并行训练得到多组局部最优解,最后从中取全局最优解;
  2. 模拟退火;
  3. 随机梯度下降;
  4. 遗传算法。

4 常见神经网络

RBF(径向基函数)网络

一种单隐层前馈神经网络,它使用径向基函数作为隐层神经元激活函数,而输出层则是对隐层神经元输出的线性组合。

ART网络

竞争型学习的代表,由比较层、识别层、识别阈值和重置模块构成。

竞争型学习:输出神经元相互竞争,每一时刻仅有一个竞争获胜的神经元被激活,其他神经元的状态被抑制。

优点:可进行增量学习或在线学习

SOM网络

竞争型学习的无监督神经网络,能将高维输入数据映射到低维空间(通常为二维) ,同时保持输入数据在高维空间的拓扑结构。

级联相关网络

结构自适应网络的代表,无需设置网络层数、隐层神经元数目,且训练速度较快,但在数据较小时容易过拟合。

结构自适应网络:一般的神经网络模型假定网络结构是事先固定的,只学习连接权值和阈值等参数。 结构自适应网络则将网络结构也当作学习的目标之一。

Elman网络

最常用的递归神经网络之一,可以处理与时间有关的动态变化。

递归神经网络:前馈神经网络不允许网络中出现环,递归神经网络则有环,可让一些神经元的输出反馈回来作为输入信号,这样的结构与信息反馈过程,使得网络在t时刻的输出状态不仅与t时刻的输入有关,还与t-1时刻的网络状态有关。

基本思想:,结构与多层前馈网络相似,但隐层神经元的输出被反馈回来,与下一时刻输入层神经元提供的信号一起,作为隐层神经元在下一时刻的输入。隐层的激活函数通常用 Sigmoid ,网络的训练通常用BP。

Boltzmann机

一种基于能量的模型,标准的 Boltzmann 机是全连接图,训练网络的复杂度很高,因此现实中常用受限 Boltzmann 机。

能量:神经网络中有一类模型是为网络状态定义一个"能量" ,能量最小化时网络达到理想状态,训练目标就是最小化能量函数。

5 深度学习

深度学习模型就是很深层的神经网络。

DBN(深度信念网络)

基本思想:每层都是一个受限 Boltzmann 机RBM,即整个网络可视为若干个
RBM 堆叠而得。在使用无监督逐层训练时,首先按标准的 RBM 训练第一层,然后,将第一层预训练好的隐结点视为第二层的输入结点,对第二层进行预训练,各层预训练完成后,再利用 BP 算法等对整个网络进行训练。

无监督逐层训练:每次训练一层隐结点,训练时将上一层隐结点的输出作为输入,而本层隐结点的输出作为下一层隐结点的输入,这称为"预训练";在预训练全部完成后,再对整个网络进行"微调"。

CNN(卷积神经网络)

哇哦,好优秀的一位博主

6 总结

  1. 神经网络缺点:正确数量和质量的训练样本+大量的计算资源。迁移学习致力于解决该挑战。
    需要大量数据:人脑可以通过很少的示例学习,神经网络需要成千上万个示例。
    概括能力很弱:与人类不同,神经网络不会在符号(耳朵,眼睛,胡须,尾巴)方面发展知识,只会处理像素值。总是需要从头开始对其进行重新培训。例如,接受过数千张猫图片训练的猫分类器无法分类狗,需要成千上万张狗图像从头训练。
    不透明:由于神经网络通过神经元的权重和激活来表达其行为,因此很难确定其决策背后的逻辑。这就是为什么它们经常被称为黑匣子。这使得很难确定他们是否基于错误的因素做出决策。
  2. 在处理杂乱且非结构化的数据(例如图像,音频和文本)时,神经网络的性能优于其它机器学习算法。但并不意味着神经网络可以替代其它机器学习算法。其它算法需要较少的计算资源,实现简单,在解决不需要神经网络的问题时更可取。

参考:
周志华,机器学习,清华大学出版社
李航,统计学习方法,清华大学出版社

你可能感兴趣的:(#,深度学习算法,神经网络,机器学习,深度学习)