从零开始学人工智能(9)--Python · 神经网络(二*)· 层

浏览: 1086

作者:射命丸咲    Python 与 机器学习 爱好者

知乎专栏:https://zhuanlan.zhihu.com/carefree0910-pyml 

个人网站:http://www.carefree0910.com


往期阅读:

从零开始学人工智能(7)--Python · 神经网络(六)· 拓展

从零开始学人工智能(8)--Python · 神经网络(七)· CNN


这是第一个带星号的章节,想想还是挺激动的呢(不

我们现在知道了怎么实现激活函数,但还没有说如何实现 BP 算法(反向传播算法)、也就是神经网络中的梯度下降算法。虽然它可能让许多人望而却步、但其实需要的工具只有一个——求导的链式法则;然后如果把它分成一个个小单元来求解的话,可能就会发现也没有想象中的那么难。至少从实现的层面来讲,它相当简单:

image.png

当然,这四行代码后面隐藏的逻辑有些繁复,我们会一一进行说明:

  • 普遍意义下的 BP 算法对应着最后一行代码,其中:

    • prev_delta 记录着反向传播回来的梯度

    • y 记录着进行前向算法时、该层输入值的激活值,使用激活值作为反向传播算法的输入的原因在讲反向传播算法的最后有所提及——很多常用的激活函数的导函数使用函数值来定义会比使用自变量来定义要更好

    • self._derivative 是该层激活函数对应的导函数。需要注意的是,它接受的参数是激活值而不是输入值

  • CostLayer 的 BP 算法没有包括在这里面。具体细节会在今后带星号的 CostLayer 相关章节中讲,这里说一个大概思路:它会利用它上一层 Layer(我们称这层 Layer 为该 CostLayer 的爸爸)(……)的导函数来提前算好一个整合后的梯度,从而当它爸爸得到这个梯度时,可以直接把它往后传而不用再求导

  • 正数第二、第三行对应着当这个 Layer 是 CostLayer 的爸爸时该怎么做。正如上面提到的,它只需要直接把这个梯度往后传就行、因为 CostLayer 已经利用它的导函数提前把梯度算好了

在实现完爸爸的 bp 算法后,由于没了 tensorflow 那些方便的函数,我们还需要稍微修改一下我们的激活函数:

image.png

至于为何要这样处理,同样会在带星号的 CostLayer 相关章节中讲到。这里我们就只需要知道 CostLayer 需要单独处理就行

我们就需要定义真正干活的孩儿们(……)了。我们仍然以 sigmoid 为例:

image.png

可以看到,没有了 tensorflow 的函数、所有东西都需要我们自己写了。不过即使如此,Layer 的实现(在我看来)仍然是相当简洁的

稍微总结一下:

  1. 除了前传算法之外,我们还要实现 BP 算法。事实上,BP 算法是神经网络的核心,在其上有着各种各样的优化算法

  2. 我们需要区别对待 CostLayer,这主要是因为 CostLayer 的 BP 算法表现不同

下一章就要讲在这种 Layer 分为主 Layer 和 SubLayer 两种的情况下、我们应该如何去封装它们的问题了,不知大家是否已经有思路和想法了呢 ( σ'ω')σ

希望观众老爷们能够喜欢~


公众号后台回复关键词学习

回复 人工智能          揭开人工智能的神秘面纱

回复 贝叶斯算法      贝叶斯算法与新闻分类

回复 机器学习          R&Python机器学习

回复 阿里数据          阿里数据系列课程

回复 Python             Python机器学习案例实战

回复 Spark               征服Spark第一季

回复 kaggle             机器学习kaggle案例

回复 大数据             大数据系列视频

回复 数据分析          数据分析人员的转型

回复 数据挖掘          数据挖掘与人工智能

回复 机器学习          R&Python机器学习

回复 阿里数据          阿里数据系列课程

回复 R                      R&Python机器学习入门


推荐 1
本文由 人工智能爱好者社区 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

1 个评论

终于更新了 !!!

要回复文章请先登录注册