Transformer 的工作流程可以通过一个简单的例子来解释,比如将英文句子“I am a student”翻译成中文:
此外,aaronxic 从自己实际入坑的经验出发,总结梳理了新手友好的 transformer 入坑指南,计划从以下五个方面进行介绍:
同时,aaronxic 还针对 perplexity 指标进行了介绍,会先从大家熟悉的 entropy 指标开始,逐步介绍针对自然语言的改进版 N-gram Entropy 指标,最后介绍基于此改进的 perplexity 指标。
当然可以,让我用一个简单的例子来解释一下Transformer的工作流程:假设我们有一个英文句子"I am a student"需要翻译成中文。Transformer的工作方式如下:1.输入嵌入(Input Embeddings)首先,将每个单词映射为一个向量,即单词嵌入(word embeddings)。例如"I"映射为一个512维的向量。2.位置编码(Positional Encodings)因为Transformer没有递归或卷积等捕获序列顺序的结构,所以需要给每个词位置加上位置编码,使模型知道词语的相对位置。3.编码器(Encoder)输入序列的嵌入向量和位置编码相加后被送入编码器层。编码器由多个相同的层组成,每层有两个核心部分:a)多头注意力机制(Multi-Head Attention)捕捉单词间的依赖关系。b)前馈神经网络(Feed-Forward NN)对attention的结果进行进一步编码。4.解码器(Decoder)编码器的输出被送入解码器层。解码器也是由多个相同层组成,每层除了编码器组件外,还有一个额外的注意力模块,对编码器的输出序列建模依赖关系。5.输出嵌入(Output Embeddings)解码器最后一层的输出被映射为输出单词概率分布。例如生成单词"我"、"是"等概率。6.生成(Generation)基于概率分布,以贪婪或beam search等解码策略生成完整的输出序列。
大家好,我是aaronxic,大家可以叫我小A。最近由于项目需要开始关注transformer相关的进展,结果眼花缭乱的工作让大脑计算存储都严重溢出。围绕transformer相关的进展日新月异,难怪陆奇都说都有点赶不上大模型时代的狂飙速度。网上不乏大量优秀文章介绍transformer的方方面面,观点非常有insight,分析也极尽的详实。但是从新手角度看仍然希望有这样的transformer上手资料内容覆盖相对较全。能把transformer相关的算法、训练和部署方法一齐串讲,让新手快速建立该领域的know-how详略得当,兼顾bottom-up和top-down。对容易被大部分文章忽略的细节bottom-up详细理清逻辑链,对大量看似独立但又相互关联的知识进行top-down梳理。笔者小A从自己实际入坑的经验出发,尝试总结梳理出新手友好的transformer入坑指南。一方面能倒逼自己理清知识脉络,另一方面希望能让后面的新同学少走弯路,更快拿到自己想要的知识。本系列计划从以下五个方面对transformer进行介绍算法1:NLP中的transformer网络结构算法2:CV中的transformer网络结构算法3:多模态下的transformer网络结构训练:transformer的分布式训练部署:transformer的tvm量化与推理由于笔者小A并没有亲手撸过上述内容的所有细节,大部分是通过研究代码和精读优秀文章的方式总结而来,本质上是个拾人牙慧的知识搬运工,所以终究是纸上谈兵。因此希望各方有实际经验的大佬猛锤,思维碰撞才生火花,真理越辩越明。每个方面可能由若干篇文章组成,如果对某些部分感兴趣可以关注小A,后续会逐步更新相应章节。接下来是本系列的第一篇,侧重介绍NLP中最常用的perplexity指标究竟是什么含义本文会先从大家熟悉的entropy指标开始,逐步介绍针对自然语言的改进版N-gram Entropy指标,最后介绍基于此改进的perplexity指标。
|标题|备注|作者|链接|发布日期|附件(1)|单选||-|-|-|-|-|-|-||Perplexity指标究竟是什么?|笔者小A从自己实际入坑的经验出发,尝试总结梳理出新手友好的transformer入坑指南。一方面能倒逼自己理清知识脉络,另一方面希望能让后面的新同学少走弯路,更快拿到自己想要的知识。<br>本系列计划从以下五个方面对transformer进行介绍<br>算法1:NLP中的transformer网络结构<br>算法2:CV中的transformer网络结构<br>算法3:多模态下的transformer网络结构<br>训练:transformer的分布式训练<br>部署:transformer的tvm量化与推理|[aaronxic](https://www.zhihu.com/people/aaronxic)|[(1)Perplexity指标究竟是什么?](https://ywh1bkansf.feishu.cn/wiki/E1pjwy9OMirKTdkFQDEcDDlfnTh)|2023/07/05||||初探LLM基座模型|本篇内容主要介绍LLM基座模型里常见的3种transformer架构,encoder-only,encoder-decoder和decoder-only|[aaronxic](https://www.zhihu.com/people/aaronxic)|[(2)初探LLM基座模型](https://ywh1bkansf.feishu.cn/wiki/UU9pwtOFtiKIqAkQiSVc3Zdun7e)|2023/07/06||||ChatBot是怎么炼成的?|本文介绍了LLM基座大模型下游应用ChatBot的研发过程。在介绍ChatBot之前,作者先介绍了LLM在辅助编程方面的应用,主要包括Codex和AlphaCode两个奠基性工作。Codex提出了编程数据集和pass@k指标,并采用了2阶段训练方式。文章还介绍了Codex的局限性和辅助编程问题定义。|[aaronxic](https://www.zhihu.com/people/aaronxic)|[(3)ChatBot是怎么炼成的?](https://ywh1bkansf.feishu.cn/wiki/HRnLw588DiTDLPkSTXCcKit8nbD)|2023/07/08|||[heading1]子页面目录