R20 · 让写入、保留和读出有不同职责
钥匙事实经过无关事件时应尽量保留;只调学习率或裁剪并不能替状态作这种选择。本页把写入、保留和读出拆成可分别学习的职责。
状态 b0
先把钥匙任务中的写入、无关事件中的保留、查询时的读出三项职责分开。
状态 b1
cell图出现两条相加支路:旧内容保留与候选写入;当前读出另走一支。
状态 b2
门名落到各条通路:f调保留,i调写入,o调本步读出,g提供候选内容。沿cell与hidden的分叉理解二者职责。
状态 b3
备用展开把当前输入和旧hidden接到门网络;门值成为可学习计算的输出,而非教师指定的语义开关。
公式与算例详情
常用带 forget gate 的 LSTM 同时维护 cell state $c_t$ 与 hidden state $h_t$。令 $z_t=[h_{t-1};e_t]$,则
$$f_t=\sigma(W_fz_t+b_f),\quad i_t=\sigma(W_iz_t+b_i),\quad o_t=\sigma(W_oz_t+b_o),$$ $$g_t=\tanh(W_gz_t+b_g),$$ $$c_t=f_t\odot c_{t-1}+i_t\odot g_t,\qquad h_t=o_t\odot\tanh(c_t).$$
$f$ 控制旧 cell 的保留,$i$ 控制候选写入量,$o$ 控制本步读出量;$g$ 是候选内容,通常不把它叫作第四个 sigmoid 门。这里$\odot$表示逐元素乘法。三个门的分量在0与1之间,候选内容在−1与1之间,cell 本身可以累积到此范围之外。权重与偏置都由目标损失学习,不是教师替模型手动设定开关。
下一页使用二维构造例子。取 $h_{t-1}=(0.2,-0.1)$、$e_t=(1,0)$,故 $z_t=(0.2,-0.1,1,0)$。为完整复算,令四个 $W$ 都等于
$$U=\begin{bmatrix}1&0&0.5&0\\0&1&0&0.5\end{bmatrix},\qquad Uz_t=(0.7,-0.1).$$
各偏置分别取 $b_f=(\ln9-0.7,-\ln4+0.1)$、$b_i=(-\ln9-0.7,\ln3+0.1)$、$b_o=(\ln4-0.7,0.1)$、$b_g=(\operatorname{atanh}(0.5)-0.7,-\operatorname{atanh}(0.2)+0.1)$。因此仿射输出及非线性结果为:
| 分支 | 本次仿射输出 | 门/候选向量 |
|---|---|---|
| forget | $(\ln9,-\ln4)$ | $(0.9,0.2)$ |
| input | $(-\ln9,\ln3)$ | $(0.1,0.75)$ |
| output | $(\ln4,0)$ | $(0.8,0.5)$ |
| candidate | $(\operatorname{atanh}(0.5),-\operatorname{atanh}(0.2))$ | $(0.5,-0.2)$ |
二维坐标未预先指定盒子颜色等语义。参数是为了课堂计算指定的,并未训练;改变输入或旧 hidden,门值仍会按上述函数改变。参考解释:V-RNN PDF p107–115,尤其 p112;这里展示通行的 forget-gate 形式,不把它等同于1997年原始论文的每个历史细节。
原课页采用记录:M13 LSTM的门到底怎样工作。页码均按PDF物理页计。
继续学习
本页自学核对:先复算给定门值,再改变保留门;整理成记忆任务职责与 cell 轨迹,不将手动改门称为训练。
若门的职责与公式仍对不上,可进入《状态在流动,梯度可以停在边界》;动手时打开LAB01的“C · 共享参数的梯度到底加了几次?”:核对i/f/g/o门序、cell与hidden路径,再看固定门值算例和实际可学习门值的区别。 实施范围见实验路线C。