机器学习:神经网络模型

神经网络(neural networks)即人工神经网络,是一种应用类似于大脑神经突触联接的结构进行信息处理的数学
模型.

1.1 神经网络
T.Kohonen 1988年在Neural Networks创刊号上给出神经网络定义:神经网络是由具有适应性的简单单元组成的广泛并行互联的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应.
1943年McCulloch and Pitts这篇文章将上述情形抽象为简单的模型,如下图,即为沿用至今的"M-P神经元模型".在这个模型中,神经元接受到来自n个其他神经元传递过来的信号,这些输入信号通过带权重的连接进行传递,神经元接受到的总输入值将与神经元的阈值进行比较,然后通过激活函数(activation function)处理以产生神经元的输入.

M-P神经网络模型

理想中的激活函数应是阶跃函数,它将输入值映射为输出值0或1,显然1对应于神经元兴奋,而0对应于神经元抑制,但是阶跃函数具有不连续,不光滑的性质等性质,因此实际常用Sigmoid函数作为激活函数.典型的Sigmoid函数,可以吧较大范围内变化的输入值挤压到(0,1)输出值范围,因此有时也称"挤压函数".

Sigmoid激活函数

1.2 感知机与多层网络

感知机是由两层神经元组成,如图,输入层接受外界输入信号后传递给输出层,输出层是M-P神经元,也称作”阈值逻辑单元“.
在这里插入图片描述

感知机能容易地实现逻辑运算(或与非)

此外,给定训练数据集,权重ωi以及阈值θ可通过学习得到.阈值可看作一个固定输入为-1.0的哑节点所对应的连接权重ωn+1,这样权重和阈值的学习就可统一为权重学习.

感知机的学习规则:对于训练样例(x,y),若当前感知机的输出为y0,则感知机权重将这样调整:

(1.2.1 ) ωi <— ωI + ΔωI
(1.2.2) ΔωI = η(y - y0)xI
其中η在0到1之间称为学习率,从上式中可以发现当感知机对训练样例(x,y)预测正确,即y = y0则感知机不发生变化,否则会根据错误的程度进行权重的调整.
但是感知机只有输出层是进行激活函数处理的,所以只拥有一层功能神经元,学习能力十分有限.而且,感知机的学习过程在线性可分问题上可以收敛,但是对于非线性可分问题,感知机学习过程会发生振荡,不能求得合适解.

要解决非线性可分问题,需考虑使用多层功能神经元.例如简单的两层感知机就能解决异或问题(非线性可分)

由此我们引出一种常见的神经网络,具有层级结构,如图在这里插入图片描述

每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接.这样的神经网络结构通常称为多层前馈神经网络.(前馈是指网络拓扑结构上不存在环或回路)其中输入层神经元接受外界输入,隐藏层与输出层神经元对信号进行加工,最终结果有输出层神经元输出(输入层不接受函数处理)

1.3 误差逆传播算法

多层网络的学习能力比单层感知机强的多,想要训练多层网络,需要更强大的算法. 误差逆传播算法就是其中的最杰出代表,是迄今最为成功的神经网络学习算法.

推导过程见手写:
在这里插入图片描述
在这里插入图片描述

问题:由于BP神经网络强大的表示能力,其经常遭遇过拟合,其训练误差持续降低,但测试误差持续上升.
有两种策略来缓解过拟合,第一种策略是"早停":将数据集分为训练集和验证集,训练集用来计算梯度,更新连接权和阈值,验证集用来估计误差,若训练集误差降低但是验证集升高,则停止训练,同时返回具有最小验证集误差.第二种是"正则化"基本思想为在误差目标函数中增加一个用于描述网络复杂度的部分,例如连接权和阈值的平方和.然后误差目标函数改为
在这里插入图片描述
其中λ ∈ (0,1) 用于对经验误差与网络复杂度这两项进行拆中,常通过交叉验证法来估计.

1.4 局部最小和全局最小

若用E表示神经网络在训练集上的误差,则他显然是关于连接权ω和阈值θ之间的函数.此时神经网络训练过程,可看作一个参数寻优过程,即在参数空间中,寻找一组参数使得E最小.

我们常常关注两种最优,局部极小和全局最小(定义类似于数学分析中的极限形式)
若存在ε, 使得:
∀ (ω;θ) ∈ { (ω;θ) | || (ω;θ) - (ω**) || <= ε } 都有E(ω;θ) >= E(ω**) 则(ω**)为局部极小解,若对参数空间中任意的(ω**)都满足上述情况,则(ω**)为全局最小解.
显然参数空间内梯度为零的点,只要其误差函数值小于邻点的误差函数值,就是局部最小点;可能存在多个局部极小值,但却只会有一个全局最小值,即全局最小一定为局部最小,反之不成立.

基于梯度的搜索方法是使用最为广泛的参数寻优方法,在此类方法中,我们从某些初始解出发,迭代寻找最优参数值.每次迭代中,我们先计算误差函数在当前点的梯度,然后根据梯度确定搜索方向.(例如负梯度方向是函数值下降最快的方向,因此梯度下降算法就是沿着副梯度方向搜索最优解)若误差函数在当前的梯度已经为零,则已达到局部极小,更新量将为0,这意味着参数迭代更新将在此停止.显然,如果误差函数仅有一个局部极小,那么此时找的局部极小就是全局最小;然而,如果误差函数具有多个局部极小,则不能保证找到的解是全局最小.对后一种情形,我们称参数寻优陷入了局部极小,这显然不是我们所希望的.

在现实任务中,我们采用以下策略来试图"跳出"局部极小,从而进一步接近全局最小.

1 以多组不同参数值初始化多个神经网络,按标准方法训练后,取其中误差最小的解作为最终参数,相当于从多个不同的初始点开始搜索,这样就可能陷入不同的局部最小,从中进行选择有可能获得更接近全局最小结果

2 模拟退火技术:在每一步以一定概率接受比当前解更差的结果,有助于跳出局部最小(可能跳出全局最小)
3 随机梯度下降:在梯度算法中加入随机因素

1.5 深度学习

由于时代因素,计算能力的大幅提高可以缓解训练低效性,训练数据的大幅增加可以降低过拟合风险.因此,深度学习为代表的复杂模型开始受到人们关注.

典型的深度学习模型就是很深的神经网络.显然对于神经网络模型,提高容量的一个简单办法就是增加隐藏层数目.然而,多隐藏层神经网络难以直接用经典算法(BP)进行训练,因为误差在多隐藏层内逆传播时,往往发散而不能收敛到稳定状态.

i] :无监督逐层训练是多隐藏层网络训练有效手段,其基本思想是每次训练一层隐结点,训练时将上一层隐节点的输出作为输入,而本层隐节点的输出作为下一层的隐结点,这称作"预训练",在预训练全部完成之后,再对整个网络进行微调.

实际上预训练+微调做法可视为将大量参数分组,对每组先找到局部看来比较好的设置,然后再基于这些局部较优的结果联合起来进行全局寻优.这样就在利用了模型大量参数所提供的自由度的同时,有效的节省了训练开销.

ii]: 另一种方法就是"权共享",即让一组神经元使用相同的连接权.这个策略在卷积神经网络中发挥了重要作用.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值