问答学习,自问自答~
目录
什么是ill-condition?如何判断出现了ill-condition?有什么危害?
什么是Momentum方法(SGD Momentum),其数学原理是什么?(hint:指数加权移动平均)
相比于使用 one-hot 向量表示词语,embedding的优点和缺点是什么?
一 优化算法进阶
-
什么是ill-condition(病态条件)?如何判断出现了ill-condition?有什么危害?
在凸优化中,病态条件指的是Hessian矩阵H的病态。在聊病态条件之前,需要了解下矩阵条件数。
病态条件是指矩阵H的条件数(最大特征值/最小特征值)很大。
举个例子,特征是,目标值是,则Hessian矩阵为
其条件数是4/0.2=20,所以H的病态的。
病态条件会有什么危害呢?可以看到,在x1轴和x2轴上的梯度不在一个量级,学习率决定了学习的快慢,过大会越过最优点,过小则会收敛很慢,因此,如果我们在两个轴采用相同的学习率,会出现问题,若是采用较小的学习率,x2轴可以正常收敛,但x1轴会收敛很慢;若是采用较大的学习率,x1轴可以正常速度收敛,但x2轴会越过最优点。
-
如何应对ill-condition?
1 动量法,当历史梯度方向与当前梯度方向一致时,那么趋势会增强,加快收敛,否则,趋势被减弱。该方法可以提供一个好的更新方向,因此可以使用较大学习率来加快收敛。
2 自适应学习率,即在不同的轴上采用不同的学习率。
-
什么是Momentum方法(SGD Momentum),其数学原理是什么?(hint:指数加权移动平均)
动量一词来源于物理学,动量法指的是维持惯性,即梯度不止是包括当前步的梯度,还会考虑以往步的梯度。其数学原理就是指数加权移动平均。
【类似于但不同于Momentum方法,Nesterov accelerated gradient (NAG)算法先在历史梯度方向上走一步,按照前面一小步的“超前梯度”来与历史梯度合并,使得小球具有“超前眼光”,更加“聪明”。】
-
有哪些自适应学习率方法?
自适应学习率的思想是特别关注更新少的变量,如果一个变量在历史中梯度和很小,那么会给予这个变量更大的学习率。
AdaGrad:大的梯度处,小的学习率,即让最终的步长差不多大。
此算法的缺点是,st随更新次数累加到一定程度会梯度为0,不再更新,小的学习率容易收敛到非极值点,大的学习率又是非常危险的,因为无法确定实际问题中的优化曲面长啥样。
RMSProp:对AdaGrad做了修改,并没有对历史梯度一直累加,而是用了指数加权移动平均,过早的梯度会被遗忘掉,解决了AdaGrad梯度消失的问题。
AdaDelta:与RMSProp不同的是,无需使用者指定全局学习率,而是算法计算出来的,此方法只有一个超参数
Adam:Momentum和RMSProp的结合体,并对EMA权重进行了无偏操作。良好性质是adam有很强的rescale性质,可以使得模型以一个很正的方向来更新参数,但也带来一些可能不收敛的问题,有的论文专门剖析了Adam的优缺点《On the Convergence of Adam and Beyond》.
Adam对大小相差很大数量级的梯度都可以rescale到相近的大小(Adam算法中的 mt 和 vt (原文符号)分别是梯度的一阶矩和二阶矩估计,二者相除,可以使更新量rescale到1的附近。)
mt 和 vt 均使用了EMA(指数移动平均Exponential Moving Average),但是二者的衰减参数并不相同
二 word2vec
-
相比于使用 one-hot 向量表示词语,embedding的优点和缺点是什么?
优点:训练好的词向量中能够包含更多语义信息,词向量的维度是可以自由设定的(本质上说,词嵌入是一个降维操作)
缺点:词嵌入模型首先需要在大规模语料库上进行训练,才能得到更有意义的词向量,其次在后续模型的训练过程中,可能还需要进行进一步的模型参数优化,所以在实现和使用上,都是比 one-hot 向量更复杂的
词嵌入模型的训练本质上是在优化模型预测各词语同时出现的概率,其他word2vec的相关总结可移步Word2Vec原理
三 词嵌入进阶
一些对word2vec的改进算法
-
子词嵌入(fastText)
-
全局向量的词嵌入(GloVe)
GloVe 使用了非概率分布的变量,并添加了中心词和背景词的偏差项,这样做是在松弛概率的规范性,即各个概率事件的概率和加起来等于1
GloVe 使用了一个单调递增的权重函数来加权各个损失项
在有些情况下,交叉熵损失函数有劣势,GloVe 使用了平方损失函数
GloVe 的损失函数计算公式中用到了语料库上的全局统计信息