R10.md · 可读全文

这里保留原文的中文、公式标记、代码和链接。可直接交给 Agent 读取,也可选取下方原文复制。此入口返回 HTML;原始 .md / .py 文件仍保留,完整候选包同时包含 UTF-8 原件。

# R10 · 同一份 logits,怎样变成一次训练损失?

R09已连接分数与分布。这条延伸只取输出接口做一次手算,检查真实下一词如何形成loss,并把信号送回产生分数的参数。

<span id="r10-b0"></span>

## 状态 b0

前缀已到I gave her a,book是批改目标。先区分已知输入、三个候选和正确标签。

<span id="r10-b1"></span>

## 状态 b1

分数指数化为1、2、3,再除以总和6。观察同一列从logit变成候选概率。

<span id="r10-b2"></span>

## 状态 b2

从book的概率取负对数得到loss,再读p减one-hot的梯度。目标项的负号解释了局部下降方向如何提高其相对分数。

实际计算softmax时,可先减去这一组最大logit再指数化;各候选共同平移不改变概率,但能降低数值溢出风险。

## 公式与算例详情

本例将前缀推进到I gave her a,并另设her、a、book三候选;它是独立输出接口手算,不与R09五候选图当作同一次前向。

为只关注输出接口,设三个候选的logits为$[0,\ln2,\ln3]$。softmax先指数再除以和,得到$[1/6,1/3,1/2]$。真实目标为第三个候选book,损失$L=-\ln p(book)=\ln2\approx0.6931$ nats。

对logits求导为$p-y$,即$[1/6,1/3,-1/2]$。这表明梯度下降在输出接口上会推动目标相对得分增加;实际共享参数更新还同时影响其他样本,不意味着每一次更新都会提高所有预测准确率。损失评估真实目标概率,不等于只判断argmax是否猜中;生成选择是另外一步。

原课页采用记录:[M07 LM究竟预测什么](sources.html#M07)、[M10 RNN怎样训练](sources.html#M10)。页码均按PDF物理页计。

### 继续学习

[本页自学核对](lecture.html#read-R10):沿给定 logits 复算 softmax 与正确词 loss;整理成概率、归一化和损失。

若loss的数值会算,却不清楚它与生成好坏的关系,可进入[《把预测、训练与评价摊在同一张样本表上》](https://codingai-lec05.pages.dev/course/knowledge/objectives-and-evaluation.html);动手时打开[LAB01](https://deepnote.com/workspace/ise3309jingao-5ba66b0a-4283-4f5a-ae06-3f68d3201e99/project/Fall-26-Lecture-05-841ec8e7-e352-4840-b628-d3742b03d6d0/notebook/LAB-01-ec403d28cc2c400ba661cd270588669f?utm_content=ec403d28cc2c400ba661cd270588669f&utm_source=openai&utm_medium=mcp&utm_campaign=openaimcp&utm_term=get_notebook)的“B · 同一预测目标,三个模型;训练一次,生成多次”:固定同一预测目标,比较NLL与自由生成输出;核对梯度更新的是模型参数。 实施范围见[实验路线B](experiments.html#experiment-B)。