小型Transformer训练与注意力观察 / 微型 Transformer 实验室 ====================================== 直接打开 index.html。作品是一个完整文件,字体、代码、原创训练语料、真实训练得到的默认权重均已内嵌;无需安装、账号、API、CDN或网络。 第一次使用 1. 默认模型已实际训练1200步。输入“风吹过海面,海面有”,看“光”的概率;改为“雨落在花园,花园有”,观察结果。 2. 在上方选择一个查询字和注意力头,或直接点击注意力矩阵的行。蓝色表示实际权重,下三角之外是被因果掩码排除的位置。 3. “保留当前为对照”记录当前权重。继续训练200步,图中的细线与红条分别来自对照、当前权重。实际前向路径上的参数执行真实反向传播。 4. 用温度、top-k、top-p和采样种子生成短句。温度0为贪心;种子0是有效种子。同一完整实验和采样设置可复现。 5. 粘贴或导入自己的UTF-8短语料,点“用这段语料重建”,从新词表和随机权重开始训练;当前示例可先保存。更换语料后不能继续沿用词编号不兼容的旧权重。 完整流程与文件 - 保存实验JSON包含原文、全部权重、Adam一二阶矩、训练步数、随机状态、对照权重、生成结果/条件和设置。载入后可继续同一训练。 - 一批训练是一项撤销记录。停止或页面隐藏保留已经完成的步数,训练不在隐藏页面继续。 - 语料文本框是草稿;“重建”才应用。未应用草稿不会偷偷成为训练数据。 - 下次重建种子只作用于下一次初始化,当前模型的来源种子保持原记录。 - 默认不自动覆盖恢复暂存。需要时点“恢复暂存”;暂存失败时仍可保存完整JSON。 - 实验图PNG与网页Canvas共用同一绘图函数;概率CSV为原始softmax,不混用筛选后的采样概率。 - 注意力CSV包含模型步数、头/位置/字符、原始缩放分数、softmax权重与观察干预设置。 - 训练CSV含实际批次交叉熵和裁剪前梯度范数。TXT记录模型、假设、输入、采样条件与来源。 - 独立测试文本计算逐字损失并导出逐字CSV。未知字符会明确拒绝这种评估,避免制造不可比的困惑度。 科学模型 单层decoder-only Transformer变体;24维表示,2个12维注意力头,24个学习位置向量;pre-LN残差,48维ReLU前馈,最终LayerNorm,独立输出矩阵。词表按Unicode码点构造,包含UNK;这不是BPE,也不是通用基础模型的分词方式。 完整手写前向与反向传播,Adam β1=.9、β2=.999、ε=1e-8,偏差校正,全局梯度L2裁剪至1。训练采用随机连续16字符窗口,平均下一字交叉熵,显示自然对数单位nat。无dropout、外部训练数据或外部推理服务。 固定语料窗口损失在1200步中从3.6498054592降到0.2081155975,这是原创建模示例的拟合,不是留出泛化成绩。完整反向传播的54处参数有限差分最大绝对误差约5.96e-11。实际证据见review。 “允许看未来”“去掉位置向量”“清零一个注意力头”只改变上方诊断图;正常训练和生成始终使用因果掩码、位置和双头。注意力权重不等于语言意义的因果解释。模型不具通用语言、知识或事实问答能力。 测试文本按非重叠24字符窗口评估,窗口边界上下文重置;结果不与其他分词、上下文或标准基准直接比较。 容量 32—6000个语料码点、2—95个不同语料字符,加UNK;输入全文最多240码点,只有最后24个参与观察/生成上下文;单批训练1—1200步,总计20000步;生成最多200码点;独立测试文本最多1000码点;完整实验JSON最大6MiB。最近12项可撤销更改、最近501条训练记录。暂存上限1.7MB,超限建议使用完整文件。 来源 https://arxiv.org/abs/1706.03762 — 原论文中的注意力、掩码、前馈机制。本作架构缩小且改为pre-LN单decoder,不是论文完整复现。 https://arxiv.org/abs/1412.6980 — Adam更新与偏差校正。 https://arxiv.org/abs/1607.06450 — Layer Normalization。 字体为Noto Sans CJK的改名子集,许可另附;用户新文字由设备字体补全。 验证范围 实际执行最终HTML的内嵌模型、Canvas绘图、训练、导出与读取器;同源PNG已经查看并完整解码。未进行浏览器整页、CSS排版、设备实际输入、文件下载对话框或首次离线双击验收。同源图面不是浏览器截图。 独立复核后的边界补充:采样在除温度之前先减最大logit,合法的极小正温度仍输出有限概率;困惑度exp(NLL)超范围时返回空值并明确标记,NLL不截断。完整实验严格检查顶层、设置、参数bank、训练及采样记录的字段和范围,未知字段拒绝。Adam与随机状态整步提交,失败不留下部分更新。训练窗为16字符,位置容量为24;第17—24位置向量维持初始化,不应理解为所有24个位置都获得了训练。