8、神经网络与Transformer详解
神经网络与Transformer详解
1. 一个模型的典型场景
对用户咨询的法律问题做自动归类:
婚姻纠纷、劳动纠纷、合同纠纷、债权债务、房产纠纷、交通事故、医疗纠纷、版权纠纷
2. 模型就是一个数学公式
我们一般将这样的问题描述为:给定一组输入数据,经过一系列数学公式计算后,输出n个概率,分别代表该用户对话属于某分类的概率
举个非常简单的例子:
3. 万金油公式 - 神经网络
确定数学公式的过程
1、公式:y = ax + b
2、参数:a = 50, b = -100
神经网络的公式结构
MNIST(Mixed National Institute of Standards and Technology database)
包含了70,000张手写数字的图像,其中60,000张用于训练,10,000张用于测试,每张图像的内容只包含一个手写数字,从0到9的其中一个数字。
任务:给定一张28x28像素的灰度图像,经过一系列数学公式计算后,输出10个概率,分别代表该图像中的内容是0-9某个数字的概率




- 这种在输入向量x和输出向量y之间,增加了一层z向量, 并且用上述格式的计算公式去计算z向量和y向量中的每一个数值的结构, 就叫做神经网络。
神经网络的参数设计
1、我可能会这样设计:设定z向量的长度为784,则x向量与z向量等长
2、会这样简化公式:z[i] = x[i+1] - x[i](下一个像素值-当前像素值)
相当于把公式 z0 = w0 * x0 + w1 * x1 + w2 * x2 + …… + w782 * x782 + w783 * x783 + w784
的系数 w0设置为-1,w1设置为1,w2及以后的系数全部都设置为0
公式自然变成了 z[0] = x[1] - x[0]
3、再加一层z向量


- 在x层和y层之间,加入多层z向量,用以提取更深层特征,这种多层结构,叫做深度神经网络。
- 而通过计算机完成大规模数学计算以找到相对更优的w参数组合的过程,就叫做机器学习,也就是我们所说的模型训练。
4. Transformer的模型长什么样
回到课程最开始的场景

Tokenization - 文本变成Token
首先,我们要把这一段文字,变成一组Token,也就是词元化(Tokenization)。
⼦词(subword)词元化是词元化的⼀种,这种⽅案把会单词再切得更细⼀些,⽤更基础的单位来表达语⾔。⽐如:”subword”这个词,可以拆分成”sub”和”word”两个⼦词,”sub”是⼀个通⽤的前缀可以和其他组合词的”sub”前缀合并,这样⼤模型将会学会使⽤”sub”前缀。类似的,”encoded”可以拆解为”encod”+”ed”,“encoding”可以拆解为“encod”+”ing”,这样两个词的核⼼部分”encod”被提取出来了,⽽且还得到时态信息。所以这种子词的处理方式,会让一段内容的Token数量多于单词数量,例如OpenAI的官网上,1000 Tokens大概是750个英文单词上下(500个汉字上下)。

如果输入内容是:海南麒麟瓜
海, unicode:28023, utf8:b’\xe6\xb5\xb7’
南, unicode:21335, utf8:b’\xe5\x8d\x97’
麒, unicode:40594, utf8:b’\xe9\xba\x92’
麟, unicode:40607, utf8:b’\xe9\xba\x9f’
瓜, unicode:29916, utf8:b’\xe7\x93\x9c’
通过tiktoken处理之后得到的Token序列是:(共11个Token)
b’\xe6\xb5\xb7’
b’\xe5\x8d\x97’
b’\xe9’
b’\xba’
b’\x92’
b’\xe9’
b’\xba’
b’\x9f’
b’\xe7’
b’\x93’
b’\x9c’
Embedding - Token变成向量
one-hot编码

比如一句话:“我饿了,你吃了么?”

one-hot的一些问题
1、维度过高,过于稀疏:
容纳3000个汉字就需要3000个3000维向量,容纳5000个汉字则需要5000个5000维向量;
2、没有体现出“距离”概念:
如果两个字之间的意思相近,那两个对应的向量求“距离”的时候,就应该更相近;
3、没有数学或逻辑关系:
最好能满足:国王 - 男人 + 女人 = 女王
需要了解的几个Embedding模型
1、Word2Vec:Google在2013年提出的概念,也是一个预训练模型
2、OpenAI Embedding Models:就是RAG那节课中,王卓然老师介绍到的OpenAI的API

3、OpenAI Clip Text Encoder:如果一段文本描述的内容,和一张图片包含的内容,是相似或相近的,则生成的向量也是相似度较高的
两只狗在草地玩球
狗狗们在草地上玩,一只和另一只相互传球
两只狗狗在雪地里玩球
科比正在训练篮球
- 我们可以通过一个模型把一个Token变成一个Embedding向量、把一个单词变成一个Embedding向量、把一句话变成一个Embedding向量、把一张图变成一个Embedding向量
这段对话中有650个字,GPT会把这些汉字转换成大概1300个Token,然后再变成1300个Embedding向量




- 把每一个Token都变成一个512的向量之后,这1300个向量只能代表这1300个Token,并不能充分的体现这段文字的语义。
Encoder & Decoder






Encoder一般用来做分析,Decoder一般用来做生成,内部核心计算模块以RNN为主





过去以RNN为核心的Encoder Decoder有以下几个重要的问题
1、信息丢失
2、无法处理较长句子
3、不能并行计算
Transformer Encoder & Decoder
带有Attention机制的Transformer Encoder







- Self-Attention之后的输出,每个向量中,除了包含对应Token的向量数据之外,还加入了上下文中其它所有Token以关联程度为系数的向量数据







带有Attention机制的Transformer Decoder



Encoder only & Decoder only



5. 新模型框架的重要尝试
Transformer的O(n^2)计算复杂度

RWKV的线性注意力机制

Mamba的选择性SSM架构

MoE 混合专家模型

8、神经网络与Transformer详解