关键词:
前言
卷积神经网络的核心操作就是各种矩阵运算,在前向传播和反向传播中的各种形式的矩阵运算构成了CNN的计算体系,本文将在卷积神经网络(Convolutional Neural Network)的背景下对相关的矩阵运算进行梳理,涉及矩阵乘积(matrix product)、元素对应乘积(element-wise product)、卷积操作(convolution)、相关操作和克罗内克积(kronecker product)等,在学习CNN的反向传播之前,我们必须先搞清楚这几种矩阵操作的计算过程,希望本文可以帮助大家理解卷积神经网络(CNN)提供一些帮助!
文章小节安排如下:
1)矩阵乘积(matrix product)
2)元素对应乘积(element-wise product)
3)卷积操作(convolution)
4)相关操作
5)克罗内克积(kronecker product)
6)总结
一、矩阵乘积(matrix product)
1.1 矩阵乘积(matrix product)定义
矩阵的乘法运算不多说了,回顾一下最基本的定义:
设 A 为 m x p 的矩阵,B为 p x n 的矩阵,则称 C = AB 为矩阵A与B的乘积,且C为 m x n的矩阵,其中矩阵C中的第 i 行第 j 列元素可以表示为:
1.2 矩阵乘积的运算规律
分配律:A(B+B) = AB + AC
结合律:A(BC)=(AB)C
二、元素对应乘积(element-wise product)
2.1 元素对应乘积(element-wise product)定义
元素对应乘积也称为Hadamard乘积(Hadamard product),矩阵A,B的Hadamard乘积定义为二者对应位置的乘积,也有人称作相关操作,记作:A⊙B
令C=A⊙B,则矩阵C中的第 i 行第 j 列元素可以表示为:
2.2 Hadamard乘积计算示意图
Hadamard乘积的计算图示如下:
2.3 Hadamard乘积的运算规律
交换律:A⊙B=B⊙A
结合律:A⊙(B⊙C)=(A⊙B)⊙C
分配律:A⊙(B+C)=A⊙B+A⊙C
参考:
Hadamard product (matrices)
https://en.wikipedia.org/wiki/Hadamard_product_(matrices)
三、卷积操作(convolution)
3.1 卷积操作(convolution)定义
卷积是一种应用非常广泛的数学计算方式,例如统计学、概率论、物理学、声学和计算机科学等。在一些领域比如信号与系统这门课中,卷积是基础理论,把卷积的概念弄清楚就可以很好的理解这门课中的其他概念了。正因为卷积在信号系统中的中哟啊行,所以很多文章都是从信号处理的角度来解释卷积。
图像也是一种信号,因此时间充裕的话,我也建议各位从信号系统的角度深入学习一下卷积概念,不仅要理解卷积的数学概念,同时也应该多关注卷积的物理意义,这样会非常有助于我们理解和研究深度学习算法。换句话说,我们不仅要知道CNN中的核心卷积操作是怎么计算的,还要知道从信号的角度分析,为什么卷积操作如此适用于CNN!
本文在这里只给出卷积操作在CNN中的定义,用于帮助理解CNN的反向传播和梯度计算(仅关注在数学上的计算过程)。关于卷积的更多知识,各位可以利用Google去学习。
卷积操作记作:A∗B
令c=A∗B,则实数值标量c可以表示为:
3.2 卷积操作计算示意图
卷积操作的计算示意图如下:
卷积操作是CNN中的核心计算模式,在后面文章中会看到,CNN在反向传播中,误差的传递依靠的就是卷积操作,所以务必要搞清楚是怎么算的!
参考:
如何通俗易懂解释卷积
https://www.zhihu.com/question/22298352
四、相关操作
4.1 相关操作定义
相关操作这个名称是在网上看到,具体的数学定义并没有查到,这里我就试着给出一个定义吧。
相关操作就是同型矩阵执行Hadamard乘积后再将所有元素相加(对应元素相乘将结果相加),得到一个实数值,符号可以记作:sum(A⊙B)
令c=sum(A⊙B),则实数值标量c可以表示为:
4.2 相关操作计算示意图
相关操作的计算示意图如下:
4.3 相关操作 or 卷积操作
在CNN的前向传播中,其实真正执行的是“相关操作”,而不是“卷积操作”,只是因为在具体实现时可以使用卷积的方式进行计算(A与B执行相关操作=A翻转180度以后再与B执行卷积操作),所以就使用了这样一个名字,所以CNN称为卷积神经网络。我们在这里一定要区分清楚CNN中的矩阵操作,但我们平时并不会过分强调到底是相关操作还是卷积操作,而是统一用“卷积”来描述,这有助于相互之间的交流(不必纠结细节)。
再来回顾一下经典的“卷积操作”:
五、克罗内克积(kronecker product)
5.1 克罗内克积(kronecker product)定义
克罗内克积也是非常好理解的,这里就引用wiki百科的定义吧:
If A is an m × n matrix and B is a p × q matrix, then the Kronecker product A ⊗ B is the mp × nq block matrix:
5.2 克罗内克积计算示意图
A is an m × n matrix and B is a p × q matrix, more explicitly of kronecker product:
5.3 example
克罗内克积的计算示例:
六、总结
矩阵运算是深度学习的重要基础,做深度学习基本就是在和各种矩阵打交道,前文只是在CNN的背景下对矩阵运算做了最基本的解释,并未深入探讨,如果想要深入研究深度学习,还死活建议抽出时间加强这方面的学习!!!
参考文献
Hadamard product (matrices)
https://en.wikipedia.org/wiki/Hadamard_product_(matrices)
如何通俗易懂解释卷积
https://www.zhihu.com/question/22298352
Convolution
https://en.wikipedia.org/wiki/Convolution
Kronecker product
https://en.wikipedia.org/wiki/Kronecker_product
[机器学习]ufldl笔记-pcaandwhitening
前言 [机器学习]UFLDL笔记系列是以我学习UFLDLTutorial(AndrewNg老师主讲)时的笔记资料加以整理推出的。内容以无监督特征学习和深度学习为主,同时也参考了大量网上的相关资料。 撰写本文的原因是... 查看详情
[机器学习]ufldl笔记-反向传播算法(backpropagation)
前言 [机器学习]UFLDL笔记系列是以我学习UFLDLTutorial(AndrewNg老师主讲)时的笔记资料加以整理推出的。内容以无监督特征学习和深度学习为主,同时也参考了大量网上的相关资料。 本文主要整理自UFLDL的“... 查看详情
[机器学习]ufldl笔记-sparsecoding(稀疏编码)
前言 [机器学习]UFLDL笔记系列是以我学习UFLDLTutorial(AndrewNg老师主讲)时的笔记资料加以整理推出的,内容以无监督特征学习和深度学习为主,同时也参考了大量网上的相关资料。 本文的理论部分主要整理... 查看详情
[机器学习]ufldl笔记-convolutionalneuralnetwork-矩阵运算
前言 卷积神经网络的核心操作就是各种矩阵运算,在前向传播和反向传播中的各种形式的矩阵运算构成了CNN的计算体系,本文将在卷积神经网络(ConvolutionalNeuralNetwork)的背景下对相关的矩阵运算进行梳理ÿ... 查看详情
[机器学习]ufldl笔记-convolutionalneuralnetwork-反向传播与梯度计算
前言 本文是我在学习卷积神经网络(ConvolutionalNeuralNetwork)时的笔记,内容涉及CNN的反向传播、梯度计算等,主要解释了反向传播中Conv层(卷积层)和池化层(Pooling层)之间误差的传递过程和... 查看详情
[机器学习]ufldl笔记-反向传播算法(backpropagation)
前言 [机器学习]UFLDL笔记系列是以我学习UFLDLTutorial(AndrewNg老师主讲)时的笔记资料加以整理推出的。内容以无监督特征学习和深度学习为主,同时也参考了大量网上的相关资料。 本文主要整理自UFLDL的“... 查看详情
[机器学习]ufldl笔记-autoencodersandsparsity
前言 [机器学习]UFLDL笔记系列是以我学习UFLDLTutorial(AndrewNg老师主讲)时的笔记资料加以整理推出的,内容以无监督特征学习和深度学习为主,同时也参考了大量网上的相关资料。 本文的理论部分主要整理... 查看详情
[机器学习]ufldl笔记-convolutionalneuralnetwork-全连接局部连接卷积与池化
前言 本文是我在学习卷积神经网络(ConvolutionalNeuralNetwork)时的笔记,主要参考资料是AndrewNg老师在UFLDLTutorial中的相关章节。关于CNN的笔记在网络上很多了,本文不再详述各种细节,只对其中容易混淆和难... 查看详情
[机器学习]ufldl笔记-sparsecoding(稀疏编码)
前言 [机器学习]UFLDL笔记系列是以我学习UFLDLTutorial(AndrewNg老师主讲)时的笔记资料加以整理推出的,内容以无监督特征学习和深度学习为主,同时也参考了大量网上的相关资料。 本文的理论部分主要整理... 查看详情
ufldl学习笔记与编程作业:linearregression(线性回归)
...。在deeplearning高质量群里面听一些前辈说。不必深究其它机器学习的算法。能够直接来学dl。于是近期就開始搞这个了,教程加上matlab编程,就是完美啊。新教程的地址是:http://ufldl.stanford.edu/tutorial/本节学 查看详情
ufldl学习笔记与编程作业:softmaxregression(vectorization加速)
...。在deeplearning高质量群里面听一些前辈说,不必深究其它机器学习的算法,能够直接来学dl。于是近期就開始搞这个了。教程加上matlab编程,就是完美啊。新教程的地址是:http://ufldl.stanford.edu/ 查看详情
ufldl教程笔记及练习答案三(softmax回归与自我学习***)
1:softmax回归当p(y|x,theta)满足多项式分布,通过GLM对其进行建模就能得到htheta(x)关于theta的函数,将其称为softmax回归。教程中已经给了cost及gradient的求法。须要注意的是一般用最优化方法求解參数theta的时候,採用的是贝叶斯学... 查看详情
ufldl讲义十五:从自我学习到深层网络
注:本讲义来源为NG教授的机器学习课程讲义,详见http://deeplearning.stanford.edu/wiki/index.php 查看详情
机器学习的资源
DeepLearning(深度学习)ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):一ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):二Bengio团队的deeplearning教程,用的theano库,主要是rbm系... 查看详情
机器学习大神博客汇总
1.?JackCuihttps://cuijiahua.com/蓝亚之舟http://zhoushuo.net/xuzhongyou博客https://xuzhongyou.github.io/4.博客——博主(大奥特曼打小怪兽)https://www.cnblogs.com/zyly/苏剑林https://spaces.ac.cn/deeplearningweeklyhttps://www.deeplearningweekly.com/新智元https://mp.sohu.com/... 查看详情
[转]机器学习深度学习数据挖掘各种资源整理
DeepLearning(深度学习):ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):一ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):二Bengio团队的deeplearning教程,用的theano库,主要... 查看详情
《南溪的目标检测学习笔记》——深度学习的假设
1拟态假设1.1视觉神经元假设——Convolution卷积是最常见的视觉神经假设;Convolution的操作也模拟了视神经感受野的特点; 查看详情
ufldl讲义二十:卷积特征提取
本讲义来源为NG教授的机器学习课程讲义,详见http://deeplearning.stanford.edu/wiki/index.php 查看详情