写在前面:
最近在学习CS224n,系统的学习NLP理论。后面会把相关的学习笔记和代码公开,欢迎大家和我一起讨论。
#############################可爱的分割线###################################
CS224n系列:
【CS224n】Neural Networks, Backpropagation
【CS224n】Neural-Dependency-Parsing
【CS224n】Language Models, RNN, GRU and LSTM
【CS224n】Neural Machine Translation with Seq2Seq
【CS224n】ConvNets for NLP
1. Neural Networks: Foundations
1.1 A Neuron(单个神经元)
1.2 A Single Layer of Neurons(多个神经元的单层网络)
1.3 Feed-forward Computation(前向计算)
1.4 Maximum Margin Objective Function(最大边界损失函数)
其中,s为正标签样本得分,
s
c
s_c
sc为负标签样本得分,
Δ
\Delta
Δ为边界宽度,类似于SVM的分类间隔。
1.5 Training with Backpropagation – Element(反向传播)
随机梯度下降(SGD):
反向传播准则为链式法则,推导较长,参考:http://web.stanford.edu/class/cs224n/readings/cs224n-2019-notes03-neuralnets.pdf
2 Neural Networks: Tips and Tricks
2.1 Gradient Check(梯度检查)
我们可以使用以下方法来对反向传播计算的梯度结果做检查:
该公式为对参数
θ
\theta
θ求导,反向传播计算的梯度结果应该接近于该结果。
实际应用中不直接求导的原因是真实场景的神经网络的参数量巨大,每个参数每次迭代都要计算一次,使用该方法非常耗时。(反向传播中使用矩阵运算可以大大提高效率)
2.2 Regularization(正则化)
正则化是为了防止模型过拟合。
L
2
L_2
L2正则化:
L
1
L_1
L1正则化:参数
W
W
W的绝对值之和。
2.3 Dropout
Dropout也是一种正则化技术,同样可以防止模型过拟合。
基本原理为:训练阶段,每一次训练过程,以p的概率随机选择一部分参数进行训练,其他参数不动;测试阶段,使用所有参数进行预测。
Dropout有效的原因:因为dropout的随机选择训练参数的特性,相当于训练了很多个小网络(指数级增长),最后平均化训练结果(相当于做了ensemble,模型泛化能力更强)。
2.4 Neuron Units(激活函数)
激活函数主要关注公式及对应的曲线;
2.4.1 Sigmoid
sigmoid 求导:
2.4.2 Tanh
tanh函数为sigmoid函数的可替代品,且比sigmoid函数更快收敛。区别在于sigmoid取值范围为[0,1],而tanh函数取值范围为[-1,1]。
2.4.3 Hard tanh
2.4.4 Soft sign
2.4.5 ReLU(Rectified Linear Unit)
2.4.6 Leaky ReLU
2.5 Data Preprocessing(数据预处理)
2.5.1 Mean Subtraction(去均值化)
Mean Subtraction就是在训练数据中,计算均值,对每个样本减去均值。一个重要的点是:均值计算过程只在训练集中进行,得到的均值同时适用于训练集,验证集,测试集。
2.5.2 Normalization(归一化)
归一化是为了把不同维度的特征规范到同个范畴内,具体做法是对每个特征除以各自的标准差。
2.5.3 Whitening
白化是将数据转换为恒等协方差的矩阵。
2.6 Parameter Initialization
一个好的参数初始化的策略是:将权重初始化在0附近的较小随机数
实验表明,上述初始化策略对于sigmoid和tanh激活函数,能更快地收敛和达到更低的错误率。
而偏置通常被初始化为0.
2.7 Learning Strategies
其中,
α
\alpha
α为学习率,可以控制模型参数的学习速率。学习率的设置应该是先大后小。
2.9 Adaptive Optimization Methods
自适应优化方法,目的是为了更好地控制学习率。
RMS:
从该式子可以看到,学习率跟训练过程中的梯度有关,梯度累积越大,学习率越小(梯度累积越大,说明模型学到的东西更多,随着学习过程的进行,学习率应该越来越低)。
Adam:
相比RMS,Adam多了个参数m,来控制学习率的变化。