主页

运用 BERT 的 MLM 模型进行小样本学习

转载自《必须要GPT3吗?不,BERT的MLM模型也能小样本学习》和《P-tuning:自动构建模版,释放语言模型潜能》,作者:苏剑林,部分内容有修改。 大家都知道现在 GPT3 风头正盛,然而,到处都是 GPT3、GPT3 地推,读者是否记得 GPT3 论文的名字呢?事实上,GPT3 的论文叫做《Language Models are Few-Shot Learners》,标题里边已经没有 G、P、T 几个单词了,只不过它跟开始的 GPT 是一脉相承的,因此还是以 GPT 称呼它。顾名思义,GPT3 主打的是 Few-Shot Learning,也就是小样本学习。此外,GPT3 的另一个特点就是大,最大的版本多达 1750 亿参数,是 BERT Base的一千多倍。 正因如此,...

阅读更多

Transformer 位置编码

转载自《让研究人员绞尽脑汁的Transformer位置编码》和《Transformer升级之路:2、博采众长的旋转式位置编码》,作者:苏剑林,部分内容有修改。 不同于 RNN、CNN 等模型,对于 Transformer 模型来说,位置编码的加入是必不可少的,因为纯粹的 Attention 模块是无法捕捉输入顺序的,即无法区分不同位置的 Token。为此我们大体有两个选择:1、想办法将位置信息融入到输入中,这构成了绝对位置编码的一般做法;2、想办法微调一下 Attention 结构,使得它有能力分辨不同位置的 Token,这构成了相对位置编码的一般做法。 虽然说起来主要就是绝对位置编码和相对位置编码两大类,但每一类其实又能衍生出各种各样的变种,为此研究人员可算是煞费苦心、绞尽脑汁...

阅读更多

将 PyTorch 版 bin 模型转换成 Tensorflow 版 ckpt

最近由于工作上的需求,需要使用Tensorflow加载语言模型 SpanBERT(Facebook 发布的 BERT 模型的变体),但是作者只发布了 Pytorch 版的预训练权重,因此需要将其转换为 Tensorflow 可以加载的 checkpoint。 在 Pytorch 框架下,大多数开发者使用 Huggingface 发布的 Transformers 工具来加载语言模型,它同时支持加载 Pytorch 和 Tensorflow 版的模型。但是,目前基于 Tensorflow(或 Keras)的工具基本上都不支持加载 Pytorch 版的 bin 模型,转换代码在网上也很难找到,这带来了很多不便。 通过搜索,目前能够找到的有以下几个转换代码片段可供参考: bin...

阅读更多

改变世界的25天:新冠疫情是如何在中国失控的?

转载自纽约时报《25 DAYS THAT CHANGED THE WORLD: HOW COVID-19 SLIPPED CHINA’S GRASP》,作者:Chris Buckley, David D. Kirkpatrick, Amy Qin and Javier C. Hernández。 中国最著名的医生正在执行一项紧急任务。 现年84岁的钟南山博士接到命令赶往中部城市武汉,研究一种异常的新型冠状病毒。钟南山在17年前因帮助发现SARS流行病而被誉为英雄。他的助手拍了一张夜行列车上钟南山闭目思考的照片,这张照片后来在中国迅速传播,打造了钟南山作为奔赴疫区救援的中国医生的声誉。现在,中国官方历史将钟南山之行描述为最终取得胜利的抗疫战争的电影般的转折点,当时他发现病毒正在危险...

阅读更多

用 Python 计算文本 BLEU 分数和 ROUGE 值

文本生成是自然语言处理 (NLP) 中常见的一类任务,例如机器翻译、自动摘要、图片标题生成等等。如何评估生成文本的质量,或者说衡量生成文本与参考文本之间的差异,是一个必须考虑的问题。目前比较常见的评估方法就是计算 $\text{BLEU}$ 分数和 $\text{ROUGE}$ 值。 BLEU $\text{BLEU}$ (Bilingual Evaluation Understudy, 双语评估替换) 一开始是为翻译工作而开发的,是一个比较候选文本翻译与其他一个或多个参考翻译的评价分数。完美匹配的得分为 $1.0$,完全不匹配则得分为 $0.0$。尽管它还没做到尽善尽美,但它具有计算速度快、容易理解、与具体语言无关等优点。 翻译系统的 $\text{BLEU}$ 得分不可...

阅读更多

Seq2Seq 中 Exposure Bias 现象的浅析与对策

转载自《Seq2Seq中Exposure Bias现象的浅析与对策》,作者:苏剑林,部分内容有修改。 Seq2Seq 模型的典型训练方案 Teacher Forcing 是一个局部归一化模型,它存在着局部归一化所带来的毛病——也就是我们经常说的“Exposure Bias”。 经典的 Seq2Seq 模型图示 本文算是一篇进阶文章,适合对 Seq2Seq 模型已经有一定的了解、希望进一步提升模型的理解或表现的读者。关于 Seq2Seq 的入门文章,可以阅读旧作《Seq2Seq 模型入门》。 本文的内容大致为: Exposure Bias 的成因分析及例子; 简单可行的缓解 Exposure Bias 问题的策略。 Exposure Bi...

阅读更多

CRF or MEMM?

转载自《简明条件随机场CRF介绍(附带纯Keras实现)》和《CRF用过了,不妨再了解下更快的MEMM?》,作者:苏剑林,部分内容有修改。 HMM、MEMM、CRF 被称为是三大经典概率图模型,在深度学习之前的机器学习时代,它们被广泛用于各种序列标注相关的任务中。一个有趣的现象是,到了深度学习时代,HMM 和 MEMM 似乎都“没落”了,舞台上就只留下 CRF。相信做 NLP 的读者朋友们就算没亲自做过也会听说过 BiLSTM+CRF 做中文分词、命名实体识别等任务,却几乎没有听说过 BiLSTM+HMM、BiLSTM+MEMM 的,这是为什么呢? softmax 和 CRF 我们首先来对比一下普通的逐帧 softmax 和 CRF 的异同。 逐帧 softmax CRF ...

阅读更多

浅谈泛化性:从随机噪声、对抗训练到梯度惩罚

转载自《对抗训练浅谈:意义、方法和思考(附Keras实现)》 和《泛化性乱弹:从随机噪声、梯度惩罚到虚拟对抗训练》,作者:苏剑林。 提高模型的泛化性能是机器学习致力追求的目标之一。常见的提高泛化性的方法主要有两种: 第一种是添加噪声,比如往输入添加高斯噪声、中间层增加 Dropout 以及对抗训练等,对图像进行随机平移缩放等数据扩增手段某种意义上也属于此列; 第二种是往 loss 里边添加正则项,比如 $L_1, L_2$ 惩罚、梯度惩罚等。 本文试图探索几种常见的提高泛化性能的手段的关联。 添加随机噪声 我们记模型为 $f(x)$,$\mathcal{D}$ 为训练数据集合,$l(f(x), y)$ 为单个样本的 loss,那么我们的优化目标是 \[\mat...

阅读更多