我了解神经网络的反向传播算法,以及错误如何在层中反向传播。也就是说,我知道给定一个 3 层前馈网络,W1 的变化量取决于第 2 层和第 3 层的权重,以及它们的激活函数的导数。
问题:当您的第一层是嵌入层(即,考虑使用手套初始化嵌入矩阵)时,网络如何使用反向传播更新该矩阵?您如何将该层表示为由输入和一些权重矩阵组成的方程?
我了解神经网络的反向传播算法,以及错误如何在层中反向传播。也就是说,我知道给定一个 3 层前馈网络,W1 的变化量取决于第 2 层和第 3 层的权重,以及它们的激活函数的导数。
问题:当您的第一层是嵌入层(即,考虑使用手套初始化嵌入矩阵)时,网络如何使用反向传播更新该矩阵?您如何将该层表示为由输入和一些权重矩阵组成的方程?
嵌入层实际上是一个线性层。它使用矩阵乘法将输入映射到输出,乘法后没有任何激活函数。因此,反向传播与线性层完全一样。
那我们为什么不直接称它为线性层呢?
在理论层面,嵌入层对输入执行矩阵乘法。但是,在实践中,编码实现略有不同。这是因为输入作为一个类别是用 one-hot 方式编码的,并且矩阵乘以 one-hot 编码向量就像查找一样容易,因此不需要乘整个矩阵。