1. 符号
整篇文章里,使用下划线表示向量,例如是由
组成的向量。。
2.对数线性模型
给定两个集合和
,假设
是有限集合,我们的目标是构建一个可以估计给定一个输入
得到标签
的条件概率
的模型。例如,
可以是一个单词,
是这个单词的词性(名词、动词、介词等)。我们定义函数
,同时假设参数向量
,在这些假设下对数线性模型可以表示为
这就是在参数下,给定
条件
的概率。
使用这个表达式来表示这个模型的原因如下。内积可以是任意值(正的或者负的),可以解释为给定输入
标签是
的合理性度量。对每个给定的输入
,我们可以对每个可能的标签
计算这个内积。我们可以将这些量转换为一个定义良好的概率分布
。如果对内积取幂,
,就得到了一个严格正的量,最后除以一个标准化常数
,这确保了
。这样我们就将可正可负的内积
变成了一个概率分布。
一个重要的问题是我们怎样从数据估计出参数。接下来我们讨论这个问题。
对数似然函数。为了估计这个参数,假设我们有n组打好标签的样本,。似然函数就是
是对给定的
解释这些样本的一个度量,一个好的
应该会给每个
赋予一个较大的值,从而使
也较大。
最大似然估计是
最大似然估计是在评判标准下,求出对训练集拟合最好的参数的一种方法。
找出最大似然估计。给定训练集,我们怎样找出最大似然参数估计
呢?不幸的是,解析解在一般情况下并不存在,通常使用基于梯度的方法来最优化
。最简单的方法就是梯度上升法,大致使用如下步骤:
初始化
,比如设
-
For t=1...T:
- For j=1...d:
其中是学习率,
是
相对于
的偏导数。
- For j=1...d:
返回最终的参数
实践中,有更多精妙的最优化方法可以使用:一个共同的选择是使用L-BFGS(一种拟牛顿法),这里就不去探究这种方法的细节了。好消息是很多软件的L-BFGS是直接可用的,实现L-BFGS需要我们计算目标函数,和它的偏导数
。所幸,这很容易计算:
第一个求和项,将所有样本
的第j个特征
求和。第二个求和项对所有样本的第j个特征的期望
求和。
正则化对数似然函数。在很多应用,在对数似然函数中加上额外的正则项是非常有好处的。修改后的函数变为:
这里,
是一个超参数,决定正则项的强度。还是和上面一样,我们所求的参数为:
此时,在估计参数时有一个权衡取舍,我们想使尽量大,但同时还要保持范数
尽量小(
越大,则我们希望范数越小)。正则项惩罚大的参数值。
直觉上,我们可以认为正则项是对复杂模型的一个惩罚,参数越大,模型越复杂。我们想要寻找可以很好拟合样本的模型,但我们也不想模型过于复杂(过拟合)
在实践中,往对数线性模型添加正则项是非常有用的。特别是在d很大时,这种场景在自然语言处理程序中是非常常见的,甚至d比训练样本数n还大的情况也存在,在这些情况下只要添加正则项惩罚大的参数值,我们还是可以获得较好的泛化性能。
寻找最优化参数
还是可以使用基于梯度的方法,只需稍微修改偏导数公式为: