[机器学习]ufldl笔记-反向传播算法(backpropagation)

WangBo_NLPR WangBo_NLPR     2023-02-26     778

关键词:

前言

  [机器学习] UFLDL笔记系列是以我学习UFLDL Tutorial(Andrew Ng老师主讲)时的笔记资料加以整理推出的。内容以无监督特征学习和深度学习为主,同时也参考了大量网上的相关资料。
  
  本文主要整理自UFLDL的“Backpropagation”章节的笔记,结合笔者的一些心得对内容进行了补充,并纠正了几处错误。反向传播的本质是利用微分的链式法则高效计算梯度,是基于计算图的算法的优化的关键!网上有很多关于反向传播算法的资料,讲解都十分清晰透彻(文章末尾会给出资料链接),所以本文不再重复讲解,只针对UFLDL-Backpropagation中的例子进行补充完善,以便初学者更容易理解。
  
  文章小节安排如下:
  1)Example 1: Objective for weight matrix in sparse coding
  2)Example 2: Smoothed topographic L1 sparsity penalty in sparse coding
  3)Example 3: ICA reconstruction cost
  4)结语
  5)参考资料
  
  

一、Example 1: Objective for weight matrix in sparse coding

1.1 Objective Function

  


  这里式子是Sparse Coding中的目标函数,第一项为重构项(reconstruction term),第二项是稀疏惩罚项(sparsity penalty term)。
  我们简单复习一下,在这个式子中,A是由基向量组成的矩阵(一组超完备基):
  
  s是系数向量:
  
  Sparse Coding的目标就是学习出 x 的一个高度拟合的近似表达式,具体来说就是找到一组超完备(over-complete bases)和一个系数向量,重构输入:
  
  

1.2 Computational Graph

  


  将目标函数的式子看作一个神经网络,就可以利用反向传播算法计算网络中任何一个结点的偏导数。

1.3 Activation Function

  


  这里给出了激励函数和加权和z,其实神经网络的前馈计算也就是输入向量s、权重矩阵A、激励函数f三部分。
  

1.4 Delta

  


  这里想强调的有两点,
  第一,只要一个式子可以展开成神经网络的图结构,那么每一层神经节点的Delta和每一个权重矩阵的偏导数的计算形式就都是一致的;
  第二,一定要学会向量化计算的技巧和思维方式。
  

1.5 Gradient

  


  
  

二、Example 2: Smoothed topographic L1 sparsity penalty in sparse coding

2.1 Objective Function

  


  这里式子是Topographic Sparse Coding中目标函数的L2 sparsity penalty(UFLDL中说是L1是不对的),其中V是分组矩阵,s是系数向量(也就是最后学习到的特征向量),该惩罚项的目的是希望学习得到一组有某种“秩序(orderly)”的特征集,也就是希望相邻的特征(adjacent features)是相似的。
  不过我觉得这个式子不太对,因为在惩罚项中,第一步应该计算的是s各项的平方,所以这样写更合适:
  
  

2.2 Computational Graph

  


  UFLDL中的计算图将第二个隐层的计算标注为ss T并不恰当,其实是s中各项的平方。
  

2.3 Activation Function

  


  我们将第一层的激励函数看作是f(x)=x,第二层的激励函数看作是f(x)=x^2。
  注意,UFLDL中的表把layer1和layer2写反了。

2.4 Delta

  

2.5 Gradient

  


  

三、Example 3: ICA reconstruction cost

1.1 Objective Function

  


  这里式子是ICA(Independent Component Analysis)中目标函数的重构项(reconstruction term),其中W是权重矩阵,x是输入向量。
  

2.2 Computational Graph

  


  

2.3 Activation Function

  


  注意,将上述目标函数看作是一个神经网络,应该是有5个Layer,4个Weight matrix,但UFLDL中只写了4个Layer,似乎是不对的。
  

2.4 Delta

  


  

2.5 Gradient

  计算F关于W的梯度,首先计算F对网络中每个W的梯度,再将其相加求和,即可得到F关于W的最终梯度。注意,关于W^T的梯度需要进行转置来得到关于W的梯度。
  


  
  
  注意,UFLDL中F关于W的梯度计算不对,结果式子中第一个W不应该有转置符号。
  
  
  

结语

  反向传播算法是复杂目标函数求梯度的利器,也是神经网络研究中必备的基础技术,一方面,我们要掌握反向传播算法的数学推导,另一方面,我们也要熟悉如何编程实现反向传播算法,尤其要掌握向量化计算的思维方式。
  

参考资料

Calculus on Computational Graphs: Backpropagation
http://colah.github.io/posts/2015-08-Backprop/
BackPropagation : a collection of notes, tutorials, demo, and codes
https://algorithmsdatascience.quora.com/BackPropagation-a-collection-of-notes-tutorials-demo-and-codes
NotesonBackpropagation
https://www.ics.uci.edu/~pjsadows/notes.pdf
Deriving gradients using the backpropagation idea
http://deeplearning.stanford.edu/wiki/index.php/Deriving_gradients_using_the_backpropagation_idea
CS231n: Convolutional Neural Networks for Visual Recognition - backprop notes
http://cs231n.github.io/optimization-2/
Principles of training multi-layer neural network using backpropagation
http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html

[机器学习]ufldl笔记-convolutionalneuralnetwork-反向传播与梯度计算

