文章目录
笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP
5. 感知机分类与序列标注
第4章我们利用隐马尔可夫模型实现了第一个基于序列标注的中文分词器,然而效果并不理想。事实上,隐马尔可夫模型假设人们说的话仅仅取决于一个隐藏的{B.M,E,S序列,这个假设太单纯了,不符合语言规律。语言不是由这么简单的标签序列生成,语言含有更多特征,而隐马弥可夫模型没有捕捉到。隐马弥可夫模型能捕捉的特征仅限于两种: 其一,前一个标签是什么;其二,当前字符是什么。
为了利用更多的特征,线性模型( linear model )应运而生。线性模型由两部分构成: 一系列用来提取特征的特征函数 φ,以及相应的权重向量 w。
本章将深人讲解感知机算法的原理,以及在分类和序列标注上的应用。在序列标注应用部分,我们将实现基于感知机的中文分词器。由于感知机序列标注基于分类,并且分类问题更简单,所以我们先学习分类问题。
5.1 分类问题
-
定义
分类指的是预测样本所属类别的一类问题。二分类也可以解决任意类别数的多分类问题(one vs rest)。
-
将类型class1看作正样本,其他类型全部看作负样本,然后我们就可以得到样本标记类型为该类型的概率 p1。
-
然后再将另外类型class2看作正样本,其他类型全部看作负样本,同理得到 p2。
-
以此循环,我们可以得到该待预测样本的标记类型分别为类型 class i 时的概率 pi,最后我们取 pi 中最大的那个概率对应的样本标记类型作为我们的待预测样本类型。
-
总之还是以二分类来依次划分,并求出最大概率结果。
-
-
应用
在NLP领域,绝大多数任务可以用分类来解决。文本分类天然就是一个分类问题。关键词提取时,对文章中的每个单词判断是否属于关键词,于是转化为二分类问题。在指代消解问题中,对每个代词和每个实体判断是否存在指代关系,又是一个二分类问题。在语言模型中,将词表中每个单词作为一种类别,给定上文预测接下来要出现的单词。
5.2 线性分类模型
线性模型是传统机器学习方法中最简单最常用的分类模型,用一条线性的直线或高维平面将数据一分为二。
直线将平面分割为两部分,分别对应男女。对于任何姓名,计算它落入哪个区域,就能预测它的性别。这样的区域称为决策区域,它们的边界称为决策边界。二维空间中,如果决策边界是直线,则称为线性分类模型: Y = Wx + b。
如果是任意维度空间中的线性决策边界统称为分离超平面
推广到 D 维空间,分离超平面的方程为:
∑ i = 1 D w i x i + b = 0 \sum_{i=1}^{D} w_{i} x_{i}+b=0 i=1∑Dwixi+b=0
其中,w 是权重,b 偏置(截距),可以写成向量的形式:
y ^ = s i g n ( w ⋅ x ) = { − 1 , w ⋅ x ⩽ 0 1 , w ⋅ x > 0 \hat{y}={sign}(w \cdot x)=\{\begin{array}{cc}{-1,} {w \cdot x \leqslant 0} \\ {1,} {w \cdot x>0}\end{array} y^=sign(w⋅x)={
−1,w⋅x⩽01,w⋅x>0
w = [ w 1 , ⋯ , w D , b ] x = [ x 1 , ⋯ , x D , 1 ] y ^ = sign ( w ⋅ x ) = { − 1 , w ⋅ x ⩽ 0 1 , w ⋅ x > 0 \begin{aligned} &\boldsymbol{w}=\left[w_{1}, \cdots, w_{D}, b\right]\\ &x=\left[x_{1}, \cdots, x_{D}, 1\right] \end{aligned}\\ \hat{y}=\operatorname{sign}(\boldsymbol{w} \cdot \boldsymbol{x})=\left\{\begin{array}{cc} {-1,} & {\boldsymbol{w} \cdot \boldsymbol{x} \leqslant 0} \\ {1,} & {\boldsymbol{w} \cdot \mathbf{x}>0} \end{array}\right. w=[w1,⋯,w