Unsupervised Text Generation by Learning from Search(TGLS)

42 篇文章 2 订阅
42 篇文章 1 订阅

Unsupervised Text Generation by Learning from Search(TGLS)

Unsupervised Text Generation by Learning from Search

  • "先搜索后学习"的无监督文本生成方法
    • 在paraphase generation和text formalization上,无监督模型上SOTA,有逼近监督模型的效果

文章的主要贡献

  • 1、提出了无监督文本生成的通用模型框架(TGLS),在搜索中学习
  • 2、展示了将大规模预训练模型整合到TGLS上的方法
  • 3、在paraphase generation和text formalization上的贡献
  • 4、对于在text formalization上,是首个设计基于搜索的方法并扩展到TGLS上

TGLS

  • 方法分两个阶段
    • 1、搜索:将文本用模拟退火(SA),并将搜索生成得到的文本作为“伪标注文本”,得到一个搜索器。
    • 2、学习:将搜索器的结果输入生成器,并来训练生成器,得到新文本。
    • 最终1、2交替

一阶段(搜索器):模拟退火搜索

  • 用启发式的目标函数 s ( y ∣ x ) s(y|x) s(yx)来作为文本生成的打分函数(x生成y)
    s ( y ∣ x ) = s l m ( y ) ⋅ s s e m a n t i c ( x , y ) ⋅ s t a s k ( y , ⋅ ) s(y|x)=s_{lm}(y)\cdot s_{semantic}(x,y)\cdot s_{task}(y,\cdot) s(yx)=slm(y)ssemantic(x,y)stask(y,)
    • s l m ( y ) s_{lm}(y) slm(y):文本的流畅度
    • s s e m a n t i c ( x , y ) s_{semantic}(x,y) ssemantic(x,y):替换后文本的关联度
    • s t a s k ( y , ⋅ ) s_{task}(y,\cdot) stask(y,):和具体的任务相关

我们要最大化这目标函数,这用SA去做

