©PaperWeekly 原创 · 作者|苏剑林
单位|追一科技
研究方向|NLP、神经网络
深度学习如此成功的一个巨大原因就是基于梯度的优化算法(SGD、Adam 等)能有效地求解大多数神经网络模型。然而,既然是基于梯度,那么就要求模型是可导的,但随着研究的深入,我们时常会有求解不可导模型的需求,典型的例子就是直接优化准确率、F1、BLEU 等评测指标,或者在神经网络里边加入了不可导模块(比如“跳读”操作)。
▲ Gradient
本文将简单介绍两种求解不可导的模型的有效方法:强化学习的重要方法之一策略梯度(Policy Gradient),以及干脆不需要梯度的零阶优化(Zeroth Order Optimization)。表面上来看,这是两种思路完全不一样的优化方法,但本文将进一步证明,在一大类优化问题中,其实两者基本上是等价的。
形式描述
首先,我们来形式地定义我们需要解决的问题。以监督学习为例,训练数据 ,模型为 , 是待优化参数,其维度为 d,假设模型本身是可导的,其的一般形式为 ,其中 称为温度参数,没有特别注明的情况下默认 。
假如真实标签是 ,预测标签是 ,那么单个样本的得分记为 ,训练目标希望总得分越大越好,即:
看上去挺复杂的,但事实上它的含义很直观清晰:我们想求出参数 ,使得整个数据集的得分 尽可能大,而 ,说明模型预测时输出的是概率最大的那一个。说白了,我们希望“预测概率最大的那一个 y 就是评测得分最高的那一个 y”。
这个形式对应着相当多的机器学习任务,在 NLP 中包括文本分类、序列标注、文本生成等,甚至回归问题也可以对应上去,可以说是很有代表性了。其困难之处就是 这一步无法提供有效的梯度,因此不好直接用基于梯度的优化算法优化。
策略梯度
策略梯度的想法很直接,既然原始的目标(1)没法求梯度,那换个跟它强相关的、可求梯度的目标就行了,比如:
2.1 排序不等式
很明显,上述定义的目标并没有包含