Let's build GPT: from scratch, in code, spelled out.
Andrej KarpathyYouTube ↗
延伸阅读 1
字幕解读
视频从字符级文本预测开始,构造训练数据并实现小型语言模型,随后逐步引入 token 与嵌入、因果自注意力、多头注意力和 Transformer 块,形成 GPT。讲解重点是模型如何利用此前上下文预测下一个 token,并通过训练损失改进生成;示例规模与完整 ChatGPT 系统相距甚远。
自动字幕 · 引文按字幕原文展示,可点时间戳回看片段。
内容要点
- 语言模型通过给定上下文预测后续 token 来学习序列中的统计规律。
- 因果自注意力让位置聚合此前 token 的信息,并通过加权组合建立上下文表示。
- 视频逐步扩展玩具模型到 Transformer/GPT 结构,训练目标与完整产品系统仍有差距。
视频章节 6
- GPT 与语言模型任务
- 训练模型与评估损失
- 序列模型与上下文
- 嵌入表示
- Transformer 结构与堆叠
- 生成与结语
具体观点与证据 4
分词器词表大小与序列长度存在权衡:较小词表通常需要更长的 token 序列。
教材比较字符编码与 GPT 子词编码,不指定任何词表大小普遍最优。
trade off the code book size and the sequence lengths自回归训练必须屏蔽未来位置,防止下一 token 预测直接偷看答案。
适用于此处解码器的因果预测;编码器可以允许双向注意力。
nodes from the future never talk to the Past because they would give away the answerDropout 每轮更换随机屏蔽集合,可理解为训练共享参数的子网络集合,测试时启用完整网络。
教程将其用于扩大模型时的正则化;完整网络推理是集成直觉,不是所有非线性网络的精确平均。
training an ensemble of sub networks and then at test time everything is fully enabled预训练得到文本续写器;要转为问答助手,还需监督示范与人类反馈等后续训练。
教程实现的是小型预训练 GPT,并未复现 ChatGPT 的完整后训练流程。
it takes the model from being a document completer to a question answerer补充字幕原文 2
语言模型接收序列前缀并完成后续内容,核心任务是序列延续。
give it the start of a sequence and it completes the sequence自注意力通过加权聚合此前位置的信息形成当前位置表示。
you can do weighted aggregations of your past Elements解读边界
实现针对教学采用小数据、小模型与简化训练流程,不能代表 ChatGPT 的真实数据、规模、部署或全部后训练流程。