机器学习--Transformer 1

Transformer 是一个基于自注意力的序列到序列模型,与基于循环神经网络的序列到序列模型不同,其可以能够并行计算。

一、序列到序列模型

序列到序列模型输入和输出都是一个序列,输入与输出序列长度之间的关系有两种情况。第一种情况下,输入跟输出的长度一样;第二种情况下,机器决定输出的长度。

1.一些常见的例子

语音识别 :输入是声音信号,输出是语音识别的结果,即输入的这段声音信号所对应的文字。我们用圆圈来代表文字,输入跟输出的长度有一些关系,但没有绝对的关系,输入的声音信号的长度是 T,并无法根据 T 得到输出的长度 N。其实可以由机器自己决定输出的长度,由机器去听这段声音信号的内容,决定输出的语音识别结果。
机器翻译 :机器输入一个语言的句子,输出另外一个语言的句子。输入句子的长度是N,输出句子的长度是 N′。输入"机器学习"四个字,输出是两个英语的词汇:"machine learning"。N 跟 N′之间的关系由机器决定。
语音翻译 : 对机器说一句话,比如"machine learning",机器直接把听到的英语的声音信号翻译成中文。
语音合成

输入文字、输出声音信号就是语音合成(Text-To-Speech,TTS)。现在还没有真的做端到端(end-to-end)的模型,以闽南语的语音合成为例,其使用的模型还是分成两阶,首先模型会先把白话文的文字转成闽南语的拼音,再把闽南语的拼音转成声音信号。从闽南语的拼音转成声音信号这一段是通过序列到序列模型实现的。
多标签分类

多标签分类(multi-label classification)任务也可以用序列到序列模型。多类的分类跟多

标签的分类是不一样的。如下图所示,在做文章分类的时候,同一篇文章可能属于多个类,

文章 1 属于类 1 和类 3,文章 3 属于类 3、9、17。

二、 Transformer结构

一般的序列到序列模型会分成编码器和解码器。编码器负责处理输入的序列,再把处理好的结果"丢"给解码器,由解码器决定要输出的序列。

序列到序列典型的模型就是 Transformer,其有一个编码器架构和一个解码器架构。

接下来分别介绍一下编码器和解码器。

1.编码器

如上图所示,编码器输入一排向量,输出另外一排向量。自注意力、循环神经网络、卷积神经网络都能输入一排向量,输出一排向量。Transformer的编码器使用的是自注意力,输入一排向量,输出另外一个同样长度的向量。

如上图所示,编码器里面会分成很多的 (block),每一个块都是输入一排向量,输出一排向量。输入一排向量到第一个块,输出另外一排向量作为下一个块的输入,以此类推,最后一个块会输出最终的向量序列。

Transformer 的编码器的每个块并不是神经网络的一层,每个块的结构如下图所示

在每个块里面,输入一排向量后做自注意力,考虑整个序列的信息,输出另外一排向量。接下来这排向量会"丢"到全连接网络网络里面,输出另外一排向量,这一排向量就是块的输出,事实上在原来的 Transformer 里面做的事情是更复杂的。

Transformer 里面加入了残差连接 (residual connection)的设计,如下图所示,

最左边的向量 b 输入到自注意力层后得到向量 a,输出向量 a 加上其输入向量 b 得到新的输出。

得到残差的结果以后,再做层归一化 (layer normalization)。层归一化输入一个向量,输出另外一个向量。层归一化会计算输入向量的平均值和标准差。(与批量归一化的区别:批量归一化是对不同样本不同特征的同一个维度去计算均值跟标准差,但层归一化是对同一个特征、同一个样本里面不同的维度去计算均值跟标准差,接着做个归一化。)

输入向量x,里面每一个维度减掉均值 m,再除以标准差 σ 以后得到 x′ 就是层归一化的输出

得到层归一化的输出以后,该输出才是全连接网络的输入。

输入到全连接网络,还有一个残差连接,把全连接网络的输入跟它的输出加起来得到新的输出。接着把残差的结果再做一次层归一化得到的输出才是 Transformer 编码器里面一个块的输出。

上图给出了 Transformer 的编码器结构,其中 N× 表示重复 N 次。首先,在输入的地方需要加上位置编码。如果只用自注意力,没有未知的信息,所以需要加上位置信息。多头自注意力就是自注意力的块。经过自注意力后,还要加上残差连接和层归一化。接下来还要经过全连接的前馈神经网络,接着再做一次残差连接和层归一化,这才是一个块的输出,这个块会重复 N 次。当然Transformer 的编码器其实不一定要这样设计,永远可以思考看看有没有更好的设计方式。

相关推荐
南方者2 分钟前
它的 AI Agent 凭什么能擦出火花?!
人工智能·ai编程
心动啊1214 分钟前
深度神经网络1——梯度问题+标签数不够问题
人工智能·神经网络·dnn
南方者8 分钟前
基于Amazon Bedrock Agent 的两个服务示例的完整流程与详细内容,包含技术架构、实现细节、交互逻辑及扩展能力
人工智能·ai编程·敏捷开发
小王爱学人工智能11 分钟前
OpenCV一些进阶操作
人工智能·opencv·计算机视觉
新智元15 分钟前
起猛了!这个国家任命 AI 为「部长」:全球首个,手握实权,招标 100% 透明
人工智能·openai
张较瘦_16 分钟前
[论文阅读] 人工智能 + 软件工程 | 大语言模型驱动的多来源漏洞影响库识别研究解析
论文阅读·人工智能·语言模型
艾醒26 分钟前
大模型面试题剖析:RAG中的文本分割策略
人工智能·算法
算家计算29 分钟前
马斯克突然裁掉500名AI训练师!重心转向招募专业领域AI导师
人工智能·资讯·grok
什么都想学的阿超30 分钟前
【大语言模型 58】分布式文件系统:训练数据高效存储
人工智能·语言模型·自然语言处理
ViperL11 小时前
[智能算法]可微的神经网络搜索算法-FBNet
人工智能·深度学习·神经网络