NLP 常用方法汇总
一、 数据处理
1. 数据预处理
为了加速训练算法的收敛速度,一般都会采用一些数据预处理技术,其
中包括:去除噪声、输入数据降维、删除无关数据等。
数据的平衡化在分类问题中异常重要,一般认为训练集中的数据应该相
对于标签类别近似于平均分布,也就是每一个类别标签所对应的数据集在训
练集中是基本相等的,以避免网络过于倾向于表现某些分类的特点。
为了平衡数据集,应该移除一些过度富余的分类中的数据,并相应补充
一些相对样例稀少的分类中的数据。还有一个方法就是复制一部分这些样例
稀少分类中的数据,并在这些数据中加入随机噪声。
2. 数据规则化
将数据规则化到统一的区间(如[0,1])中具有很重要的优点:防止数据
中存在较大数值的数据造成数值较小的数据对于训练效果减弱甚至无效化,
一个常用的方法是将输入和输出数据按比例调整到一个和激活函数相对应
的区间。
3. 收敛条件:有几个条件可以作为停止训练的判定条件,训练误差、误差梯度、
交叉验证等。
4. 训练方式:逐个样例训练(EET)、批量样例训练(BT)、随机训练(ST)
在 EET 中,先将第一个样例提供给网络,然后开始应用 BP 算法训练网
络,直到训练误差降低到一个可以接受的范围,或者进行了指定步骤的训练
次数。然后再将第二个样例提供给网络训练。
EET 的优点是相对于 BT 只需要很少的存储空间,并且有更好的随机搜
索能力,防止训练过程陷入局部最小区域。
EET 的缺点是如果网络接收到的第一个样例就是劣质(有可能是噪音数
据或者特征不明显)的数据,可能使得网络训练过程朝着全局误差最小化的
反方向进行搜索。
相对的,BT 方法是在所有训练样例都经过网络传播后才更新一次权值,
因此每一次学习周期就包含了所有的训练样例数据。
BT 方法的缺点也很明显,需要大量的存储空间,而且相比 EET 更容易
陷入局部最小区域。
而 ST 则是相对于 EET 和 BT 一种折衷的方法,ST 和 EET 一样也是一
次只接受一个训练样例,但只进行一次 BP 算法并更新权值,然后接受下一
个样例重复同样的步骤计算并更新权值,并且在接受训练集最后一个样例后,
重新回到第一个样例进行计算。
ST 和 EET 相比,保留了随机搜索的能力,同时又避免了训练样例中最
开始几个样例如果出现劣质数据对训练过程的过度不良影响。
二、 常用函数
1. Softmax 函数:
(S:输出值;e:输入值)
Softmax 是一个激活函数,常用于分类任务,将原来的输入映射成为(0,1)的
值,而这些值的累和为 1(满足概率的性质)。我们可以将它理解成概率,在
最后选取输出结点的时候选取概率最大结点作为预测目标。
链接:https://www.cnblogs.com/alexanderkun/p/8098781.html
2. 双曲正切函数(tanh):
(激活函数)
函数图像:
函数导数:tanh′(x) =1−tanh2(x)
3. 其余:https://blog.csdn.net/kangyi411/article/details/78969642
三、 卷积神经网络(Convolutional Neural Network, CNN)
1. 链接:https://blog.csdn.net/jiaoyangwm/article/details/80011656
2. 特点:卷积神经网络是一种带有卷积结构的监督学习深度神经网络,卷积结
构可以减少深层网络占用的内存量,其三个关键的操作,其一是局部感受野,
其二是权值共享,其三是 pooling 层,成功的原因在于其所采用的局部连接
和权值共享的方式,适用于二维图像处理。优点有:
a) 一方面减少了权值的数量使得网络易于优化(参数个数)
b) 另一方面降低了模型的复杂度,也就是减小了过拟合的风险
3. 结构:卷积层,采样层,全连接层。每一层有多个特征图(特征映射),每个
特征图通过一种卷积滤波器提取输入的一种特征,每个特征图有多个神经元,
如下图所示,第一个卷积层有 6 个特征图。
a) 卷积层:因为通过卷积运算我们可以提取出图像的特征,通过卷积运算
可以使得原始信号的某些特征增强,并且降低噪声。
用一个可训练的滤波器 fx 去卷积一个输入的图像(第一阶段是输入
的图像,后面的阶段就是卷积特征 map 了),然后加一个偏置 bx,
得到卷积层 Cx。
b) 采样层:因为对图像进行下采样,可以减少数据处理量同时保留有用信
息,采样可以混淆特征的具体位置,因为某个特征找出来之后,它的位
置已经不重要了,我们只需要这个特征和其他特征的相对位置,可以应
对形变和扭曲带来的同类物体的变化。
每邻域四个像素求和变为一个像素,然后通过标量 Wx+1 加权,再
增加偏置 bx+1,然后通过一个 sigmoid 激活函数,产生一个大概缩
小四倍的特征映射图 Sx+1。
c) 全连接层:采用 softmax 全连接,得到的激活值即卷积神经网络提取到
的图片特征。
d) 隐层:除输入层和输出层以外的其他各层。隐层不直接接受外界的信号,
也不直接向外界发送信号。
隐层的参数个数和隐层的神经元个数无关,只和滤波器的大小和滤
波器种类的多少有关。隐层的神经元个数,它和原图像,也就是输入
的大小(神经元个数)、滤波器的大小和滤波器在图像中的滑动步长
都有关。
4. 权值共享:不同神经元之间的参数共享可以减少需要求解的参数,使用多种
滤波器去卷积图像就会得到多种特征映射。权值共享其实就是对图像用同样
的卷积核进行卷积操作,也就意味着第一个隐藏层的所有神经元所能检测到
处于图像不同位置的完全相同的特征。其主要的能力就能检测到不同位置的
同一类型特征,也就是卷积网络能很好的适应图像的小范围的平移性,即有
较好的平移不变性(比如将输入图像的猫的位置移动之后,同样能够检测到
猫的图像)
5. 运用于图像识别的原理:输入层读入经过规则化(统一大小)的图像,每一
层的每个神经元将前一层的一组小的局部近邻的单元作为输入,也就是局部
感受野和权值共享,神经元抽取一些基本的视觉特征,比如边缘、角点等,
这些特征之后会被更高层的神经元所使用。卷积神经网络通过卷积操作获得
特征图,每个位置,来自不同特征图的单元得到各自不同类型的特征。一个
卷积层中通常包含多个具有不同权值向量的特征图,使得能够保留图像更丰
富的特征。卷积层后边会连接池化层进行降采样操作,一方面可以降低图像
的分辨率,减少参数量,另一方面可以获得平移和形变的鲁棒性。卷积层和
池化层的交替分布,使得特征图的数目逐步增多,而且分辨率逐渐降低,是
一个双金字塔结构。
6. 数据集
a) 格式:形如(输入向量,理想输出向量)的向量对
b) 子集:训练集、测试集、验证集
c) 训练集:包含问题域中的所有数据,并在训练阶段用来调整网络的权重
d) 测试集:在训练的过程中用于测试网络对训练集中未出现的数据的分类
性能,根据网络在测试集上的性能情况,网络的结构可能需要做出调整,
或者增加训练循环次数。
e) 验证集:验证集中的数据统一应该包含在测试集和训练集中没有出现过
的数据,用于在网络确定之后能够更好的测试和衡量网络的性能
f) Looney 等人建议,数据集中 65%的用于训练,25%的用于测试,10%
用于验证
7. 参数初始化:在开始训练前,所有的权都应该用一些不同的随机数进行初始
化。“小随机数”用来保证网络不会因权值过大而进入饱和状态,从而导致训
练失败;“不同”用来保证网络可以正常地学习。实际上,如果用相同的数去
初始化权矩阵,则网络无学习能力。
8. 训练过程
a) 从样本集中取一个样本,输入网络
b) 计算相应的实际输出;在此阶段信息从输入层经过逐级的变换,传送到
输出层,这个过程也是网络在完成训练之后正常执行时执行的过程
c) 计算实际输出与相应的理想输出的差
d) 按照极小化误差的方法调整权值矩阵
具体过程如下:
a) 选定训练组,从样本集中分别随机地寻求 N 个样本作为训练组;
b) 将各权值、阈值,置成小的接近于 0 的随机值,并初始化精度控制参数
和学习率;
c) 从训练组中取一个输入模式加到网络,并给出它的目标输出向量;
d) 计算出中间层输出向量,计算出网络的实际输出向量;
e) 将输出向量中的元素与目标向量中的元素进行比较,计算出输出误差;
对于中间层的隐单元也需要计算出误差;
f) 依次计算出各权值的调整量和阈值的调整量;
g) 调整权值和调整阈值;
h) 当经历 M 后,判断指标是否满足精度要求,如果不满足,则返回(c),继
续迭代;如果满足就进入下一步;
i) 训练结束,将权值和阈值保存在文件中。这时可以认为各个权值已经达
到稳定,分类器已经形成。再一次进行训练,直接从文件导出权值和阈
值进行训练,不需要进行 6 初始化。
四、 循环神经网络(Recurrent Neural Network, RNN)
1. 链接:https://blog.csdn.net/zhaojc1995/article/details/80572098
2. 结构与特点:一类用于处理序列数据的神经网络,常用于 NLP 问题。
a) 基础的神经网络只在层与层之间建立了权连接,RNN 最大的不同之处就
是在层之间的神经元之间也建立的权连接。
b) 权值共享,图中的 V、W、U 是权值,同一类型的权连接权值相同。
c) 每一个输入值都只与它本身的那条路线建立权连接,不会和别的神经元
连接。
下图中的黑方块表示延迟器。
3. 训练方法:BPTT(back-propagation through time)详见链接
a) 本质:BP 算法
b) 核心:求各参数(W/U/V)的梯度
c) 选用的激活函数:tanh 或 ReLU+阈值
Sigmoid:梯度消失;ReLU:梯度爆炸
4. 简单/标准循环网络(Simple Recurrent Network, SRN):详见连接
5. RNN 的变体:N v N, N v 1, 1 v N, N v M (Seq2Seq / Encoder-Decoder 模
型):https://www.leiphone.com/news/201709/8tDpwklrKubaecTa.html
a) N v N: 计算视频中每一帧的分类标签; Char RNN(输入为字符,输
出为下一个字符的概率)。
b) N v 1: 处理序列分类问题。如输入一段文字判别它所属的类别,输入
一个句子判断其情感倾向,输入一段视频并判断它的类别等等。
c) 1 v N: 从图像生成文字(image caption);从类别生成语音或音乐等
d) N v M (Seq2Seq / Encoder-Decoder 模型):