我正在研究神经网络和反向传播的方程,我在方程中看到了这个符号,⊙。我认为神经网络的矩阵乘法总是涉及到两边匹配维数的矩阵。邮箱:3,3@3,2。(这就是动画片中发生的事情)。
神经网络的哪个部分使用Hadamard积,哪个部分使用Kronecker积?因为我在论文和深度学习材料中看到了哈达玛产品(⊙)的这个符号。
发布于 2020-06-11 18:33:05
在神经网络中有两种不同的计算方法:前馈和反向传播.它们的计算是相似的,因为它们都使用正则矩阵乘法,既不需要Hadamard积,也不需要Kronecker积。但是,有些实现可以使用Hadamard产品来优化实现。
然而,在卷积神经网络(CNN)中,滤波器确实使用Hadamard乘积的变化。
神经网络中的
让我们来看看一个简单的神经网络,它有3个输入特性,[x_1, x_2, x_3]和两个可能的输出类[y_1, y_2]。
在前馈传递中,输入特征将乘以每一层的权重,从而产生输出。
在隐藏层,它们将通过激活函数,如果我们假设乙状结肠,那么
最后,我们将讨论输出神经元的下一组权重。
在反向传播中,我们将通过梯度下降更新权重。通常,派生将忽略Hadamard产品的需要,只需用索引表示衍生产品,或隐含索引。但是,Hadamard产品可以在以下地方更显式地使用。
\frac{\partial C}{\partial v} = \frac{\partial C}{\partial \hat{y}} \circ \frac{\partial \hat{y}}{\partial v}。
\frac{\partial \hat{y}}{\partial v} = \frac{1}{1+exp(v^Th + b)} \circ (1 - \frac{1}{1+exp(v^Th + b)})。
让我们来看看为什么我们可以将最后一个方程定义为Hadamard积。(v^Th + b)计算为(我忽略了偏倚项)
\frac{\partial \hat{y}}{\partial v} = \frac{1}{1+exp(v^Th + b)} \circ (1 - \frac{1}{1+exp(v^Th + b)}) = \begin{bmatrix} \frac{1}{1 + e^{\sum v_{i,1} * h_{i}}} \\ \frac{1}{1 + e^{\sum v_{i,2} * h_{i}}} \end{bmatrix} \circ \begin{bmatrix} 1 - \frac{1}{1 + e^{\sum v_{i,1} * h_{i}}} \\ 1 - \frac{1}{1 + e^{\sum v_{i,2} * h_{i}}} \end{bmatrix} 。
如您所见,这两个步骤中的所有矩阵乘法都是简单的矩阵乘法,但是Hadamard积如果使用,可以简化表示。
CNN在通过权重之前增加了一个额外的过滤步骤。它通过矩阵传递一个过滤器,得到一个值,该值表示值周围的一个邻域。滤波器取Hammond乘积,然后对生成矩阵的所有元素进行求和。
例如,如果我们有绿色的矩阵
用卷积滤波器
然后,得到的运算是按元素进行的乘法和加法,如下所示。这个内核(橙色矩阵) g被移动到整个函数(绿色矩阵) f上。在每一步执行哈蒙德产品,然后总结元素。
注: Hammond积通常是为完全相同尺寸的矩阵定义的,这在CNN中是松弛的,因为滤波器连续地在图像中移动。在可以使用不同填充技术的图像边缘执行Hammond积也是可能的。
https://datascience.stackexchange.com/questions/75855
复制