本篇文章,本来计划再进一步完善对CNN卷积神经网络的理解,但在对卷积层反向传播算法的理解中,越发觉得之前对于BP反向传播算法的理解是不到位的。小白近日觉得,对于深度神经网络,"反向传播"的思想是灵魂。因此,本篇力求再次深入理解和思考"反向传播"算法,并尽量从直观理解上加以描述,为后续深度学习模型的理解打好基础。

第三十四篇 BP反向传播算法的思考和直观理解

物质的宇宙来源模型臆想

小白体会,宇宙本身类似于一个神经网络。"奇点"无限小且空无一物,但蕴涵无限能量。万事万物无中生有,这里的"有"即"物质","物质"相对于奇点的"空"可理解为"偏差"。

(注:物质是"有",用数学的1表示;宇宙之初奇点空无一物,用0表示;1的存在,可理解为相对于0的偏差)

"物质"(偏差)并不是独立存在的,是相对的(并非真的无中生有)。其需要在"时空"(这里的时空,被呈现为光速,地球引力常数g,空间距离h,… …)中被表征,表征为"质量""速度""位置""形状""颜色"等这些信息(这些信息可理解为能量的外在)。即,质能方程"E=mC2"的含义是,能量在时空中,被表征为物质。因此,物质,时空,能量三者一体,共生共存,互为表征。

"输入","网络权重参数","输出"三者一体,共生共存,互为表征

神经网络有输入,网络权重参数,和输出。我们有理解,输入即能量(类似于:奇点中无限能量),这些能量表征于网络中(类似于:宇宙大爆炸,不仅炸出了时空;同时,能量也分布在时空中,并表征于时空网络中,形成物质外在),而我们感受到的客体物质以及主体人本身,本质为能量在时空中的表征。

输入,神经网络的参数,输出三者之间,也是共生共存,互为表征。在神经网络的学习过程,即反向传播算法 ,其本质是根据输入和偏差来调整神经网络参数,不断调整,使三者形成一体,互为表征。

注:小白体会到,深度神经网络的学习,类似于人类认知宇宙的过程,在历史长河中,人不断的通过从外界获得信息和能量(输入)以及人类随时间推移产生了对物质外在认知的偏差(输出偏差),来调整人类对时空规律(神经网络参数调整)的认知。

深度神经网络的学习,也可比喻成宇宙爆炸的过程,宇宙中尘埃,行星,横行,生物,生命的形成过程,是相对于宇宙奇点的偏差。这些偏差形成的过程,也是时空形成的过程(时空常数根据物质偏差同步形成和调整),而这个过程遵循当前这个宇宙中的能量守恒定律(损失函数)。

神经网络的"梯度"和"输出偏差"的互为表征

如上图一条斜线,这个斜线的斜率是导数,而"导数"等于(Y2-Y1)/(X2-X1)。此刻,我们应有体会,在X偏差((X2-X1))(或Y偏差(Y2-Y1))不变的情况下,导数(梯度)其实和Y偏差(或X偏差)为一体两面,可互为转化。当然,对于曲线的情况下,这里的偏差指的是Delta X或Delta Y。

对于上述的神经网络,输入向量Xn是确定的,但输出Y是有偏差的(和数据Xn的标记不一致)。我们知道,Y的偏差是由隐藏层的所有权重参数造成的。也即,Y偏差和神经网络参数为一体两面。小白此刻产生两个问题。

问题1:神经网络中不同层的权重如何分别计算?

问题2:输出偏差和梯度一体两面的关系具体如何体现?

输出偏差和能量守恒

如上图,我们可以把输入向量Xn(x1,x2,x3)看作是能量,把神经网络看作是时空网络h(w,b),把输入向量的标记y看作是物质。有y=hw,b(X)(我们想象这类似于E=mC2)。

另外,损失函数相当于效益函数,即神经网络的调整目标是"遵循能量守恒定律"(即损失函数最小)

如上图,我们应有两个疑问:

疑问1:为什么要计算Zi的偏差?

