先考虑一个样本(输入和激活都是向量而不是矩阵)
正向传播:
g是激活函数,例如tanh
输出的激活函数是softmax,损失函数是交叉熵
损失函数对所有时间步求和
以上五个式子就是正向传播中计算输出和损失用到的所有公式,通过对他们链式法则求导,我们也可以推出反向传播的所有公式
反向传播:
当输出的激活函数是softmax,损失函数是交叉熵时,损失函数对线性输出的偏导数可以简单的写成:
(1)
式(1)左边实际上表示一个向量,其第i个元素对应
下面证明公式(1)
由于
可见损失函数是向量的函数, 对的“导数”实际上是一个向量(一阶张量),为了方便表述,我们只计算这个向量的第j个元素,即对第j个元素求偏导得到
(2)
由于
对的导数是向量对向量的导数,实际上是一个矩阵(二阶张量),为了方便表述,我们只写出对求偏导的结果。
式中的是Kronecker delta符号,在i=j时为1,否则为0. 我们用和替换上式中的对应项,得到
(3)
现在考虑式(1)中对的导数,也只考虑第i项即对的偏导数。由于我们在式(2)中已经得到了对的偏导数,而在(3)中得到了对的偏导数,根据偏导数的链式法则
即证明了式(1). 上式的推到中用到了的性质,以及这一特点(作为表示分类的one-hot 0-1向量,只有一个元素为1,所以这里的求和为1)。
下面我们继续推导反向传播中的其他公式。
根据公式,我们可以由得到参数和的导数
吃完饭回来继续写。。。