机器学习:从感知机到神经网络,再到深度学习

1.神经元模型:

神经元模型是神经网络中最基本的成分。

这里先介绍M-P神经元模型(M-P代表的是McCulloch and Pitts,名字):神经元接受来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递。

总输入值(已经加权之后)与阈值θ进行比较,通过一个激活函数(比如sigmoid)产生超过阈值为“1”,否则为“0”的输出

2. 感知机:

感知机(Perceptron)是由两层神经元组成的模型。

其中输入层接收外界的输入信号。(不做阈值处理)

输出层是M-P神经元,做阈值处理,产生输出。

 

感知机中的参数:

在感知机模型中,参数主要是权重W,以及阈值θ。

我们可以将阈值θ看作一个固定输入为-1的“哑结点”(dummy node)的权重,使得所有参数都归化为权重。

学习的时候,也很简单,正确时不进行调整,错误的时候进行调整。

此处不详细列出

功能神经元的定义:

我的理解是,进行阈值(激活函数)处理的神经元被称作是功能神经元。

 

3. 多层神经网络

因为感知机的局限性(只能学习线性可分问题),

解决非线性可分问题就要使用多层功能神经元

在这里,我们定义隐含层

隐含层:(hidden layer)

输入层和输出层之间的拥有激活函数的功能神经元

多层前馈神经网络(multi-layer feedforward neural networks)

神经元全互联,不存在同层连接,也不存在跨层连接。

标准误差逆传播算法:(BP:error backpropagation)

误差逆传播算法是一种迭代算法。基于梯度下降策略。

对每一个训练用例,我们可以计算出输出的均方误差。(模型输出的y向量和数据集中真实的y向量的欧式距离)

对于均方误差E对于每个参数的负梯度,对该参数进行调整。

具体而言,应用链式法则。E对于某个参数Whj的偏导转换为对一系列中途变量的连续偏导。

(比如,隐层的输出权值,先影响输出层的输入,再影响输出层的输出,最后影响E均方误差。)

即通过链式法则,逐次求偏导。

 

详见书中推导。总而言之,通过应用链式法则,我们就可以求除BP算法中关于Whj(隐层输出权值的更新公式)

以及所有参数。

累计误差逆传播算法:(accumulated error backpropagation)

区别:

上面的标准误差逆传播主要是针对每一个样本的均方误差进行更新参数,针对的是单个样例。

而累计误差逆传播呢?则是基于累积误差最小化的更新原则!

他会读取整个数据集一遍以后,才对参数进行更新。

优缺点:

标准BP算法参数更新的十分频繁。而累计BP算法参数更新的频率低得多。

为了达到同样的累积误差极小点,标准BP算法往往需要进行更多次数的迭代。

但是在很多任务中,累积误差下降到一定程度以后,进一步下降十分缓慢,此时标准BP算法往往会更快的获得更好的解。

尤其是训练集非常大的情况。

隐层神经元的个数:试错法

解决过拟合:

早停:

将数据分成训练集和验证集,训练集用来计算梯度,更新连接权和阈值。

验证集用来估计误差。

若训练集误差降低但验证集误差升高,就停止训练。同时返回具有最小验证集误差的连接权和阈值。

 

 

正则化:

在误差目标函数(E的计算式)中增加一个用来描述网络复杂度的部分。例如连接权和阈值的平方和。

这两项使用一个参数(交叉验证法获得)进行折中。

跳出局部极小:

1. 以多组不同参数初始化多个神经网络,进行训练。(从多个不同初始点),选择最优。

2. 使用“模拟退火”技术。在每一步都以一定的概率接受比当前解更差的结果。从而有助于跳出局部极小。

但是,接受次优解的概率随着时间推移而降低。

3. 使用随机梯度下降。

 

4. 常见神经网络:

4.1 RBF(radial basis function)径向基函数网络

隐层神经元使用径向基函数作为激活函数。

输出层是对隐层神经元输出的线性组合。

在径向基函数中,用到神经元的数据中心C以及样本x。

 

