Chenxiao Ma | March 8, 2018
向量函数是指输入或者输出都为向量的函数。向量函数 的导数是著名的雅可比矩阵:
根据定义, 的微小变动等于导数乘 的微小变动, 此时的乘法是矩阵点乘。
矩阵函数是指输入或者输出都为矩阵的函数, 矩阵函数 的导数仍然要满足 。 此时, 是与 大小相同的矩阵, 是与 大小相同的矩阵。那么 应该是一个张量, 此时的乘法是张量点乘。 假设 的大小是 , 的大小是 , 那么这个(广义)雅可比张量的大小是 。
很直观地,这个四维张量的每一个元素都对应了一个 中的元素对一个 中的元素的偏导。
神经网络中使用到的矩阵函数几乎都是简单的线性变换,即 。 反向传播时通常也并不需要计算出雅可比张量,而是要把它应用在链式法则中, 与其他的偏导数相乘。比如神经网络最终的损失函数是 ,更新 时, 只需要知道 , 也就是 即可。 假如 已知,那么此时这个乘积其实可以直接用 计算。 假设 的大小为 , 的大小为 , 的大小为 ,证明如下:
首先损失函数 是一个常数, 所以 是一个大小为 的张量, 是一个大小为 的张量。 对于 的每一个元素:
因为 , 所以 是 的第 行与 的第 列对应元素相乘的和, 当 时, 并不参与 的计算,对应的偏导数为 , 也就是说,这个矩阵只有第 列的元素不为 。
又因为
所以
根据张量乘法的定义
自然
同理
在最简单的 Word2vec 模型中,我们计算每一个单词周围的一些单词出现的可能性, 把所有这样的可能性乘起来得到整个句子的可能性。最大化这个可能性就是我们的目标。
假定词向量是维度为 的列向量。词表中单词总数为 。
为了更新词向量 和 ,我们需要求出 对他们的导数。 先定义 , 那么我们已知,。 直接应用上面的结果得到: