神经网络

来源:互联网 发布:淘宝营销活动 编辑:程序博客网 时间:2024/06/06 04:51

神经网络

神经元模型

f=(i=1nωixiθ)

其中 xi 为来自第 i 个神经元的输入,ω 是第 i 个神经元的连接权重,θ 是阈值. 经常用 Sigmoid 函数作为激活函数:sigmoid(x)=11+ex.

感知机学习

感知机的学习非常简单,对样例 (x,y),若当前感知机的输出为 y^,则感知机权重将这样调整:

ωiωi+Δωi

Δωi=η(yy^)xi

其中 η(0,1) 称为学习率(learning rate).
单层感知机只能解决线性可分问题. 否则感知机学习过程会发生震荡,ω 难以稳定下来。

误差逆传播算法

一般指的是BP算法训练的多层前馈神经网络.
给定训练集 D={(x1,y1),(x2,y2),,(xm,ym)}xiRl,即输入示例由 d 个属性描述,输出 l维实值向量. 现有一个拥有 d 个输入神经元、 l 个输出神经元、 q 个隐层神经元的多层前馈网络结构,其中输出层第 j 个神经元与隐层神经元的阈值用 θj 表示,隐层第 h 个神经元的阈值用 γh 表示. 输入层第 i 个神经元与隐层第 h 个神经元之间的连接权为 vih,隐层第 h 个神经元与第 j 个神经元之间的连接权为 ωhj. 记隐层第 h 个神经元接收到的输入为 αh=di=1vihxi,输出层第 j 个神经元接收到的输入为 βj=qh=1ωhjbh,其中 bh 为隐层第 h 个神经元的输出.
对训练样例 (xk,yk),假定神经网络的输出为 yk^=(y^k1,y^k2,,y^kl),即

y^kj=f(βj,θj)

则网络在 (xk,yk) 上的均方误差为

Ek=12j=1l(y^kjykj)2

在迭代的每一轮中采用广义的感知机学习规则对参数进行更新估计,即对任意参数 v 的更新估计式为

vv+Δv

以目标负梯度方向对参数进行调整,对误差 Ek,给定学习率 η,有:

Δωhj=ηEkωhj

注意到 ωhj 先影响到第 j 个输出层的输入值 βj,再影响到其输出值 y^k1,然后影响到 Ek,有:

Ekωhj=Eky^kjy^kjβjβjωhj

根据 βj 的定义,显然有:

βjωhj=bh

Sigmoid 函数有一个很好的性质:

f(x)=f(x)(1f(x))

于是根据式(1)和(2),有:

gj=Eky^kjy^kjβj

=(y^kjykj)f(βjθj)

=y^kj(1y^kj)(ykjy^kj)

ωhj 的更新公式为:

Δωhj=ηgjbh

类似可得

Δθj=ηgj

Δvih=ηehxi

Δγh=ηeh

一般来说标准 BP 算法每次更新只针对单个样例,参数更新非常频繁,而且对不同样例进行更新的效果可能出现“抵消”现象. 因此为了达到同样的累计误差极小点,标准BP算法需要更多次的迭代。累积 BP 算法直接针对累积误差最小化,它在读取整个训练集 D 一遍后才对参数进行更新,参数更新频率低,但是累积误差下降到一定程度之后,进一步下降会非常缓慢,这是标准 BP 往往会更快获得较好的解.

标准梯度下降与随机梯度下降的区别:

区别在于损失函数的定义,如果是整体损失,则为标准梯度下降,如果是单个损失,则为随机梯度下降

防止过拟合

早停

​ 将数据集分成训练集和验证集,训练集用来训练,验证集用来验证。如果训练误差降低但验证集误差升高,停止训练.

正则化

​ 在误差目标函数中增加一个用于描述网络复杂度的部分,如:

E=λ1mk=1mEk+(1λ)iω2i

其中 λ(0,1)

全局最小与局部极小

一下策略跳出局部极小,

  • 以多种不同的参数值初始化多个神经网络
  • 使用“模拟退火”技术,在每一步都以一定概率接受比当前解更差的结果,在每步迭代中,接受“次优解”的概率要随着时间的推移而逐渐降低
  • 使用随机梯度下降
原创粉丝点击