1. 语言模型

2. Attention Is All You Need(Transformer)算法原理解析

3. ELMo算法原理解析

4. OpenAI GPT算法原理解析

5. BERT算法原理解析

6. 从Encoder-Decoder(Seq2Seq)理解Attention的本质

1. 前言

本文对2018年OpenAi提出的论文《Improving Language Understanding
by Generative Pre-Training》做一个解析。

一个对文本有效的抽象方法可以减轻NLP对监督学习的依赖。大多数深度学习方法大量的人工标注信息,这限制了在很多领域的应用。在这些情况下,可以利用来未标记数据的语言信息的模型来产生更多的注释,这可能既耗时又昂贵。此外,即使在可获得相当大的监督的情况下,以无人监督的方式学习良好的表示也可以提供显着的性能提升。到目前为止,最引人注目的证据是广泛使用预训练词嵌入来提高一系列NLP任务的性能。

2. OpenAI GPT原理

本文提出一种半监督的方式来处理语言理解的任务。使用非监督的预训练和监督方式的微调。我们的目标是学习一个通用的语言标示,可以经过很小的调整就应用在各种任务中。这个模型的设置不需要目标任务和非标注的数据集在同一个领域。模型有两个过程。

  1. 使用语言模型学习一个深度模型
  2. 随后,使用相应的监督目标将这些参数调整到目标任务

3. OpenAI GPT模型结构

3.1 非监督预训练

处理非监督文本\((x_1,x_2,...,x_m)\)的普通方法是用语言模型去最大化语言模型的极大似然。

\[
L_1(X)=\sum_ilogP(x_i|x_{i-k},...,x_{i-1}:\theta)
\]

文章中使用的是多层Transformer的decoder的语言模型。这个多层的结构应用multi-headed self-attention在处理输入的文本加上位置信息的前馈网络,输出是词的概念分布。
\[
h_0=UW_e+W_p
\]
\[
h_l=transformer\_block(h_{l-1})
\]
\[
P(u)=softmax(h_nW^T_e)
\]

3.2 监督微调fine-tuning

这个阶段要对前一个阶段模型的参数,根据监督任务进行调整。我们假设有标签数据集\(C\),里面的结构是\((x_1,x_2,...,x_m,y)\)。输入\((x_1,x_2,...,x_m)\)经过我们预训练的模型获得输出向量\(h_l^m\),然后经过线性层和softmax来预测标签。
\[
P(y|x_1,x_2,...,x_m)=softmax(h_l^m{W_y})
\]
\[
L_2(C)=\sum_{x,y}logP(y|x_1,...,x_m)
\]

我们增加了语言模型去辅助微调,提高了监督模型的结果。最后的损失函数可以标示为
\[
L_3(C)=L_2(C)+\lambda{L_1(C)}
\]

模型结构如下:

3.3 特殊任务的输入变换

对于有些任务,像文本分类,我们能够直接用上文的模型进行微调。另外的任务,问答系统,需要构造输入的句子对,或者三个文档。由于我们的预训练模型需要连续的文本序列,我们需要改变这种多句文本的输入。

  • 文本含义:用$链接前后两个文本
  • 相似度:对于相似度的问题,由于没有文本内部的先后顺序。我们可以有两个输入\(Text1\$Text2\)和\(Text2\$Text1\),输出的表示向量在加起来。
  • 问答系统:有\(Context\)和\(Answer_1,...,Answer_N\),我们可以组合成\(N\)个\(Context\$Answer_i\)输入,获得N个输出,在通过linear后softmax出概率分布。

4. 总结

论文中介绍了一通过预训练学习和有针对性的微调的个强有力的框架。通过预训练是不同的长文本连续的数据集,模型能够有能力去处理长而广的依赖关系,这个是解决问答系统、语义相似度、文本分类中的关键点。

最新文章

  1. plist基本操作
  2. 用JQuery动态为选中元素添加/删除类
  3. <转>WCF实例化模式与高并发处理
  4. jQuery AJAX实例
  5. JNI字段描述符-Java Native Interface Field Descriptors
  6. Oracle中分页查询语句
  7. C++ Primer 5 CH2 变量和基本类型
  8. LINUX打开文件
  9. CImage 对话框初始化时候显示透明 PNG
  10. PHP过滤数组中的空值
  11. 小白的首个maven web项目Step1软件安装三(8.0.15mysql及workbench安装)
  12. 团队第五次 # scrum meeting
  13. 关键字New,如阴魂不散
  14. Shiro笔记(六)Shiro标签的使用
  15. qDeleteAll 之后必须清空容器
  16. nginx:负载均衡实战(四)nginx+keepalived配置双机热备
  17. 关于android中透明、半透明、百分比转换
  18. PHP多例模式介绍_PHP教程
  19. C#导出Excel文件Firefox中文件名乱码
  20. C#对象的new和不new的区别

热门文章

  1. macOS下通过docker在局域网成功访问mysql5.6数据库
  2. 洛谷P2347 砝码称重 【多重背包】(方案数)(经典)
  3. Nginx的配置详解
  4. 服务端、实时、大数据、AI计算
  5. 系统windows版本修改
  6. PHP 实现 word/excel/ppt 转换为 PDF
  7. ecshop 添加后台页面以及设置权限
  8. linux find命令用法
  9. (素材源代码)猫猫学IOS(四)UI之半小时搞定Tom猫
  10. hdu 1828 Picture(线段树扫描线矩形周长并)