lecture4:Backpropagation and computation graphs(笔记)

1.问题:在使用预训练词向量时,比如进行情感分类,在"fine tune"时训练集的词向量会move around,而测试 集的词向量未发生变化,由此在测试集上测试时可能会出现偏差。

答:首先不能抛弃预训练的词向量,在面对规模较小的数据集时,可以考虑不使用"fine tune”,在数据集规模较大时,“train=update=fine-tune”,使用"fine-tune"会有较好的表现。

2.Neural Networks="Forward Propagation"+"Back Propagation”;其中Backpropagation是梯度的传递过程,梯度传递时遵循链式法则(chain rule),且[downstream gradient]=[upstream gradient]×[local gradient]。现在的深度学习框架(tensorflow pytorch)已经囊括了反向传播的步骤,但是了解内在的东西也是很重要的。反向传播不总是perfect,会有梯度消失和梯度爆炸等问题。

3.一个模型在表现相同的情况下参数越少越好,当参数过多时,可能会有过拟合(overfitting),可以加入正则化(Regularization)(L2正则化:参数的平方和)。另外,在有循环(loop)时,总是要考虑能不能使用向量或矩阵来避免循环。

4.非线性化:logistic(sigmoid)和tanh都包括指数运算,tanh是一个重新放缩和移动的sigmoid: $$ tanh=2logistic(2z)-1 $$ 由于sigmoid和tanh都有复杂的指数运算,而指数运算会减慢速度,所以人们提出了Hard tanh,并且效果很不错,这样才有了后来的Relu(后来又有Leaky Relu)。

5.Adam优化(Optimizers)在很多情况下是一个很好并且安全的选择。