机器学习-神经网络

目录

前言

一、神经元模型

二、感知机

2.1 感知机模型

2.2 感知机策略

2.3 感知机学习算法

三、神经网络

3.1 神经网络的特点

3.2 误差逆传播(BP)算法

四、全局最小与局部最小

总结



前言

       本文主要记录了有关机器学习问题中神经网络的部分,介绍了典型的BP算法,思路均来源于周志华老师《机器学习》第五章的内容和谢文睿老师的《机器学习公式详解》。




一、神经元模型

神经网络:由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所做出的交互反应。神经网络中的最基本成分是神经元模型,即定义中的“简单单元”。

一直沿用至今的是M-P神经元模型”(一个用来模拟生物行为的数学模型)

        神经元接受到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接受到的总输入值将与神经元的阈值进行比较(做减法),然后通过“激活函数”(模拟抑制或激活)处理以产生神经元的输出(通常是给下一个神经元)。

y=f(\sum_{i=1}^{n}\omega _{i}x_{i}-\theta )=f(\omega ^{T}x+b)

在使用单个M-P神经元的问题中,有两种典型的神经元激活函数:       

       在理想中是用Sgn(阶跃)函数,可以将输入值映射为输出值“0”或“1”,分别对应了神经元抑制和神经元兴奋,对应为感知机模型;

       但由于阶跃函数不连续、不光滑等性质,实际中用Sigmoid函数做为激活函数,它把可能在较大范围内变化的输入值挤压到(0,1)输出值范围内,故亦称为“挤压函数”,对应为对数几率回归模型。



二、感知机


2.1 感知机模型

感知机模型——激活函数为Sgn(阶跃函数)的神经元:

y=sgn(\omega ^{T}x-\theta )=\begin{Bmatrix} 1,\omega ^{T}x-\theta \geqslant 0\\ 0,\omega ^{T}x-\theta < 0 \end{Bmatrix}

其中,x\epsilon R^{n}为样本的特征向量,是感知机模型的输入,\omega ,\theta是感知机模型的参数,\omega \epsilon R^{n}为权重,\theta为阈值。

 从几何角度来说,给定一个线性可分的数据集T(使用感知机模型的前提),感知机的学习目标是求得能够对数据集T中的正负样本完全正确划分的超平面,其中\omega ^{T}x-\theta即为超平面方程。

n维空间的超平面(\omega ^{T}x+b=0,其中\omega ,x\epsilon R^{n}),拥有以下性质:

超平面方程不唯一;

法向量\omega垂直于超平面;

法向量\omega和位移项b确定一个唯一的超平面;

法向量\omega指向的那一半空间为正空间(点代入后值大于0),另一半为负空间(点代入后值小于0)。

2.2 感知机策略

       感知机学习策略:随机初始化\omega ,b,将全体训练样本代入模型找出误分类样本,假设此时误分样本集合为M\subseteq T,对任意一个误分类样本(x,y)\epsilon M来说,当\omega ^{T}x-\theta \geqslant 0时,模型输出值为\hat{y}=1,样本真实标记为y=0,反之可类推;综合两种情形可知,以下公式始终成立:(\hat{y}-y)(\omega ^{T}-\theta )\geqslant 0,故给定数据集T,其损失函数可以定义为:

L(\omega ,\theta )=\sum_{x\epsilon M}^{}(\hat{y}-y)(\omega ^{T}-\theta )

       可以看出,此损失函数非负,如果没有误分类点,损失值为0。且误分类点越少,误分类点离超平面越近,损失函数值就越小。

2.3 感知机学习算法

 当误分类样本集合M固定时,那么可以求得损失函数L(\omega )的梯度为\bigtriangledown_{\omega } L(\omega )=\sum_{x_{i}\epsilon M}^{}(\hat{y_{i}}-y_{i})x_{i}

感知机的学习算法采用随机梯度下降法,一次性随机选取一个误分点使其梯度下降对应权重\omega的更新公式为:

\omega \leftarrow \omega +\Delta \omega,其中\Delta \omega =-\eta (\hat{y_{i}}-y_{i})x_{i}=\eta (y_{i}-\hat{y_{i}})x_{i}

其中\eta \epsilon (0,1)被称为学习率,最终解出来的\omega通常不唯一,即权重和阈值不唯一。

