语言模型从0训练流程

1.Tokenizer

需要建立一个“词表”,负责把文本转换为词向量

如 “我喜欢你” ----> [我,喜欢,你] ----> [1, 5, 2]

词表形如:

        我---1   你---2   水---3  火---4 喜欢---5 

词表怎么构建呢?

目前的大语言模型基本采用 BPE 方法构建词表

总之,词表可以看成把文字映射为数字的哈希表,映射规则多种多样。

2.模型预训练(预训练任务)

该阶段不需要精心构建数据集,本质上是进行文本预测。经过该训练过程的LLM,会具备续写能力。

有几种预训练方法:自编码、自回归、编码解码

不同的预训练任务,会得到不同功能偏向的模型(NLG/NLU)

Bert 的预训练目标任务是:掩码预测(自编码),利于自然语言理解

T5 的预训练目标任务是:文本预测(自回归),利于自然语言生成

GLM 的预训练目标任务是:自回归空白填充(自回归+自编码),综合了NLG和NLU的优点

数据集格式:

ori = [我,爱,玩,原,神]

x=[我,爱,玩,原]

y=[爱,玩,原,神]

假设隐藏层维度128,词表大小1000

将x输入transformer,输出4x128的logits层矩阵,然后进行softmax,得到4x1000的矩阵。

第1行表示通过输入“我”,对下一个词的预测结果,改行的1000个元素对应了词表中1000个词的概率;然后与标签“爱”进行交叉熵,计算Loss。

显然,推理时从这1000个词里取概率最大的那个词作为结果。

3.指令微调

该阶段仍是进行文本预测。但输入的前半部分不计入loss。经过该训练过程的LLM,会具备问答能力。

数据集格式:

ori = [我,爱,玩,什,么,游,戏,原,神]

x = [我,爱,玩,什,么,游,戏,]

y = [爱,玩,什,么,游,戏,原,神]

输出为8x128的logits矩阵,经过softmax得到8x1000矩阵

loss = (第7行的loss+第8行的loss)/2

前半部分[我,爱,玩,什,么,游,戏]不计入loss,这就是我们的问题

后半部分[原,神]计入loss,这是模型预测的答案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值