机器学习--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 的编码器其实不一定要这样设计,永远可以思考看看有没有更好的设计方式。

相关推荐
HyperAI超神经2 小时前
【TVM 教程】使用 Tensorize 来利用硬件内联函数
人工智能·深度学习·自然语言处理·tvm·计算机技术·编程开发·编译框架
扫地的小何尚3 小时前
NVIDIA RTX 系统上使用 llama.cpp 加速 LLM
人工智能·aigc·llama·gpu·nvidia·cuda·英伟达
埃菲尔铁塔_CV算法6 小时前
深度学习神经网络创新点方向
人工智能·深度学习·神经网络
艾思科蓝-何老师【H8053】6 小时前
【ACM出版】第四届信号处理与通信技术国际学术会议(SPCT 2024)
人工智能·信号处理·论文发表·香港中文大学
秀儿还能再秀7 小时前
机器学习——简单线性回归、逻辑回归
笔记·python·学习·机器学习
weixin_452600697 小时前
《青牛科技 GC6125:驱动芯片中的璀璨之星,点亮 IPcamera 和云台控制(替代 BU24025/ROHM)》
人工智能·科技·单片机·嵌入式硬件·新能源充电桩·智能充电枪
学术搬运工7 小时前
【珠海科技学院主办,暨南大学协办 | IEEE出版 | EI检索稳定 】2024年健康大数据与智能医疗国际会议(ICHIH 2024)
大数据·图像处理·人工智能·科技·机器学习·自然语言处理
右恩7 小时前
AI大模型重塑软件开发:流程革新与未来展望
人工智能
图片转成excel表格7 小时前
WPS Office Excel 转 PDF 后图片丢失的解决方法
人工智能·科技·深度学习
ApiHug8 小时前
ApiSmart x Qwen2.5-Coder 开源旗舰编程模型媲美 GPT-4o, ApiSmart 实测!
人工智能·spring boot·spring·ai编程·apihug