这个问题应该很容易回答。因为,Zi是输出,由于有损失偏差(能量不守恒),这个损失偏差是由输出Zi的偏差造成的。因此,一旦损失函数未达到最优,Zi必有偏差。Zi的偏差是神经网络参数的偏差造成的。因此,我们需要根据Zi的偏差来调整神经网络的参数。我们需要根据输入,不断的调整,一直到损失函数达到最优(能量守恒),Zi也就没有了偏差(正确的输出),这时,我们的 神经网络也就完成了学习。

疑问2:为什么要计算损失函数对于输出Zi求导?

我想这个问题的答案在于对"求导"的理解。导数是一个函数,函数的因变量是输出Zi,函数的值 为"Zi处损失偏差"和"Zi偏差"的比值,也即Zi处关于损失函数的斜率(梯度)。

如果,梯度是一个常数k,那么,我们就有"Zi的偏差=损失偏差(J)/ k"。但是,如果梯度是变化的,那么,Zi偏差如何计算呢?

百般思索后,我们应该没有办法来表示。但是,我们会想到,"损失"的偏差可以由很多个局部的偏差叠加表示,这时我们似乎有所觉悟,这就是"微分"的意义。如下图:

因此,此时我们应该有如下的体会:

1. 斜率的本质,反应了损失偏差相对输出偏差Zi的缩放程度;因此,我们知道了Zi相对损失偏差的斜率,也就完全知道了Zi的相对偏差;

2. 对于非线性关系,导数反应的局部损失偏差相对于输出偏差Zi的缩放成都;因此,我们应有理解,导数完全承载了Zi的相对偏差的全部信息;

3. 对于非线性关系,"导数"虽然是局部的一个表达,但,这个局部的表达是适用于整体的(这个导数是曲线整体的导数)。因此,偏差和倒数,都承载了整体的信息。只不过,对于线性关系,一个偏差就可以承载(因为两个点得到偏差,就可以确定直线的整体);但,对于非线性关系(曲线),我们就不能使用偏差了,因为,曲线整体会对应无数的偏差,因此,我们采用导数。其实,细想,倒数的本质也是偏差,只不过是动态调整的偏差(不同x的倒数不同),因此,导数意味着整体的偏差。

输出偏差和网络权重梯度的一体性

如上图,我们应有体会,"Zi"的偏差和产生"Zi"的网络权重"wij"的偏差是一体的。Zi的偏差完全由"Wij"产生。但此时,对于网络权重"Wij"的偏差,我们改了一个新名字,称之为"梯度"。这是因为,对应"Zi"有"j"个权重,因此,这里是一个权重偏差向量(wi1偏差,wi2偏差,wi3…偏差),这个向量我们称之为"梯度"。

因此,我们应有理解,输出Zi的偏差和权重梯度是一体的。

神经网络多层偏差和梯度传导模型

对于多层神经网络,我们知道每一个"隐藏层"或"输出层"可理解为一次特征的映射,即我们可以把每一层看作一个特征的空间。可以形象的理解为,输入层看作"能量粒子层",能量粒子通过旋转组合(权重)形成"原子层"(隐藏层),然后逐步形成"元素层","分子层",直到最后输出我们肉眼看到的"物质"。也就是说神经网络的每一"层"描述的是同一个世界,只不过维度不同,即不同的"层"对应原子世界,分子世界,物质世界等,但都是同一个世界。

此时我们应有如下理解:

"损失偏差","输出层偏差","输出层权重梯度","隐藏层偏差","隐藏层权重梯度","输入层权重梯度","损失函数的偏差",这七个变量是对等关系,只不过是在不同维度下的不同的具体表现形态。

上图是,L-1层权重梯度的计算。这样我们就有了如下图的总结对照。

总结和引申思考

反向传播算法使我们加深了对函数的理解。其实,神经网络的每一层都可以理解为一个函数Y=f(X)。而多层神经网络可理解为一个嵌套的函数,比如:Y1=f1(X);Y2=f2(Y1);Y3=f3(Y2);…;Y=fn(Yn-1)。这样,Y=f(X) = fn(fn-1(… f2(f1(X) ) ) );