可以看出,当感知机对训练样例(x,y)预测正确,则感知机不发生变化,否则将根据错误的程度进行权重调整。

三、神经网络

3.1 神经网络的特点

       像感知机这种单个神经元分类能力有限,如感知机模型只能分类线性可分的数据集,要想解决线性不可分的问题,需考虑使用多层功能神经元。例如对于异或问题:

 只需要通过两层感知机就能解决,输入层与输出层之间的一层被称为隐层或隐含层:

       更一般的神经网络为层级结构,每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。这种神经网络结构通常被称为“多层前馈神经网络”,结构示意图如下:

       将神经网络(记为NN)看作一个特征加工函数:x\epsilon R^{d}\rightarrow NN(x)\rightarrow y=x^{*}\epsilon R^{l}

对于单输出回归任务:相当于接一个R^{l}\rightarrow R的神经元,如“没有激活函数的神经元”,转化为:y=\omega ^{T}x^{*}+b,与线性回归模型的表达形式相同,区别在于x^{*}的来源;

对于分类任务:相当于接一个R^{l}\rightarrow [0,1]的神经元,如“激活函数为sigmoid函数的神经元”,转化为:y=\frac{1}{1+e^{-(\omega ^{T}x^{*}+b)}},与对数似然估计的模型形式相同。

       在模型训练过程中,神经网络在优化E(\omega ,b)过程中自动学习提取有用的特征(学习x^{*}),故机器学习更接近了“自动数据分析”,此时只需要提供足够的数据量即可大大提升学习效果。

       根据通用近似定理,只需一个包含足够多神经元的隐层,多层前馈网络就能以任意精度逼近任意复杂度的连续函数。因此,神经网络既能做回归、也能分类、且不需要复杂的特征工程。

但同时,对于具体场景,神经网络模型存在以下问题:

  • 需要神经网络做多深?多宽?——实际中采用“试错法”。
  • 神经网络结构应该如何设计才最合理?
  • 神经网络的输出结果该如何解释?

3.2 误差逆传播(BP)算法

        给定训练集D=\left \{ (x1,y1),(x2,y2),...,(xm,ym) \right \}x_{i}\epsilon R^{d},y_{i}\epsilon R^{l},即输入示例由d个属性描述,输出l维实值向量。

       以下示意图中给出拥有d个输入神经元、l个输出神经元、q个隐层神经元的多层前馈网络结构,\theta _{j}表示输入层第j个神经元的阈值、\gamma _{j}表示隐层第h个神经元的阈值、\nu _{ih}表示输入层第i个神经元与隐层第h个神经元之间的连接权、\omega _{hj}表示隐层第h个神经与输出层第j个神经元之间的连接权

       假设多层前馈网络中的激活函数全为sigmoid函数,且当前需要完成的任务为多输出回归任务,则损失函数可以用均方误差(分类任务用交叉熵)。

       对某个训练样本(x_{k},y_{k}),其中y_{k}=(y_{1}^{k},y_{2}^{k},...,y_{l}^{k}),假定其多层前馈网络输出为:\hat{y_{k}}=(\hat{y_{1}^{k}},\hat{y_{2}^{k}},...,\hat{y_{l}^{k}}),则该单个样本的均方误差为:E_{k}=\frac{1}{2}\sum_{j=1}^{l}(\hat{y^{k}_{j}}-y^{k}_{j})^{2}

       在此网络中,需要确定的参数有权值、阈值,BP是一个迭代学习算法,在每一轮中采用广义的感知机学习规则对参数进行更新估计,即\omega \leftarrow\omega +\Delta \omega\Delta\omega =-\eta \bigtriangledown _{\omega }E,仅需推出损失函数\bigtriangledown _{\omega }E关于参数\omega的一阶偏导即可。而NN(x)一般为极其复杂的非凸函数,故随机梯度下降法不能保证一定能走到全局最小点,更多情况为局部极小值点。

以下以从输入层到隐层的连接权\nu _{hj}为例来推导:

BP算法基于梯度下降策略,以目标的负梯度为方向对参数进行调整:

