机器学习——神经网络
神经网络是由具有适应性的简单单元组成的广泛并行互连的网络。神经网络中最基本的成分是神经元模型。以下图常见的“M-P神经元模型”为例,在这个模型中,神经元接收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元收到的总输入值将与神经元的阈值进行比较,然后通过激活函数处理以产生神经元的输出。
一、神经网络
神经网络是由具有适应性的简单单元组成的广泛并行互连的网络。神经网络中最基本的成分是神经元模型。以下图常见的“M-P神经元模型”为例,在这个模型中,神经元接收到来自nnn个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元收到的总输入值将与神经元的阈值进行比较,然后通过激活函数处理以产生神经元的输出。
理想中的激活函数是左下图所示的阶跃函数,但是阶跃函数具有不连续、不光滑等不太好的性质,因此实际常用Sigmoid函数作为激活函数,典型代表是对数几率函数,它把可能在较大范围内变化的输入值挤压到(0,1)输出值范围内,因此有时也称为“挤压函数”。

把许多个这样的神经元按一定的层次结构连接起来,就得到了神经网络。
二、多层网络
常见的神经网络是如下图所示的层级结构,每层神经元与下一层的神经元完全互连,神经元之间不存在同层连接,也不存在跨层连接,这样的神经网络结构通常称为“多层前馈神经网络”。
“前馈”并不意味着网络中信号不能向后传,而是指网络拓扑结构中不存在环或回路。

多层前馈神经网络中,输入层神经元接收外界输入,隐层与输出层神经元对信号进行加工,最终结果由输出层神经元输出。输入层神经元仅是接受输入,不进行函数处理,隐层与输出层包含函数功能神经元。
神经网络的学习过程,就是根据训练数据来调整神经元之间的“连接权”以及每个功能神经元的阈值。神经网络学到的东西,蕴涵在连接权与阈值中。
多层前馈网络有强大的表示能力(万有逼近性)
仅需一个包含足够多神经元的隐层,多层前馈神经网络就能以任意精度逼近任意复杂度的函数。
但是,如何设置隐层神经元是未解决问题,实际上常用“试错法”。
三、误差逆传播算法(BP算法)

对训练样例(xk,yk)(x_k,y_k)(xk,yk),假定神经网络的输出为y^k=(y^1k,y^2k,⋯ ,y^lk)\hat {y}_k=(\hat y_1^k,\hat y_2^k,\cdots,\hat y_l^k)y^k=(y^1k,y^2k,⋯,y^lk),即y^jk=f(βj−θj)\hat y_j^k=f(\beta_j-\theta_j)y^jk=f(βj−θj)(表示的是第j个神经元关于第k个样例的输出)。神经网络在(xk,yk)(x_k,y_k)(xk,yk)上的均方误差为
Ek=12∑j=1l(y^jk−yjk)2 E_k=\frac 1 2\sum_{j=1}^l (\hat y_j^k -y_j^k)^2 Ek=21j=1∑l(y^jk−yjk)2
BP神经网络中有(d+l+1)q+l个参数需要确定:输入层到隐层的dq个权值、隐层到输出层的ql个权值、q个隐层神经元的阈值、l个输出层神经元的阈值。BP是一个迭代学习算法,在迭代的每一轮中采用广义的感知机学习规则对参数进行更新估计,任意参数v的更新估计式为v←v+Δvv \leftarrow v+\Delta vv←v+Δv
BP算法基于梯度下降策略,以目标的负梯度方向对参数进行调整,给定学习率η\etaη
BP算法的工作流程:对于每个训练样例,BP算法先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果;然后计算输出层的误差,再将误差逆向传播至隐层神经元,最后根据隐层神经元的误差来对连接权和阈值进行调整。该迭代过程循环进行,直到达到某些停止条件为止,例如训练误差已经达到一个很小的值。
神经网络就有强大的表示能力,BP神经网络经常出现“过拟合”的情况,其训练误差持续降低,但是测试误差却可能上升。有两种策略常用来缓解BP网络的过拟合。方法一,“早停”:将数据分成训练集和验证集,训练集用来计算梯度、更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。方法二,“正则化”:在误差目标函数中增加一个用于描述网络复杂度的部分,例如连接权和阈值的平方和,仍令EkE_kEk表示第kkk个训练样例上的误差,wiw_iwi表示连接权和阈值,则目标函数改变为:
E=λ1m∑k=1mEk+(1−λ)∑iwi2 E=\lambda \frac 1 m \sum_{k=1}^m E_k+(1-\lambda)\sum_i w_i^2 E=λm1k=1∑mEk+(1−λ)i∑wi2
偏好比较小的连接权和阈值,这样会使网络输出更光滑
其中λ∈(0,1)\lambda \in(0,1)λ∈(0,1)用于对经验误差与网络复杂度这两项进行折中,常通过交叉验证法来估计。
更多推荐
所有评论(0)