自然语言处理入门(3) 感知机与条件随机场

《自然语言处理入门》阅读笔记(3) 第五章+第六章

感知机

  • 隐马尔可夫模型仅捕捉两个特征:前一个标签、当前字符
  • 线性模型包括:提取特征的特征函数$\phi$、权重向量$w$

线性分类与感知机算法

  • 线性模型:用一条线性直线或高位平面将数据一分为二,模型由特征函数$\phi$、权重向量$w$组成

  • 特征向量:描述样本特征的向量

  • 特征提取:构造特征向量的过程

  • 分离超平面:任意维度空间中的线性决策边界

    • D维空间的超平面方程为:

      image-20211003124432663

    • 将$b$也看作一个权重,则:

      image-20211003124831996

      超平面方程简化为:

      image-20211003124839251

  • 线性模型进行最终决策:

    image-20211003124646930

  • 感知机算法:迭代式算法,每次读入一个样本,将预测结果与标签对比,计算误差、更新参数

    • 过程:

      • 读入训练样本$(x^{(i)},y^{(i)})$,预测$\hat{y}=sign(w\cdot x^{(i)})$
      • 若$\hat{y}\neq y^{(i)}$,则更新参数$w \leftarrow w+y^{(i)}x^{(i)}$
    • 如果数据本身线性不可分,则感知机的损失函数不收敛,此时解决方案为:

      • 创造更多特征,将样本映射到高维空间,使其线性可分

      • 使用其他训练算法,如支持向量机

      • 使用投票感知机、平均感知机

        • 投票感知机:每个epoch产生一个新模型,则预测时每个模型给出结果,结果根据模型在测试机上的准确率加权平均,作为最终结果

        • 平均感知机:取多个模型权重的平均

          image-20211003130641413

    • 模型调优方法:

      • 特征工程(修改特征模板)
      • 更换训练算法
      • 收集、标注更多数据

结构化预测问题

  • 预测对象结构的监督学习问题
  • 例如:序列标注、语法分析、机器翻译
  • 每个小部分都是分类问题,但必须考虑整体结构的合理性——由模型给出的分值或概率来衡量
  • 给定模型$\lambda$、打分函数$score_\lambda(\cdot)$,利用打分函数给备选结构打分,选择分数最高的结构输出

结构化感知机

  • 定义新的特征函数,将结构$y$也作为一种特征,得到结构化特征向量$\phi(x,y)$,则$score_\lambda(x, y)=w\cdot \phi(x,y)$,预测函数为:

    image-20211003135657491

    • 预测算法:

      image-20211003135724789

  • 序列标注问题:

    • 对连续标签提取转移特征:

      image-20211003140305141

      • $y_t$为序列第$t$个标签,$s_i$为标注集第$i$种标签,$N$为标注集大小,
    • 获得每个时刻的状态特征:

      image-20211003140454126

      • 具体什么时候等于1,什么时候等于0,取决于特征模板
      • 状态特征只与当前状态有关,与先前状态无关
    • 结构化感知机的特征函数为转移特征、状态特征的合集:$\phi=[\phi_k;\phi_l]$,即$\phi(y_{t-1},y_t,x_t)$

    • 整个序列的得分为各个时刻得分之和:

      image-20211003140748714

  • 结构化感知机的维特比算法:

    • 搜索分数最高的结构,这里即为对序列的搜索

    • 定义$\delta_{t,i}$为时刻$t$以$s_i$结尾的所有局部路径最高分数

    • 定义$\psi_{t,i}$存储局部最优路径中,最后一个状态$y_t$的前驱状态

    • 具体如下:

      • 初始化,$t=1$时初始最优路径的备选由$N$个状态组成,前驱为空

        image-20211003141723814

      • 递推,$2\leq t$时每条备选路径增长一个单位,分数由打分函数确定。确定新的最优局部路径,更新以上两个二维数组

        image-20211003141733706

      • 终止,获得最终时刻$\delta_{t,i}$数组中最大分数$S^*$与相应结尾状态下标$i_T^*$

        image-20211003141953967

      • 回溯,根据前驱数组$\psi$回溯前驱状态,获得最优路径下标$i^*=i_1^*,…,i_T^*$

        image-20211003142005387

条件随机场

