【CS224n】Neural Networks, Backpropagation

写在前面:
最近在学习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(单个神经元)

【CS224n】Neural Networks, Backpropagation
【CS224n】Neural Networks, Backpropagation

1.2 A Single Layer of Neurons(多个神经元的单层网络)

【CS224n】Neural Networks, Backpropagation
【CS224n】Neural Networks, Backpropagation

1.3 Feed-forward Computation(前向计算)

【CS224n】Neural Networks, Backpropagation
【CS224n】Neural Networks, Backpropagation

1.4 Maximum Margin Objective Function(最大边界损失函数)

【CS224n】Neural Networks, Backpropagation
【CS224n】Neural Networks, Backpropagation
其中,s为正标签样本得分,scs_c为负标签样本得分,Δ\Delta为边界宽度,类似于SVM的分类间隔。

1.5 Training with Backpropagation – Element(反向传播)

随机梯度下降(SGD):
【CS224n】Neural Networks, Backpropagation
反向传播准则为链式法则,推导较长,参考:http://web.stanford.edu/class/cs224n/readings/cs224n-2019-notes03-neuralnets.pdf
【CS224n】Neural Networks, Backpropagation

2 Neural Networks: Tips and Tricks

2.1 Gradient Check(梯度检查)

我们可以使用以下方法来对反向传播计算的梯度结果做检查:
【CS224n】Neural Networks, Backpropagation
该公式为对参数θ\theta求导,反向传播计算的梯度结果应该接近于该结果。
实际应用中不直接求导的原因是真实场景的神经网络的参数量巨大,每个参数每次迭代都要计算一次,使用该方法非常耗时。(反向传播中使用矩阵运算可以大大提高效率)

2.2 Regularization(正则化)

正则化是为了防止模型过拟合。
L2L_2正则化:
【CS224n】Neural Networks, Backpropagation
【CS224n】Neural Networks, Backpropagation
L1L_1正则化:参数WW的绝对值之和。

2.3 Dropout

Dropout也是一种正则化技术,同样可以防止模型过拟合。
基本原理为:训练阶段,每一次训练过程,以p的概率随机选择一部分参数进行训练,其他参数不动;测试阶段,使用所有参数进行预测。
Dropout有效的原因:因为dropout的随机选择训练参数的特性,相当于训练了很多个小网络(指数级增长),最后平均化训练结果(相当于做了ensemble,模型泛化能力更强)。

2.4 Neuron Units(**函数)

**函数主要关注公式及对应的曲线;

2.4.1 Sigmoid

【CS224n】Neural Networks, Backpropagation
【CS224n】Neural Networks, Backpropagation
sigmoid 求导:
【CS224n】Neural Networks, Backpropagation

2.4.2 Tanh

tanh函数为sigmoid函数的可替代品,且比sigmoid函数更快收敛。区别在于sigmoid取值范围为[0,1],而tanh函数取值范围为[-1,1]。
【CS224n】Neural Networks, Backpropagation
【CS224n】Neural Networks, Backpropagation

2.4.3 Hard tanh

【CS224n】Neural Networks, Backpropagation
【CS224n】Neural Networks, Backpropagation

2.4.4 Soft sign

【CS224n】Neural Networks, Backpropagation
【CS224n】Neural Networks, Backpropagation

2.4.5 ReLU(Rectified Linear Unit)

【CS224n】Neural Networks, Backpropagation
【CS224n】Neural Networks, Backpropagation

2.4.6 Leaky ReLU

【CS224n】Neural Networks, Backpropagation
【CS224n】Neural Networks, Backpropagation

2.5 Data Preprocessing(数据预处理)

2.5.1 Mean Subtraction(去均值化)

Mean Subtraction就是在训练数据中,计算均值,对每个样本减去均值。一个重要的点是:均值计算过程只在训练集中进行,得到的均值同时适用于训练集,验证集,测试集。

2.5.2 Normalization(归一化)

归一化是为了把不同维度的特征规范到同个范畴内,具体做法是对每个特征除以各自的标准差。

2.5.3 Whitening

白化是将数据转换为恒等协方差的矩阵。

2.6 Parameter Initialization

一个好的参数初始化的策略是:将权重初始化在0附近的较小随机数
【CS224n】Neural Networks, Backpropagation
实验表明,上述初始化策略对于sigmoid和tanh**函数,能更快地收敛和达到更低的错误率。
而偏置通常被初始化为0.

2.7 Learning Strategies

【CS224n】Neural Networks, Backpropagation
其中,α\alpha为学习率,可以控制模型参数的学习速率。学习率的设置应该是先大后小。

2.9 Adaptive Optimization Methods

自适应优化方法,目的是为了更好地控制学习率。
RMS:
【CS224n】Neural Networks, Backpropagation
【CS224n】Neural Networks, Backpropagation

从该式子可以看到,学习率跟训练过程中的梯度有关,梯度累积越大,学习率越小(梯度累积越大,说明模型学到的东西更多,随着学习过程的进行,学习率应该越来越低)。
Adam:
【CS224n】Neural Networks, Backpropagation
相比RMS,Adam多了个参数m,来控制学习率的变化。

参考:Neural Networks, Backpropagation