UCAS - AI学院 - 自然语言处理专项课 - 第5讲 - 课程笔记

UCAS-AI学院-自然语言处理专项课-第5讲-课程笔记

  • 语言模型
    • 传统语言模型
      • n元文法
      • 参数估计
      • 数据平滑方法
      • 语言模型自适应
      • 应用
    • 神经语言模型
      • 背景
      • 前馈神经网络语言模型
      • 循环神经网络语言模型
      • 自我注意力机制语言模型
      • 应用
    • 文本表示模型
      • 背景
      • 向量空间模型
      • 表示学习模型
        • 词语的表示学习
        • 短语的表示学习
        • 句子的表示学习
        • 文档的表示学习
        • 动态的表示学习

语言模型

传统语言模型

n元文法

  • 统计方法于语料库语言学的应用
    • 发现语言使用的普遍规律
    • 通过机器学习模型自动获取语言知识
    • 对未知语言现象进行推测
  • 计算一段文字的概率
    • 以一段文字为单位?
    • 根据句子构成单位的概率计算联合概率? p ( w 1 ) × ⋯ × p ( w n ) p(w_1) \times \dots \times p(w_n) p(w1)××p(wn)——未描述依赖性
    • 基于前文的先验概率 p ( s ) = ∏ i p ( w i ∣ w 1 … w i − 1 ) p(s) = \prod_i p(w_i | w_1\dots w_{i - 1}) p(s)=ip(wiw1wi1)
      • p ( w 1 ∣ w 0 ) = p ( w 1 ) p(w_1 | w_0) = p(w_1) p(w1w0)=p(w1)
      • w i w_i wi可以为字、词、短语等,统称统计基元,条件概率中的“条件”称之为历史
  • 历史基元增加,概率(路径)计算量指数级增长——需要缩短历史
    • 划分等价类——只看前 n − 1 n - 1 n1个基元——基于一个 n n n长度的基元序列计算条件概率
    • n n n元文法模型( n n n-gram model)
    • 通常, n n n取1到5
  • n = 1 n=1 n=1,只考虑当前位置基元,独立于历史,称之为1元文法(uni-gram,monogram)
  • n = 2 n=2 n=2,只考虑前一个历史基元,称之为2元文法(bi-gram),又被称为1阶马尔科夫链
  • n = 3 n=3 n=3,考虑前两个历史基元,称之为3元文法(tri-gram),又称之为2阶马尔科夫链
  • 为保证 i = 1 i=1 i=1也同样有意义,句子首尾加入句首标记 < B O S > <BOS>和句尾标记 < E O S > <EOS>

参数估计

  • 条件概率的计算
  • 基本思路:
    • 收集样本(语料)
    • MLE估计概率
    • n n n-gram, p ( w i ∣ w i − 1 ) p(w_i | w_{i - 1}) p(wiwi1)的MLE估计: p ( w i ∣ w i − 1 ) = f ( w i ∣ w i − 1 ) = c ( w i − n + 1 i ) ∑ w i c ( w i − n + 1 i ) p(w_i | w_{i - 1}) = f(w_i | w_{i - 1}) = \frac{c(w^i_{i - n + 1})}{\sum_{w_i} c(w^i_{i - n + 1})} p(wiwi1)=f(wiwi1)=wic(win+1i)c(win+1i)
    • 其中, ∑ w i c ( w i − n + 1 i ) \sum_{w_i} c(w^i_{i - n + 1}) wic(win+1i)为给定预料中出现历史串 w i − n + 1 i − 1 w^{i-1}_{i - n + 1} win+1i1的次数
    • c ( w i − n + 1 i ) c(w^i_{i - n + 1}) c(win+1i)为给定历史串的条件下, w i w_i wi于历史串同时出现的次数
  • 零概率问题:未出现在语料的内容会造成整个句子的概率为0(其中一个条件概率项会是0)
    • 数据匮乏导致
    • 解决:数据平滑

