大模型交叉研讨课-学习笔记3

文本生成

1. 文本生成任务

正式定义:Produce understandable texts in human languages from some underlying non-linguistic representation of information.[Building applied natural language generation systems.]
将非语言表示的信息通过人类可以理解的人类语言表示出来。
上面定义中非语言的表示主要指的是图片、表格、图等数据格式,因此所定义的是数据到文本生成(data-to-text generation)。除了data-to-text还有text-to-text都属于文本生成。
一些文本生成的任务(应用):
在这里插入图片描述

2. 神经网络文本生成

2.1 语言建模

语言模型就是计算target概率分布的一个模型。例如:语言模型可以建模为 P ( y t ∣ y 1 , y 2 , … , y t − 1 ) P\left(y_t \mid y_1, y_2, \ldots, y_{t-1}\right) P(yty1,y2,,yt1),当预测第t个词时,需要考虑第1-(t-1)个词的概率。
语言建模可以分为两种:

  • 条件语言建模: P ( y t ∣ y 1 , y 2 , … , y t − 1 , x ) P\left(y_t \mid y_1, y_2, \ldots, y_{t-1}, x\right) P(yty1,y2,,yt1,x),生成当前词时,除了要考虑当前已生成的词还要考虑其他额外的输出,例如机器翻译任务中,还要考虑输入序列。
    • Seq2Sqe:前一个sequence指encoder,后一个sequence指decoder。encoder生成原句子的表示,decoder根据encoder的结果生成target。 P ( y ∣ x ) = P ( y 1 ∣ x ) P ( y 2 ∣ y 1 , x ) … P ( y T ∣ y 1 , … , y T − 1 , x ) P(y \mid x)=P\left(y_1 \mid x\right) P\left(y_2 \mid y_1, x\right) \ldots P\left(y_T \mid y_1, \ldots, y_{T-1}, x\right) P(yx)=P(y1x)P(y2y1,x)P(yTy1,,yT1,x)seq2seq是一种end-to-end的方式训练的,seq-to-seq还用了teacher forcing的训练方式,就是说在训练时,预测下一个词不是基于已经预测的词,而是基于给定事实的词,而测试时是基于上一步预测的词来预测。由于在训练和测试时使用的方法不同,会产生暴露偏差问题(exposure bias)
  • 非条件语言建模

2.2 语言模型

给定输入 x = ( x 1 , x 2 , … , x n ) x=(x_1,x_2,\dots,x_n) x=(x1,x2,,xn),输出 y = ( y 1 , y 2 , … , y m ) y=(y_1,y_2,\dots,y_m) y=(y1,y2,,ym)

  • 自回归生成:根据过去的值生成现在的值。顺序生成 P ( y ∣ x ) = ∏ t = 1 m P ( y t ∣ y < t , x , θ e n c , θ d e c ) P(y \mid x)=\prod_{t=1}^m P\left(y_t \mid y_{<t}, x, \theta_{e n c}, \theta_{d e c}\right) P(yx)=t=1mP(yty<t,x,θenc,θdec)。如GPT系列。
  • 非自回归生成:平行的生成(非时序的) P ( y ∣ x ) = P ( m ∣ x ) ∏ t = 1 m P ( y t ∣ z , x ) P(y \mid x)=P(m \mid x) \prod_{t=1}^m P\left(y_t \mid z, x\right) P(yx)=P(mx)t=1mP(ytz,x),其中 P ( m ∣ x ) P(m \mid x) P(mx)决定了目标序列的长度, z = f ( x ; θ e n c ) z=f(x;\theta_{enc}) z=f(x;θenc)捕获了输出tokens的dependencies(不同x和不同y之间的权重关系)。

2.3 文本生成中的解码策略

  • 贪婪解码:将每一步预测的概率最大的最为生成对象。由于只考虑当前概率最大,不考虑上下文,有可能生成重复的或可读性不好的句子。
    在这里插入图片描述
  • beam search:每一步都去追踪k个概率最大的局部序列,最后在这k个中选择一个概率最大的作为输出。这里达到的是局部最优解,并非全局最优。
    在这里插入图片描述
    对于k的选择,如果选择较小,接近于1,那么解码策略就趋近于贪婪解码,会遇到生成文本不自然、可读性不好、不正确等问题;若k取较大的值,每一步要保留的结果会增多,计算资源也会增加。同时增大k会造成一些别的问题,比如在机器翻译中,k太大会降低模型的BLEU分数。k越大与输入相关度越低。
  • 基于抽样的方法
    • Pure sampling(简单采样):每一步采样,直接随机选取一个概率的token作为结果。
    • Top-n sampling:每一步采样,在概率最大的n个token中随机采样一个作为结果。
    • Top-p sampling:每一步采样,在概率最大的若干个token上采样,并且这些token的概率加起来要大于某个阈值p,然后在这若干个token中随机采样作为结果。p=1就是简单采样。
    • samplle with temperature:在进入softmax之前,将这些概率分布除以一个temperature τ \tau τ。下图中temperature分别取0.5、1、2,取0.5是概率分布会变稀疏,采样的重复词可能性会更高但和输入相关性高;取2时。分布会变得平均,采样的结果会更有多样性但可能和输入不相关的文本。
      在这里插入图片描述总结:n/p/temperature增大,会获得更加多样性的文本,减少的话会更加安全(因为更符合输入)。

