西瓜书第五章
神经元模型
M-P神经元模型:n个其他单元的输入信号通过带权重的连接,总的输入值与阈值比较,通过激活函数处理产生输出。
常见的激活函数有阶跃函数和Sigmoid函数11+𝑒−𝑥。
感知机与多层网络
感知机为两层网络,一层输入一层输出。学习目标为权重和阈值,其中阈值的学习也可以转化为权重。
学习过程为𝑤𝑖←𝑤𝑖+Δ𝑤𝑖,Δ𝑤𝑖=𝜂(𝑦−𝑦̂ )𝑥𝑖,其中𝜂为学习率。
可以证明线性可分的问题(可以使用线性超平面划分)使用感知机学习可以收敛。
解决线性不可分的问题要使用多层神经元,在输入和输出之间添加隐含层。
得到多层前馈神经网络,即不存在同层连接和跨层连接。
误差逆传播算法
backpropagation算法,用于训练多层前馈神经网络。
通常情况下,训练集中的输入数据和输出数据为多维向量(离散属性的处理)。
BP是迭代学习算法,每一轮中使用广义感知机的学习规则𝑣←𝑣+Δ𝑣更新参数。
使用梯度下降学习策略,以目标的负梯度方向调整参数,使用学习率调节步长。
输出值相对权值的梯度的计算根据链式法则由激活函数和每一层的输入值决定。
上述标准BP算法每次针对一个样例更新参数。
累计BP算法读取一遍训练集(epoch)并得到累计误差,从而进行参数更新,更新频率比较低。
为了防止过拟合,可以采用两种策略
早停:训练集分出一部分验证集,训练集误差降低而验证集误差升高时停止训练。
正则化:目标函数中增加一个表示网络复杂度的成分,例如权值平方和得到𝐸=𝜆1𝑚∑𝐸𝑘+(1−𝜆)∑𝑤2𝑖。
全局最小与局部极小
误差目标函数可以看作参数值的函数。神经网络的训练过程为寻找最优的一组参数值。
存在全局最小值和局部极小值,后者表示邻域内的误差函数都大于该点。
梯度为0的点可以是局部极小值点。基于梯度的搜索策略可能落入局部极小值点。
常见跳出局部最优值的方法有:
多组不同的参数初始化:从不同的初始值开始搜索。
模拟退火:参数更新时以一定的概率接受次优解(此概率逐渐减小)
随即梯度下降法
其他常见神经网络
RBF网络
径向基函数网络,通常为单隐层网络,使用径向基函数作为激活函数。
高斯径向基函数𝜌(𝑥,𝑐𝑖)=𝑒−𝛽𝑖||𝑥−𝑐𝑖||2。
ART网络
自适应谐振理论网络。使用竞争学习的思想进行无监督学习。
竞争学习中每一时刻仅有一个竞争获胜的神经元被激活,其他的被抑制。
识别层每个神经元记录一个模式类。计算输入向量与每个神经元的距离值,如果距离小于设定的阈值则激活某一个神经元并抑制其他的,同时更新参数。如果距离都大于阈值则将输入向量设置为新的一类。
ART网络缓解了可塑性-稳定性窘境。可以增量学习和在线学习。
SOM网络
自组织(特征)映射网络。将高维数据映射到低维空间并保持数据点之间的拓扑关系。
输出层神经元按矩阵形式排列。
训练时根据输入选择激活的神经元,同时更新权值使临近神经元与当前样本距离减小。
级联相关网络
属于一种结构自适应网络,网络结构也是学习目标之一。
初始情况只有输入和输出,训练过程中逐渐增加隐层单元,通过最大化新单元的输出和误差函数的相关性来训练参数。
Elman网络
是最常用的递归神经网络之一,网络的输出不仅取决于当前输入还取决于上一时间步的输出。
隐层神经元的输出参与下一时刻的输入。
Boltzmann机
基于能量的模型。
使用 s i s_i si 表示单元的状态, w i j w_{ij} wij 表示权值, θ i \theta_i θi表示阈值。
定义能量𝐸(𝑠)=−∑∑𝑤𝑖𝑗𝑠𝑖𝑠𝑗−∑𝜃𝑖𝑠𝑖。概率𝑃(𝑠)=𝑒−𝐸(𝑠)∑𝑒−𝐸(𝑠)。
训练过程为将训练样本看作状态向量并使其概率尽可能大。
具体使用中常用受限Boltzmann机,并使用CD算法进行训练。
深度学习
典型深度学习模型就是深层的神经网络,通过增加隐层的数量来增加模型复杂度。
多隐层的神经网络难以直接使用BP算法训练,会出现不收敛的情况。主要有两种解决方法。
使用无监督逐层训练的方法,每次训练一层隐节点,称为预训练,全部完成后进行微调。
使用权共享的思路,让一组神经元使用相同的权。在卷积神经网络中有非常重要的作用。
(在CNN中每个卷积层包含多个特征映射,每个池化层基于局部相关性原理进行压采样,其中每一组神经元都使用相同的连接权,减少参数数量。)
深度学习可以理解为特征学习或者表示学习。传统机器学习中通过人工设计样本特征,而特征学习通过机器学习技术自适应产生特征。