假设当前已经进行了t轮,当前的文本是 y ( t ) y^{(t)} y(t),我们要生成 y ′ y' y,生成的方式:word的插入,删除和替换

  • 我们对于是否接受 y ′ y' y有一个概率(SA中): p ( a c c e p t ∣ y ′ , y ( t ) , x , T ) = m i n { 1 , e x p ( s ( y ′ ∣ x ) − s ( y ( t ) ∣ x ) T ) } p(accept|y',y^{(t)},x,T)=min\{1,exp(\frac{s(y'|x)-s(y^{(t)}|x)}{T})\} p(accepty,y(t),x,T)=min{1,exp(Ts(yx)s(y(t)x))}(T是SA的温度变量)
  • 如果接受的话, y ( t + 1 ) = y ′ y^{(t+1)}=y' y(t+1)=y

问题就是打分函数的构造了

一、文本流畅度 s l m s_{lm} slm
  • 用在非平行语料上学习特殊任务的微调的GPT2计算文本的概率得分
    s l m ( y ) = ( ∏ i = 1 n p ( y i ∣ y 1 , . . . , y i − 1 ) ) α s_{lm}(y)=(\prod_{i=1}^n p(y_i|y_1,...,y_{i-1}))^{\alpha} slm(y)=(i=1np(yiy1,...,yi1))α
    • α \alpha α
    • 使用的是,带byte-pair encoding(BPE)的GPT2词汇表,这里的 y i y_i yi是在BPE分割后的token
二、语义的相关度 s s e m a n t i c s_{semantic} ssemantic

假设句子是 x = ( x 1 , . . . , x m ) x=(x_1,...,x_m) x=(x1,...,xm)

  • 分两种:词级别和句子级别
    • 词级别:首先用预训练的RoBERTa得到每个词的特征。因为用了MLM,所以RoBERTa用来做特征表示很好,RoBERTa计算的一个词表示为 R o B E R T a ( x i , x ) RoBERTa(x_i,x) RoBERTa(xi,x)
      • 词级的语义分数,计算为:有多少keyword信息是被保留的
        s w o r d ( y , x ) = min ⁡ k ∈ k e y w o r d ( x ) max ⁡ y i ∈ y R o B E R T a ( k , x ) ⊤ R o B E R T a ( y i , y ) s_{word}(y,x)=\min_{k\in keyword(x)}\max_{y_i\in y} RoBERTa(k,x)^\top RoBERTa(y_i,y) sword(y,x)=kkeyword(x)minyiymaxRoBERTa(k,x)RoBERTa(yi,y)
    • 句子级别:计算两个句子向量的余弦相似度: s s e n t ( y , x ) = y ⊤ x ∣ ∣ y ∣ ∣ ∣ ∣ x ∣ ∣ s_{sent}(y,x)=\frac{y^\top x}{||y||||x||} ssent(y,x)=yxyx
      • 句子向量计算为 x = R o B E R T a ( [ B O S ] , x ) x=RoBERTa([BOS],x) x=RoBERTa([BOS],x) [ B O S ] [BOS] [BOS]为句子开头

最后 s s e m a n t i c ( y , x ) = s w o r d ( y , x ) β ⋅ s s e n t ( y , x ) γ β , γ 为 超 参 s_{semantic}(y,x)=s_{word}(y,x)^{\beta}\cdot s_{sent}(y,x)^{\gamma}\qquad \beta,\gamma为超参 ssemantic(y,x)=sword(y,x)βssent(y,x)γβ,γ

三、特殊任务分数 s t a s k ( y ) s_{task}(y) stask(y)
  • 两个任务:paraphase generation和text formalization
1、paraphase generation
  • 任务是生成相似语义,但词汇不同
    之前的工作是用BLEU分数,来惩罚两个句子n-gram的重叠,相当于BLEU取反
    s p a r a p h a s e ( y , x ) = ( 1 − B E L U ( y , x ) ) δ s_{paraphase}(y,x)=(1-BELU(y,x))^{\delta} sparaphase(y,x)=(1BELU(y,x))δ
2、text formalization
  • 任务是将一个非正式的句子,转化成一个正式的风格,如文本风格迁移
    这里以风格迁移举例,前提假设是,有风格标签,但是没有平行的监督样本
  • 训练一个分类器来预测风格的可能性,这里也是基于RoBERTa的特征表示
  • 这里的分数计算为 s f o r m a l i t y ( y ) = ( p ( f o r m a l ∣ R o B E R T a ( [ B O S ] , y ) ) ) δ s_{formality}(y)=(p(formal|RoBERTa([BOS],y)))^{\delta} sformality(y)=(p(formalRoBERTa([BOS],y)))δ
四、SA的句子编辑

在进行了t轮时,SA随机选择一个位置进行操作:Repalce,Insert,Delete

1、Repalce

根据 s ( y ∣ x ) s(y|x) s(yx)引起的后验概率来选择 x i x_i xi处要替换的候选单词

  • 为了提高效率,之前有工作通过前向-后向的语言模型来评估top-k的候选单词
  • 这里,通过RoBERTa来评估一个单词的后验概率,通过随机mask掉这一块RoBERTa的embedding层来实现(相当于变向使用MLM)
2、Insert
  • 和replace一样,也是从后验的角度来推荐预测一个词
3、delete
  • 就直接删

在text formalization中,这里的句子编辑要基于PPDB(Better paraphrase ranking, fine-grained entailment relations, word embeddings, and style classification
)中的规则,如"we are"变成"we’re."等,之前的工作也有手动设计规则来预处理的步骤

  • TGLS可以简单的利用现成的资源,因为它能过滤掉一些坏的推荐词

二阶段(学习器):词级的交叉熵表示(Word-Level Cross-Entropy(CE) Learning)

SA推理效率低下,每个sample都要经历几百步的变换与评估

  • 我们真正想训练的是一个可调控的文本生成器:我们在SA的结果上,训练一个GPT2,因此这个GPT2将可以从 p ( y ∣ x ) p(y|x) p(yx)用自回归的方式直接生成一个句子
    • 我们将输入的 x x x和SA生成的句子 y ( S A ) y^{(SA)} y(SA),用一个[SEP]在中间拼接起来
      J C E = − ∑ n = 1 N ∑ v ∈ V y i , v ( S A ) log ⁡ p i , v ( G P T 2 ) J_{CE}=-\sum_{n=1}^N\sum_{v\in V}y_{i,v}^{(SA)}\log p_{i,v}^{(GPT2)} JCE=n=1NvVyi,v(SA)logpi,v(GPT2)
    • y i , v ( S A ) y_{i,v}^{(SA)} yi,v(SA)表示SA的输出中,第i个词是不是v(是为1,不是为0)
    • p i , v ( G P T 2 ) = P r [ y i = v ∣ y < i ( S A ) , x ] p_{i,v}^{(GPT2)}=Pr[y_i=v|y_{<i}^{(SA)},x] pi,v(GPT2)=Pr[yi=vy<i(SA),x],这个由GPT预测
    • 这个词级的CE结合SA的输出并使用teacher-forcing的方法训练(就是y的设置)

最主要的是,最小化这个交叉熵损失,相当于最小化SA的输出与GPT输出的分布 min ⁡ K L ( y ^ i ( S A ) ∣ ∣ p i ( G P T 2 ) ) \min KL(\hat y_i^{(SA)}||p_i^{(GPT2)}) minKL(y^i(SA)pi(GPT2)),实际上是在一定程度上去拟合SA的打分函数

最终(交替):句子级最大间距学习(Sequence-Level Maximum-Margin(MM) Learning)

尝试在搜索和学习中进行交替,即再将GPT2生成的输入进SA中

  • 把x输入进GPT2中,用beam search得到输出序列记为 Y ( G P T 2 ) = { y ( G P T 2 , 1 ) , y ( G P T 2 , 2 ) . . . y ( G P T 2 , B ) } Y^{(GPT2)}=\{y^{(GPT2,1)},y^{(GPT2,2)}...y^{(GPT2,B)}\} Y(GPT2)={y(GPT2,1),y(GPT2,2)...y(GPT2,B)}
  • 然后随机选择一个,输入进SA中,得到结果 y ( S A − S 2 ) y^{(SA-S2)} y(SAS2) ,得到B+1个样本的集合 Y ~ = Y ( G P T 2 ) ∪ { y ( S A − S 2 ) } \tilde{Y}=Y^{(GPT2)}∪\{y^{(SA-S2)}\} Y~=Y(GPT2){y(SAS2)}
    • 然后将上面 s ( y ∣ x ) s(y|x) s(yx)最大的作为正样本,其他的作为负样本。大多数情况下,正样本是 y ( S A − S 2 ) y^{(SA-S2)} y(SAS2)
    • 用最大间隔去训练GPT2
      J M M = ∑ y − ∈ Y ~ , y − ≠ y + max ⁡ { 0 , − E ( y + ) + E ( y − ) − Δ } J_{MM}=\sum_{y^-\in \tilde{Y},y^- ≠y^+}\max \{0,-E(y^+)+E(y^-)-\Delta\} JMM=yY~,y=y+max{0,E(y+)+E(y)Δ}
      • − E ( y ) = ∑ i = 1 N z i , y i -E(y)=\sum_{i=1}^N z_{i,y_i} E(y)=i=1Nzi,yi z i , y i z_{i,y_i} zi,yi是单词 y i y_i yi在第i步的logit

伪代码与流程示意图

在这里插入图片描述
在这里插入图片描述

实验

实验结果挺好,详细请看原文

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值