机器学习吃瓜记-05
主要内容
西瓜书的第5章 神经网络
。
第5章 神经网络
神经网络neural networks
[Kohonen,1988]
神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所做出的交互反应。
神经网络学习是机器学习与神经网络这两个学科领域的交叉部分。
1.神经元模型
神经元neuron模型
神经元是神经网络组成的最基本成分。
MP神经元模型
[McCulloch and Pitts,1943]
MP神经元模型是由神经元模型抽象而成的简单模型。
在这个模型中,神经元接收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过激活函数activation function
处理以产生神经元的输出。
激活函数
理想的激活函数
: 阶跃函数
实际的激活函数
: Sigmoid函数,连续且光滑具有良好的数学性质。常用Logistic函数
2.感知机与多层网络
感知机Perceptron
是由两层神经元组成,输入层和输出层。
输入层接收到信号后传递给输出层。
输出层是MP神经元,亦称阈值逻辑单元threshold logic unit。
学习规则
权重调整规则如下
\[
\begin{array}{c}
w_{i} \leftarrow w_{i}+\Delta w_{i} \\
\Delta w_{i}=\eta(y-\hat{y}) x_{i}
\end{array}
\]
即当前感知机的输出\(\hat{y}\)不等于\(y\)时根据学习率\(\eta\)来调整\(w_{i}\)的权重。若\(\hat{y} = y\)时即为预测成功,权重不变。
局限性
因为感知机只有输出层神经元进行了激活函数处理,只有一层功能神经元。所以学习能力非常有限,只能解决线性可分问题例如与、或、非问题,但是无法学习非线性可分的异或问题。
使用多层功能神经元,例如两层感知机可以解决异或问题。
更一般的神经网络称作多层前馈神经网络multi-layer feedforward neural networks
。
3.误差逆传播算法
误差逆传播算法error BackPropagation
简称BP算法。BP算法是最典型的多层网络学习规则。不仅可以适用于多层前馈神经网络,还可以在其他类型的神经网络。
需要确定参数个数
需要确定的参数个数为\((d+l+1)q + l\)个,分别为
- 输入层到隐层\(d\times q\)权值
- 隐层到输出层\(q \times l\)权值
- \(q\)个隐层神经元阈值
- \(l\)个输出层神经元阈值
参数更新
BP算法基于梯度下降策略gradient descent
\[
\Delta w_{h j}=-\eta \frac{\partial E_{k}}{\partial w_{h j}}
\]
\(w_{hj}\)首先
影响到第\(j\)个输出层神经元的输入
\(\beta_{j}\),再影响到其输出值
\(\hat{y}^{k}_{j}\),然后影响到误差\(E_{k}\)。
所以存在链式关系。
\[
\frac{\partial E_{k}}{\partial w_{h j}}=\frac{\partial E_{k}}{\partial
\hat{y}_{j}^{k}} \cdot \frac{\partial \hat{y}_{j}^{k}}{\partial
\beta_{j}} \cdot \frac{\partial \beta_{j}}{\partial w_{h j}}
\]
这里因为\(\beta_{j}\)为所有的输入所以存在定义
\[
\beta_{j}=\sum_{h=1}^{q} w_{h j} b_{h}
\]
其中\(b_{h}\)为隐层第\(h\)个神经元的输出,所以
\[
\frac{\partial \beta_{j}}{\partial w_{h j}}=b_{h}
\]
对训练例\((x_{k},y_{k})\),假定神经网络的输出为\(\hat{y}^{k}_{j}\)
\[
\hat{y}_{j}^{k}=f\left(\beta_{j}-\theta_{j}\right)
\]
均方误差\(E_{k}\)为(\(\frac{1}{2}\)是为了求导方便)
\[
E_{k}=\frac{1}{2}
\sum_{j=1}^{l}\left(\hat{y}_{j}^{k}-y_{j}^{k}\right)^{2}
\]
而且Sigmoid函数(在这个例子中使用的是Logistics函数)有一个很好的性质
\[
f^{\prime}(x)=f(x)(1-f(x))
\]
\[
\begin{aligned}
g_{j} &=-\frac{\partial E_{k}}{\partial \hat{y}_{j}^{k}} \cdot
\frac{\partial \hat{y}_{j}^{k}}{\partial \beta_{j}} \\
&=-\left(\hat{y}_{j}^{k}-y_{j}^{k}\right)
f^{\prime}\left(\beta_{j}-\theta_{j}\right) \\
&=
f(\beta_{j})(1-f(\beta_{j}))\left(y_{j}^{k}-\hat{y}_{j}^{k}\right) \\
&=\hat{y}_{j}^{k}\left(1-\hat{y}_{j}^{k}\right)\left(y_{j}^{k}-\hat{y}_{j}^{k}\right)
\end{aligned}
\]
所以\(w_{hj}\)的更新公式为
\[
\Delta w_{h j}=\eta g_{j} b_{h}
\]
类似的可以推导其他参数的更新公式。
\[
\begin{aligned}
\Delta \theta_{j} &=-\eta g_{j} \\
\Delta v_{i h} &=\eta e_{h} x_{i} \\
\Delta \gamma_{h} &=-\eta e_{h}
\end{aligned}
\]
标准BP和累积BP
累积BP算法的目标是最小化累积误差\(E\)为最小
\[
E=\frac{1}{m} \sum_{k=1}^{m} E_{k}
\]
标准BP和累积BP的差别
标准BP每次更新值针对单个样例,参数更新非常频繁,而累积BP是针对累积误差最小为目的所以在读取整个训练集\(D\)一遍以后才会更新,所以频率会低。
通常是先使用累积BP下降到一定程度之后再使用标准BP往往会获得较好的解。
过拟合应对策略
早停early stopping
- 若训练集误差降低但验证集误差升高,则停止训练。
正则化regularization
- 加一项惩罚项来扩宽解的范围,增加模型的泛化性能。
4.全局最小与局部极小
希望是找到全局最小,但是算法往往会陷入局部极小而跳不出来,所以为了防止这种现象需要一些策略去解决这种问题。
防止陷入局部极小的策略
- 多起点
- 使用多组不同参数值初始化神经网络,然后从中选择
- 模拟退火simulated annealing
[Aarts and Korst,1989]
一定比例接受比当前更差的结果,接受次优解的概率逐渐降低。
- 随机梯度下降
- 在计算梯度的时候加入了随机因素,陷入局部极小点时计算出来的梯度不一定为零就会有机会跳出局部极小继续搜索。
- 遗传算法genetic algorithms
[Goldberg,1989]
也常用来训练神经网络。但是没仔细研究过细节不太清楚。
跳出局部极小的技术大多是启发式
,理论上尚缺乏保障。
5.其他常见神经网络
1.RBF网络
RBF(Radial Basis Function径向基函数)网络
结构: 单隐层前馈神经网络(理论上可以多隐层,但是常见的都为单隐层)。
特点:径向基函数作为激活函数。
输出层是对隐层神经元的线性组合。
流程: 先确定神经元中心\(c_{i}\)(常用随机采样,聚类),然后利用BP算法等来确定参数。
2.ART网络
ART(Adaptive Resonance Theory自适应谐振理论)网络
结构: 比较层、识别层、识别阈值和重置模块
特点:竞争型学习competitive learning
胜者通吃winner take all机制
输出神经元相互竞争,每一时刻仅有一个竞争获胜的神经元被激活。
优点: 缓解了可塑性-稳定性窘境stability plasticity dilemma
,可塑性是指神经网络要有学习新知识的能力,稳定性是指神经网络在学习新知识时要保持对旧知识的记忆。所以可以进行增量学习incremental learning
。
- ART网络
- 比较层 负责接受输入样本并将其传递给识别层神经元
- 识别层 识别层神经元之间竞争。如何评判获胜,最简单就是计算距离,距离最小者胜。
- 识别阈值
- 大于识别阈值 则当前输入样本将被归为改代表向量所属类别,更新连接权使得以后在接受到相似样本时该模式类会计算出更大的相似度,从而改神经元有更大可能获胜。
- 不大于识别阈值 则重置模块将在识别层增设一个新的神经元,其代表向量就是为当前输入向量。
发展:
发展成了一个算法族,有ART2网络、结合模拟处理的FuzzyART网络、可进行监督学习的ARTMAP网络等
3.SOM网络
SOM(Self-Organizing Map自组织映射)网络
结构: 输出层神经元以矩阵方式排列在二维空间
特点: 能将高维输入数据映射到地位空间,并且保持输入数据在高维空间的拓扑结构。
将高维空间中相似的样本点映射到网络输出层中邻近神经元。
流程: 在接收到一个样本后,计算权向量之间距离,距离最近的获胜称为最佳匹配单元best matching unit。
然后最佳匹配单元以及邻近神经元权向量将被调整,使得权向量与当前输入样本的距离缩小,这个过程不短迭代直至收敛。
4.级联相关网络
级联相关网络Cascade Correlation网络
特点: 自适应网络代表。将学习网络结构也当做学习目标之一。
无需设置网络层数,隐层神经元数目。训练速度快,但在数据小时易陷入过拟合。
- 级联相关网络
- 级联
- 是指建立层次连接的层级结构,在开始时网络只有输入层和输出层。
- 相关
- 是指通过最大化新神经元的输出与网络误差之间的相关性correlation来训练参数。
- 级联
5.Elman网络
Elman网络
结构: 递归神经网络recurrent neural networks
特点: 允许网络出现环形结构
,一些神经元的输出反馈回来作为输入信号。
使得网络在\(t\)时刻状态不仅与\(t\)时刻的输入有关,还与\(t-1\)时刻的网络状态有关。
6.Blotzman机
Blotzmann机
结构: 显层和隐层
特点: 定义一个能量energy
,能量最小化时网络达到理想状态。
显层用于表示数据的输入与输出,隐层则被理解为数据的内在表达。
- 标准Blotzmann机
- 全连接图
- 训练复杂度搞
- 受限Blotzmann机
- 现实中常用
- 由完全图简化为二部图
- 常用对比散度Contrastive
Divergence算法
[Hinton,2010]
6.深度学习
深度学习deep learning,因为近年计算能力大幅提高可缓解训练低效性,训练数据的大幅增加则可降低过拟合风险。
- 经典BP算法
- 使用标准BP算法训练深度学习,在多隐层逆传播时往往不能收敛而发展diverge。
- 无监督逐层训练unsupervised layer-wise training
- 无监督逐层训练是多隐层网络训练的有效手段。
- 每次训练一层隐节点
- 预训练pre-training之后再微调fine-tuning
- 权共享weight sharing
- 让一组神经元使用相同的连接权,典型的有卷积神经网络(Convolutional Neural Network)CNN。
卷积神经网络
可以看做是对输入信号进行逐层加工,从而把初始的与输出目标之间联系不太密切的输入表示,转化成与输出目标联系更密切的表示,使得原来仅基于一层输出映射难以完成的任务称为可能。换而言之,通过多层处理逐渐将初始的低层特征表示转化为高层特征表示后,用简单模型即可完成复杂的分类等学习任务。
总结
总结
从简单神经元模型到复杂的神经网络,都是根据其结构逐层递进的传递信息以模拟实际数据集。而复杂的神经网络是通过简单单元堆叠形成。学习规则都是以BP算法为主,根据预测值与实际数据的差来调整参数权重。许多神经网络是由单一模型改变其激活函数、网络结构、运行机制演变而来。对于深度学习来说,是因为计算性能提升,才使得深度学习变为可能。应对过拟合最简单有效的方式就是大幅增加数据量。而且深度学习对于结果导向的领域,比如语音识别、图像识别之类领域里比起单纯机器学习模型有压倒性的表现。但对于因果导向的领域,还是以传统机器学习或者统计学习为主要基调,因为深度学习的可解释性目前来说还是一个难题。