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