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

语言模型

传统语言模型

n元文法

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

参数估计

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

数据平滑方法

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

语言模型自适应

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

应用

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

神经语言模型

背景

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

前馈神经网络语言模型

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

循环神经网络语言模型

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

自我注意力机制语言模型

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

应用

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

文本表示模型

背景

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

向量空间模型

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

表示学习模型

  • 文本概念表示模型:
    • 以潜在语义分析和潜在狄利克雷分布为代表
    • 旨在挖掘文本中的隐含主题或概念
    • 文本表示为主题的分布向量
  • 深度表示学习模型
    • 深度学习模型最优化目标函数
    • 分布式向量空间的低维向量表示

词语的表示学习

  • 词向量表示:LUT LRD×VL \in \R^{D \times V}
  • 学习:随机初始化+目标函数优化
  • 训练准则:通过上下文知晓一个词
  • 学习方法:
    • 基于语言模型的方法:由上文得到当前词的预测概率P(w1wn)=tP(wtwt1wtn+1)P(w_1 \dots w_n) = \prod_t P(w_t | w_{t - 1} \dots w_{t - n + 1})
      • 语言模型的副产品,将词向量视为参数进行训练时更新
    • 直接学习方法:
      • C&W Model
      • CBOW / Skip-gram Model
      • 负采样与噪声对比估计
      • 字-词混合的表示学习
  • C&W Model
    • 对核心词进行替换(上下文CC不变),原始句子的“打分”应该比替换后的句子高score(wi,C)>score(wi,C)\operatorname{score}(w_i, C) \gt \operatorname{score}(w_i^\prime, C)
    • 打分过程:句子单词向量拼接表示作为h0h_0,然后线性+非线性变换,两轮后得到分数,h1=f(W0h0+b0)h_1 = f(W_0 h_0 + b_0)score(wi,C)=W1h1+b1\operatorname{score}(w_i, C) = W_1 h_1 + b_1
    • 大margin约束:score(wi,C)>score(wi,C)+1\operatorname{score}(w_i, C) \gt \operatorname{score}(w_i^\prime, C) + 1
    • 目标函数(反向传播训练)loss=(wi,C)DwVmax(0,1+score(wi,C)score(wi,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))
  • CBOW / Skip-gram Model
    • C&W计算复杂度比较高
    • CBOW: Continuous Bag-of-Words
      • 词序不影响预测
      • 使用上下文词向量的加权求和h=12CiCki+C,kie(wk)h = \frac {1}{2C} \sum_{i - C \le k \le i + C, k \neq i} e(w_k)
      • 预测当前词P(wiWC)=exp(he(wi))kexp(he(wk))P(w_i |WC) = \frac {\exp(h \cdot e(w_i))}{\sum_k \exp(h \cdot e(w_k))}
      • 目标函数(最大似然)L=argmaxLwilogP(wiWC)L^\ast = \arg \max_L \sum_{w_i} \log P(w_i |WC)
    • Skip-gram:利用中心词预测所有上下文
      • 预测上下文P(wcwi)=exp(e(wi)e(wc))kexp(e(wi)e(wk))P(w_c | w_i) = \frac {\exp(e(w_i) \cdot e(w_c))}{\sum_k \exp(e(w_i) \cdot e(w_k))}
      • 目标函数L=argmaxLwiVwcWClogP(wcwi)L^\ast = \arg\max_L \sum_{w_i \in V} \sum_{w_c \in WC} \log P(w_c | w_i)
  • 负采样与噪声对比估计
    • (Skip-gram)为每一个正样本wcw_c从某个概率分布pn(w)p_n(w)中选择KK个负样本{w1,,wk}\{w_1^\prime, \ldots, w_k^\prime\},最大化正样本似然,同时最小化所有负样本似然
    • 噪声对比估计
      • wcw_c和负样本{w1,,wk}\{w_1^\prime, \ldots, w_k^\prime\},概率归一化
      • 正样本概率p(l=1,wwi)=p(l=1)p(wl=1,wi)=1K+1pθ(wwi)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=0,wwi)=p(l=0)p(wl=0,wi)=KK+1pn(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=1w,wi)=p(l=1,wwi)p(l=0,wwi)+p(l=1,wwi)=pθ(wwi)pθ(wwi)+Kpn(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=0w,wi)==p(l=0,wwi)p(l=0,wwi)+p(l=1,wwi)=Kpn(w)pθ(wwi)+Kpn(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)}
      • 目标函数J(θ)=logp(l=1wc,wi)+klogp(l=0wk,wi)J(\theta) = \log p(l = 1|w_c, w_i) + \sum_k \log p(l = 0|w_k, w_i)
    • 负采样技术
      • 目标函数与噪声对比估计相同
      • 不对样本集合进行概率归一化,直接采用NNLM输出
      • p(l=1wc,wi)=11+ee(wc)e(wi)p(l = 1|w_c, w_i) = \frac 1 {1 + e^{- e(w_c) \cdot e(w_i)}}
      • 简化后的目标函数(最大化目标词判定为正样本以及其他负样本被判定为负样本的概率)J(θ)=logσ(e(wc)e(wc))+klog(e(wk)e(wc))J(\theta) = \log \sigma(e(w_c) \cdot e(w_c)) + \sum_k \log (-e(w_k) \cdot -e(w_c))
    • 高效:不需要矩阵相乘,也不需要全词汇表的遍历
  • 字-词混合的表示学习
    • 结合词表示和字表示构造更好的表示