其中,Y可以理解为"果",而X可理解为"因"。而神经网络学习的目的就是要找到f(),即寻找因果关系。

对于线性因果关系(线性函数),我们是很容易就能找到的,我们知道两点决定一线。我们也应有理解,"斜率"其实就是因果关系。这个"因果"关系,如果从因和果的角度看,其反应的是"果"的变化幅度引起的"因"变化幅度缩放关系。

比如蝴蝶效应,一场风暴归结于一个蝴蝶煽动下翅膀,这个缩放关系极大。但,蝴蝶煽动翅膀也可能仅仅会引起一个玩耍孩童的偶然注目,这个缩放关系又是较小的。因此,我们发现现实世界的数学模型并非都是线性关系。

如上图,是一个蝴蝶煽动翅膀的一个非线性因果的世界。这时,我们有一些理解如下:

A: 图中的曲线表示了一个蝴蝶煽动翅膀的因果世界;

B: 图中的曲线上的一个单点是没意义的,比如蝴蝶一次煽动翅膀,恰巧风暴发生了,这没有任何意义。假如蝴蝶煽动10次,风暴发生8次,这才可能说明蝴蝶振翅和风暴之间存在因果。因此,曲线的意义在于曲线的变化,即曲线局部偏差的走向,也即"因偏差和果偏差的缩放程度"。

C: 深度学习的过程是寻找上面曲线的过程。如何学习呢?根据第2点,我们应该想到,我们需要找到曲线上的所有的局部偏差,最后得到完整的曲线。也即,我们根据每一个样本数据(或一小部分样本数据)来形成局部的偏差。其实,这个过程就是"梯度下降",也是神经过程学习的过程,也是因果曲线形成的过程。

D: 根据第2点,我们还会想到,其实这里蝴蝶煽动翅膀和风暴的因果关系还包含了"概率",因此,我们应有理解,"概率"也是对因果关系的数学建模。概率可以表示随机事件的因果关系,概率和斜率本体相同。

小白体会,"学习"是智能的本质。既然是学习,那么学习的内容已经存在了,即时空逻辑,外在因果已经客观存在。学习的过程是把外在客体的时空逻辑和因果关联进行映射和投影,这个过程我们需要解决两个问题,一个问题 是映射和投影的载体,即我们的学习模型;另一个问题是 我们学习过程中,时空逻辑信息和因果信息从外在客体流动到我们的模型的信息流的编码,格式以及学习模型载体对信息流的解析和固化描绘,即我们的算法;

分层的深度神经网络模型就是我们的学习模型载体;BP反向传播就是我们的算法,对于这个算法,"偏差"和"梯度"就是我们对信息流的编码,反向传播(即梯度和偏差的计算)以及根据计算结果对学习模型的调整就是我么对信息流的解析和固化。

小白体会到,为什么通常我们认为计算能力和存储能力是衡量信息时代发展的指标。因为,其反应的我们人类的学习能力,是我们对外在宇宙世界的认知能力和控制能力。

此外,宇宙的本质是变化,变化是宇宙的终极定律,而我们人类所描绘的宇宙是变化的载体。也就是说,时空的意义在于给变化提供了载体。

"变化"来源于哪里呢?奇点中存在一只蝴蝶吗?我想这个蝴蝶应该在奇点的外面,那这个蝴蝶又是什么呢。