数据平滑方法

  • 基本思想:调整MLE概率值,零概率增加,非零概率下调,消除零概率,改进模型的整体正确率
  • 目标:测试样本的语言模型的困惑度越小越好
    • 整个测试及的概率 p ( T ) = ∏ i p ( s i ) p(T) = \prod_i p(s_i) p(T)=ip(si)
    • 语料交叉熵 H p ( T ) = 1 w t log ⁡ 2 p ( T ) H_p(T) = \frac 1{w_t} \log_2 p(T) Hp(T)=wt1log2p(T) n n n元文法的英文文本一般为6~10bits
    • 困惑度 P P p ( T ) = 2 H p ( T ) PP_p(T) = 2^{H_p(T)} PPp(T)=2Hp(T) n n n元文法的英文文本一般为50~1000
  • 约束: ∑ w i p ( w i ∣ w i − n + 1 i − 1 ) = 1 \sum_{w_i} p(w_i | w^{i - 1}_{i - n + 1}) = 1 wip(wiwin+1i1)=1
  • 加1法(Addition Smoothing)
    • 给每一种情况出现的次数加1
    • 对bi-gram,有 p ( w i ∣ w i − 1 ) = 1 + c ( w i − 1 w i ) ∣ V ∣ + ∑ w i c ( w i − 1 w i ) p(w_i|w_{i - 1}) = \frac {1 + c(w_{i - 1} w_i)} {|V| + \sum_{w_i} c(w_{i - 1} w_i)} p(wiwi1)=V+wic(wi1wi)1+c(wi1wi)
  • 减值法 / 折扣法
    • 修改样本中事件的实际次数,不同事件概率之和小于1,余量分给未出现事件概率
    • Good-Turing估计法
      • 引用图灵方法估计概率分布
      • 记出现 r r r次的 n n n-gram数目为 n r n_r nr,假设出现次数越多的词组数量越少
      • 则有 N = ∑ r ∞ n r r = ∑ r ∞ ( r + 1 ) n r + 1 N = \sum_{r}^\infty n_r r = \sum_r^\infty (r + 1) n_{r + 1} N=rnrr=r(r+1)nr+1
      • 估计 r ∗ = ( r + 1 ) n r + 1 n r r^\ast = (r + 1) \frac {n_{r + 1}}{n_r} r=(r+1)nrnr+1,对 N r + 1 = 0 N_{r + 1}=0 Nr+1=0 r r r保持不变( r ∗ = r r^\ast = r r=r
      • 出现 r r r次的 n n n-gram的概率为 p r = r ∗ N p_r = \frac {r^\ast}{N} pr=Nr
      • 由上训练样本中所有事件概率之和 ∑ r n r p r = 1 − n 1 N < 1 \sum_r n_r p_r = 1 - \frac {n_1}{N} \lt 1 rnrpr=1Nn1<1
      • 概率余量 p 0 = n 1 N p_0 = \frac {n_1}{N} p0=Nn1分给未见事件 r = 0 r = 0 r=0
      • n 0 = ∣ V T ∣ − ∑ r > 0 n r n_0 = |V_T| - \sum_{r \gt 0} n_r n0=VTr>0nr,均分概率 p 0 n 0 \frac {p_0} {n_0} n0p0
      • 注意最终概率要进行归一化处理
    • 后备 / 后退法(Back-off)
      • 当某一事件出现频率大于阈值 K K K(通常为0或者1),使用减值法估计概率,否则使用低阶字组概率估计,最后归一化
      • p ( w i ∣ w i − 1 ) = { d r C ( w i − 1 w i ) C ( w i − 1 ) if  C ( w i − 1 w i ) = r > 0 α ( w i − 1 ) p M L ( w i ) ) if  C ( w i − 1 w i ) = 0 p(w_i | w_{i - 1}) = \begin{cases} d_r \frac {C(w_{i - 1} w_i)} {C(w_{i - 1})} & \text{if } C(w_{i - 1} w_i) = r \gt 0 \\ \alpha(w_{i - 1}) p_{ML}(w_i)) & \text{if } C(w_{i - 1} w_i) = 0 \end{cases} p(wiwi1)={drC(wi1)C(wi1wi)α(wi1)pML(wi))if C(wi1wi)=r>0if C(wi1wi)=0
      • 折扣率 d r = r ∗ r d_r = \frac {r^\ast} {r} dr=rr,其中 r ∗ r^\ast r可以由GT法预测
      • 归一化因子 α ( w i − 1 ) = 1 − ∑ r > 0 p ( w i ∣ w i − 1 ) ∑ r = 0 p M L ( w i ) \alpha(w_{i - 1}) = \frac {1 - \sum_{r \gt 0} p(w_i | w_{i - 1})}{\sum_{r = 0}p_{ML}(w_i)} α(wi1)=r=0pML(wi)1r>0p(wiwi1)
    • 绝对减值法(Absolute Discounting)
      • 从每个计数 r r r中减去同样的量,余量由未见事件均分
      • p r = { r − b N r > 0 b ( R − n 0 ) N n 0 r = 0 p_r = \begin{cases} \frac {r - b} {N} & r \gt 0 \\ \frac {b(R - n_0)}{N n_0} & r = 0 \end{cases} pr={NrbNn0b(Rn0)r>0r=0
      • R R R为总事件个数, n 0 n_0 n0为样本中未见事件的数目,b为小于1的常量
      • held-out方法估计 b b b的上限 b ≥ n 1 n 1 + 2 n 2 b \ge \frac {n_1} {n_1 + 2n_2} bn1+2n2n1
    • 线性减值法(Linear Discounting)
      • 从每个计数 r r r中减去与其成正比的量,余量 α \alpha α被未见事件均分
      • p r = { ( 1 − α ) r N r > 0 α n 0 r = 0 p_r = \begin{cases} \frac {(1 - \alpha) r} {N} & r \gt 0 \\ \frac {\alpha}{n_0} & r = 0 \end{cases} pr={N(1α)rn0αr>0r=0
      • α = n 1 N \alpha = \frac {n_1}{N} α=Nn1
      • 很多实验中,绝对减值法优于线性减值法
  • 删除插值法(Deleted Interpolation)
    • 用低阶文法协助估计高阶文法(低阶插值)
    • p ( w 3 ∣ w 1 w 2 ) = λ 3 p ′ ( w 3 ∣ w 1 w 2 ) + λ 2 p ′ ( w 3 ∣ w 2 ) + λ 1 p ′ ( w 3 ) p(w_3 | w_1 w_2) = \lambda_3 p^\prime(w_3 | w_1 w_2) + \lambda_2 p^\prime(w_3 | w_2) + \lambda_1 p^\prime(w_3) p(w3w1w2)=λ3p(w3w1w2)+λ2p(w3w2)+λ1p(w3)
    • 语料分为两部分,一部分用于计算概率,一部分用于计算系数

语言模型自适应

  • 问题
    • 训练语料来自不同领域
    • n元文法模型独立性假设往往是不成立的
  • 基于缓存的语言模型(Cache-based)
    • 文本中刚出现的词,在后面句子出现的可能性往往较大(比n元模型预测大)
    • 通过线性插值求得: p ^ ( w i ∣ w 1 i − 1 ) = λ p ^ c a c h e ( w i ∣ w 1 i − 1 ) + ( 1 − λ ) p ^ n − g r a m ( w i ∣ w 1 i − 1 ) \hat p(w_i | w^{i - 1}_1) = \lambda \hat p_{cache}(w_i | w^{i - 1}_1) + (1 - \lambda) \hat p_{n-gram}(w_i | w^{i - 1}_1) p^(wiw1i1)=λp^cache(wiw1i1)+(1λ)p^ngram(wiw1i1)
    • 插值系数可以通过EM方法求得
    • 缓存中保留前 K K K个词(2000左右),每个词的缓存概率用其在缓存中出现的相对频率
      • 缺陷:缓存中词的重要性,独立于该词与目标词的距离
      • 改进:概率随距离指数级衰减 p ^ c a c h e ( w i ∣ w 1 i − 1 ) = β ∑ j = 1 i − 1 I w i = w j exp ⁡ ( − α ( i − j ) ) \hat p_{cache}(w_i | w_1^{i - 1}) = \beta \sum_{j = 1}^{i - 1} I_{w_i = w_j} \exp(-\alpha(i - j)) p^cache(wiw1i1)=βj=1i1Iwi=wjexp(α(ij))
      • 其中, α \alpha α为衰减率, β \beta β为归一化常数,保证 ∑ w i p ^ c a c h e ( w i ∣ w 1 i − 1 ) = 1 \sum_{w_i} \hat p_{cache}(w_i | w_1^{i - 1}) = 1 wip^cache(wiw1i1)=1
  • 基于混合方法的语言模型
    • 大规模训练语料本身异源(heterogenous)
    • 测试语料一般同源(homogeneous)
    • 划分 n n n个子模型,线性插值 p ^ ( w i ∣ w 1 i − 1 ) = ∑ j = 1 n λ j p ^ M j ( w i ∣ w 1 i − 1 ) \hat p(w_i | w_1^{i - 1}) = \sum_{j = 1}^n \lambda_j \hat p_{M_j} (w_i | w_1^{i - 1}) p^(wiw1i1)=j=1nλjp^Mj(wiw1i1)
      • 训练语料按照来源、主题、类型等聚类(共 n n n个类)
      • 运行时识别测试预料的主题或追几何,确定合适的训练语料子集,利用这些预料建立特定的语言模型
      • 利用各个语料子集建立的语言模型和线性插值公式获得完成模型
      • 插值系数可以通过EM方法求得
    • 插值系数
      • 随机化初始系数
      • 由插值公式计算新的概率和期望
      • r r r次迭代,第 j j j个语言模型在第 i i i类上的系数 λ i j r = λ i j r p i j ( w ∣ h ) ∑ i = 1 n λ i j r p i j ( w ∣ h ) \lambda_{ij}^r = \frac {\lambda_{ij}^r p_{ij}(w | h)} {\sum_{i = 1}^n \lambda_{ij}^r p_{ij}(w | h)} λijr=i=1nλijrpij(wh)λijrpij(wh)
      • 重复上述两步,直到收敛
  • 基于最大熵的语言模型
    • 通过结合不同信息源信息构建一个语言模型,每个信息元提供一组关于模型参数的约束条件,在所有满足约束的模型中,选择熵最大的模型
    • 通常无需模型在所有可能历史成立,只需要训练数据上平均成立即可
    • p ∗ ( w i ∣ w i − 1 ) = 1 Z exp ⁡ ( ∑ j λ j f j ( w i , a j ) ) p^\ast(w_i | w_{i - 1}) = \frac 1Z \exp(\sum_j \lambda_j f_j(w_i, a_j)) p(wiwi1)=Z1exp(jλjfj(wi,aj))
    • 权重使用GIS算法确定

应用

  • 汉语分词和命名实体识别
    • 待切分句子 S = z 1 … z m S = z_1 \dots z_m S=z1zm W = w 1 … w N W = w_1 \dots w_N W=w1wN
    • 最佳切分 W ^ = arg ⁡ max ⁡ W p ( W ∣ S ) \widehat W = \arg \max_W p(W | S) W =argmaxWp(WS)
    • 贝叶斯公式: W ^ ∝ arg ⁡ max ⁡ W p ( W ) p ( S ∣ W ) \widehat W \propto \arg \max_W p(W) p(S | W) W argmaxWp(W)p(SW)
    • 汉语词汇分为如下几类
      • 分词词典中规定的词LW
      • 可由词法规则派生出来的词或短语MW
      • 与数字相关的实体(日期、时间、货币……)
      • 专用名词(人名PN、地名LN、机构名ON)
    • 把词序列 W W W转化成词类序列 C C C
      • 专有名词按照人名、地名、机构名分类
      • 实体名词中时间、日期、货币等分别一类
      • 所有的派生词和词表词,每个词一类
      • 同时考虑NER的话,还要标明实体边界
    • 转换公式 W ^ ∝ arg ⁡ max ⁡ W p ( C ) p ( S ∣ C ) \widehat W \propto \arg \max_W p(C) p(S | C) W argmaxWp(C)p(SC)
      • 前者可以使用语言模型计算(tri-gram)
        • P ( C ) = p ( c 1 ) p ( c 2 ∣ c 1 ) ∏ p ( c 1 ∣ c i − 2 c i − 1 ) P(C) = p(c_1) p(c_2 | c_1) \prod p(c_1 | c_{i - 2} c_{i - 1}) P(C)=p(c1)p(c2c1)p(c1ci2ci1)
        • p ( c i ∣ c i − 2 c i − 1 ) = count ⁡ ( c i − 2 c i − 1 c i ) count ⁡ ( c i − 2 c i − 1 ) p(c_i | c_{i - 2} c_{i - 1}) = \frac {\operatorname{count} (c_{i - 2} c_{i - 1} c_i)}{\operatorname{count} (c_{i - 2} c_{i - 1})} p(cici2ci1)=count(ci2ci1)count(ci2ci1ci)
      • 后者可以使用生成模型计算
        • 在满足独立性假设的条件下 p ( S ∣ C ) ≈ ∏ i p ( w i ∣ c i ) p(S|C) \approx \prod_i p(w_i | c_i) p(SC)ip(wici)
        • 任意一个词类 c i c_i ci生成汉字串 w i w_i wi的概率只与自身有关,与上下文无关
        • 对不同类别词,分别计算概率,对于一个词作为一个类的情形,直接令概率为1
    • 模型训练
      • 词表和派生词表,基本切分语料;专有名词使用专有模块标注;实体名词使用规则+自动机标注,获得初始标记语料
      • 使用标记语料,采用MLE估计语言模型概率参数
      • 用得到的模型重新切分和标注,得到新的语料
      • 直到系统性能不再有明显变化为止
  • 分词与词性标注一体化方法
    • 假设句子由单词串 W W W组成
    • 有标注序列 T T T
    • 寻找 P ( W , T ) P(W,T) P(W,T)的分词标注组合
    • 基于词性的三元统计模型 P 1 ( W , T ) = p ( W ∣ T ) P ( T ) ≈ ∏ i p ( w i ∣ t i ) p ( t i ∣ t i − 1 t i − 2 ) P_1(W, T) = p(W|T) P(T) \approx \prod_i p(w_i |t_i) p(t_i | t_{i - 1} t_{i - 2}) P1(W,T)=p(WT)P(T)ip(witi)p(titi1ti2)
    • 基于词的三元统计模型 P 2 ( W , T ) = p ( T ∣ W ) P ( W ) ≈ ∏ i p ( t i ∣ w i ) p ( w i ∣ w i − 1 w i − 2 ) P_2(W, T) = p(T|W) P(W) \approx \prod_i p(t_i |w_i) p(w_i | w_{i - 1} w_{i - 2}) P2(W,T)=p(TW)P(W)ip(tiwi)p(wiwi1wi2)
    • 满足独立性假设
    • 一体化模型 P ∗ ( W , T ) = α P 1 ( W , T ) + β P 2 ( W < T ) P^\ast(W, T) = \alpha P_1(W, T) + \beta P_2(W< T) P(W,T)=αP1(W,T)+βP2(W<T)
      • P ( t i ∣ w i ) P(t_i | w_i) P(tiwi)对分词无帮助,只取语言模型部分
      • P ∗ ( W , T ) ≈ α P 1 ( W , T ) + β ∏ i p ( w i ∣ w i − 1 w i − 2 ) P^\ast(W, T) \approx \alpha P_1(W, T) + \beta \prod_i p(w_i | w_{i - 1} w_{i - 2}) P(W,T)αP1(W,T)+βip(wiwi1wi2)
      • β \beta β取词个数与词性个数之比

神经语言模型

背景

  • 语言模型:计算句子出现的概率
  • n-gram问题
    • 数据稀疏,零概率问题
    • 忽略了相关性
  • 典型词语表示:抽象符号
    • 等价表示——one-hot
    • 任意两个词之间的相似度都是0
  • 低维稠密空间体现语义相似性

前馈神经网络语言模型

  • 条件概率——向量形式——条件和目标直接拼接——送入网络得到概率
  • 连续向量可以捕捉语义相似性,同时很好地处理数据稀疏的问题(不需要平滑)
  • 词向量的表示
    • 将每一个词映射到一个低维空间的连续实值向量
    • 词汇表(LUT) L ∈ R D × V L \in \R^{D \times V} LRD×V,一列对应一个词
      • V V V的大小:词汇表的大小 / 高频词 / 前 V V V个频率最高的词
      • D D D的大小:人工设定,几十到几百——任务复杂度 / 数据规模
    • L L L的学习
      • 先随机初始化
      • 然后通过目标函数优化词的向量表达
  • 函数的表示——神经网络的设计
    • UCAS - AI学院 - 自然语言处理专项课 - 第5讲 - 课程笔记_第1张图片
    • 由词的one-hot表示,从LUT中得到词向量
    • 所有的词拼接得到句子的表示 x = ( L ( w t − 1 ) , … , L ( w t − n + 1 ) ) x = (L(w_{t-1}), \dots, L(w_{t - n + 1})) x=(L(wt1),,L(wtn+1))
    • y = U tanh ⁡ ( H x + d ) + W x + b y = U \tanh (H x + d) + W x + b y=Utanh(Hx+d)+Wx+b
    • P ( w t ∣ w t − 1 , … , w t − n + 1 ) = e y w t ∑ i e y i P(w_t | w_{t - 1}, \dots, w_{t - n + 1}) = \frac {e^{y_{w_t}}}{\sum_i e^{y_i}} P(wtwt1,,wtn+1)=ieyieywt
  • 词向量拼接——tanh之后得到的隐层状态与所有词向量内积——Softmax——概率分布
  • 取最大概率结果作为理想输出
  • 问题:
    • 仅对小窗口历史信息建模——建模所有历史信息?

循环神经网络语言模型

  • 每一步接收一个输入,同时处理隐藏状态
  • h 1 = tanh ⁡ ( U ⋅ w 1 + W ⋅ h 0 ) h_1 = \tanh(U \cdot w_1 + W \cdot h_0) h1=tanh(Uw1+Wh0)
  • 每一步的隐藏状态表示对于所有历史信息的下一个词的预测( h t h_t ht预测 y t + 1 y_{t + 1} yt+1
  • p ( y t + 1 ) = e ( h t y t + 1 ) ∑ i e ( h t y i ) p(y_{t + 1}) = \frac {e^{(h_t y_{t + 1})}} {\sum_i e^{(h_t y_i)}} p(yt+1)=ie(htyi)e(htyt+1)
  • 问题:
    • 梯度消失和梯度爆炸——有选择地保留和遗忘?
  • LSTM——保存记忆

自我注意力机制语言模型

  • 更加高效地捕捉历史信息(不受到远距离传递的影响)
  • 和所有历史词进行相关性计算,获得向量表达(加权线性组合)
    • 可以实现并行化计算
  • 若干层——隐藏表示——送入网络预测下一个时刻输出
  • 映射到三组值Q、K、V
    • 当前输入的Q和所有的K内积,得到权重
    • 按权重对所有的V加和得到表示
    • Attention ⁡ ( Q , K , V ) = softmax ⁡ ( Q K T d k ) V \operatorname{Attention}(Q, K, V) = \operatorname{softmax}(\frac{QK^T}{\sqrt{d_k}})V Attention(Q,K,V)=softmax(dk QKT)V

应用

  • 文章自动生成(GPT-2)
  • 代码自动补全
  • 自动写诗

文本表示模型

背景

  • 文本:由文字和标点组成的字符串
    • 短语、句子、段落和篇章都是不同粒度的文本
    • 字 / 字符组成词 / 短语,进而形成句子、段落和篇章
  • 文本表示:计算机理解文本
    • 形式化表示是反映文本内容和区分不同文本的有效途径

向量空间模型

  • 核心:将文本视为特征项的集合
  • 特征项:VSM中的最小语言单元
    • 字、词、短语
    • 文本表示为特征项集合 ( t 1 , … , t n ) (t_1, \dots, t_n) (t1,,tn)
    • 文本中每个特征项都有不同的权重 ( t 1 : w 1 , …   . t n : w n ) (t_1: w_1, \dots. t_n: w_n) (t1:w1,.tn:wn)
  • 词语:特征项集合可以视为词表,从预料中统计获得(词袋模型BOW)
  • 权重计算
    • 布尔变量:出现为1,不出现为0
    • 词频(TF): w i = log ⁡ ( t f i + 1 ) w_i = \log (t f_i + 1) wi=log(tfi+1),取对数用于压缩差距,但是无明确意义的主次会导致较高权重
    • 逆文档频率(IDF): w i = i d f i = log ⁡ N d f i w_i = idf_i = \log \frac N {df_i} wi=idfi=logdfiN,出现越罕见的特征权更能用于区分文档,更加重要
    • TF-IDF: t f i d f i = t f i ⋅ i d f i tfidf_i = tf_i \cdot idf_i tfidfi=tfiidfi
  • 长度规范化,消除文本长度对表示的影响
    • 1-范数规范化 d 1 = d ∥ d ∥ 1 = d ∑ i w i d_1 = \frac d {\|d\|_1} = \frac d {\sum_i w_i} d1=d1d=iwid
    • 2-范数规范化 d 2 = d ∥ d ∥ 2 = d ∑ i w i 2 d_2 = \frac d {\|d\|_2} = \frac d {\sqrt{\sum_i w_i^2}} d2=d2d=iwi2 d
    • 最大词频规范化 d m a x = d ∥ d ∥ ∞ = d max ⁡ i w i d_{max} = \frac d {\|d\|_{\infty}} = \frac d {\max_i w_i} dmax=dd=maxiwid
  • 实现相似语义在稠密空间的聚集

表示学习模型

  • 文本概念表示模型:
    • 以潜在语义分析和潜在狄利克雷分布为代表
    • 旨在挖掘文本中的隐含主题或概念
    • 文本表示为主题的分布向量
  • 深度表示学习模型
    • 深度学习模型最优化目标函数
    • 分布式向量空间的低维向量表示
词语的表示学习
  • 词向量表示:LUT L ∈ R D × V L \in \R^{D \times V} LRD×V
  • 学习:随机初始化+目标函数优化
  • 训练准则:通过上下文知晓一个词
  • 学习方法:
    • 基于语言模型的方法:由上文得到当前词的预测概率 P ( w 1 … w n ) = ∏ t P ( w t ∣ w t − 1 … w t − n + 1 ) P(w_1 \dots w_n) = \prod_t P(w_t | w_{t - 1} \dots w_{t - n + 1}) P(w1wn)=tP(wtwt1wtn+1)
      • 语言模型的副产品,将词向量视为参数进行训练时更新
    • 直接学习方法:
      • C&W Model
      • CBOW / Skip-gram Model
      • 负采样与噪声对比估计
      • 字-词混合的表示学习
  • C&W Model
    • 对核心词进行替换(上下文 C C C不变),原始句子的“打分”应该比替换后的句子高 score ⁡ ( w i , C ) > score ⁡ ( w i ′ , C ) \operatorname{score}(w_i, C) \gt \operatorname{score}(w_i^\prime, C) score(wi,C)>score(wi,C)
    • 打分过程:句子单词向量拼接表示作为 h 0 h_0 h0,然后线性+非线性变换,两轮后得到分数, h 1 = f ( W 0 h 0 + b 0 ) h_1 = f(W_0 h_0 + b_0) h1=f(W0h0+b0) score ⁡ ( w i , C ) = W 1 h 1 + b 1 \operatorname{score}(w_i, C) = W_1 h_1 + b_1 score(wi,C)=W1h1+b1
    • 大margin约束: score ⁡ ( w i , C ) > score ⁡ ( w i ′ , C ) + 1 \operatorname{score}(w_i, C) \gt \operatorname{score}(w_i^\prime, C) + 1 score(wi,C)>score(wi,C)+1
    • 目标函数(反向传播训练) l o s s = ∑ ( w i , C ) ∈ D ∑ w ′ ∈ V ′ max ⁡ ( 0 , 1 + score ⁡ ( w i ′ , C ) − score ⁡ ( w i , C ) ) loss = \sum_{(w_i, C) \in D} \sum_{w^\prime \in V^\prime} \max (0, 1 + \operatorname{score}(w_i^\prime, C) - \operatorname{score}(w_i, C)) loss=(wi,C)DwVmax(0,1+score(wi,C)score(wi,C))
  • CBOW / Skip-gram Model
    • C&W计算复杂度比较高
    • CBOW: Continuous Bag-of-Words
      • 词序不影响预测
      • 使用上下文词向量的加权求和 h = 1 2 C ∑ i − C ≤ k ≤ i + C , k ≠ i e ( w k ) h = \frac {1}{2C} \sum_{i - C \le k \le i + C, k \neq i} e(w_k) h=2C1iCki+C,k=ie(wk)
      • 预测当前词 P ( w i ∣ W C ) = exp ⁡ ( h ⋅ e ( w i ) ) ∑ k exp ⁡ ( h ⋅ e ( w k ) ) P(w_i |WC) = \frac {\exp(h \cdot e(w_i))}{\sum_k \exp(h \cdot e(w_k))} P(wiWC)=kexp(he(wk))exp(he(wi))
      • 目标函数(最大似然) L ∗ = arg ⁡ max ⁡ L ∑ w i log ⁡ P ( w i ∣ W C ) L^\ast = \arg \max_L \sum_{w_i} \log P(w_i |WC) L=argmaxLwilogP(wiWC)
    • Skip-gram:利用中心词预测所有上下文
      • 预测上下文 P ( w c ∣ w i ) = exp ⁡ ( e ( w i ) ⋅ e ( w c ) ) ∑ k exp ⁡ ( e ( w i ) ⋅ e ( w k ) ) P(w_c | w_i) = \frac {\exp(e(w_i) \cdot e(w_c))}{\sum_k \exp(e(w_i) \cdot e(w_k))} P(wcwi)=kexp(e(wi)e(wk))exp(e(wi)e(wc))
      • 目标函数 L ∗ = arg ⁡ max ⁡ L ∑ w i ∈ V ∑ w c ∈ W C log ⁡ P ( w c ∣ w i ) L^\ast = \arg\max_L \sum_{w_i \in V} \sum_{w_c \in WC} \log P(w_c | w_i) L=argmaxLwiVwcWClogP(wcwi)
  • 负采样与噪声对比估计
    • (Skip-gram)为每一个正样本 w c w_c wc从某个概率分布 p n ( w ) p_n(w) pn(w)中选择 K K K个负样本 { w 1 ′ , … , w k ′ } \{w_1^\prime, \ldots, w_k^\prime\} {w1,,wk},最大化正样本似然,同时最小化所有负样本似然
    • 噪声对比估计
      • w c w_c wc和负样本 { w 1 ′ , … , w k ′ } \{w_1^\prime, \ldots, w_k^\prime\} {w1,,wk},概率归一化
      • 正样本概率 p ( l = 1 , w ∣ w i ) = p ( l = 1 ) p ( w ∣ l = 1 , w i ) = 1 K + 1 p θ ( w ∣ w i ) p(l = 1, w| w_i) = p(l = 1) p(w|l = 1, w_i) = \frac 1 {K + 1} p_\theta (w| w_i) p(l=1,wwi)=p(l=1)p(wl=1,wi)=K+11pθ(wwi)
      • 负样本概率 p ( l = 0 , w ∣ w i ) = p ( l = 0 ) p ( w ∣ l = 0 , w i ) = K K + 1 p n ( w ) p(l = 0, w| w_i) = p(l = 0) p(w| l = 0, w_i) = \frac K {K + 1}p_n(w) p(l=0,wwi)=p(l=0)p(wl=0,wi)=K+1Kpn(w)
      • 给定词为正样本概率 p ( l = 1 ∣ w , w i ) = p ( l = 1 , w ∣ w i ) p ( l = 0 , w ∣ w i ) + p ( l = 1 , w ∣ w i ) = p θ ( w ∣ w i ) p θ ( w ∣ w i ) + K p n ( w ) p(l = 1|w, w_i) = \frac {p(l = 1, w | w_i)}{p(l = 0, w | w_i) + p(l = 1, w | w_i)} = \frac {p_\theta(w|w_i)}{p_\theta(w|w_i) + K p_n(w)} p(l=1w,wi)=p(l=0,wwi)+p(l=1,wwi)p(l=1,wwi)=pθ(wwi)+Kpn(w)pθ(wwi)
      • 给定词为负样本概率 p ( l = 0 ∣ w , w i ) = = p ( l = 0 , w ∣ w i ) p ( l = 0 , w ∣ w i ) + p ( l = 1 , w ∣ w i ) = K p n ( w ) p θ ( w ∣ w i ) + K p n ( w ) p(l = 0 | w, w_i) = = \frac {p(l = 0, w | w_i)}{p(l = 0, w | w_i) + p(l = 1, w | w_i)} = \frac {K p_n(w)}{p_\theta(w|w_i) + K p_n(w)} p(l=0w,wi)==p(l=0,wwi)+p(l=1,wwi)p(l=0,wwi)=pθ(wwi)+Kpn(w)Kpn(w)
      • 目标函数 J ( θ ) = log ⁡ p ( l = 1 ∣ w c , w i ) + ∑ k log ⁡ p ( l = 0 ∣ w k , w i ) J(\theta) = \log p(l = 1|w_c, w_i) + \sum_k \log p(l = 0|w_k, w_i) J(θ)=logp(l=1wc,wi)+klogp(l=0wk,wi)
    • 负采样技术
      • 目标函数与噪声对比估计相同
      • 不对样本集合进行概率归一化,直接采用NNLM输出
      • p ( l = 1 ∣ w c , w i ) = 1 1 + e − e ( w c ) ⋅ e ( w i ) p(l = 1|w_c, w_i) = \frac 1 {1 + e^{- e(w_c) \cdot e(w_i)}} p(l=1wc,wi)=1+ee(wc)e(wi)1
      • 简化后的目标函数(最大化目标词判定为正样本以及其他负样本被判定为负样本的概率) J ( θ ) = log ⁡ σ ( e ( w c ) ⋅ e ( w c ) ) + ∑ k log ⁡ ( − e ( w k ) ⋅ − e ( w c ) ) J(\theta) = \log \sigma(e(w_c) \cdot e(w_c)) + \sum_k \log (-e(w_k) \cdot -e(w_c)) J(θ)=logσ(e(wc)e(wc))+klog(e(wk)e(wc))
    • 高效:不需要矩阵相乘,也不需要全词汇表的遍历
  • 字-词混合的表示学习
    • 结合词表示和字表示构造更好的表示
短语的表示学习
  • 词袋方法:短语就是词的集合
    • 假设短语由 i i i个词语构成 p h i = w 1 w 2 … w i ph_i = w_1 w_2 \ldots w_i phi=w1w2wi
    • 短语的表示即词语表示的平均 e ( p h i ) = ∑ k e ( w k ) e(ph_i) = \sum_k e(w_k) e(phi)=ke(wk)
    • 也可以加权平均 e ( p h i ) = ∑ k v k e ( w k ) e(ph_i) = \sum_k v_k e(w_k) e(phi)=kvke(wk)
    • 问题:忽略词序对语义的影响
  • 递归Auto-Encoder
    • UCAS - AI学院 - 自然语言处理专项课 - 第5讲 - 课程笔记_第2张图片
    • 学习中间表示
    • 目标函数,所有结点(整个结构是一个二叉树)重构误差最小化
  • 双语约束模型
    • 互为翻译的短语 ( p h x , p h y ) (ph_x, ph_y) (phx,phy),二者语义表示应当一致
    • 最小化二者表示的误差
    • E ( p h x , p h y ; θ ) = α E r e c ( p h x , p h y ; θ ) + ( 1 − α ) E s e m ( p h x , p h y ; θ ) E(ph_x, ph_y; \theta) = \alpha E_{rec}(ph_x, ph_y; \theta) + (1 - \alpha)E_{sem}(ph_x, ph_y; \theta) E(phx,phy;θ)=αErec(phx,phy;θ)+(1α)Esem(phx,phy;θ)
    • 前者为重构误差,后者为语义误差 E s e m ( p h x , p h y ; θ ) = E s e m ( p h x ∣ p h y ; θ ) + E s e m ( p h y ∣ p h x ; θ ) = 1 2 ∥ f ( e ( p h y ) ) − e ( p h x ) ∥ 2 + 1 2 ∥ f ( e ( p h x ) ) − e ( p h y ) ∥ 2 E_{sem} (ph_x, ph_y; \theta) = E_{sem} (ph_x| ph_y; \theta) + E_{sem}(ph_y | ph_x; \theta) = \frac 12 \|f(e(ph_y)) - e(ph_x)\|^2 + \frac 12 \|f(e(ph_x)) - e(ph_y)\|^2 Esem(phx,phy;θ)=Esem(phxphy;θ)+Esem(phyphx;θ)=21f(e(phy))e(phx)2+21f(e(phx))e(phy)2
    • 变换函数 f f f为两种语言空间的转换
    • 目标函数可以加入L2正则化项
    • 同时学习两种语言的表示
句子的表示学习
  • 词袋方法
    • 假设句子由 n n n个词语组成
    • 表示可以为词语向量的平均,也可以为其加权平均
  • PV-DM模型
    • 语料 D D D中有 M M M个句子,每个句子有标号对应,每个句子的表示维度为 p p p,那么存在一个训练集表示矩阵 P V ∈ R M × p PV \in \R^{M \times p} PVRM×p
    • CBOW的扩展
    • 将上下文所在句子视为一个记忆单元
    • 对上下文n元组和句子标号作为输入,计算句子及其上下文的平均词向量
    • h = 1 2 C + 1 ( e ( S e n I D ) + ∑ k e ( w k ) ) h = \frac 1 {2C + 1} (e(SenID) + \sum_k e(w_k)) h=2C+11(e(SenID)+ke(wk))
  • PV-DBOW模型
    • Skip-gram的扩展
    • 由句子的标号,预测上下文 p ( w c ∣ S e n I D ) p(w_c | SenID) p(wcSenID)
    • 目标函数一致
    • 只能学习训练数据中的句子表示
  • Skip-Thought模型
    • 类似PV-DBOW
    • 利用当前句子预测前一个句子和后一个句子
    • 认为连续出现的句子表达意思接近
    • RNN,对句子进行编码,同时完成预测
    • 泛化性更好
    • 目标函数 ∑ k { ∑ j p ( w j k − 1 ∣ w < j k − 1 , h n k ) + ∑ t p ( w t k + 1 ∣ w < t k + 1 , h n k ) } \sum_k \{ \sum_j p(w_j^{k - 1} | w_{k{jp(wjk1w<jk1,hnk)+tp(wtk+1w<tk+1,hnk)}
  • CNN模型
    • 词向量输入——顺序地对上下文窗口卷积(局部语义)——池化(高维度)——其他层——固定维度的句子向量表达(全局语义)
    • 词向量也参与训练,可以预训练(可以考虑固定)或者随机初始化
文档的表示学习
  • 词袋方法
    • 假设文档由 n n n个词语构成
    • 可以使用词向量的平均或加权平均
  • CNN模型
    • 将文档视为一个非常长的句子
    • 丢失句子之间的顺序关系
  • 层次化模型
    • 句子使用 LSTM / CNN 得到表示
    • 双向LSTM得到句子的双向隐层表示
    • 隐层表示加权平均(注意力机制)得到最终表示
动态的表示学习
  • 固定的词向量——动态的语义表示
  • ELMo
    • 预训练上下文相关的词向量表示
    • 双向LSTM
    • 动态表示:所有隐藏层的加权平均,再对任务加权 E L M o j t a s k = γ t a s k ∑ k w k t a s k h j , k ELMo_j^{task} = \gamma^{task} \sum_k w_k^{task} h_{j,k} ELMojtask=γtaskkwktaskhj,k
    • 动态表示替换固定表示进行训练
  • GPT
    • 在同一个模型上预训练和任务导向的微调
    • 深层单向Transformer解码器
    • 只使用上文信息
  • BERT
    • 在同一个模型上预训练和任务导向的微调
    • 深层双向Transformer解码器
    • 使用掩码语言模型和下句预测模型优化

你可能感兴趣的:(UCAS-课程笔记,人工智能,自然语言处理)