短语的表示学习

  • 词袋方法:短语就是词的集合
    • 假设短语由ii个词语构成phi=w1w2wiph_i = w_1 w_2 \ldots w_i
    • 短语的表示即词语表示的平均e(phi)=ke(wk)e(ph_i) = \sum_k e(w_k)
    • 也可以加权平均e(phi)=kvke(wk)e(ph_i) = \sum_k v_k e(w_k)
    • 问题:忽略词序对语义的影响
  • 递归Auto-Encoder
    • UCAS-AI学院-自然语言处理专项课-第5讲-课程笔记
    • 学习中间表示
    • 目标函数,所有结点(整个结构是一个二叉树)重构误差最小化
  • 双语约束模型
    • 互为翻译的短语(phx,phy)(ph_x, ph_y),二者语义表示应当一致
    • 最小化二者表示的误差
    • E(phx,phy;θ)=αErec(phx,phy;θ)+(1α)Esem(phx,phy;θ)E(ph_x, ph_y; \theta) = \alpha E_{rec}(ph_x, ph_y; \theta) + (1 - \alpha)E_{sem}(ph_x, ph_y; \theta)
    • 前者为重构误差,后者为语义误差Esem(phx,phy;θ)=Esem(phxphy;θ)+Esem(phyphx;θ)=12f(e(phy))e(phx)2+12f(e(phx))e(phy)2E_{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
    • 变换函数ff为两种语言空间的转换
    • 目标函数可以加入L2正则化项
    • 同时学习两种语言的表示

句子的表示学习

  • 词袋方法
    • 假设句子由nn个词语组成
    • 表示可以为词语向量的平均,也可以为其加权平均
  • PV-DM模型
    • 语料DD中有MM个句子,每个句子有标号对应,每个句子的表示维度为pp,那么存在一个训练集表示矩阵PVRM×pPV \in \R^{M \times p}
    • CBOW的扩展
    • 将上下文所在句子视为一个记忆单元
    • 对上下文n元组和句子标号作为输入,计算句子及其上下文的平均词向量
    • h=12C+1(e(SenID)+ke(wk))h = \frac 1 {2C + 1} (e(SenID) + \sum_k e(w_k))
  • PV-DBOW模型
    • Skip-gram的扩展
    • 由句子的标号,预测上下文p(wcSenID)p(w_c | SenID)
    • 目标函数一致
    • 只能学习训练数据中的句子表示
  • Skip-Thought模型
    • 类似PV-DBOW
    • 利用当前句子预测前一个句子和后一个句子
    • 认为连续出现的句子表达意思接近
    • RNN,对句子进行编码,同时完成预测
    • 泛化性更好
    • 目标函数k{jp(wjk1w<jk1,hnk)+tp(wtk+1w<tk+1,hnk)}\sum_k \{ \sum_j p(w_j^{k - 1} | w_{<j}^{k - 1}, h_n^k) + \sum_t p(w_t^{k + 1} | w_{<t}^{k + 1}, h_n^k)\}
  • CNN模型
    • 词向量输入——顺序地对上下文窗口卷积(局部语义)——池化(高维度)——其他层——固定维度的句子向量表达(全局语义)
    • 词向量也参与训练,可以预训练(可以考虑固定)或者随机初始化

文档的表示学习

  • 词袋方法
    • 假设文档由nn个词语构成
    • 可以使用词向量的平均或加权平均
  • CNN模型
    • 将文档视为一个非常长的句子
    • 丢失句子之间的顺序关系
  • 层次化模型
    • 句子使用 LSTM / CNN 得到表示
    • 双向LSTM得到句子的双向隐层表示
    • 隐层表示加权平均(注意力机制)得到最终表示

动态的表示学习

  • 固定的词向量——动态的语义表示
  • ELMo
    • 预训练上下文相关的词向量表示
    • 双向LSTM
    • 动态表示:所有隐藏层的加权平均,再对任务加权ELMojtask=γtaskkwktaskhj,kELMo_j^{task} = \gamma^{task} \sum_k w_k^{task} h_{j,k}
    • 动态表示替换固定表示进行训练
  • GPT
    • 在同一个模型上预训练和任务导向的微调
    • 深层单向Transformer解码器
    • 只使用上文信息
  • BERT
    • 在同一个模型上预训练和任务导向的微调
    • 深层双向Transformer解码器
    • 使用掩码语言模型和下句预测模型优化