快乐地谈谈:cs231n_lecture4中 feed-forword(前向传递)和 back-propagation(反向传递)的理解

发布于:2022-12-04 ⋅ 阅读:(574) ⋅ 点赞:(0)

感觉自己看懂了,那就写一写,好耶!

本章节原英文课件链接:https://pan.baidu.com/s/1KlxQlaYrLWFct3euO3f_pg 
提取码:bb1a

我认为的基本逻辑线:

首先,是从最优化(optimization)开始,先引入的一般是一元二次函数,即抛物线上求最小值;随后由一元函数演变为多元函数求极值的问题,如抛物面求最低点的问题,这里会涉及高等数学的知识,往往需要求取输入成分的偏导数的方式进行求解。

随后,cs231n就computational graph(计算图例)的方式给出了简单的举例。

引出两个概念,前向传递(Feedforward)和反向传递(Back propagation)。前者就是在做计算,挺容易理解的,结构就是:输入-运算-输出;后者的话,则是想在这样的一个运算结构下,求取极值问题了,也就是回到最优化的目的。如前文所说,就想求取每一个输入成分的偏导数。对,就是偏导数!

由于输入成分经过多重运算,怎么获得结果对于初始输入成分的偏导数呢?那么就得借助高等数学中的“链式法则”(chain rule)进行逐步求导。其中的L函数应该想表示的就是损失函数(Lost function)。

cs231n中一个较为简单的例子:图中绿色数字为前向传递的数值,而红色数字是反向传递。其中,L函数结果对于自身Z求导为1,所以反向传递的起始值为1。

 

cs231n中另外一个较为复杂的例子。关注反向传递:先将每一个运算节点,也就是小圆圈里的内容进行求导(获得函数式),然后代入该点的输入值(前向传播中,从左往右,小圆圈左边的即为输入值),最终获得该点的导数值(是一个数)。随后,根据链式法则,反复上述过程,不断反向,最终求得对于初始输入的偏导数值。下图中乘的(1.00)是根据链式法则,即L函数对自身Z的求导。

 

 

那么,当例子中具体的数值(绿色数字)转变成某一个变量,如a/b/c的话,对于每一个输入成分的偏导数就会与这些变量a/b/c有关了,于是就可以研究其中的关系,调整输入成分a/b/c,实现这个计算图例的最优化目的了。

随后,在此基础上,将计算图例复杂化,也就成了神经网络里的各级层。但同样,基础结构就是:输入-运算-输出;而反向传播,同样是按照上述的原理,探究如何控制输入的,解决最优化的问题!cs231n里面呢,是先说明了这个神经网络的真实层级情况,随后再讲述其本质的基础结构,而我只是换了一个顺序,说明了基础结构的原理,然后复杂化,就是神经网络的层级问题。

 


网站公告

今日签到

点亮在社区的每一天
去签到