首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >机器学习中使用了哪些类型的矩阵乘法?什么时候用的?

机器学习中使用了哪些类型的矩阵乘法?什么时候用的?
EN

Data Science用户
提问于 2020-06-11 21:35:57
回答 1查看 6.5K关注 0票数 5

我正在研究神经网络和反向传播的方程,我在方程中看到了这个符号,⊙。我认为神经网络的矩阵乘法总是涉及到两边匹配维数的矩阵。邮箱:3,3@3,2。(这就是动画片中发生的事情)。

神经网络的哪个部分使用Hadamard积,哪个部分使用Kronecker积?因为我在论文和深度学习材料中看到了哈达玛产品(⊙)的这个符号。

EN

回答 1

Data Science用户

回答已采纳

发布于 2020-06-12 02:33:05

在神经网络中有两种不同的计算方法:前馈和反向传播.它们的计算是相似的,因为它们都使用正则矩阵乘法,既不需要Hadamard积,也不需要Kronecker积。但是,有些实现可以使用Hadamard产品来优化实现。

然而,在卷积神经网络(CNN)中,滤波器确实使用Hadamard乘积的变化。

神经网络中的

乘法

让我们来看看一个简单的神经网络,它有3个输入特性,[x_1, x_2, x_3]和两个可能的输出类[y_1, y_2]

前馈

在前馈传递中,输入特征将乘以每一层的权重,从而产生输出。

\begin{bmatrix} x_1&x_2&x_3 \end{bmatrix} * \begin{bmatrix} w_{1,1} & w_{1,2} & w_{1,3} & w_{1,4}\\ w_{2,1} & w_{2,2} & w_{2,3} & w_{2,4}\\ w_{3,1} & w_{3,2} & w_{3,3} & w_{3,4} \end{bmatrix} = \begin{bmatrix} h'_1 & h'_2 & h'_3 & h'_4 \end{bmatrix}

在隐藏层,它们将通过激活函数,如果我们假设乙状结肠,那么

\begin{bmatrix} h_1 & h_2 & h_3 & h_4 \end{bmatrix} = \frac{1}{1+e^{\begin{bmatrix} -h'_1 & -h'_2 & -h'_3 & -h'_4 \end{bmatrix}}}

最后,我们将讨论输出神经元的下一组权重。

\begin{bmatrix} h_1 & h_2 & h_3 & h_4 \end{bmatrix} * \begin{bmatrix} v_{1,1} & v_{1,2}\\ v_{2,1} & v_{2,2}\\ v_{3,1} & v_{3,2}\\ v_{4,1} & v_{4,2} \end{bmatrix} = \begin{bmatrix} y'_1 & y'_2 \end{bmatrix}
\begin{bmatrix} y_1 & y_2 \end{bmatrix} = \frac{1}{1+e^{\begin{bmatrix} -y'_1 & -y'_2 \end{bmatrix}}}

反向传播通

在反向传播中,我们将通过梯度下降更新权重。通常,派生将忽略Hadamard产品的需要,只需用索引表示衍生产品,或隐含索引。但是,Hadamard产品可以在以下地方更显式地使用。

v^{new} = v^{old} - \eta \frac{\partial C}{\partial v}

\frac{\partial C}{\partial v} = \frac{\partial C}{\partial \hat{y}} \circ \frac{\partial \hat{y}}{\partial v}

\frac{\partial C}{\partial \hat{y}} = \hat{y} - y

\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)计算为(我忽略了偏倚项)

\begin{bmatrix} v_{1,1} & v_{2,1} & v_{3,1} & v_{4,1}\\ v_{1,2} & v_{2,2} & v_{3,2} & v_{4,2} \end{bmatrix} * \begin{bmatrix} h_{1} \\ h_{2} \\ h_{3} \\ h_{4} \end{bmatrix} = \begin{bmatrix} \sum v_{i,1} * h_{i} \\ \sum v_{i,2} * h_{i} \end{bmatrix}

\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}

\frac{\partial C}{\partial \hat{y}} = \hat{y} - y = \begin{bmatrix} \hat{y}_1\\ \hat{y}_2 \end{bmatrix} - \begin{bmatrix} y_1\\ y_2 \end{bmatrix} = \begin{bmatrix} \hat{y}_1 - y_1\\ \hat{y}_2 - y_2 \end{bmatrix}
\frac{\partial C}{\partial v} = \frac{\partial C}{\partial \hat{y}} \circ \frac{\partial \hat{y}}{\partial v} = \begin{bmatrix} \hat{y}_1 - y_1\\ \hat{y}_2 - y_2 \end{bmatrix} \circ \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积也是可能的。

票数 9
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/75855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档