2、外在任务训练
1)
大部分NLP外在任务可以转化为分类任务。
例如句子情感分析,正面、负面或中性。
同样在命名实体识别(NER),给定语境和词,我们要把词进行归类。例如[Jim]_person bought 300 shares of [Acme Corp.]_organization in [2006]_time。
对于这样的问题,我们首先训练
其中X是d维词向量,有词嵌入生成,y是C维one-hot向量,是我们想要预测的类标签(感情、其他词、命名实体、买/卖决定等)
在典型的机器学习任务中,我们把输入数据和目标标签固定而使用优化技巧来训练权重,例如梯度下降,L-BFGS,牛顿方法等。
在NLP应用中,我们会重新训练输入词向量。
2)
此前提到使用于外在任务的词向量由通过一个简单的内在任务优化来进行初始化。
很多情况下,这些预训练的词向量是外在任务优化词向量的良好代理,并在外在任务中表现良好。
但也可能这些预训练的词向量可以被进一步训练(重训练),这次使用外在任务以取得更好效果。
但重新训练词向量可能存在风险。
我们要保证训练集足够大,能覆盖词汇表中的大部分词。因为Word2Vec或者GloVe使语义相近的词位于词空间的相同位置。
当我们用一小部分词汇来重新训练这些词时,这些词在词空间中发生移动,而最终任务的表现会降低。
考虑这个例子,预训练词向量如图6中的位于2维空间,现在通过外在分类已被正确区分。如果我们只重新训练其中2个向量,边界就会随词向量更新移动而导致一个词被错误区分。
3)Softmax分类和正则
考虑使用Softmax分类函数
计算词向量x在类j中的可能性,使用交叉熵损失函数,我们计算损失
显然的上述累加会加总(C-1)个零值,因为yj只在1个索引为1,代表x在唯一的正确类中。
我们用k来表示正确类的索引,损失可简化为
我们将损失扩展到N点数据集
k(i)返回样本x(i)的正确类索引。
现在考虑更新权重W和词向量w涉及的参数数量。我么知道,一个简单的线性决策边界接收至少一个d维输入词向量并生成C类分布。因此更新模型权重,我们会更新C*d个参数。
如果我么更新词汇表V里的每个词,我们将更新|V|词向量,每个为d维。因此总参数量为C*d+|V|*d,对于一个简单线性分类器。
这是一个非常巨大的参数量,并容易过拟合。
为降低过拟合风险,我们引入一个正则项
4)窗口分类
我们主要讨论了使用一个词向量x来在外在任务中预测,实际中这很少见,出于自然语言的特性。
自然语言会用同一个词表达不同意思,我们需要知道语境来区别不同意思。
大多数情况下,我们使用一列词作为模型的输入。
一个序列是由中间词向量和前序、后序语境词向量组成。
语境中词的数量也被成为窗口规模,依据问题而不同。
一般的,小窗口在语法测试中表现更加,大窗口在语义测试中表现更加。
估算词的梯度损失
5)非线性分类器
如神经网络