作者:chen_h
微信号 & QQ:862251340
微信公众号:coderpai
该系列将描述一些自然语言处理方面的技术,完整目录请点击这里。
在本节中,我们描述一个重要的监督学习模型。
接下来,我们来介绍一个用于标记问题的特定生成模型——隐马尔可夫模型。
我们先来确定一些监督学习的符号。我们假设我们的训练集是 (x^(i), y^(i)), …, (x^(m), y^(m)) ,其中输入的句子序列是 x^(i),对应的标记序列是 y^(i) 。我们假设输入句子序列集合是 X,输出句子序列集合是 Y。那么,我们的任务就是设计一个映射函数 f :X -> Y 。
其中一种定义函数 f(x) 的方法是设计条件模型。在这种方法中,我们定义了一个条件概率模型:
对于任何的 (x, y) 都适用。模型的参数估计可以从训练集中得到。之后,如果我们从测试集中输入 x ,那么模型的输出结果就是:
因此,我们简单地将最有可能的预测标签 y 作为模型的输出。如果我们的模型 p(y | x) 给出的序列标签非常接近于真实条件分布,则函数 f(x) 将非常接近于最优状态。
另一种比较常用的方法是生成模型,在生成模型中,我们不是直接估计条件概率 p(y|x) 的值,而是使用联合概率:
进一步,我们可以将联合概率分解成如下:
然后分别估计 p(y) 和 p(x | y) 模型。这两个模型的具体解释如下:
- p(y) 是标签 y 的先验概率分布。
- p(x|y) 是在给定标签 y 的前提下,生成 x 的概率。
我们可以发现,在很多情况下,以这种方式分解模型是非常方便的。例如,语音识别的经典方法是基于这种类型分解的。
给定一个生成模型,我们可以使用贝叶斯规则来导出任何 (x, y) 对的条件概率 p(y|x):
因此,联合概率是非常通用的。
在新的测试用例上面,我们直接使用贝叶斯来处理联合概率模型。给定输入 x ,我们的模型 f(x) 的输出如下:
将联合概率分解为 p(y) 和 p(x | y) 的模型通常被称之为噪声通道模型。直观上来说,当我们看到一个测试例子 x 时,我们假设模型已经产生了两个步骤:首先,以概率 p(y) 选择了一个标签 y;第二,从分布 p(x | y) 生成示例 x。模型 p(x|y) 可以被解释为一个“通道”,它将标签 y 作为其输入,并将其破坏以产生 x 作为输出。我们的任务是根据我们的输入 x,找到最可能的输出标签 y。
最后,总结一下:
- 我们的任务是去学习一个映射函数:y = f(x),我们假设训练集是 (x^(i), y^(i)) for i = 1, …, n.
- 在噪声通道模型中,我们使用训练数据来评估 p(y) 和 p(x|y),这些模型定义了一个联合(生成)模型:
- 给定一个新的测试样例 x,我们预测标签:
根据输入的 x ,去寻找输出 f(x),这个问题经常被称之为解码问题。