神经网络模型

定义:"神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界体所作出的交互反应”【Kohonen, 1988】


基本部分:神经元模型

在生物神经网络中,每个神经元与其他神经元相连,如果某神经元的电位超过了某个"阔值" ,那么它就会被激活“兴奋”起来,向其他神经元发送化学物质.

由此抽象出数学模型:神经元接收到其他连结的神经元传递过来的n个输入信号,每个神经元的输入信号都具有相应权重,加权求和后神经元接收到的即为总输入值,将其与神经元的阀值进行比较,并进行处理后输出。

图源《机器学习》,周志华

此模型称为"M-P 神经元模型“

神经元输出时,需要通过”激活函数”(又称'响应函数")处理。常用激活函数有Sigmoid函数(又称"挤压函数"),函数公式为:sigmoid\left ( x\right )= \frac{1}{1+e^{-x}}。另有ReLU函数和softmax函数也作为激活函数。


感知机和多层网络

利用神经元可以构建感知机和多层网络。

                        感知机                                                                多层网络

其中感知机由两个神经元组成,输入层接收外界输入信号后传递给输出层, 输出层是 M-P 神经元。感知机可以解决简单线性问题,如逻辑与、或、非运算。具体方式见表

与 (X1 \cap X2)令ω1=ω2 = 1, y=f(1*x1+1*x2-2),仅X1= X2 =1时y= 1
或 (X1 \cup X2)令ω1=ω2 = 1, y=f(1*x1+1*x2-0.5),仅X1= X2 =1时y= 1
非 (-X1)令ω1= -0.6, ω2 =0, y=f(-0.6*x1+0*x2+0.5),仅X1=1时y= 0, X1=0时y= 1,

多层网络由输入层,隐层,输出层构成,其中输入层神经元接收外界输入,隐层与输出层神经元对信息进行处理,最终结果由输出层神经元输出。


机器学习得到相关参数值


对于感知机的参数训练:将阈值\theta看作是(-1)*^{\omega {n+1}}, 将问题统一为求解n+1个权重。

对训练样例(x, y), 若当前感知机的输出为\hat{y},那么有以下的调整:

{\omega_{i}}= {\omega_{i}}+\Delta {\omega_{i}}, 其中\bigtriangleup \omega i= \eta (y-\hat{y})xi

其中\eta \in\left (0 ,1\right )为学习率, 通常设置为一个非常小的正数。

对于线性可划分的问题,学习过程最后将收敛而求得合适的解\omega


而对于多层网络的参数训练,最常用的一种方式为误差逆传播算法(error BackPropagation ,简称 BP)

BP总体运算步骤

先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果; 然后计算输出层的误差,再将误差逆向传播至隐层神经元,最后根据隐层神经元的误差来对连接权和阈值进行调整

算法目标:调整参数使训练集上的累积误差达到最小

        其中累计误差:E= \frac{1}{m}\sum_{k=1}^{m}E_{k}E_{k}为均方误差

对参数值误差的调整

若给定训练集D={(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{m},y_{m})},x_{i}\in \mathbb{R}^{d},y_{i}\in \mathbb{R}^{l}, 即D中包含了m对向量组,其中x_{i}包含了d个元素,对应输入层d个数据; y_{i}包含了l个元素对应输出层l个数据。

记输出层第j个神经元的阈值为\theta _{j}  ,隐层第h个神经元的阈值用 \gamma _{h}表示。输入层第i个神经元与隐居第h 个神经元之间的连接权为 v_{ih},隐层第h个神经元与输出层第j个神经元之间 的连接权为w_{hj}。记隐层第h个神经元接收到的输入为 \alpha_{h} = \sum_{i=1}^{d}v_{ih}x_{i}  输出层第j个神经元接收到的输入为 \beta _{j} = \sum_{h=1}^{q}w_{hj}b_{h}, 其中b_{h}为隐层第h个神经元的输出

对于训练集中的某一个向量组(x_{k},y_{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}-y_{k})^{2}。根据已知的结果和机器给予的结果,对参数进行修正,公式类似于上述感知机的训练:{\omega_{i}}= {\omega_{i}}+\Delta {\omega_{i}}

基于梯度下降策略,可以计算得到各个参数的改变量计算公式

                输入层到隐层的d*q个权值v_{ih}\Delta v_{ih}=\eta e_{h}x_{i}

                隐层到输出层的q*l个权值w_{hj}\Delta \omega _{hj}=\eta g_{j}b_{h}

                q个隐层神经元的阈值\gamma _{h}\Delta \gamma _{h}=-\eta e_{h}

                l个输出层神经元的阈值\theta _{j}\Delta \theta _{j}=-\eta g_{j}

其中,\eta为学习率,e_{h}=b_{h}(1-b_{h})\sum_{j=1}^{l}w_{hj}g_{j}b_{h}为隐层第h个神经元的输出, g_{j}=\hat{y}_{j}^{k}\left ( 1- \hat{y}_{j}^{k}\right )(y_{j}^{k}-\hat{y}_{j}^{k})

为同时兼顾准确性和效率,w_{hj}\theta _{j}v_{ih}\gamma _{h}可以使用不同的学习率

权重更改时刻

标准BP算法:权重的更新是在每个训练样本(x_{k},y_{k})上计算梯度后立即进行的

累计误差逆传播算法:读取整个训练集D={(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{m},y_{m})},x_{i}\in \mathbb{R}^{d},y_{i}\in \mathbb{R}^{l}一遍后才对权重进行更新

两种算法的优劣:

累积误差逆传播算法在一批训练样本上进行权重更新,从而加速了训练过程;在每批训练样本中更准确地计算梯度,避免权重更新的过度波动。

但在很多任务中,累积误差下降到一定程度之后,进 一步下降会非常缓慢,这时标准 BP 往往会更快获得较好的解。

过拟合和改正

BP算法具有强大的表示能力。[Hornik et al., 1989] 证明,只需二个包含足够多神经元的隐层,多层前馈网络就能以任意精度逼近任意复杂度的连续函数。正是由于其强大的表示能力, BP 神经网络经常遭遇过拟合

常用两种方式来预防过拟合

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

正则化:在误差目标函数E中增加一个用于描述网络复杂度的部分,如连接权和阈值的平方和。公式变为E= \lambda \frac{1}{m}\sum_{k=1}^{m}E_{k}+(1-\lambda )\sum_{i}^{}\omega _{i}^{2},其中\omega _{i}表示连接权和阈值;\lambda \in (0,1)通过交叉验证法来估计

全局最小的寻找:算法目标是找到E最小时的参数,为跳出局部最小而接近全局最小,常常使用以下方式:以多组不同参数值初始化多个神经网络,取其中误差最小的解为最终参数;使用“模拟退火”技术;使用随机梯度下降;使用遗传算法等方式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值