机器学习基础-神经网络与深度学习
多层前馈网络MLP的基本结构
1. 输入层
- 作用:接收外部的数据输入。
- 特点:不包含任何计算单元;它的“节点”数量取决于输入特征的数量。例如,如果我们的任务是基于图像分类,并且每张图片被表示为 784784 个像素值(28×2828×28 的灰度图),那么输入层将有 784784 个节点。
2. 隐藏层
- 作用:负责从输入数据中提取有用的特征并进行抽象表示。
- 特点:
- 每个隐藏层可以包含任意数量的神经元。
- 神经元通过加权和的方式处理来自上一层的信息,并应用激活函数来引入非线性。
- 可以有一个或多个隐藏层,具体取决于模型复杂度的需求。
3. 输出层
- 作用:生成最终的预测结果或分类标签。
- 特点:
- 对于二分类问题,通常只有一个输出节点,并使用如Sigmoid这样的激活函数来输出概率。
- 对于多分类问题,则会有与类别数相等的输出节点,并可能使用Softmax函数将这些节点的输出转换成一个概率分布。
连接权重与偏置
- 在MLP中,每个神经元都有两个重要的参数:权重(weights)和偏置(bias)。权重决定了前一层各个输入对当前神经元的影响程度;偏置则提供了额外的灵活性,使得即使所有输入都是零时,神经元也可以激活。
激活函数
- 为了使网络能够学习复杂的非线性关系,必须在每个神经元后面添加激活函数。常见的激活函数包括但不限于:
BP算法的基本原理
BP算法(Backpropagation Algorithm,误差逆传播算法)是训练人工神经网络最常用的算法之一。它通过反向传播误差来调整网络中的权重和偏置,从而最小化预测误差。BP算法的基本原理包括前向传播、损失计算、反向传播和参数更新四个主要步骤。下面我们将详细讲解这些步骤。
1. 前向传播
- 输入层:接收来自外部的数据输入。
- 隐藏层:每一层的每个神经元都会对从上一层接收到的信息进行加权求和,并加上偏置项后,再经过激活函数转换,产生该层的输出。
- 输出层:生成最终的结果或预测值。
假设我们有一个简单的多层感知机(MLP),其输入层有 d 个节点,隐层有 q个节点,输出层有 l 个节点。对于一个给定的样本 (xk,yk),其中 xk是输入特征向量,yk 是标签向量:
-
输入层到隐层:
其中 vih 是连接输入层第 i 个节点和隐层第 h 个节点的权重,γh 是隐层第 h 个节点的偏置,f 是激活函数。
-
隐层到输出层:
其中 whj 是连接隐层第 h 个节点和输出层第 j个节点的权重,θj是输出层第 j个节点的偏置。
2. 损失计算
使用损失函数衡量预测结果与实际标签之间的差异。常用的损失函数包括均方误差(MSE)、交叉熵等。例如,对于二分类问题,可以使用交叉熵损失函数:
3. 反向传播
根据链式法则计算损失相对于每个权重和偏置的梯度,然后沿着负梯度方向调整它们。具体来说,计算每个神经元的局部梯度(即误差项),用于后续的权重更新。
4. 参数更新
利用梯度下降法及其变体(如SGD, Adam等),根据损失函数相对于各参数的导数(即梯度)调整权重和偏置,目的是最小化损失函数。
- 更新公式为: 其中 η 是学习率,控制每次更新的步长。
总结
BP算法通过上述四个步骤实现了对神经网络的训练。在实际应用中,通常会重复执行这些步骤,直到模型收敛或达到预定的最大迭代次数。BP算法能够有效地训练深度神经网络,使得它们能够学习复杂的非线性映射关系,广泛应用于各种机器学习任务中,如图像识别、自然语言处理等。
局部极小值和全局极小值,如何跳出局部极小值
不同的初始参数
以多组不同参数值初始化多个神经网络,按标准方法训练后,取其中误差最小的解作为最终参数.这相当于从多个不同的初始点开始搜索,这样就可能陷入不同的局部极小,从中进行选择有可能获得更接近全局最小的结果.
模拟退火
使用“模拟退火”(simulated annealing)技术[Aarts and Korst,1989]模拟退火在每一步都以一定的概率接受比当前解更差的结果,从而有助于“跳出”局部极小.在每步迭代过程中,接受“次优解”的概率要随着时间的推移而逐渐降低,从而保证算法稳定
随机扰动
使用随机梯度下降.与标准梯度下降法精确计算梯度不同,随机梯度下降法在计算梯度时加入了随机因素.于是,即便陷入局部极小点,它计算出的梯度仍可能不为零,这样就有机会跳出局部极小继续搜索
遗传算法
此外,遗传算法(genetic algorithms)[Goldberg,1989]也常用来训练神经网络以更好地逼近全局最小.需注意的是,上述用于跳出局部极小的技术大多是启发式,理论上尚缺乏保障
如何缓解过拟合
早停、正则化
卷积神经网络的基本概念
CNN其本质是一个多层感知机,成功的原因在于其所采用的局部连接和权值共享的方式:
- 一方面减少了权值的数量使得网络易于优化
- 另一方面降低了模型的复杂度,也就是减小了过拟合的风险。
- 特别适用于图像识别任务,能够自动提取图像特征,具有良好的鲁棒性和运算效率。