目录
一、基础知识
1.1 如何用数据表示文字(语义建模方法)
一般有独热编码(One-hot Encoding)和词嵌入(Word Embedding)两种方法。
1.1.1 独热编码(One-hot Encoding)
这是一个比较朴素的思想,将每个字表示为一个高维稀疏向量,其中只有对应类别的位置为1,其余为0,但缺点也是显而易见的,如图。
通俗来说就是像给每个学生分配唯一的学号(如2023001),仅用于标识身份,无法反映学生之间的关系。
1.1.2 词嵌入(Word Embedding)
将单词映射到低维稠密向量,向量中的每个值表示某种潜在语义特征。
通俗来说像根据学生的兴趣、成绩、性格等生成一份“综合档案”,档案相似的学生可能有共同点(如都喜欢玩原神)。
1.2 输入文字常见的三种输出
- 每个输出对应一个值
- 所有词输出一个值
- 输入输出长度不对应
本节概论只说前两种,后一种在生成任务细说。
二、序列数据处理模型
2.1 RNN(循环神经网络)
一图搞懂RNN
- 绿色 “model” 单元:代表 RNN 的一个处理单元,依次处理序列中的每个元素(如词语)。每个单元接收当前输入(如 “这”“爱”“得”)和前一时刻的记忆(“传家宝”),输出当前元素的属性(如词性:代词、名词、动词)。
- 输入与输出:
- 第一个单元处理 “这”,输出为 “代词”。
- 第二个单元处理 “爱”,输出为 “名词”;第三个单元再次处理 “爱”,结合记忆输出为 “动词”;第四个单元处理 “得”,输出为 “动词”。
- 这种变化体现了 RNN 根据上下文(通过记忆单元传递信息)动态判断词语属性的能力。
- “传家宝”(记忆单元):图中 “传家宝” 表示 RNN 的记忆向量,用于保存序列中先前元素的信息。例如,处理后续词语时,会结合之前传递的 “记忆”,使模型能感知上下文。如不同位置的 “爱” 因上下文不同(通过记忆单元传递的信息),被判断为不同词性(名词或动词)。
本质上就是可以利用“传家宝”处理词性不同的问题,但RNN有个弊端就是在处理长距离依赖时,因记忆传递不畅而容易丢失关键信息的缺陷,无法很好地捕捉和利用远距离的上下文关联。
2.2 LSTM(长短期记忆网络)
一图搞懂LSTM
主要是有门控机制做决策官。
2.3 Transformer
总体模型架构
核心是自注意力机制,那么注意力机制和自注意力机制有什么区别?
举个例子:
总结来说,自注意力是注意力机制的一种特殊形式,专攻序列内部的关系挖掘,而普通注意力更擅长处理跨序列的关联。自注意力让模型像人类一样,通过上下文理解每个词的含义。
2.3.1 注意力计算
什么是注意力?说白了就是一种权重分配机制
对于注意力计算有两种方法
第一种方法比较朴素,即与
做点乘得到
,这个方法的缺点就是相乘结果始终是一个固定值,缺乏灵活性。
第二种方法是本节的核心之处,动态分配权重,自注意力机制。
2.3.2 自注意力机制
简单示例:
注意力机制可以类比为图书馆的智能推荐系统:当你想找一本关于“如何暴富”的书(Query),图书管理员会将你的需求与所有书的标题(Key)逐一比对,计算匹配度(如《致富思维》得90分),并通过除以书名长度()防止复杂书名干扰结果;接着用softmax将分数转化为权重(如80%关注《致富思维》),最后按权重融合相关书籍的内容(Value),生成一份综合“暴富指南”。整个过程就像管理员动态筛选并整合信息,精准匹配你的需求。
计算过程:
要注意的维度问题:
2.3.3 多头自注意力机制
自注意力机制和多头自注意力机制的联系与区别
简单理解就是并行计算拼接结果提高效率
技术细节
三、Bert具体原理
我们来通俗地解释一下transformer
首先是Encoder,这其实就是一个特征提取器,例如Bert
1.词嵌入
2.编码过程
其次是Decoder
1.解码过程
2.文字生成
要搞清楚一个模型,需要紧抓这个模型的输入和输出。
3.1 迁移学习
算力资源充足的大佬们负责搞定预训练任务,然后捣鼓出来的特征提取器给我们微调(且加上我们具体任务时的分类头)即可。
3.2 Bert模型结构
这个就是迁移学习的具体应用,加了个池化层而已。
3.3 Bert的输入输出
- Token - Embeddings 词编码
- Segment - Embeddings 这个词具体在哪个句子(逗号/句号隔开算一个句子)
- Position - Embeddings 给每个词加上座位号
- [CLS] - > Classification 理解成Java里的类 给每个具体的句子打标识符
- [SEP] - > 逗号/句号
本小节结束