机器学习知识点复习下
- 第八章、采样
- 1.采样的作用
- 第九章、前向神经网络
- 1.多层感知机与布尔函数
- 2.神经网络中的激活函数
- 3.多层感知机的反向传播算法
- 4.神经网络训练技巧
- 5.深度卷积神经网络
- 6.深度残差网络
- 第十章、循环神经网络
- 1.循环神经网络和卷积神经网络
- 2.循环神经网络的梯度消失问题
- 3.循环神经网络的激活函数
- 4.长短期记忆网络LSTM
- 5.Seq2Seq模型
- 6.注意力机制
第八章、采样
1.采样的作用
• 采样可以模拟随机现象,增加对随机事件的直观认识。
• 采样可以近似总体分布,降低信息维度,简化问题。
• 采样可以利用重采样技术,挖掘数据信息,调整样本分布,适应模型训练和学习。
• 采样可以用于随机模拟,近似复杂模型的求解或推理。
• 采样可以用于划分训练集和测试集,评估模型的性能。
第九章、前向神经网络
深度前馈网络是一类网络模型的统称,我们常见的多层感知机、自编码器、限制玻尔兹曼机,以及卷积神经网络等,都是其中的成员。
1.多层感知机与布尔函数
多层感知机(Multi-Layer Perceptron, MLP) 是一种前馈神经网络,它由一个输入层,一个或多个隐藏层,和一个输出层组成,每一层都由若干个神经元构成,每个神经元都有一个激活函数,例如Sigmoid,ReLU等。多层感知机可以用于实现复杂的非线性函数逼近,例如分类,回归,聚类等。
布尔函数(Boolean Function) 是一种从布尔域到布尔域的函数,它的输入和输出都是布尔值,即真(True)或假(False)。布尔函数可以用于表示逻辑运算,例如与(AND),或(OR),非(NOT),异或(XOR)等。布尔函数可以用多层感知机来实现,例如,一个单层感知机可以实现与,或,非运算,一个双层感知机可以实现异或运算。
2.神经网络中的激活函数
-
Sigmoid
-
Tanh
-
ReLU
问题1:为什么Sigmoid和Tanh激活函数会导致梯度消失的现象?
Sigmoid和Tanh导数在x很大或很小时趋于0,造成梯度消失;
问题2:ReLU 系列的激活函数相对于Sigmoid 和Tanh 激活函数的优点是什么?它们有什么局限性以及如何改进?
- 优点:
(1) Sigmoid和Tanh激活函数均需要计算指数,复杂度高,而 ReLU只需要一个闻值即可得到激活值。
(2) ReLU的非饱和性可以有效地解决梯度消失的问题。
(3) ReLU的单侧抑制提供了网络的稀疏表达能力。 - 局限性:
ReLU在训练中,学习率过大,神经元会死亡。 - 改进:
设计LReLU:保留了部分负梯度信息,能够不完全丢失
设计PReLU:防止LReLU的a参数选择不易,一定程度上起正则化的作用。
3.多层感知机的反向传播算法
用通俗易懂的话来解释前向传播和反向传播的区别。
首先想象一下,你是一家快餐店的老板,有一种新式汉堡想推出市场。
前向传播(Forward Propagation) 就相当于你让员工按照配方做汉堡,然后卖给顾客,看看顾客的反应如何。这个过程是:
- 员工按配方制作汉堡(输入数据传递到网络模型)
- 将做好的汉堡卖给顾客(网络模型输出结果)
- 观察顾客的反馈(计算输出与期望的差距)
如果顾客不满意,反应太差,那就需要反向传播(Back Propagation) 了。反向传播就相当于:
- 你根据顾客的反馈,分析制作过程中可能出现的问题(计算误差对每个参数的敏感度)
- 修改汉堡的配方(调整模型参数)
- 再次做汉堡试售给顾客(进行下一轮前向传播)
通过不断地前向传播获取反馈,再反向传播优化参数,你就能逐步改善汉堡的配方,使之获得顾客的青睐。
这就是机器学习模型学习的核心过程。前向传播让模型尝试当前的参数配置,反向传播根据结果的偏差对参数进行调整,一轮一轮地学习,直到模型性能令人满意为止。
问题:平方误差损失函数和交叉熵损失函数分别适合什么场景?
一般来说,平方损失函数更适合输出为连续,并且最后一层不含Sigmoid或Softmax激活函数的神经网络;
交叉熵损失则更适合二分类或多分类的场景。
4.神经网络训练技巧
解决过拟合的方法:
解决“过拟合”的方法有很多,包括数据集增强(Data Augmentation)、参数范数惩罚/正则化(Regularization)、模型集成(Model Ensemble) 等;其中Dropout是模型集成方法中最高效与常用的技巧。
同时,深度神经网络的训练中涉及诸多手调参数,如学习率、权重衰减系数、Dropout比例等,这些参数的选择会显著影响模型最终的训练效果。批量归一化(Batch Normalization,BN)方法有效规避了这些复杂参数对网络训练产生的影响,在加速训练收敛的同时也提升了网络的泛化能力。
-
问题:为什么Dropout可以抑制过拟合?它的工作原理和实现?
Dropout是指在深度网络的训练中,以一定的概率随机地 “临时丢弃”一部分神经元节点。Dropout作用于每份小批量训练数据,由于其随机丢弃部分神经元的机制,相当于每次迭代都在训练不同结构的神经网络。 -
问题:批量归一化的基本动机与原理是什么?在卷积神经网络中如何使用?
归一化原因: 神经网络训练过程的本质是学习数据分布,如果训练数据与测试数据的分布不同将大大降低网络的泛化能力,因此我们需要在训练开始前对所有输入数据进行归一化处理。
批量归一化可以看作在每一层输入和上一层输出之间加入了一个新的计算
层,对数据的分布进行额外的约束,从而增强模型的泛化能力。
5.深度卷积神经网络
卷积神经网络(Convolutional Neural Networks,CNN)也是一种前馈神经网络,其特点是每层的神经元节点只响应前一层局部区域范围内的神经元(全连接网络中每个神经元节点响应前一层的全部节点)。一个深度卷积神经网络模型通常由若干卷积层叠加若干全连接层组成,中间也包含各种非线性操作以及池化操作。
-
问题1 卷积操作的本质特性包括稀疏交互和参数共享,具体解释这两种特性及其作用。
稀疏交互: 而在卷积神经网络中,卷积核尺度远小于输入的维度,这样每个输出神经元仅与前一层特定局部区域内的神经元存在连接权重(即产生交互),我们称这种特性为稀疏交互,如图9.16所示。
稀疏交互的物理意义是,通常图像、文本、语音等现实世界中的数据都具有局部的特征结构,我们可以先学习局部的特征,再将局部的特征组合起来形成更复杂和抽象的特征。
参数共享是指在同一个模型的不同模块中使用相同的参数,它是卷积运算的固有属性。全连接网络中,计算每层的输出时,权值参数矩阵中的每个元素只作用于某个输入元素一次;而在卷积神经网络中,卷积核中的每一个元素将作用于每一次局部输入的特定位置上。只需要学习一组参数集合,而不需要针对每个位置的每个参数都进行优化,降低了模型的存储需求。
参数共享的物理意义是使得卷积层具有平移等变性。也就是说,在猫的图片上先进行卷积,再向右平移 I 像素的输出,与先将图片向右平移 l 像素再进行卷积操作的输出结果是相等的。 -
问题2 常用的池化操作有哪些?池化的作用是什么?
常用的池化操作主要针对非重叠区域,包括均值池化(mean pooling)、最大池化(max pooling)等。此外,特殊的池化方式还包括对相邻重叠区域的池化以及空间金字塔池化。相邻重叠区域的池化,顾名思义,是采用比窗口宽度更小的步长,使得窗口在每次滑动时存在重叠的区域。
作用: 池化操作除了能显著降低参数量外,还能够保持对平移、伸缩、旋转操作的不变性。平移不变性是指输出结果对输入的小量平移基本保持不变。
-
问题3 卷积神经网络如何用于文本分类任务?
卷积神经网络的核心思想是捕捉局部特征,起初在图像领域取得了巨大的成功。
卷积神经网络的优势在于能够自动地对N-gram特征进行组合和筛选,获得不同抽象层次的语义信息。由于在每次卷积中采用了共享权重的机制,因此它的训练速度相对较快,在实际的文本分类任务中取得了非常不错的效果。
6.深度残差网络
问题 ResNet的提出背景和核心理论是什么?
ResNet的提出背景是解决或缓解深层的神经网络训练中的梯度消失问题。ResNet可以有效改善深层的神经网络学习问题,使得训练更深的网络成为可能。
如果某一层的输出已经较好的拟合了期望结果,那么多加入一层不会使得模型变得更差,因为该层的输出将直接被短接到两层之后,相当于直接学习了一个恒等映射,而跳过的两层只需要拟合上层输出和目标之间的残差即可。
第十章、循环神经网络
1.循环神经网络和卷积神经网络
循环神经网络(Recurrent Neural Network,RNN) 是用来建模序列化数据的一种主流深度学习模型。
问题 处理文本数据时,循环神经网络与前馈神经网络相比有什么特点?
- 一般的前馈神经网络,如卷积神经网络,通常接受一个定长的向量作为输入。但是两个单词之间的长距离依赖关系还是很难被学习到。
- 循环神经网络却能很好地处理文本数据变长并且有序的输入序列。它模拟了人阅读一篇文章的顺序,从前到后阅读文章中的每一个单词,将前面阅读到的有用信息编码到状态变量中去,从而拥有了一定的记忆能力,可以更好地理解之后的文本。
2.循环神经网络的梯度消失问题
问题 循环神经网络为什么会出现梯度消失或梯度爆炸?有哪些改进方案?
实践发现,使用BPTT算法学习的循环神经网络并不能成功捕捉到长距离的依赖关系,这一现象主要源于深度神经网络中的梯度消失。梯度消失意味着无法通过加深网络层次来改善神经网络的预测效果,因为无论如何加深网络,只有靠近输出的若干层才真正起到学习的作用。这使得循环神经网络模型很难学习到输入序列中的长距离依赖关系。
改进方法:
梯度爆炸:通过梯度裁剪来缓解;
梯度消失:长短时记忆模型[23]及其变种门控循环单元(Gated recurrent unit,GRU)等模型可以加入门控机制。
3.循环神经网络的激活函数
问题 在循环神经网络中能否使用ReLU作为激活函数?
答案是肯定的,但是需要对矩阵的初值做一定限制,否则十分容易引发数值问题。当采用ReLU作为循环神经网络中隐含层的激活函数时,只有当W的取值在单位矩阵附近时才能取得比较好的效果,因此需要将W初始化为单位矩阵。
初始化W为单位矩阵并使用ReLU激活函数在一些应用中取得了与
长短期记忆模型相似的结果,并且学习速度比长短期记忆模型更快,是一个值得尝试的小技巧。
4.长短期记忆网络LSTM
长短期记忆网络(Long Short Term Memory,LSTM)是循环神经网络的最知名和成功的扩展。LSTM可以对有价值的信息进行长期记忆,从而减小循环神经网络的学习难度。
- 问题1 LSTM是如何实现长短期记忆功能的?
与传统的循环神经网络相比,LSTM加入了输入门 i t i_{t} it、遗忘门 f t f_{t} ft以及输出门 o t o_{t} ot三个门和一个内部记忆单元 c t c_{t} ct。
输入门控制当前计算的新状态以多大程度更新到记忆单元;
遗忘门控制前一步记忆单元中的信息有多大程度被遗忘掉;
输出门控制当前的输出有多大程度上取决于当前的记忆单元。
在一个训练好的网络中,
(1)当输入的序列中没有重要信息时,LSTM的遗忘门的值接近于1,输入门的值接近于0,此时过去的记忆会被保存,从而实现了长期记忆功能;
(2)当输入的序列中出现了重要的信息时,LSTM应当把其存入记忆中,此时其输入门的值会接近于1;
(3)当输入的序列中出现了重要信息,且该信息意味着之前的记忆不再重要时,输入门的值接近1,而遗忘门的值接近于0,这样旧的记忆被遗忘,新的重要信息被记忆。
经过这样的设计,整个网络更容易学习到序列之间的长期依赖。 - 问题2 LSTM里各模块分别使用什么激活函数,可以使用别的激活函数吗?
在LSTM中,遗忘门、输入门和输出门使用Sigmoid函数作为激活函数;在生成候选记忆时,使用双曲正切函数Tanh作为激活函数。
注意:这两个激活函数都是饱和的,也就是说在输入达到一定值的情况下,输出就不会发生明显变化了。
原因: ①Sigmoid函数的输出在0~1之间,符合门控的物理定义。且当输入较大或较小时,其输出会非常接近1或0,从而保证该门开或关。②在生成候选记忆时,使用Tanh函数,是因为其输出在−1~1之间,这与大多数场景下特征分布是0中心的吻合。
5.Seq2Seq模型
Seq2Seq,全称Sequence to Sequence模型,暂且称之为序列到序列模型。意思是将一个序列信号,通过编码和解码生成一个新的序列信号。
- 问题1 什么是Seq2Seq模型?Seq2Seq模型有哪些优点?
Seq2Seq模型的核心思想是,通过深度神经网络将一个作为输入的序列映射为一个作为输出的序列,这一过程由编码输入与解码输出两个环节构成。(简单理解:而对于大多数普通人,很难记忆长距离、长时间的信息。在考前只好临时抱佛脚,编码很短期的序列信号,考试时也是听天由命,能答多少写多少,解码出很短时效的信息。)
- 问题2 Seq2Seq模型在解码时,有哪些常用的办法?
Seq2Seq模型最核心的部分是其解码部分,
(1)Seq2Seq模型最基础的解码方法是贪心法,即选取一种度量标准后,每次都在当前状态下选择最佳的一个结果,直到结束。
(2)集束搜索是常见的改进算法,它是一种启发式算法。先选择b个当前最佳,然后拓展许多个,然后选择前b个,循环,最后选择最佳一个。
(3)解码时使用堆叠的RNN、增加Dropout机制、与编码器之间建立残差连接等,均是常见的改进措施。
(4)一个重要的改进是注意力机制。
6.注意力机制
问题 Seq2Seq模型引入注意力机制是为了解决什么问题?为什么选用了双向的循环神经网络模型?
(1)①随着输入序列的增长,模型的性能发生了显著下降。这是因为编码时输入序列的全部信息压缩到了一个向量表示中。随着序列增长,句子越前面的词的信息丢失就越严重。
②Seq2Seq模型的输出序列中,常常会损失部分输入序列的信息,这是因为在解码时,当前词及对应的源语言词的上下文信息和位置信息在编解码过程中丢失了。
Seq2Seq模型中引入注意力机制就是为了解决上述的问题。