前言  本文是我在学习卷积神经网络(ConvolutionalNeuralNetwork)时的笔记,内容涉及CNN的反向传播、梯度计算等,主要解释了反向传播中Conv层(卷积层)和池化层(Pooling层)之间误差的传递过程和... 查看详情

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

前言  卷积神经网络的核心操作就是各种矩阵运算,在前向传播和反向传播中的各种形式的矩阵运算构成了CNN的计算体系,本文将在卷积神经网络(ConvolutionalNeuralNetwork)的背景下对相关的矩阵运算进行梳理ÿ... 查看详情

[机器学习]ufldl笔记-autoencodersandsparsity

前言  [机器学习]UFLDL笔记系列是以我学习UFLDLTutorial(AndrewNg老师主讲)时的笔记资料加以整理推出的,内容以无监督特征学习和深度学习为主,同时也参考了大量网上的相关资料。  本文的理论部分主要整理... 查看详情

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

前言  卷积神经网络的核心操作就是各种矩阵运算,在前向传播和反向传播中的各种形式的矩阵运算构成了CNN的计算体系,本文将在卷积神经网络(ConvolutionalNeuralNetwork)的背景下对相关的矩阵运算进行梳理ÿ... 查看详情

视觉机器学习读书笔记--------bp学习

反向传播算法(Back-PropagtionAlgorithm)即BP学习属于监督式学习算法,是非常重要的一种人工神经网络学习方法,常被用来训练前馈型多层感知器神经网络。一、BP学习原理1、前馈型神经网络   是指网络在处理信息时,... 查看详情

机器学习笔记:反向传播

1共享路径对于每一个可学习的参数w,我们都需要通过梯度下降更新它的值。而我们可以使用反向传播的思路来求解损失函数在某一个参数上的loss 如上图所示,可以用如下方式运算 可以发现,上图红色圈起来的部... 查看详情

ng机器学习视频笔记——神经网络的代价函数反向传播梯度检验随机初始化

ng机器学习视频笔记(七)——神经网络的代价函数、反向传播、梯度检验、随机初始化 (转载请附上本文链接——linhxx) 一、代价函数        同其他算法一样,为了获得最优化的神经网络... 查看详情

《神经网络与深度学习》笔记6-反向传播算法(下)

  查看详情

《神经网络与深度学习》笔记5-反向传播算法(上)

   查看详情

反向传播算法数学推导

...法,是为了计算loss相对于w,b的偏导数,以此来更新每次学习的w,b,是一个巧妙地计算方法。首先定义loss函数:乍一看,这怎么求关于每个权值的偏导数呢?别急,反向传播算法的一个巧妙之处就是没有直接去定义loss相对于w... 查看详情

反向传播-李宏毅机器学习笔记

输入通过前向传播由输入层传播到输出层;梯度通过后向传播由输出层传播到输入层。 N个样本的损失函数,其中代表单个样本损失函数:求解梯度,以weight为例,bias同理:可见,我们只要求解单个样... 查看详情

神经网络和深度学习笔记-第二章反向传播算法

上一章中我们遗留了一个问题,就是在神经网络的学习过程中,在更新参数的时候,如何去计算损失函数关于参数的梯度。这一章,我们将会学到一种快速的计算梯度的算法:反向传播算法。这一章相较于后面的章节涉及到的数... 查看详情

机器学习-反向传播算法(bp)代码实现(matlab)(代码片段)

%%MachineLearningOnlineClass-Exercise4NeuralNetworkLearning%Instructions%------------%%Thisfilecontainscodethathelpsyougetstartedonthe%linearexercise.Youwillneedtocompletethefollowingfunctions%inthise 查看详情

[机器学习]ufldl笔记-autoencodersandsparsity

前言  [机器学习]UFLDL笔记系列是以我学习UFLDLTutorial(AndrewNg老师主讲)时的笔记资料加以整理推出的,内容以无监督特征学习和深度学习为主,同时也参考了大量网上的相关资料。  本文的理论部分主要整理... 查看详情

dl学习笔记-反向传播算法的理解

作者:杜客链接:https://zhuanlan.zhihu.com/p/21407711来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。译者注:本文智能单元首发,译自斯坦福CS231n课程笔记BackpropNote,课程教师AndrejKarpathy授权翻... 查看详情

[机器学习]ufldl笔记-pcaandwhitening

前言    [机器学习]UFLDL笔记系列是以我学习UFLDLTutorial(AndrewNg老师主讲)时的笔记资料加以整理推出的。内容以无监督特征学习和深度学习为主,同时也参考了大量网上的相关资料。    撰写本文的原因是... 查看详情

[机器学习]ufldl笔记-sparsecoding(稀疏编码)

前言  [机器学习]UFLDL笔记系列是以我学习UFLDLTutorial(AndrewNg老师主讲)时的笔记资料加以整理推出的,内容以无监督特征学习和深度学习为主,同时也参考了大量网上的相关资料。  本文的理论部分主要整理... 查看详情

[机器学习]ufldl笔记-sparsecoding(稀疏编码)

前言  [机器学习]UFLDL笔记系列是以我学习UFLDLTutorial(AndrewNg老师主讲)时的笔记资料加以整理推出的,内容以无监督特征学习和深度学习为主,同时也参考了大量网上的相关资料。  本文的理论部分主要整理... 查看详情