[机器学习]ufldl笔记-convolutionalneuralnetwork-矩阵运算

WangBo_NLPR WangBo_NLPR     2023-02-07     437

关键词:

前言

  卷积神经网络的核心操作就是各种矩阵运算,在前向传播和反向传播中的各种形式的矩阵运算构成了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  查看详情