机器学习谱系

  • 机器学习谱系图(忽略回归问题)

    image-20211009160220705

    • 根本问题是,给定一些随机变量x,预测另一些随机变量y
    • 根据y是独立变量还是多个关联的变量,分为分类问题和结构化预测问题
    • 根据建模内容(联合概率分布$p(x,y)$还是条件概率分布$p(y|x)$),分为生成式模型和判别式模型
      • 生成式模型:先有因素y,后有结果x——由联合分布模拟 $p(x,y)=p(y)p(x|y)$
        • 如隐马尔可夫模型和朴素贝叶斯模型
        • 间接建模$p(x)=\sum p(x,y)$
      • 判别式模型:不关心x的内部联系,直接对$p(y|x)$建模
        • 感知机、条件随机场、支持向量机、神经网络等
  • 概率图模型(PGM)

    • 表示与推断联合分布$p(x,y)$
    • 节点$V$表示随机变量,边$E$连接有关联的随机变量
  • 有向图模型(DGM)

    • 根据事件的先后因果顺序将节点连接为有向图

      image-20211009160924534

    • 将概率有向图分解为条件概率的乘积,如果$\pi(v)$表明节点$v$的所有前驱节点,则联合分布$p(x,y)=\prod_{v\in V}p(x|\pi(v))$

  • 无向图模型

    • 不涉及条件概率分解,边代表两个事件有关联

    • 将概率分解为所有最大团上的某个函数乘积:$p(x,y)=\frac{1}{Z}\prod_a{\psi_a(x_a,y_a)}$

      • $a$为因子节点
      • $\psi_a$为一个因子节点对应的函数,如$\psi_a(x_a,y_a)=exp{\sum_k w_{ak}f_{ak}(x_a,y_a)}$
        • $k$为特征编号
        • $f_{ak}()$为特征函数
        • $w_{ak}$为特征权重
      • $x_a,y_a$为与因子节点相连的所有变量节点
      • 为约束上式成为概率分布,常数$Z$定义为归一化因子$Z=\sum_{x,y}\prod_a{\psi(x_a,y_a)}$
    • 最大团:满足所有节点相互连接的最大子团

    • 为便于分析,定义了一些虚拟的因子节点(factor),每个因子节点只连接部分节点,以组成较小的最大团

      image-20211009161605027

    • 判别式模型常用无向图表示,归一化时对每个x求一个归一化因子$Z(x)=\sum_{y}\prod_a{\psi(x_a,y_a)}$,则$p(y|x)=\frac{1}{Z(x)}\prod_a{\psi_a(x_a,y_a)}$

条件随机场

  • 给定输入随机变量x,求解条件概率$p(y|x)$的概率无向图模型

  • 序列标注时,特化为线性链条件随机场,输入输出随机变量为等长的两个序列

    • 例如:

      image-20211009164203258

      • 灰色节点代表特征(这里表明每个$x_i$有三个特征)

      • 黑色方块为因子节点,视为特征函数$f_k(y_{t-1},y_t,x_t)$,其中只利用$x_t,y_t$的称为状态特征,利用了$y_{t-1}$的称为转移特征

      • 线性链条件随机场定义如下:

        image-20211009164419520

        • 需要遍历所有可能的标注序列,即使是非法的
    • 将特征函数和权重写作向量形式,则简化为:

      image-20211009164529059

    • 对比结构化感知机的打分函数可知:

      • 感知机打分函数与此式的指数部分一致
      • 条件随机场和结构化感知机的特征函数一致
      • 结构化感知机对某预测打分高,则随机场对其的预测概率越大
      • 结构化感知机和条件随机场的预测算法一致,均为维特比算法
  • 训练条件随机场:略

  • 对比结构化感知机:

    • 特征函数、权重向量、打分函数、预测算法一致
    • 训练算法不同——这是二者准确率差异的唯一原因
      • 感知机为在线学习,每次参数更新只使用一个训练实例,没有考虑整个数据集;感知机奖励正确答案对应的特征函数,但只惩罚错得厉害的特征函数
      • 条件随机场的对数似然函数和梯度,定义在整个数据集上,每次参数更新都经过全局的考虑;奖励正确的特征函数,惩罚所有错误结果对应的特征函数(虽然惩罚总量不变,但根据模型赋予每个答案的概率,分摊惩罚力度)
  • 工具包:略