一、前言

今天的主角是 Transformer

Transformer 可以做很多有趣而又有意义的事情。

比如 OpenAIDALL·E,可以魔法一般地按照自然语言文字描述直接生成对应图片!

输入文本:鳄梨形状的扶手椅。

AI 生成的图像:

两者都是多模态的应用,这也是各大巨头的跟进方向,可谓大势所趋

Transformer 最初主要应用于一些自然语言处理场景,比如翻译、文本分类、写小说、写歌等。

随着技术的发展,Transformer 开始征战视觉领域,分类、检测等任务均不在话下,逐渐走上了多模态的道路。

Transformer 近两年非常火爆,内容也很多,要想讲清楚,还涉及一些基于该结构的预训练模型,例如著名的 BERTGPT,以及刚出的 DALL·E 等。

它们都是基于 Transformer 的上层应用,因为 Transformer 很难训练,巨头们就肩负起了造福大众的使命,开源了各种好用的预训练模型

我们都是站在巨人肩膀上学习,用开源的预训练模型在一些特定的应用场景进行迁移学习

篇幅有限,本文先讲解 Transformer 的基础原理,希望每个人都可以看懂。

后面我会继续写 BERTGPT 等内容,更新可能慢一些,但是跟着学,绝对都能有所收获。

还是那句话:如果你喜欢这个 AI 算法系列教程,一定要让我知道,转发在看支持,更文更有动力!

二、Transformer

TransformerGoogle2017 年提出的用于机器翻译的模型。

Transformer 的内部,在本质上是一个 Encoder-Decoder 的结构,即 编码器-解码器

Transformer 中抛弃了传统的 CNNRNN,整个网络结构完全由 Attention 机制组成,并且采用了 6Encoder-Decoder 结构。

显然,Transformer 主要分为两大部分,分别是编码器解码器

整个 Transformer 是由 6 个这样的结构组成,为了方便理解,我们只看其中一个Encoder-Decoder 结构。

以一个简单的例子进行说明:

Why do we work?,我们为什么工作?

左侧红框是编码器,右侧红框是解码器

编码器负责把自然语言序列映射成为隐藏层(上图第2步),即含有自然语言序列的数学表达。

解码器把隐藏层再映射为自然语言序列,从而使我们可以解决各种问题,如情感分析、机器翻译、摘要生成、语义关系抽取等。

简单说下,上图每一步都做了什么: