S07.md · 可读全文

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

# S07 · 共享参数,变化的状态

整机中的状态更新可以展开为相邻的两次调用。通过一个精确二维算例,参数共享不再只是一个名词。

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

## 状态 b0

给定Wx=I2、Wh=.5I2、b=0和h0=0;第一步h1=(.761594,0),第二步先保留待算项。

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

## 状态 b1

第二步线性和为(.380797,1),第一坐标来自.5h1;tanh后的第一坐标仍待学生计算。

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

## 状态 b2

h2=(.363399,.761594),同样参数接收不同输入和旧状态。

<span id="s07-b3"></span>

## 状态 b3

时间展开的两个更新节点使用同一θ;不同位置的损失沿各依赖路径累积到共享参数。

## 公式与算例详情

二维独立教学算例:$h_t=\tanh(W_xe_t+W_hh_{t-1})$,$W_x=I$、$W_h=0.5I$、$h_0=(0,0)$,无bias。设$E(\text{我})=(1,0)$、$E(\text{昨天})=(0,1)$,则$h_1=(\tanh1,0)=(.761594,0)$;第二步preactivation为$(.380797,1)$,$h_2=(.363399,.761594)$。显示数值四舍五入,复算用完整精度。

参数$W_x,W_h,E$在不同时间步共享,状态$h_t$由本次序列的前缀产生。前向读一个新词改变状态,不等于更新模型参数;训练才通过损失更新共享参数。这里没有规定两个坐标分别代表人物或时间,不能手工命名语义后冒充已学习表示。

本页只展示前两步,后面四个源token仍需继续处理才形成最终源摘要。此二维算例的向量不与后续三源attention或四维Transformer block拼成一次完整运行。已知源句可以使用双向编码;目标生成的未来token尚未知,不能用目标未来反向编码来假装合法生成。

多位置损失图中的红箭头表示梯度依赖,更新节点不是各有一组独立参数。共享参数梯度是它在展开图中各次使用所贡献的梯度之和;不同时间步状态则由本次输入和前态决定。

### 继续学习

[状态在流动,梯度可以停在边界](https://codingai-lec05.pages.dev/course/knowledge/recurrent-state-and-credit.html) · [LAB01:C · 共享参数的梯度到底加了几次?](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)

保留的完整推导:[R14](course/R14.html) · [R15](course/R15.html) · [R16](course/R16.html) · [R22](course/R22.html)。