NLP原理系列1-说清楚transformer原理

lexn / 2023-08-30 / 原文

NLP原理系列1-说清楚transformer原理

来用思维导图和截图描述。

  思维导图的本质是 变化(解决问题)-> 更好的, 或者复杂问题拆分为小问题 以及拆分的思路。

 

参考链接:李宏毅 transformer原理。

 

一 tansformer的推理及训练过程

1 tf 训练过程

红框部分是 训练得grandtruth,正确答案。

decoder的上面输出部分是 推理结果。 采用了一些teach model

 

2 tf 推理过程

假如我们的场景是问答,问题是“中国的首都是哪里?”
推理阶段最开始,左侧Input就是这个问题,右下Outputs就是起始符,Inputs和Outputs共同进行前向传播,它们会在中间蓝笔红笔那部分完成汇合,然后到右上侧推理出“北”(如果模型效果尚可,确实能正确推理出“北京”的话),“北”作为本步推理结果,就会被送入Outputs拼在起始符后方,然后Inputs和带有“北”的Outputs又共同前向传播,又再汇合推理出“京”…大抵是这么一个往复的过程

 

推理优化过程

紫色部分只执行一次,如果计算出来的红圈部分保存的话。 红圈部分是 key 和value, 篮圈是query。

如描述的推理过程, 推理到 “北”字后,只有那个"北"的 logist 回来到红框 位置生成新的query,与原来的key和value汇合。

绿色部分是一个 decoder block块

 

我们构造一个较复杂多层模型

 保存任何一组key和val即可。

 

二 GPT 仅用decoder

1 past-key_val=true 保存过程

截图为decoder的单层结构图,也是GPT的简化图。 12x即重复12层block。

 

GPT全部是decoder block 也是会计算key val所以也可以保存起来, 那么每一层得 key-val都是新的,所以实际是保存了12组 key-val。 (从代码中读到, 可以再次确认)

 

2 为什么 decoder可以自己计算key和val呢?