机器学习西瓜书笔记(五)--------------神经网络

目录

 

神经元模型

感知机与多层网络  

BP神经网络算法

常见神经网络

深度学习  


神经元模型

神经网路中最基本的成分是“神经元”模型,在生物神经网络中,每个神经元与其他神经元相连,当他“兴奋”时,就会向相连的神经元发送化学物质,从而改变这些神经元类的电位;如果某神经元的电位超过一个“阈值”,那么他就会被**。将上述描述当成一个数学模型——M-P神经元模型,神经元接收来自n个神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传输,将神经元接收到的总输入值与神经元的自身的阈值进行比较,然后通过“**函数”处理产生神经元的输出。理想中的**函数是阶跃函数,但是它不连续,通常我们用sigmoid函数作为**函数。

把许多神经元按一定的层次连接起来就得到了神经网络。一个神经网络视为包含了许多参数的数学模型,这个模型是由若干函数相互代入得到的。

机器学习西瓜书笔记(五)--------------神经网络

机器学习西瓜书笔记(五)--------------神经网络

与线性分类十分相似,神经元模型最理想的**函数也是阶跃函数,即将神经元输入值与阈值的差值映射为输出值1或0,若差值大于零输出1,对应兴奋;若差值小于零则输出0,对应抑制。但阶跃函数不连续,不光滑,故在M-P神经元模型中,也采用Sigmoid函数来近似, Sigmoid函数将较大范围内变化的输入值挤压到 (0,1) 输出值范围内,所以也称为挤压函数(squashing function)。  

机器学习西瓜书笔记(五)--------------神经网络

感知机与多层网络  

 

机器学习西瓜书笔记(五)--------------神经网络

 

感知机能容易地实现逻辑与、或、非操作。

机器学习西瓜书笔记(五)--------------神经网络

机器学习西瓜书笔记(五)--------------神经网络 

神经网络的基本单元为神经元,神经元接受来自其他神经元的信号,经过一个线性变换,与阈值比较,通过非线性变换即**函数处理作为神经元的输出。感知机包括两层神经元。感知机是线性模型,能够实现线性分类任务。

机器学习西瓜书笔记(五)--------------神经网络

 机器学习西瓜书笔记(五)--------------神经网络

异或操作:https://www.zhihu.com/question/263676843/answer/355760288

机器学习西瓜书笔记(五)--------------神经网络

BP神经网络算法

由上面可以得知:神经网络的学习主要蕴含在权重和阈值中,多层网络使用上面简单感知机的权重调整规则显然不够用了,BP神经网络算法即误差逆传播算法(error BackPropagation)正是为学习多层前馈神经网络而设计,BP神经网络算法是迄今为止最成功的的神经网络学习算法。

一般而言,只需包含一个足够多神经元的隐层,就能以任意精度逼近任意复杂度的连续函数[Hornik et al.,1989],故下面以训练单隐层的前馈神经网络为例,介绍BP神经网络的算法思想。

机器学习西瓜书笔记(五)--------------神经网络

机器学习西瓜书笔记(五)--------------神经网络 

机器学习西瓜书笔记(五)--------------神经网络

机器学习西瓜书笔记(五)--------------神经网络 

机器学习西瓜书笔记(五)--------------神经网络 

机器学习西瓜书笔记(五)--------------神经网络 

全局最小与局部最小

模型学习的过程实质上就是一个寻找最优参数的过程,例如BP算法试图通过最速下降来寻找使得累积经验误差最小的权值与阈值,在谈到最优时,一般会提到局部极小(local minimum)和全局最小(global minimum)。

* 局部极小解:参数空间中的某个点,其邻域点的误差函数值均不小于该点的误差函数值。
* 全局最小解:参数空间中的某个点,所有其他点的误差函数值均不小于该点的误差函数值。

机器学习西瓜书笔记(五)--------------神经网络

 

要成为局部极小点,只要满足该点在参数空间中的梯度为零。局部极小可以有多个,而全局最小只有一个。全局最小一定是局部极小,但局部最小却不一定是全局最小。显然在很多机器学习算法中,都试图找到目标函数的全局最小。梯度下降法的主要思想就是沿着负梯度方向去搜索最优解,负梯度方向是函数值下降最快的方向,若迭代到某处的梯度为0,则表示达到一个局部最小,参数更新停止。因此在现实任务中,通常使用以下策略尽可能地去接近全局最小。

* 以多组不同参数值初始化多个神经网络,按标准方法训练,迭代停止后,取其中误差最小的解作为最终参数。
* 使用“模拟退火”技术
* 遗传算法
* 使用随机梯度下降,即在计算梯度时加入了随机因素,使得在局部最小时,计算的梯度仍可能不为0,从而迭代可以继续进行。

常见神经网络

  • RBF网络
  • ART网络
  • SOM网络
  • 级联相关网络
  • Elman网络
  • Boltzmann机 

深度学习  

理论上,参数越多,模型复杂度就越高,容量(capability)就越大,从而能完成更复杂的学习任务。深度学习(deep learning)正是一种极其复杂而强大的模型。

怎么增大模型复杂度呢?两个办法,一是增加隐层的数目,二是增加隐层神经元的数目。前者更有效一些,因为它不仅增加了功能神经元的数量,还增加了**函数嵌套的层数。但是对于多隐层神经网络,经典算法如标准BP算法往往会在误差逆传播时发散(diverge),无法收敛达到稳定状态。

那要怎么有效地训练多隐层神经网络呢?一般来说有以下两种方法:

  • 无监督逐层训练(unsupervised layer-wise training):每次训练一层隐节点,把上一层隐节点的输出当作输入来训练,本层隐结点训练好后,输出再作为下一层的输入来训练,这称为预训练(pre-training)。全部预训练完成后,再对整个网络进行微调(fine-tuning)训练。一个典型例子就是深度信念网络(deep belief network,简称DBN)。这种做法其实可以视为把大量的参数进行分组,先找出每组较好的设置,再基于这些局部最优的结果来训练全局最优。

  • 权共享(weight sharing):令同一层神经元使用完全相同的连接权,典型的例子是卷积神经网络(Convolutional Neural Network,简称CNN)。这样做可以大大减少需要训练的参数数目。

机器学习西瓜书笔记(五)--------------神经网络

深度学习可以理解为一种特征学习(feature learning)或者表示学习(representation learning),无论是DBN还是CNN,都是通过多个隐层来把与输出目标联系不大的初始输入转化为与输出目标更加密切的表示,使原来只通过单层映射难以完成的任务变为可能。即通过多层处理,逐渐将初始的“低层”特征表示转化为“高层”特征表示,从而使得最后可以用简单的模型来完成复杂的学习任务。

传统任务中,样本的特征需要人类专家来设计,这称为特征工程(feature engineering)。特征好坏对泛化性能有至关重要的影响。而深度学习为全自动数据分析带来了可能,可以自动产生更好的特征。