文章目录
人工神经网络
Artificial Neural Networks
一、介绍
2.1 什么是人工神经网络
人工神经网络是一组连接起来的的输入/输出单元,其中每个连接都有与其相关的权重。也被称为连接主义学习
- 以生物学为动机的机器学习方法
- 神经网络的基本处理元素是神经元
- 是一种有监督且归纳的学习
2.2 神经元是做什么的
- 接收来自其他来源的输入
- 以某种方式组合这些输入
- 对组合结果进行普遍地非线性操作
- 输出最终结果
2.3 人工神经网络的特性
- 许多简单的类神经元阈值开关单元
- 单元之间的许多加权互连
- 高度并行的分布式处理
- 通过调整连接权重来学习
2.4 神经网络是如何学习的
- 神经网络通过调整权重来学习,以便能够正确地对训练数据进行分类,从而在测试阶段对未知数据进行分类
- 神经网络需要很长的训练时间
- 神经网络对噪声和不完整的数据具有很高的耐受性
2.5 神经网络适用场景
- 输入是高维离散的或实值的
- 输出是离散的或实值的
- 输出是一个值的向量
- 目标函数的形式是未知的
- 人类不需要解释结果(黑盒模型)
- 举几个例子:
- 语音音素识别
- 图像分类
- 金融预测
- …
二、ANN的表示
ANN 基础构造:
说明:
- 如果结果大于阈值,则输出o的取值是 1,否则取值 -1
- 学习感知器需要选择 wi
- 线性阈值单元(LTU)
感知机的能力如何表征?可以在实例的n维空间中将感知器视为超平面决策面
三、训练感知机
感知机训练法则:
wi ⬅ wi + Δwi
Δwi = η(t - o)xi
其中
- t = c(x) 是目标值(真实值)
- o 是感知机的输出值
- η 是学习率
四、梯度下降和Delta规则
4.1 Delta规则和批量梯度下降
如果数据不是线性可分的,则感知器不能保证收敛。在这种情况下,使用Delta规则可以帮助收敛到目标概念的最佳拟合近似
Delta规则背后的关键思想是使用梯度下降来搜索可能的权重向量的假设空间,以找到最适合训练示例的权重。
梯度下降通过如下方式确定一个最小的权重向量:
- 从任意初始权向量开始;
- 然后以小步骤重复修改它;
- 在每一步,权重向量被改变的方向,产生沿误差面的最陡下降。
感知器保证成功的前提:
- 训练示例是线性可分的
- 足够小的学习速率
使用梯度下降的Delta规则,可以保证收敛到最小平方误差的假设:
- 给定足够小的学习速率
- 即使训练数据包含噪声
- 即使训练数据不是线性可分的
4.2 随机梯度下降
梯度下降存在一些困难:
- 收敛到局部最小值有时可能相当缓慢
- 如果误差表面有多个局部最小值,则可能会陷入局部最小值无法跳出,从而不能保证过程会找到全局最小值。
因此提出了随机梯度下降——增量梯度下降(Incremental Gradient Descent)
梯度下降和随机梯度下降的区别:
- 前者在更新权重之前,会对所有示例进行错误求和,而后者只在测试每个训练示例时更新权重
- 前者总结多个示例需要每个权重更新步骤进行更多的计算
- 在存在多个局部极小值的情况下,后者有时可以避免陷入这些局部极小值
为了兼顾二者优劣,提出了小批量的梯度下降(mini-batch)。
4.3 批量、随机、小批量区别
区别:
- 批量梯度下降:在每次更新时用所有样本
- 随机梯度下降:在每次更新时用1个样本
- mini-batch梯度下降:在每次更新时用b个样本(一种折中的方法)
如何防止梯度下降容易陷入局部最小值:
- 添加一个动量项
- 使用随机梯度下降而不是传统的梯度下降
- 训练具有相同数据但初始权重不同的多个网络
五、多层网络和反向传播算法
单个感知器只能表示线性决策面,非线性决策面就必须使用多层感知机(多层网络)。
使用 Sigmoid 单元,即非线性激活函数:
o=o(Net )=1/(1+e-Net)
其导数:do(x)/dx = o(x)(1 - o(x))
Rumelhart、Parker和Le Cun独立开发了一种确定如何调整内部(“隐藏”)单元权重的技术——反向传播。
- 正向传播是指对神经网络沿着从输入层到输出层的顺序,依次计算并存储模型的中间变量(包括输出)。
- 反向传播指的是计算神经网络参数梯度的方法。总的来说,反向传播依据微积分中的链式法则,沿着从输出层到输入层的顺序,依次计算并存储目标函数有关神经网络各层的中间变量以及参数的梯度。
反向传播的缺点是,如果 η 很小,它的速度太慢;如果 η 很大,它振荡(震荡)太大。
为了解决这个问题,可以增加一个动量,给每个连接一些惯性,迫使它向下坡“力”的方向变化。它不只是根据当前数据点改变权重,在梯度不变的区域中逐渐增加搜索的步长,从而加速收敛。
六、其他说明
终止条件:
误差 E 降低到某个预定阈值以下
解决过拟合:
- 权重衰减:在每次迭代中,将每个重量减少一些小因素
- 交叉验证
- k折 — 交叉验证
人工神经网络学习提供了一种实用的方法,可以用来学习:
- 实值和向量值函数
- 连续和离散值属性
- 对训练数据中的噪声具有鲁棒性
反向传播算法是最常见的网络学习方法,已成功地应用于多种学习任务。