文章目录
Deep Learning for NLP 5 years ago
- No Seq2Seq
- No Attention
- No large-scale QA/reading comprehension datasets
- No TensorFlowor Pytorch
Future of Deep Learning + NLP
- 利用未标记的数据
- 反译与无监督机器翻译
- 扩大预训练和GPT-2
- 接下来呢?
- NLP技术的风险与社会影响
- 未来研究方向
Why has deep learning been so successful recently?
- 数据规模变大、计算能力增强
Big deep learning successes
- 图片识别:广泛被谷歌,Facebook等使用
ImageNet: 14 million examples - 机器翻译:谷歌机器翻译等
WMT: Millions of sentence pairs - 打游戏:Atari Games, AlphaGo, and more
10s of millions of frames for Atari AI
10s of millions of self-play games for AlphaZero
NLP Datasets
- 甚至对于英语,大多数任务只有10w或者更少的标注例子
- 并且其他语言的数据更少
- native speaker超过一百万的语言有数千种
- 只有少于10%的人将英语当作第一语言
- 越来越流行的解决方案:使用未标记的数据。
Using Unlabeled Data for Translation
Machine Translation Data
- 获得翻译需要人类专业知识
- 限制了数据的大小和领域
人们一般是为了训练某些特定模型或需要进行翻译的地方(如某些网站)来人工标注数据,因此限制了数据大小,此外也限制了数据的领域(比如,就没有tweet的翻译数据)
- 限制了数据的大小和领域
- 但与文本更容易获得
Pre-Training
- 分别训练编解码器作为语言模型
- 然后联合进行双语数据训练
- English -> German Results: 2+ BLEU point improvement
Ramachandran et al., 2017
Self-Training
- pre-training 的问题:pre-training 时两种语言之间没有“互动”
- Self-training:使用MT模型来对未标注数据进行标注得到带有噪音的训练数据,然后使用这些 machine-examples 来继续训练模型
- 循环?
Back-Translation
- 有两个机器翻译模型朝相反的方向(en->fr)和(fr->en)
- 不再有循环了
- 模型只会看到坏的输入,而从不会看到坏的翻译
- 模型训练时会加入一些标记数据,确保 模型的输出,即 模型的输入,从而保证模型的正常
- 如何协调对标记数据与未标记数据的训练呢?
- 先在标记数据上训练两个模型
- 然后在未标记数据上标记一些数据
- 再在未标记数据上进行反向翻译的训练
- 重复如上的过程
Large-Scale Back-Translation
- 4.5M English-German sentence pairs and 226M monolingual sentences
What if there is no Bilingual Data?
- 假设一个外星人来到地球,在没有任何双语数据的情况下,我们如何将其语言翻译成英语
- 先考虑 词对词 的翻译,即给出一个词,通过未标注的数据,找出其翻译。
Unsupervised Word Translation
-
Cross-lingual word embeddings
跨语言词汇嵌入- 两种语言的共享嵌入空间
- 保持word嵌入的正常良好特性
- 但也希望文字与译文接近
-
想从单语语料库中学习
图中是英语单词的嵌入与德语单词的嵌入,每个英语单词在向量空间中与一个德语单词相对应,找到离每个英语单词最近的德语单词,则两者可能互为翻译。 -
但是词向量有很多结构
-
假设:语言间,结构应该相似(如左下图)
-
首先在单语语料上运行word2vec,得到词向量 X 和 Y
-
然后学习一个(正交的)矩阵 W,使得 WX ~ Y,如上右图。W 是一个正交矩阵,则W 只能对 X 进行旋转,而不会做一些其他的转换
通过对抗训练学习 W
- 鉴别器(Discriminator):给出一个 embedding,预测其来自 Y 还是来自 WX,即最初来自 X
- 训练 W,使鉴别器变得迷惑
- 一些能够进一步提高性能的方法: Word Translation without Parallel Data
Unsupervised Machine Translation
- 模型:两种语言使用同样的 encoder-decoder,无论输入与输出,并且无注意力机制。
- 对于encoder:我们既可以使用法语句子作为输入,也可以使用英语句子作为输入,模型能够处理任何一种输入。
- 对于 decoder: 表示输出法语句子, 表示输出英语句子。
- 使用 cross-lingual 词向量初始化
- 既可以使用这个模型 翻译 英语——>法语,也可以使用它作为一个自编码器。
- Training objective 1: de-noising autoencoder
- 输入可以是法语句子也可以是英语句子,输入一个打乱顺序的句子,模型输出正确的句子。
- 有用的原因可能是:因为没有使用注意力机制,encoder 将源句子的信息编码为一个向量表示,我们要确保这个向量包含了这个句子的所有信息,能使用decoder 将其“复原” 出来
- Training objective 2: back translation
- 首先翻译 fr—>en
- 然后用得到的“监督”例子来训练 en—>fr,尽管这些输入可能不太好,如上图例子中就少了 “a”。
Why Does This Work?
- 跨语言嵌入和分享encoder给模型一个起点
- 跨语言嵌入:
英语和法语单词应该看起来很接近
且可以训练为一个自编码器
- 共享encoder
- 假设输入一个法语句子
- 因为两者嵌入很类似,并且使用相同的encoder
- 因此,模型对法语句子的编码与英语句子的编码应该很类似
- 当编码传递到decoder中,我们可以期望能获得与之前(属于英语句子)相同的输出。
- 跨语言嵌入:
- 训练目标鼓励模型生成语言无关的表示
Results
Lampleet al., 2018
- 水平线是无监督模型,其余是监督模型
- 可以看到随着数据量的增大,无监督模型的性能几乎没有变化,而监督模型随之性能有很大提升
- 数据量在 到 时,无监督模型性能要优于有监督模型
Attribute Transfer
- 可以使用无监督机器学习的方法来进行属性的变化
- 通过 hashtags 收集 “relaxed” 和 “annoyed” tweets语料(也可以收集其他属性的语料)
- 将两者视为不同的语言,使用 无监督MT模型进行学习
Lample et al., 2019
Not so Fast
- 英语,法语和德语都是相对来说很相似的
- 在非常不同的语言(比如,英语和土耳其语)
- 纯无监督词翻译表现得不好
需要种子字典可能的翻译- 简单的trick:从双方的词表中使用完全相同的字符串
- UNMT 几乎无效果
- 老师认为:在无监督MT中,语法层面(即意思如何表达出来)要比词层面更加重要
- 纯无监督词翻译表现得不好
Cross-Lingual BERT
- 依旧使用Bert中的MLM思想,只是将第二个句子换成法语句子。
- motivation:能够使模型对两种语言的关系更加理解,因为如果某个英语单词被 mask 了,如果可以翻译的话,可以从法语句子中找这个词,这样预测会更加容易些。
- 结果
对UNMT几乎提高了10个点(Cross-Lingual BERT中使用了有标签数据)
Huge Models and GPT-2
Training Huge Models
- Honey Bee 大脑的突触数量级是1B,GPT-2的参数已经超过了这个级别。虽然突触和神经网络参数不一样,但这说明模型已经非常大了
This is a General Trend in ML
Huge Models in Computer Vision
- 150M 参数的GAN生成的图片
see also:thispersondoesnotexist.com
- 550M 参数
- 模型越大,准确率越高
Training Huge Models
- 更好的硬件,如GPU、TPU等
- 数据与模型并行
- 数据并行
- 假设有16个 GPU,在每个GPU上都有个模型的副本,然后在 mini-batch 为16上进行训练。当进行反向传播时,将每个GPU上的梯度加起来,相当于 batch-size为256.因此模型训练更加快速。
- 模型并行
有些很大的模型甚至一个GPU都放不下,因此将模型分割成几部分放到不同的计算单元上进行。有时需要设计一些新的数据结构来使并行更加容易,比如 Mensh-TensorFlow
GPT-2
- 数据并行
- 与之前的模型相比没有变化,只是一个非常大的Transformer 语言模型
- 在 40GB的文本上进行训练
- 在确保数据集质量方面花了不少功夫
- 使用 reddit 中获得高投票的网页 link
So What Can GPT-2 Do?
- 显然,语言建模(非常好)
- 在一些数据集上获得最优的困惑度,甚至都没有在这些数据上训练
Radford et al., 2019 - Zero-Shot 学习:没有监督训练数据
- 给语言模型一些 prompt,然后让其生成你想要的文本,如下面的一些例子
- 阅读理解:<context><question> A:
- 摘要:<article> TL;DR:
- 翻译:
- 问答:<question> A:
GPT-2 Results
- 蓝线是 GPT-2的性能表现,虚线是模型的性能。虽然GPT-2比这些任务的最优模型效果要差,但这些模型是专门针对特定的任务进行训练的。因此,GPT-2 的表现可以说是很好了。还有一件有意思的事,对这些任务来说,随着模型增大,性能几乎一直在提升。
How can GPT-2 be doing translation?
- 训练时,我们仅仅给了一个几乎全是英文的大的语料
- 如上图,语料中有一些这样的例子,GPT-2 或许就从这些语料中学习到了如何产生法语。(我认为:非常大的模型,非常多的参数能够对语言的任何小特征都能进行建模,而语料中穿插着的这些小的翻译就算是我们提供给模型的语言中的一些小的特征。因此或许合适的架构加上很大的模型,能够更好地对语言进行建模)
GPT-2 Question Answering
- Simple baseline: 1% accuracy
- GPT-2: ~4% accuracy
- Cherry-picked most confident results
What happens as models get even bigger?
- 对于一些任务,模型性能似乎随着模型大小呈对数提升。例如阅读理解,如果按照这个趋势预测,那么参数达到1 trillion,即1万亿,就能达到人类水平。
- 但对于一些任务,趋势并不清晰,比如 摘要
GPT-2 Reaction
- OpenAI 认为 GPT-2 太过强大,发布会产生不好的影响,比如被用来生成假的或者带有偏见的文本,因此决定不发布 GPT-2 的训练集,代码,以及模型权重。只发布一个GPT-2的小版本和示例代码
- 由此引发了很多争论
- NLP的专家们应该做出这些决定吗?
- 计算机安全专家?
- 技术与社会专家?
- 伦理专家?
- 需要更多跨学科的科学
- 许多其他具有重大社会影响的NLP例子,特别是关于偏见/公平
High-Impact Decisions
- 对使用NLP帮助进行高影响决策的兴趣日益增长
- 司法判决
- 雇佣
- 分数评定
- 优点:可以快速评估机器学习系统的某些偏差
- 然而,机器学习反映甚至放大了训练数据的偏差
- 可能会导致更多有偏见的数据产生
Chatbots
What did BERT “solve” and what do we work on next?
GLUE Benchmark Results
十个任务的平均
The Death of Architecture Engineering?
- 在架构设计上研究了6个月,结果得到 1 F1分数的提高
- 或者只是让 BERT 变大三倍,得到 5 F1分数的提高
- 在SQuAD榜上前二十都使用了 BERT
Harder Natural Language Understanding
- 阅读理解
- 长文档或多文档
- 需要多跳推理
- 在对话中定位问答
- 现有阅读理解数据集中存在的关键问题:人们看着文章写出问题。这会导致
- 不现实
- 鼓励更加简单的问题
QuAC: Question Answering in Context
- 老师和学生之间的对话,学生问问题,老实回答
- 老师可以看 Wikipedia 上的文章,而学生不行
- 训练模型像老师一样回答问题
- 问题基于对话,比如,有些问题的主语需要回溯之前的对话才能知道具体是谁。
Choi et al., 2018
- 最优结果仍然与人类表现差距很大
HotPotQA
- 需要多跳推理
- 问题基于多文档
- Zang et al., 2018
- 依旧与人类表现差距很大(人类F1在90以上)
Multi-Task Learning
- NLP的另一个前沿是让一个模型执行许多任务。GLUE 和 DecaNLP 是近期的例子
- 在BERT的基础上,多任务学习产生了改进
Low-Resource Settings
- 不需要大量计算能力的模型(不能使用BERT)!
- 尤其对移动设备很重要
- 低资源语言
- 低数据环境(few shot learning 小样本学习)
- ML 中的元学习越来越受欢迎
Interpreting/Understanding Models
- 我们能得到模型预测的解释吗?
- 我们能理解模型,例如BERT知道什么和他们为什么工作这么好?
- NLP中快速增长的领域
- 对于某些应用程序非常重要(如医疗保健)
Diagnostic/Probing Classifiers
- 诊断分类器以模型(如BERT)产生的表示作为输入并执行一些任务
- 流行的技术来观察模型“知道”什么语义信息,使用一个分类器来decode模型产生的向量,看是否带有语义信息
- 只有诊断分类器被训练
- 诊断分类器通常非常简单(例如,单个softmax)。否则他们就可以不用看模型表示来学习执行任务
- 一些诊断任务
Diagnostic/ Probing Classifiers: Results
- BERT较低层的输出更适合较低水平的任务
- 比如依存分析是句法层面的任务,用BERT的6~8层效果最好,情感分析是语义层面的,用较后层效果更好。
NLP in Industry
- NLP在工业上也在迅速发展。两个特别大的领域:
- 对话
- 聊天机器人
- 私人服务,如顶机票等
- 医疗保健
- 理解健康记录
- 理解生物医学文献
Conclusion
- 由于深度学习,NLP过去五年发展很快
- 在过去的一年中,由于更大的模型,更好地使用未标记的数据,取得了更快的进展
- 现在是学习NLP的激动人心时刻!
- NLP已经到了产生巨大社会影响的地步,使得偏见和安全等问题变得越来越重要
总结
- 本课主要讲了 NLP未来发展趋势
- 如何利用无标签的数据
- 介绍了无监督机器翻译
- 首先进行词翻译,WX ~ Y
- 通过 对抗学习 学习 W
- 然后句子到句子的翻译,通过训练自编码器让encoder能够表示句子信息。
- self-training以及反译等等。
- 模型越来越大
- 数据并行
- 模型并行
- 如何利用无标签的数据
- NLP 引发的一些影响以及问题
- 模型过于强大,怕被用于非法的地方,GPT-2 没有发布。
- 模型中可能带有偏见或不公平的现象
- 等等