训练:

首先,确定神经元中心C,常用的方法包括随机采样,聚类等等。

之后,利用BP算法等来确定参数

 

4.2 ART(adaptive resonance theory)自适应谐振理论网络(竞争性学习)

竞争性学习:

神经网络中常用的一种无监督学习策略。网络的输出神经元互相竞争,每一时刻仅有一个竞争获胜的神经元被激活,其他神经元的状态被抑制。(胜者通吃原则)

 

ART:

由比较层,识别层,识别阈值,重置模块组成。

比较层:接收输入样本。传递给识别层神经元

识别层:每个神经元对应一个模式类(分类?)每个模式类有一个代表向量,训练过程中神经元数目可以动态增长

 

训练过程:

计算样本输入向量和每个神经元对应的模式类的代表向量之间的距离。选取距离最小的神经元。

之后,比较相似度和识别阈值,来决定是归于这个神经元,还是新开一个神经元。

 

优点:

可以实现增量学习(在线学习)

 

 

 

4.3 SOM(self-organizing map)自组织映射网络(竞争性学习)

将高维输入数据映射到低维空间,同时保持输入数据在高维空间的拓扑结构。(高维相似->低维邻近神经元)

 

输出层神经元以矩阵形式排列在二维空间。

每一个输出层神经元有一个权向量

训练过程:

在接收一个样本后,每个输出层神经元会计算该样本与自身携带的权向量之间的距离。

距离最近的神经元获胜(最佳匹配单元)

之后,调整最佳匹配单元以及其邻近的神经元的权向量,使这些权向量与当前输入样本的距离缩小。

迭代进行,直至收敛。

 

4.4 级联相关网络(结构自适应网络)

不同于之前叙述的”网络结构固定“的神经网络,结构自适应网络把”网络结构“也当作学习的目标之一。

希望在训练过程中找到最符合数据特点的网络结构。

 

4.5 Elman网络(递归神经网络)

递归神经网络(recurrent neural networks)允许网络中出现环形结构。从而可以让一些神经元的输出反馈回来作为输入信号

优点:网络在t时刻的输出状态不仅与t时刻的输入有关,还与t-1时刻的网络状态有关。从而能处理与时间有关的动态变化。

 

elman网络中,隐层神经元的输出被反馈回来,与下一时刻输入层神经元提供的信号一起,作为隐层神经元在下一时刻的输入。

 

4.6 Boltzmann机(基于能量的模型)

 

思想:为网络状态定义一个“能量”,能量最小化时,网络达到理想状态。

神经元分为:

显层:用于表示数据的输入和输出

隐层:被理解为数据的内在表达。

Boltzmann机中神经元都是布尔型的。状态0表示抑制,状态1表示激活。

已知n个神经元的状态,定义Boltzmann机的能量为:

w表示两个神经元i,j之间的连接权。

θ表示神经元的阈值

s表示神经元的状态(0/1)

 

训练过程:

将每个训练样本视为一个状态向量,使其出现的概率尽可能大。

(一般使用RBM(受限的Boltzmann机)仅保留显层与隐层之间的连接,从而将Boltzmann机结构从完全图简化为二部图

 

RBM的对比散度(contrastive divergence)算法(CD算法):

假定网络中有d个显层神经元和q个隐层神经元,令v和h分别表示显层与隐层的状态向量。

(由于同一层内不存在连接)

有:

P\left ( v|h \right )=\prod_{i=1}^{d}P\left ( v_{i}|h \right ); P\left ( h|v \right )=\prod_{j=1}^{q}P\left(h_{j} |v\right )

CD算法对于每个训练样本v,先根据后式计算出隐层神经元状态的概率分布,然后根据这个概率分布采样得到h。

之后,类似的根据前式从h产生v’,再从v’产生h’,

连接权的更新公式:

\triangle w=\eta \left ( vh^{T}-v^{'}h^{'T} \right )

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(机器学习:从感知机到神经网络,再到深度学习)