循环神经网络架构详解
1. 时间反向传播(Backpropagation Through Time,BPTT)
在训练循环神经网络时,损失函数的构建是关键步骤之一。我们将不同时间戳上正确单词的softmax概率的负对数聚合起来,从而得到损失函数。假设输出向量$y_t$可以表示为$[\hat{y} {1t} … \hat{y} {dt}]$,首先使用softmax函数将其转换为一个包含$d$个概率的向量:
$[\hat{p} {1t} … \hat{p} {dt}] = Softmax([\hat{y} {1t} … \hat{y} {dt}])$
如果$j_t$是训练数据中时间$t$处真实单词的索引,那么所有$T$个时间戳的损失函数$L$的计算公式如下:
$L = - \sum_{t=1}^{T} log(\hat{p}_{j_t t})$
损失函数关于原始输出的导数可以通过以下公式计算:
$\frac{\partial L}{\partial \hat{y} {kt}} = \hat{p} {kt} - I(k, j_t)$
其中,$I(k, j_t)$是一个指示函数,当$k$和$j_t$相同时为1,否则为0。
由于不同时间层之间存在权重共享的情况,这会对更新过程产生影响。为了处理这个问题,我们采用一种特殊的反向传播算法——时间反向传播(BPTT)。具体步骤如下:
- 步骤一:前向传播 :按时间顺序依次输入数据,计算每个时间戳的误差(以及softmax层的负对数损失)。
-
超级会员免费看
订阅专栏 解锁全文
4878

被折叠的 条评论
为什么被折叠?