E_{k}=\frac{1}{2}\sum_{j=1}^{l}(\hat{y^{k}_{j}}-y^{k}_{j})^{2},给定学习率\eta \epsilon (0,1),有\Delta\nu _{ih}=-\eta \frac{\partial E_{k}}{\partial\nu _{ih}},而\frac{\partial E_{k}}{\partial \nu _{ih}}=\sum_{j=1}^{l}\frac{\partial E_{k}}{\partial \hat{y_{j}^{k}}}\cdot \frac{\partial \hat{y_{j}^{k}}}{\partial \beta _{j}}\cdot \frac{\partial \beta _{j}}{\partial b_{h}}\cdot \frac{\partial b_{h}}{\partial \alpha _{h}}\cdot \frac{\partial \alpha _{h}}{\partial \nu _{ih}}(根据各个变量之间的相互影响,求导需要逐层并求和),以下进行公式的化简:

         由此得到BP算法中关于\nu _{ih}的更新公式:\Delta \nu _{ih}=\eta e_{h}x_{i},类似的,\Delta \omega _{hj}=\eta g_{j}b_{h}\Delta \theta _{j}=-\eta g_{j}\Delta \gamma _{h}=-\eta e_{h}。式中:

e_{h}=-\frac{\partial E_{k}}{\partial b_{h}}\cdot \frac{\partial b_{h}}{\partial \alpha _{h}}=-\sum_{j=1}^{l}\frac{\partial E_{k} }{\partial\beta _{j}}\cdot \frac{\partial \beta _{j}}{\partial b_{h}}{f}'(\alpha _{h}-\gamma _{h})=b_{h}(1-b_{h})\sum_{j=1}^{l}\omega _{hj}g_{j}

       对于学习率\eta \epsilon (0,1),控制着算法每一轮迭代中的更新步长,过大易震荡,过小收敛速度会太慢,在整个过程中可做取值调整。

        以上算法更新规则基于单个的E_{k}推导而得,称为“标准BP算法”,而BP算法的目标是最小化训练集D上的累积误差:E=\frac{1}{m}\sum_{k=1}^{m}E_{k},类似可以推导出基于累积误差最小化的更新规则,就得到了“累积误差逆传播算法”

        一般来说, 标准BP算法只针对单个样例,参数更新非常频繁,且针对不同样例的更新效果存在“抵消”现象,故为了达到同样的累积误差极小点,需要更多次的迭代。而累积 BP算法直接对累积误差最小化,在读取整个训练集之后才对参数进行更新,频率下降了很多

       但累积误差在很多任务中下降到一定程度后会下降缓慢,此时采用标准 BP算法可以更快获得优质解,尤其是当训练集非常大时效果明显。

BP神经网络拥有强大的表达能力,但因此经常遭遇过拟合,其训练集误差持续降低,但测试误差可能上升,存在以下策略:

①“早停”:数据分为训练集和验证集,训练集用于计算梯度、更新连接权和阈值,验证集用来估计误差,若训练集误差降低但测试集误差升高,则停止训练,同时返回有最小验证集误差的连接权和阈值。

②“正则化”:在误差描述函数中加一个用于描述网络复杂度的部分,如连接权与阈值的平方和\omega _{i}^{2},则此时误差目标函数改变为:E=\lambda \frac{1}{m}\sum_{k=1}^{m}E_{k}+(1-\lambda )\sum_{i}^{}\omega _{i}^{2}

其中\lambda \epsilon (0,1)用于对经验误差和网络复杂度进行折中,通常由交叉验证法来估计。

四、全局最小与局部最小

 可直接类比一元函数中的极小值和最小值关系: 

现实任务中,跳出局部最小从而进一步接近全局最小的策略:

  • 以多组不同参数初始化多个神经网络,各自按照标准方法训练之后,取其中误差最小的解作为最终参数,可以更有可能接近全局最小的结果;
  • 使用“模拟退火”技术,在每一步都以一定概率接受比当前解更差的结果,有助于跳出局部最小。但迭代过程中,接受“次优解”的概率要随时间推移逐渐减低,保证算法稳定性;
  • 使用随机梯度下降,在计算梯度时加入随机因素,则即便陷入局部极小点,计算出的梯度可能也不为零,则有可能跳出局部最小。

总结

以上思路均来源于《机器学习》这本书第五章的内容。仅代表个人的思路和理解,如有错误欢迎指正!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值