梯度的直观理解_BP反向传播算法的思考和直观理解 -卷积小白的随机世界相关推荐

  1. BP反向传播算法的思考和直观理解 -卷积小白的随机世界

    https://www.toutiao.com/a6690831921246634504/ 2019-05-14 18:47:24 本篇文章,本来计划再进一步完善对CNN卷积神经网络的理解,但在对卷积 ...

  2. 使用随机梯度下降SGD的BP反向传播算法的PyTorch代码实现

    Index 目录索引 写在前面 PyTorch的 .data() PyTorch的 .item() BP with SGD的PyTorch代码实现 参考文章 写在前面 本文将用一个完整的例子,借助Py ...

  3. 关于反向传播算法中的残差推导理解

    关于残差的理解;在反向传播中需要求得dW,db, dW=dL/dW=(dL/dz)*(dz/dw) 在这里dL/dz就是所谓的残差,最终残差的推导公式有: 所以 dW=dL/dW=(dL/dz)∗(d ...

  4. BP神经网络的线性本质的理解和剖析-卷积小白的随机世界

    https://www.toutiao.com/a6674387399058915852/ 在完成上篇(第三十一篇)感知机的理解文章后,本想开始梳理SVM(支持向量机),不想感知机也是深度学习神经网络 ...

  5. 梯度下降与反向传播算法的原理与推导

    梯度下降算法是机器学习中最常用的优化算法之一,它可以求得目标函数的最小值,即算法的最优解.而对于复杂的多层神经网络来说,运用梯度下降算法十分复杂,因为其包含求导过程,为此学者将多层神经网络的优化问题简 ...

  6. php梯度区间计算,快速计算梯度的魔法--反向传播算法

    2.1 计算梯度的数值方法 第一次实验我留的一个课后作业里问你是否能够想出一个求解梯度的办法,其实不难想到一种简单的办法就是使用"数值法"计算梯度. 办法很简单,就是对于损失函数中 ...

  7. 100天搞定机器学习|day37 无公式理解反向传播算法之精髓

     100天搞定机器学习(Day1-34) 100天搞定机器学习|Day35 深度学习之神经网络的结构 100天搞定机器学习|Day36 深度学习之梯度下降算法 本篇为100天搞定机器学习之第37天,亦 ...

  8. 快速计算梯度的魔法--反向传播算法

    一.实验介绍 1.1 实验内容 第一次实验最后我们说了,我们已经学习了深度学习中的模型model(神经网络).衡量模型性能的损失函数和使损失函数减小的学习算法learn(梯度下降算法),还了解了训练数 ...

  9. 零基础入门深度学习(3) - 神经网络和反向传播算法

    无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就o ...

最新文章

  1. 微软宣布公开预览其内容分发网络
  2. Android 中View仅仅能接收到ACTION_DOWN无法接收ACTION_MOVE和ACTION_UP解决的方法
  3. ThinkPHP3.2开启静态缓存
  4. vue条形码,二维码,打印总结分享
  5. 10.1寸大屏安卓通用车载导航
  6. Hive基础04、Hive建表语句详解
  7. 使用数据驱动进行配对交易:简单交易策略
  8. 中标麒麟系统远程桌面连接
  9. C语言alloc函数总结
  10. Nginx:配置 try_files 实现内部重定向
  11. 笔记本电脑桌面不显示计算机,笔记本电脑屏幕不显示怎么回事
  12. 2015款Mac笔记本安装Windows10系统到外置移动硬盘教程
  13. Manifest介绍
  14. JavaScript 学习笔记(第三天)
  15. python平行四边形函数_在Python中,如何确定一个点是否在某个平行四边形内?
  16. r720换固态硬盘后如何重装系统_换了固态硬盘后怎么重装系统?小白
  17. 键盘计算机论文,计算机论文
  18. 13th-极客大挑战
  19. 【树莓派开发】使用树莓派在Linux环境下编写C语言代码
  20. 【Redis】分布式限流与Redis实现限流的四种方式(Redis专栏启动)

热门文章

  1. APP违法使用个人信息?不用怕,华为云VSS为你保驾护航
  2. 开发者必看!你想知道的迁移之道都在这里了
  3. RDS、DDS和GaussDB理不清?看这一篇足够了!
  4. 【华为云技术分享】HBase与AI/用户画像/推荐系统的结合:CloudTable标签索引特性介绍
  5. 【华为云技术分享】[HDC.Cloud]基于鲲鹏平台的Ceph深度性能调优
  6. express中间件系统的基本实现
  7. 性能达到原生 MySQL 七倍,华为云 Taurus 技术解读
  8. Android 7.0判断栈顶Activity错误 几率显示为launcher
  9. poj 1426 BFS
  10. 解决Ubuntu18.04没有声音(简便且终极方法)