从零开始学人工智能(17)--数学 · 神经网络(一)· 前向传导

浏览: 1207

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

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

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

往期阅读:

机器学习综述

从零开始学人工智能(16)--Python · 决策树(四)· 树

从零开始学人工智能(15)--Python · 决策树(三)· 节点

从零开始学人工智能(14)--Python · 决策树(二)· 节点

从零开始学人工智能(13)--Python · 决策树(一)· 准则

从零开始学人工智能(12)--Python · 决策树(零)· 简介

神经网络的数学部分可能会让许多人望而生畏,各种梯度的计算可能也会让人有些吃力

事实上……

确实如此。不过,如果静下心来好好推导一下的话,可能又会觉得它比想象中的简单

这一章我们要介绍的是算法中比较简单的前向传导算法,为此我们要先弄懂算法的过程。我们先来看两层之间的前向传导是怎么样的(以下除了偏置量 b 是数以外,其它变量都是矩阵):

image.png

大概就是这个感觉。我们再把上面的过程写成数学语言就行:

image.png

其中各个矩阵的 shape 为(输入的数据个数):

image.png

其中,做激活函数、也就是每一层自己 Duang 的部分。直观地说:

  • 所谓激活函数,正是整个结构中的非线性扭曲力

也就是说,激活函数是神经网络之所以能够进行非线性扭曲的关键

那么w是什么?注意到image.png,也就是说,image.png

线性扭曲后的结果。一般来说,可以把v叫做激活值

w的作用,就是将这个激活值线性映射到另一个空间上;b的作用,则是在这个基础上再进行一步平移操作

这里展开讲的会涉及到数学分析和高等代数的相关知识,个人觉得如果不是专攻理论的话可以不太在意背后的理论基础、而如果是相关专业的话我的能力也 hold 不住 。

以上就把两层之间的前向传导算法介绍完了。对于整个神经网络而言,只需要将上面讲的步骤不断重复进行即可。

稍微总结一下:

  1. 输入:“nXd"是矩阵 X,其中 n 是样本个数、d 是数据维数

  2. 逐层进行激活,一路向前传导:

    1. 将输入该层的数据通过激活函数φ行非线性扭曲

    2. 将扭曲后的结果通过层与层之间的权重w性映射到另一个空间上、同时可以通过偏置量b进行一个平移

    3. 将最终结果传给下一层作为下一层的输入

下一章就要讲 BP(反向传播)算法了。BP 是神经网络训练的核心、推导也会稍微复杂一点,但是对于最简单的情形(梯度下降),如果按部就班地算的话、可能会发现其实不过如此

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


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

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

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

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

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

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

回复 Spark              征服Spark第一季

回复 kaggle             机器学习kaggle案例

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

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

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

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

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

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



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

0 个评论

要回复文章请先登录注册