3. 可控文本生成

3.1 Prompt methods

  • 在文本前面加入控制信号
    在这里插入图片描述在这里插入图片描述
  • 在模型前面加入前缀
    在这里插入图片描述
    在这里插入图片描述

3.2 更改概率分布

类似于对比学习,有一个基本模型,一个天使模型和一个恶魔模型,希望生成的概率贴近天使模型,远离恶魔模型。 P ~ ( X t ∣ x < t ) = softmax ⁡ ( z t + α ( z t + − z t − ) ) \tilde{P}\left(X_t \mid \boldsymbol{x}_{<t}\right)=\operatorname{softmax}\left(\mathbf{z}_t+\alpha\left(\mathbf{z}_t^{+}-\mathbf{z}_t^{-}\right)\right) P~(Xtx<t)=softmax(zt+α(zt+zt)),其中 z t + z_t^+ zt+是天使模型的概率, α \alpha α为一个调控系数。
在这里插入图片描述

3.3 重构模型结构

给控制信号直接增加transformer结构。
在这里插入图片描述

4. 文本生成评估

  • BLEU: N代表n-gram,即有n个token一致。不考虑语义和句子结构,易于计算。
    B L E U = B P × exp ⁡ ( ∑ n = 1 N W n × log ⁡ P n ) , B P = { 1 l c > l r exp ⁡ ( 1 − l r l c ) . l c ≤ l r B L E U=B P \times \exp \left(\sum_{n=1}^N W_n \times \log P_n\right), \quad B P=\left\{\begin{array}{cc}1 & l c>l r \\ \exp \left(1-\frac{l r}{l c}\right) . & l c \leq l r\end{array}\right. BLEU=BP×exp(n=1NWn×logPn),BP={1exp(1lclr).lc>lrlclr
  • PPL:在测试的时候计算,验证模型有多大概率生成样本。值越低说明拟合得越好。
     perplexity  ( S ) = p ( w 1 , w 2 , w 3 , … , w m ) − 1 / m = ∏ i = 1 m 1 p ( w i ∣ w 1 , w 2 , … , w i − 1 ) m \begin{gathered} \text { perplexity }(S)=p\left(w_1, w_2, w_3, \ldots, w_m\right)^{-1 / m} \\ =\sqrt[m]{\prod_{i=1}^m \frac{1}{p\left(w_i \mid w_1, w_2, \ldots, w_{i-1}\right)}} \end{gathered}  perplexity (S)=p(w1,w2,w3,,wm)1/m=mi=1mp(wiw1,w2,,wi1)1
  • ROUGE:基于召回率计算的方法,
  •  ROUGE - N  = ∑ S ∈ {  ReferenceSimmaries  } ∑ gram  N ∈ S  Count  match  (  gram  N ) ∑ ∑ RefenceSimmaries  } ∑ gram  N ∈ S Count ⁡ (  gram  N ) \text { ROUGE - N }=\frac{\sum_{S \in\{\text { ReferenceSimmaries }\}} \sum_{\text {gram }_N \in S} \text { Count }_{\text {match }}\left(\text { gram }_N\right)}{\sum_{\left.\sum_{\text {RefenceSimmaries }}\right\}} \sum_{\text {gram }_N \in S} \operatorname{Count}\left(\text { gram }_N\right)}  ROUGE - N =RefenceSimmaries }gram NSCount( gram N)S{ ReferenceSimmaries }gram NS Count match ( gram N)

5. 挑战

  • 训练和模型策略
    • 会生成重复的词
    • 暴露偏差
  • 常识性
    • 缺少逻辑的一致性
  • 控制性
    • 难以同时保证语言质量和控制质量
  • 评价
    • 合理的指标和数据集
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值