开发者社区> 玄学酱> 正文

神经网络和数学之间的联系在哪里?看完你就明白

简介:
+关注继续查看

在我们了解过神经网络的人中,都了解神经网络一个有很常见的训练方法,BP 训练算法。通过 BP 算法,我们可以不断的训练网络,最终使得网络可以无限的逼近一种我们想要拟合的函数,最终训练好的网络它既能在训练集上表现好,也能在测试集上表现不错!

那么 BP 算法具体是什么呢?为什么通过 BP 算法,我们就可以一步一步的走向最优值(即使有可能是局部最优,不是全局最优,我们也可以通过其它的方法也达到全局最优),有没有一些什么数学原理在里面支撑呢?这几天梳理了一下这方面的知识点,写下来,一是为了记录,二也可以分享给大家,防止理解错误,一起学习交流。

BP 算法具体是什么,可以参考我这篇文章知乎专栏(详细的将 BP 过程走了一遍,加深理解),那么下面解决这个问题,为什么通过 BP 算法,就可以一步一步的走向更好的结果。首先我们从神经网络的运行原理来看,假如现在有下面这个简单的网络,如图:

神经网络和数学之间的联系在哪里?看完你就明白

我们定义符号说明如下:

神经网络和数学之间的联系在哪里?看完你就明白

则我们正向传播一次可以得到下面公式:

神经网络和数学之间的联系在哪里?看完你就明白

神经网络和数学之间的联系在哪里?看完你就明白

神经网络和数学之间的联系在哪里?看完你就明白

神经网络和数学之间的联系在哪里?看完你就明白

神经网络和数学之间的联系在哪里?看完你就明白

神经网络和数学之间的联系在哪里?看完你就明白

如果损失函数 C 定义为

神经网络和数学之间的联系在哪里?看完你就明白

那么我们希望训练出来的网络预测出来的值和真实的值越接近越好。我们先暂时不管 SGD 这种方法,最暴力的我们希望对于一个训练数据,C 能达到最小,而在 C 表达式中,我们可以把 C 表达式看做是所有 w 参数的函数,也就是求这个多元函数的最值问题。那么成功的将一个神经网络的问题引入到数学中最优化的路上了。

---------------------------分割线---------------------------

好,我们现在顺利的将一个神经网络要解决的事情转变为一个多元函数的最优化上面来了。现在的问题是怎么修改 w,来使得 C 越来越往最小值靠近呢。常见的方法我们可以采取梯度下降法(为什么梯度下降法中梯度的反方向是最快的方向,可以参考我下篇文章,不是这篇文章主旨)。可能到这还有点抽象,下面举一个特别简单的例子。

假如我们的网络非常简单,如下图(符号说明跟上面一样):

神经网络和数学之间的联系在哪里?看完你就明白

那么我们可以得到:

神经网络和数学之间的联系在哪里?看完你就明白

其中

神经网络和数学之间的联系在哪里?看完你就明白

只有 w 参数是未知的,那么 C 就可以看做是关于 w 的二元函数(二元函数的好处就是我们可以在三维坐标上将它可视化出来,便于理解~)。 图片来自于网络:

神经网络和数学之间的联系在哪里?看完你就明白

下面走一遍算法过程:

我们先开始随机初始化 w 参数,相当于我们可以在图上对应 A 点。

下面我们的目标是到达最低点 F 点,于是我们进行往梯度反方向进行移动,公式如下:

神经网络和数学之间的联系在哪里?看完你就明白

每走一步的步伐大小由前面的学习率决定,假如下一步到了 B 点,这样迭代下去,如果全局只有一个最优点的话,我们在迭代数次后,可以到达 F 点,从而解决我们的问题。

那么好了,上面我们给出二元函数这种简单例子,从分析到最后求出结果,我们能够直观可视化最后的步骤,那么如果网络复杂后,变成多元函数的最优值求法原理是一模一样的!到此,我结束了该文要讲的知识点了。 欢迎各位朋友指错交流~

---------------------------分割线---------------------------

在我学习的时候,我已经理解了上面的知识了,但是我在思考既然我最后已经得到一个关于 w 的多元函数了,那么我为什么不直接对每一个 w 进行求偏导呢,然后直接进行更新即可,为什么神经网络的火起还需要 bp 算法的提出才复兴呢!我的疑惑就是为什么不可以直接求偏导,而必须出现 BP 算法之后才使得神经网络如此的适用呢?下面给出我的思考和理解(欢迎交流~)

1. 为什么不可以直接求导数?

在神经网络中,由于激活函数的存在,很多时候我们在最后的代价函数的时候,包含 w 参数的代价函数并不是线性函数,比如最简单的

神经网络和数学之间的联系在哪里?看完你就明白

这个函数对 w 进行求导是无法得到解析解的,那么说明了无法直接求导的原因。

2. 那么既然我们我们不能够直接求导,我们是否可以近似的求导呢?比如可以利用

神经网络和数学之间的联系在哪里?看完你就明白

根据这个公式我们可以近似的求出对每个参数的导数,间距越小就越接近,那么为什么不可以这样,而必须等到 BP 算法提出来的时候呢?思考中……

答:是因为计算机量的问题,假设我们的网络中有 100 万个权重,那么我们每一次算权重的偏导时候,都需要计算一遍改变值,而改变值必须要走一遍完整的正向传播。那么对于每一个训练样例,我们需要 100 万零一次的正向传播(还有一次是需要算出 C),而我们的 BP 算法求所有参数的偏导只需要一次反向传播即可,总共为俩次传播计时。到这里我想已经解决了为什么不能够用近似的办法,因为速度太慢,计算复杂度太大了~ 每一次的传播,如果参数多的话,每次的矩阵运算量非常大,以前的机器速度根本无法承受~ 所以直到有了 BP 这个利器之后,加快了神经网络的应用速度。

以上仅个人理解,感谢德川的帮助!欢迎知友提出问题交流~


以下是我学习用到的资料和博客:
《neural networks and deep learning》需要中文版的欢迎留言邮箱
零基础入门深度学习 (1) - 感知器



====================================分割线================================



本文作者:AI研习社

本文转自雷锋网禁止二次转载,原文链接

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
18573 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
27697 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
12962 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
21932 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
15284 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
19976 0
+关注
玄学酱
这个时候,玄酱是不是应该说点什么...
20683
文章
438
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载