机器学习-神经网络
1、神经元模型
M-P神经元模型
来自n个其他神经元的输入信号通过权重汇总,与阈值进行比较,然后通过激活函数activation function处理产生输出。许多神经元按照一定的层次结构连接组成神经网络。
理想的激活函数为阶跃函数,但具有不连续、不光滑的不太好的性质
实际常用Sigmoid函数
2、感知机与多层网络
由两层神经元构成
- 输入层接受外界输入信号
- 输出层是M-P神经元
通过训练数据集学习 ω \omega ω和 θ \theta θ,阈值 θ \theta θ可看作固定输入为-1的哑结点的连接权重 ω n + 1 \omega_{n+1} ωn+1
若当前感知机输出 y ^ \hat{y} y^,则感知机权重调整方式为
η ∈ ( 0 , 1 ) \eta\in(0,1) η∈(0,1)为学习率learning rate
感知机只能处理线性可分问题,即存在一个线性超平面将两类模式分开,此时感知机的学习过程一定会收敛converge,否则会发生震荡fluctuation, ω \omega ω难以稳定
解决非线性可分问题,需考虑使用多层功能神经元,在输入层和输出层之间添加一层隐含层,隐含层和输出层神经元都是拥有激活函数的功能神经元
一般化为多层前馈神经网络,每层神经元与下一层神经元完全互连,不存在同层连接和跨层连接
3、误差逆传播算法
误差逆传播算法error BackPropagation是训练多层网络的杰出代表。
算法流程,公式推导看书
基于梯度下降算法,以负梯度对各参赛进行调整,学习率 η \eta η控制算法的更新步长,太大则容易震荡,太小则收敛速度会过慢
标准BP算法每次仅针对一个训练样例更新连接权值和阈值,参数更新频繁,对不同的样例进行更新的效果可能出现抵消现象
累积BP算法直接针对累积误差最小化,读取整个训练集D后才对参数进行更新,参数更新频率低得多,但累积误差下降到一定程度后进一步下降会非常缓慢,往往在后期换为标准BP算法
只需一个包含足够多神经元的隐藏层,多层前馈网络就能以任意精度逼近任意复杂度的连续函数,但不知道隐藏层神经元个数
BP神经网络表示能力过于强大,会有过拟合问题,
- 早停,若训练集误差降低但测试集误差升高,则停止训练
- 正则化,基本思想是在误差目标函数中增加一个用于描述网络复杂度的部分,例如连接权值和阈值的平方和
4、全局最小和局部极小
负梯度方向是函数值下降最快的方向,因此梯度下降法就是沿着负梯度方向搜索最优解。若误差函数在当前点的梯度为零,则已达到局部极小,更新量将为零。
如误差函数有多个局部极小,则不能保证找到的解是全局最小。
如何跳出局部极小,接近全局最小:
- 以多组不同参数值初始化多个神经网络,最后取其中误差最小的解作为最终参数,相当于从多个不同的初始点开始搜索
- 模拟退火simulated annealing技术,在每一步都以一定概率接受比当前解更差的结果,有助于跳出局部极小。接受次优解的概率要随着是时间的推移而逐渐降低
- 使用随机梯度下降法,在计算梯度时加入了随机因素,于是即便陷入局部极小点,计算出的梯度仍可能不为零
5、其他常见的神经网络
5.1、RBF网络
使用径向基函数作为隐层神经元激活函数
通常定义为样本 x x x到数据中心 c i c_i ci之间欧式距离的单调函数
输出层是对隐层神经元输出的线性组合,网络表示为
训练过程:
- 确定神经元中心 c i c_i ci,常用随机采样、聚类等
- 利用BP算法确定参数 ω i \omega_i ωi和 β i \beta_i βi
5.2、ART网络
ART网络Adaptive Resonance Theory是竞争型学习的重要代表。由比较层、识别层、识别阈值和重置模块构成。
优点:可进行增量学习或在线学习,即在学得模型后,再接收到训练样例时,可对模型进行更新,而不必重新训练。
5.3、SOM网络
SOM网络Self-Organizing Map,一种竞争学习型的无监督神经网络,能将高维输入数据映射到低维空间,同时保持输入数据在高维空间的拓扑结构,即将高维空间中相似的样本点映射到网络输出层中的临近神经元。
5.4、级联相关网络
结构自适应网络将网络结构也当作学习的目标之一。级联相关网络是其重要代表。
最开始只有输入层和输出层,处于最小拓扑结构;加入新的隐层神经元,通过最大化此神经元的输出与网络误差之间的相关性来训练相关参数,从而创建起层级结构。
优点:无需设置网络层数,隐层神经元数目,训练速度快
缺点:数据较小时容易发生过拟合
5.5、Elman网络
递归神经网络recurrent neural network允许网络中出现环形结构,使网络在t时刻不仅与t时刻的输入有关,还与t-1时刻的网络状态有关,能处理与时间有关的动态变化。
Elman网络,隐层神经元的输出被反馈回来,与下一时刻输入层神经元提供的信号一起,作为隐层神经元在下一时刻的输入。
5.6、Boltzmannn机
定义一个能量函数,网络训练的目标是最小化此能量函数。
神经元状态取0,1布尔值,能量定义为
向量 s ∈ { 0 , 1 } n s\in\left\{{0,1}\right\}^n s∈{0,1}n表示n个神经元的状态, ω i j \omega_{ij} ωij为神经元i,j之间的连接权, θ i \theta_i θi表示神经元i的阈值
新状态向量 s s s出现的概率由其能量和所有可能状态向量的能量确定
训练过程是将每个训练样本视为一个状态向量,使其出现的概率尽可能大
6、深度学习
从增加模型复杂度的角度,增加隐层的数目比增加隐层神经元的数目更有效,因其不仅增加了拥有激活函数的神经元数目,还增加了激活函数嵌套的层数。
难以用经典算法如BP算法进行训练,因为误差在多隐层内逆传播是,往往会发散而不能收敛。
预训练+微调:将大量参数分组,对每组找到局部最优解,再基于此联合寻找全局最优
预训练:如无监督逐层训练unsupervised layer-wise training,将上一层的输出作为下一层的输入,逐层训练
微调:每层预训练完成后,再利用BP算法对整个网络进行训练
权共享:一组神经元使用相同的连接权,如CNN卷积神经网络Convolutional Neural Network,卷积层和采样层中每一组神经元(平面)都使用相同的连接权,大幅减少了需要训练的参数数目
深度学习通过多层处理,将初始低层特征表示转化为高层特征表示,用简单模型即可完成复杂的分类等学习任务,故可将深度学习理解为特征学习