[神经网络]01 神经网络
神经网络(neural network)大概已经是人工智能领域最典型的成就了,这节要是还不甚了解可就比较闹笑话了
7.1 神经网络中的基本概念
7.1.1 人工神经元
下图是人工神经元最为代表的M-P神经元模型的大致结构,它的结构其实很好地反映了在计算机中,我们关注的部分
- 图中,一个神经元接受 其他神经元的输出 作为输入
,其中每个输入都有个权重 ,此外,这个神经元自身有一个参数 - 当前这个神经元计算所有输出的加权和,然后减去阈值
,最后通过一个激活函数 ,得到输出 - 也就是图中的
- 也就是图中的
7.1.2 激活函数
- 理想的激活函数如下图(a)所示,应当对于负值输出0,对于正值输出1
- 但是这样的函数不可导,不利于计算和优化,所以出现了(b)所示的最常用的激活函数之一:sigmoid函数
7.2 感知机和多层网络
下图给出两个典型的神经网络的结构,其基本结构如下图
- 神经网络可分为3部分:输入层、隐藏层、输出层;其中隐藏层可以有多层。常说的神经网络主要是指前馈网络。
- 前馈网络:神经元之间不存在同层连接和跨层连接,也就是网络中无环或回路。
- 感知机:没有隐藏层,只有输入层和输出层的神经网络。
- 感知机是一种线性分类器,其输出是输入的线性组合,经过阶跃函数后得到的
- 感知机的局限性在于,它只能解决线性可分的问题
7.3 前向传播
此处介绍的是神经网络在一次迭代中做的事情的一部分。
以
为例,它将接受上一层(输入层) 个结点的输出 ,并将其进行加权求和,得到图中的 ,然后再减去阈值 ,经过激活,得到该神经元的输出( 记作 )。 与这类似,输出层的神经元也是如此,
接受上一层的 个神经元的输出,加权求和得到总的输入 。然后再经过减阈值 ,激活函数,得到输出 。 假设神经网络的输出为
。 则网络的预测输出在样本
上的均方误差(MSE)为 - 也就是预测输出和实际标记的差的平方和,再除以2。
7.4 误差逆传播(BP)算法
本章重点。BP全称为“error BackPropagation”。为便于演示,给出了下图所示的一个神经网络结构。
- 输出层第
个神经元的阈值用 表示 - 隐藏第
个神经元的阈值用 表示 - 测试用例记作
,但这里的 和 都是向量,分别有 维和 维,正好对应图中输入层/输出层的神经元节点数。也就是每个节点输入/输出一个维度的信息。
(1) 反向传播/BP算法
简单来说,BP算法是用于优化神经网络中的参数的算法,其核心思想是梯度下降法——十分经典的优化算法。
- 接下来直接看例题:神经网络参数更新例题
- 此外,
为学习率,控制着算法每一轮迭代的更新步长
(2) 拓展:估算神经网络参数量
这就考验对整个网络结构的理解了
首先,三层的结点分别有
个,除了输入层,每个结点都有一个阈值,所以阈值个数为 个。 然后,输入层-隐藏层是一个完全二部图,即
个输入层结点和 个隐藏层结点之间都有连接,而每个连接都有权重,所以,此处共 个权重。 一样的,隐藏层-输出层之间也都有连接,此处共
个权重。 汇总一下,共
个参数。 所以对于这种问题只需要考虑以下3步:
- 首先搞清各层的结点数,以及各层间的连接情况(不过考试的时候为了方便,一般都是全连接)
- 除了输入层之外,每一层都有用于激活的阈值,计算阈值总数
- 计算各层之间的连接数之和,也就是权重总数
- 参数量就是权重总数+阈值总数
所以其实不难
(3) 标准BP和累积BP
- 说白了就是:
- 标准BP每次针对单个训练样例更新权重和阈值
- 累积BP优化目标是最小化整个训练集上的累积误差
(4) 过拟合与缓解策略
BP算法常常导致过拟合
什么是过拟合?
- 过拟合(
)是指模型过度适应训练数据集,导致泛化性能不佳的现象。 - 过拟合通常发生在模型复杂度较高且训练数据相对较少的情况下。当模型复杂度过高时,它可能会记住训练数据中的每个细节和噪声 ,而无法捕捉到普遍的模式。这种情况下,模型可能会在训练数据上表现得非常好,但在新的数据上却无法正确地进行预测或分类。
- 过拟合(
主要策略
- 早停:监控模型在验证集上的性能,当性能不再提高时提前停止训练
- 正则化:通过添加惩罚项来约束模型参数的大小
7.4 全局最小与局部最小
分析BP算法可以看出其算法核心是梯度下降法,但如果损失函数不是凸函数,那么梯度下降法就不能保证找到全局最小值( 就是有可能会卡在“鞍点”,即局部极小值点),所以需要一些其他策略来缓解这个问题。
- 模拟退火
- 随机梯度下降法
- 遗传算法
Extra07-总结
- 本章的知识脉络如下:
- BP算法是本章的重点,因为此处可以出计算题,需要能够手算。
- 除此之外,为考量对于神经网络整体的理解,还会出一些简单计算题,比如估计神经网络的参数量。当然这里的神经网络不特意说明,指的都是全连接的前馈神经网络。
Ques07-例题整理
[概念理解·神经网络参数量估计]
题目内容
- 对于如图所示的神经网络,假定这三层的神经元分别有
个,请估算一次BP算法过程中更新的参数量
分析与解答
- 首先,三层的结点分别有
个,除了输入层,每个结点都有一个阈值,所以阈值个数为 个。 - 然后,输入层-隐藏层是一个完全二部图,即
个输入层结点和 个隐藏层结点之间都有连接,而每个连接都有权重,所以,此处共 个权重。 - 一样的,隐藏层-输出层之间也都有连接,此处共
个权重。 - 汇总一下,共
个参数。
[计算·神经网络参数更新]
题目内容
- 还是这个题,请给出完整的
的更新流程
分析与解答
对于任意一个参数,其每一轮迭代的更新公式为
, 表示任意一个可学习的参数 接下来以权重
为例。假如我们想更新 ,那么可见,最重要的是计算出 ,其中 是学习率。 根据求导的链式法则:
- 这个公式中有2个部分很好算,因为这两个部分都是累加式求导:
- 而对于
,由于 , 是Sigmoid函数,所以这里实际上是 - 此时利用Sigmoid函数的特点:
,代换为:
- 至此,已大体上推导完毕,将上述各部分回代,得到
- 这就是BP算法中,梯度下降法的核心公式
[概念理解·BP算法的流程]
题目内容
- 什么是神经网络的反向传播算法(back propagation)?它是如何用于训练多层感知机的?
分析与解答
- BP算法是一个迭代算法,它的核心思想是根据每次迭代结果计算损失,并结合一些优化算法(以梯度下降为例) 计算每个权重的梯度以更新权重。反复迭代直到达到迭代结束条件。
- 在训练多层感知机时,反向传播算法计算每个神经元的误差,并将误差反向传播到前一层,以计算前一层的误差( 其实现形式实际上是求导的链式法则)。然后,它使用这些误差来计算每个权重的偏导数,并使用这些偏导数来更新权重。