神经网络是由具有适应性的简单单元组成的广泛并行互连的网络
神经元接收来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过“激活函数”处理以产生神经元的输出。
典型激活函数有“跃阶函数”和“激活函数”
把多个这样的神经元按照一定层次连接起来,就得到了神经网络
单层感知机能容易实现逻辑与、或、非运算
一般地,给定训练数据集,,权重 w i w_i wi和阈值 θ \theta θ可以通过学习得到,通过将阈值 θ \theta θ看作一个固定输入为-1.0的哑结点所对应的连接权重,可以将权重和阈值的学习统一为权重的学习。
感知机权重的调整规则如下:
η \eta η为学习率
注意:
1.感知机只有输出层神经元进行激活函数处理
2.针对线性可分的问题, 感知机的学习过程一定会收敛,可以将学习过程稳定下来,但针对异或这样的非线性可分问题,需要考虑使用多层功能神经元(多层感知机)。
对于多层感知机而言,输入层和输出层中间的神经元层称为隐含层,隐含层和输出层神经元都是拥有激活函数的功能神经元,如下图所示。
更为常见的神经网络是形如下图所示,每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在夸层连接。这样的神经网络结构通常被称为“多层前馈神经网络”。
神经网络的学习过程,就是根据训练数据来调整神经元之间的“连接权”,以及每个功能神经元的阈值,换言之,神经网络“学”到的东西,蕴涵在连接权重与阈值中。
BP算法基于梯度下降的策略,以目标的负梯度方向对参数进行调整。
因为书中符号过于繁杂,这里简要描述:
这里主要是求目标函数(损失函数)对参数的梯度,表示目标函数在某个参数上面上升最快的方向,以梯度的负方向表示目标函数下降最快的方向进行更新参数,能够快速下降目标函数的值。这里对于靠前的层的参数主要是采用链式求导法则求梯度。最后乘以学习率进行更新。
如下为BP算法的工作流程:
注意:
BP算法的目标是要最小化训练集 D D D上的累积误差
“标准BP”算法每次只针对一个训练样本更新连接权重和阈值,而累积BP算法针对累积误差最小化,需要读取整个训练集一遍后才对参数进行更新,其参数更新频率低的多,但在很多任务中,累积误差下降到一定程度后,进一步下降会非常缓慢,这时标准BP往往会更快获得较好的解,尤其是在训练集D非常大时更明显。(引入SGD)
解决过拟合方法:
“early stop”:数据分为训练集和验证集,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。
“正则化”:在误差目标函数中增加一个用于描述网络复杂度的部分。
局部极小:参数空间中的某个点,其邻域点的误差函数值均不小于该点的函数值
全局最小:指参数空间中所有点的误差函数值均不小于该点的函数值
局部极小与全局最小如图所示:
基于梯度的搜索是使用最为广泛的参数寻优方法。由于负梯度方向是函数值下降最快的方向,因此梯度下降法就是沿着负梯度方向搜索最优解,若误差函数在当前点的梯度为零,则已达到局部极小,更新量将为零,意味着参数的迭代更新将在此停止,但如果有多个局部极小,则不能保证找到就是全局最小(陷入局部极小)。
跳出局部极小策略:
径向基函数网络
使用径向基函数作为隐层神经元激活函数,而输出层则是对隐层神经元输出的线性组合。
输入为 d d d维向量 x x x,输出为实值,则RBF表示为:
其中 q q q为隐层神经元个数, c i c_i ci和 w i w_i wi分别是第 i i i个隐层神经元所对应的中心和权重, ρ ( x , c i ) \rho(x,c_i) ρ(x,ci)是径向基函数,这是某种沿径向对称的标量函数,通常定义为样本 x x x到数据中心 c i c_i ci之间欧式距离的单调函数,常用的高斯径向基函数形如:
竞争型学习是神经网络中一种常用的无监督学习策略,在使用该策略时,网络的输出神经元相互竞争,每一时刻仅有一个竞争获胜的神经元被激活,其他神经元的状态被抑制,这种机制亦称“胜者通吃”原则。ART网络时竞争型学习的重要代表。
SOM网络是一种竞争学习型的无监督神经网络,它能将高维输入数据映射到低维空间(通常为二维),同时保持输入数据在高维空间的拓扑结构,即将高维空间中相似的样本点映射到网络输出层的临近神经元。
一般的神经网络模型通常假定网络结构是事先固定的,训练的目的是利用训练样本来确定合适的连接权、阈值等参数。与此不同,结构自适应网络则将网络结构也当作学习的目标之一,并希望能在训练过程中找到最符合数据特点的网络结构,级联相关网络是结构自适应网络的重要代表。
与前馈神经网络不同,“递归神经网络”允许网络中出现环形结构,从而可让一些神经元的输出反馈回来作为输入信号。这样的结构与信息反馈过程,使得网络在 t t t时刻的输出状态不仅与 t t t时刻的输入有关,还与 t − 1 t-1 t−1时刻的网络状态有关,从而能处理与时间有关的动态变化。
后续学习再更新。。。
即深层的神经网络,增加隐层数不仅增加了拥有激活函数的神经元数目,还增加了激活函数嵌套的层数。
深度学习通过多层堆叠、每层对上一层的输出进行处理的机制,逐渐将初始的“低层”特征表示转化为“高层”特征表示后,用“简单模型”即可完成复杂啊分类等学习任务,由此可以将深度学习理解为进行“特征学习”。
相比于以往机器学习用于现实任务时,样本的特征需要专门的“特征工程”,在深度学习中逐渐转化为通过技术自身来产生好的特征,使得机器学习向“全自动数据分析”又前进了一步。
参考: