这里放着的不是训练好的模型,是一个还不会说话的模型。
它由随机参数初始化,一个字都不认识。按下「开始训练」,你会看到它从吐乱码, 到学会换行和角色名,再到说出像样的对话——整个过程发生在你这台设备的浏览器里, 没有服务器、没有云端 API、不联网。
训练步数你自己定。训练会持续占用你的 CPU,随时可以暂停。
每 100 步自动采样一次,用同一句开头「甲:今天天气」,看看它当时能说出什么。
还没有开始训练。按下「开始训练」后,这里会一条条长出它各个阶段的「作文」。
给个开头,让当前状态的模型接下去写。训练步数越多,接得越像话。
没有黑箱。四件事,循环往复。
把一串字符编码成数字,查表变成向量,加上位置信息,穿过 3 层自注意力网络, 最后对 1569 个候选字打出分数。模型此刻的“信念”就是这些分数。
拿它预测的分数和真实下一个字比,算交叉熵。刚开始是 ln(1569)≈7.36——
相当于在全词表里瞎猜。曲线下降的每一步,都是它少错了一点。
从 loss 出发,沿计算图反向走,用链式法则算出每个参数该背多少锅。 这一步是手写的自动微分,全部参数量约 —。
Adam 优化器按每个参数的历史梯度调整步长,把它们往“更没错”的方向挪一小步。 然后回到 01。所谓训练,就是这个循环跑几千次。