搭配对比学习,万能的 prompt 还能做可控文本生成
文 | ZenMoore
编 | 小轶
可控文本生成,旨在让语言模型的输出带有我们想要的某种属性。比如情感、主题、三元组等。一般我们习惯采用 CTRL[1] 或者 PPLM[2] 等方式。但是,CTRL 是对整个语言模型进行 Finetuning, PPLM 因为需要在生成的过程中迭代更新 hidden activations,所以推理速度非常慢。
随着 Prompting 技术的大火,我们一直在思考,Prompt 究竟能够带来什么?我们都说,Prompt 本质上是一种激发语言模型中知识的手段。因此,它应该不仅仅局限于数据集或者说任务的层面,激发模型对于某个任务的“知识”,还应该扩展到范围更广的控制属性层面,激发模型对于某种输出属性的 sense !
于是,我们不妨把视角从 task scaling 挪开,更多地关注一下 Prompt 对于可控性的 buff 加成。
今天的这篇文章来自 UCSB 和微软,提出通过对比学习的方法找寻到了这个 buff 一般的 Prompt,能够“调教”我们的语言模型进行可控的生成。
论文标题:
Controllable Natural Language Generation with Contrastive Prefixes
论文作者:
Jing Qian, Li Dong, Yelong Shen, Furu Wei, Weizhu Chen
论文链接:
https://arxiv.org/abs/2202.13257
模型方法
首先明确一个概念:Prefix。读者可以简单看一下 Prefix-Tuning[3] 的方法图,就大概知道:Prefix 相当于一种控制指令,加在输入的最前面,以控制生成文本的属性。
本文提出了两种方法,分别是监督方法和无监督方法。
下面的方法介绍以 Sentiment Control 为例(即生成给定带有情感的文本)。该任务要训练的,正是 positive 和 negative 的两种情感类别所对应的 prefix.
监督方法
整个训练过程和 Prefix-Tuning[3] 相似,LM 的参数是冻结的,只调整 Prefix 相关联的参数。在训练的时候,除了LM loss 之外,新增一个判别损失:
其中, 代表生成文本, 代表控制信号的类别(positive 或 negative)。
无监督方法
在监督方法中,控制信号是已知的。实际场景中还会常常出现控制信号未知的情况,因此需要通过变分的无监督方法找到这个“虚拟的类别信号“并使用 latent variable 表征,即 VQ-VAE[4] 的思想。
如图,需要先通过一个 encoder 预测相应输入对应的 latent variable 作为 prefix index(指代当前要使用哪个 prefix)。设 prefix index 为 ,则这个 encoder 就是要学习 这个分布。
一方面,除了 LM loss ,还需要保证后验概率 或 尽可能的准确,故引入 KL 散度:
这里的 假设是 uniform distribution。其中,
402 Payment Required
GS 表示 Gumbel Softmax, 是 GS 的 temperature 参数。
关于这块儿的详细原理,就是我们小学二年级就学过的 EM 算法啦~
帮读者回忆一下:
402 Payment Required
......
另外,作者又提出了一个无监督对比损失:
402 Payment Required
其中,和 是根据 decoder 的文本生成概率得到的,具体计算方式如下:
402 Payment Required
最后总的损失函数为 ,, 的加权求和,
实验结果
Sentiment Control
Detoxification
Topic Control
推理速度
Multi-Aspect Control
实际场景中,很少有 multi-aspect labeled data,只有 single-aspect labeled data.
本文使用了两种方式来解决多种属性的可控生成问题:
Ours (concatenation):使用 single-aspect labeled data 分别训练各自的 prefix, 然后在 multi-aspect control 任务中将其拼接起来。
Ours (semi-supervised):同时训练 multi-aspect prefixes, 在训练时把 single-aspect labeled example 当做 partially labeled. 此外,multi-aspect prefixes 经过了 trained single-aspect prefixes 的初始化。
Ours (semi-supervised) 是上述监督方法和无监督方法的组合,因此架构图和无监督方法的图是一样的。
写在最后
这里也推荐读者品读一下 DeepMind & ICL 的相似工作:Control Prefixes [5].
古人云:“君子生非异也,善假于物也”。我们把语言模型比作“人”,把可控性比作“物”,也许,大大小小的语言模型在能力的本质上并没有什么不同,但是如果可以通过不同的 Control Prefixes,假之以物,则语言模型可成“君子”也!(哈哈,搞一个俏皮的比喻~)
无论是本文介绍的 Contrastive Prefixes 也好,还是 Control Prefixes 也好,我们都可以从中发现 Prompt 对于”调教“语言模型的伟大能力。从 task 到 controllability, 可能会是 prompt 向前发展的又一个新阶段吧~
萌屋作者:ZenMoore
北航本科生
搭配对比学习,万能的 prompt 还能做可控文本生成相关推荐
- 对比学习(Contrastive Learning)综述
A.引入 https://zhuanlan.zhihu.com/p/346686467 A.引入 深度学习的成功往往依赖于海量数据的支持,其中对于数据的标记与否,可以分为监督学习和无监督学习. 1 ...
- 今晚直播 | AAAI 2022论文解读:重新思考图像融合策略和自监督对比学习
「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...
- 再谈对比学习:更好的对比样本选择,更好的对比效果
©PaperWeekly 原创 · 作者 | 张琨 学校 | 中国科学技术大学博士生 研究方向 | 自然语言处理 在之前的介绍中,我们对自监督学习(SSL)中的对比学习(CL)进行了简单介绍,然后针对 ...
- 对比学习可以使用梯度累积吗?
©PaperWeekly 原创 · 作者 | 苏剑林 单位 | 追一科技 研究方向 | NLP.神经网络 在之前的文章用时间换取效果:Keras 梯度累积优化器中,我们介绍过"梯度累积&qu ...
- 对比学习(contrastive learning)
什么是自监督学习? 举个通俗的例子:即使不记得物体究竟是什么样子,我们也可以在野外识别物体. 我们通过记住高阶特征并忽略微观层面的细节来做到这一点.那么,现在的问题是,我们能否构建不关注像素级细节,只 ...
- 张俊林:对比学习研究进展精要
作者 | 张俊林 编辑 | 夕小瑶的卖萌屋 对比学习(Contrastive Learning)最近一年比较火,各路大神比如Hinton.Yann LeCun.Kaiming He及一流研究机构比如F ...
- 【自然语言处理】【对比学习】SimCSE:基于对比学习的句向量表示
相关博客: [自然语言处理][对比学习]SimCSE:基于对比学习的句向量表示 [自然语言处理]BERT-Whitening [自然语言处理][Pytorch]从头实现SimCSE [自然语言处理][ ...
- NAACL 2022 | 字节和加州大学提出ConST模型,探讨对比学习如何助力语音翻译?
原文链接:https://www.techbeat.net/article-info?id=3692 作者:叶蓉 前言 全球化下应用最广泛的 AI 技术是什么?机器翻译必然是其中之一.除了纯文本信息的 ...
- ICML 2022 | 基于有偏不对称对比学习的长尾分布外检测
©作者 | 小舟 单位 | 电子科技大学 研究方向 | 计算机视觉 本文提出了一个 OOD Detection 的新方法,思想上没有什么创新,结合了现有 OOD 方法的思路,同时引入有监督对比学习的思 ...
最新文章
- MySQL的优化与执行
- 三十岁前不必在乎的三十件事
- spring中事务配置的3种方式-2
- PHP内核——内存管理
- # 字符串从右往左查找_字符串匹配(搜索,查找)算法
- linkedin爬虫_您应该在LinkedIn上关注的8个人
- 前端学习(1328):服务器基础概念
- scala求集合相邻元素差值的最小值
- element-ui组件dialog遇到form
- AI技术的苹果iPhone XS Max双卡双待7纳米6.5寸512GB顶配12799元(公号回复“苹果AI”下载PDF资料)
- 解析MOS管电流方向反及其体二极管能过多大电流问题
- Windows10添加自定义右键菜单
- 嵌入式lab3——自行车码表
- 使用postman测试上传图片接口
- 2021-09-21
- 火狐Firefox最简洁界面设置
- 动态创建表,并批量入库表数据(字段在程序运行之前未知)
- HDMI设计2----EDID and E-EDID
- forget word out a~4
- ESP32学习笔记(34)——BLE一主多从连接
热门文章
- Caffe2 的基本数据结构(Basics of Caffe2 - Workspaces, Operators, and Nets)[4]
- PHP操作excel类 PHPExcel
- 排序算法之希尔排序(C/C++)
- 简单的C语言程序合集-2
- 用mtrace定位内存泄漏
- unix dos mac 文件格式不同导致问题
- python标准库怎么用_Python常用标准库使用(一)
- 1071svm函数 r语言_R语言机器学习之核心包e1071 - 数据分析
- CListBox的函数
- opencv 二值化_Python-OpenCV获取图像轮廓的图像处理方法