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. 总结

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

4. OpenAI GPT算法原理解析的更多相关文章

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

    1. 语言模型 2. Attention Is All You Need(Transformer)算法原理解析 3. ELMo算法原理解析 4. OpenAI GPT算法原理解析 5. BERT算法原 ...

  2. 3. ELMo算法原理解析

    1. 语言模型 2. Attention Is All You Need(Transformer)算法原理解析 3. ELMo算法原理解析 4. OpenAI GPT算法原理解析 5. BERT算法原 ...

  3. 5. BERT算法原理解析

    1. 语言模型 2. Attention Is All You Need(Transformer)算法原理解析 3. ELMo算法原理解析 4. OpenAI GPT算法原理解析 5. BERT算法原 ...

  4. PhotoShop算法原理解析系列 - 像素化---》碎片。

    接着上一篇文章的热度,继续讲讲一些稍微简单的算法吧. 本文来讲讲碎片算法,先贴几个效果图吧:             这是个破坏性的滤镜,拿美女来说事是因为搞图像的人90%是男人,色色的男人. 关于碎 ...

  5. PhotoShop算法原理解析系列 - 风格化---》查找边缘。

    之所以不写系列文章一.系列文章二这样的标题,是因为我不知道我能坚持多久.我知道我对事情的表达能力和语言的丰富性方面的天赋不高.而一段代码需要我去用心的把他从基本原理-->初步实现-->优化 ...

  6. FastText算法原理解析

    1. 前言 自然语言处理(NLP)是机器学习,人工智能中的一个重要领域.文本表达是 NLP中的基础技术,文本分类则是 NLP 的重要应用.fasttext是facebook开源的一个词向量与文本分类工 ...

  7. LRU算法原理解析

    LRU是Least Recently Used的缩写,即最近最少使用,常用于页面置换算法,是为虚拟页式存储管理服务的. 现代操作系统提供了一种对主存的抽象概念虚拟内存,来对主存进行更好地管理.他将主存 ...

  8. 最全排序算法原理解析、java代码实现以及总结归纳

    算法分类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序. 线性时间非比较类排序:不通过 ...

  9. 【算法】(查找你附近的人) GeoHash核心原理解析及代码实现

    本文地址 原文地址 分享提纲: 0. 引子 1. 感性认识GeoHash 2. GeoHash算法的步骤 3. GeoHash Base32编码长度与精度 4. GeoHash算法 5. 使用注意点( ...

随机推荐

  1. springboot springcloud 父项目pom工程创建pom文件

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  2. hql查询后释放内存

    Session session=getSession(); //进行session查询,取得前16个数据 Query q=session.createQuery(hql).setFirstResult ...

  3. Spring 注解@Transactional readOnly=true

    引子 今天下班后,以前同事小胖问我Spring  Service类中的注解@Transactional readOnly=true的作用.做为他眼中的高人,我自然要装下A-C.居然想都没有想就说是注解 ...

  4. es6的解构赋值用途

    (1)交换变量的值 let x = 1; let y = 2; [x, y] = [y, x]; 上面代码交换变量x和y的值,这样的写法不仅简洁,而且易读,语义非常清晰. (2)从函数返回多个值 函数 ...

  5. [NOIp2007提高组]矩阵取数游戏

    OJ题号:洛谷1005 思路: 动态规划. 不难发现每行能够取得的最大值仅与当前行的数据有关,因此本题可以对每行的数据分别DP,最后求和. 设$f_{i,j}$表示左边取$i$个.右边取$j$个的最大 ...

  6. 图的基本操作(基于邻接矩阵):图的构造,深搜(DFS),广搜(BFS)

    #include <iostream> #include <stdio.h> #include <cstdlib> #include <cstring> ...

  7. BZOJ4124 : [Baltic2015]Tug of war

    建立二分图,首先如果存在度数为$0$的点,那么显然无解. 如果存在度数为$1$的点,那么这个点的匹配方案固定,可以通过拓扑排序去掉所有这种点. 那么现在剩下的点度数都至少为$2$,因为左右点数相等,且 ...

  8. 自动部署tomcat 脚本

    自动部署tomcat 脚本 . /etc/init.d/functions #调用系统函数 yum -y install java >/dev/null TAR="apache-tom ...

  9. windows + php + redis的安装

    我讲述一下我在 php 中安装 redis 的详细过程,仅供参考: 系统版本:windows7 + 64 位操作系统. php版本 : php5.6 redis版本 : redis 2.2.7 (由于 ...

  10. python图片和分形树

    链接: 这10个Python项目很有趣! Python 绘制分形图(曼德勃罗集.分形树叶.科赫曲线.分形龙.谢尔宾斯基三角等)附代码 使用Python生成树形图案 神奇的代码:用 Python 生成分 ...