深度学习深度学习(五)如何找到最好的方程

回顾一下,上一个章节中,我们找到了一个评判两个方程好坏的标准,标准也很简单,很数学化,两个方程,计算他们的E,E较小那个就是比较好的!

沿着这个思路,我们有没有可能找到一个最好的呢?

有!这个问题转换成数学问题就是,在众多w_{1},w_{2},b中找到一个组合,使得E最小,即E的最小值,那么这个w_{1},w_{2},b所代表的方程,就是最好的方程! 

求E最小值!变量是w_{1},w_{2},b也许你又要回到高中数学的噩梦,怎么又是求最小值?别着急,有方法论。我们先看看我们的目标,是求下面方程E的最小值: 

深度学习深度学习(五)如何找到最好的方程

好,目标清楚了,我们先把目标放一旁,先讲方法论。

我们先假定有一个现实的问题:

深度学习深度学习(五)如何找到最好的方程

图中那个二B青年准备下到山底,毕竟是理科生,他会不断的问自己一个问题,他当前如果向外迈出一步,怎么迈,是下降的最快的。那当然是以自己为起点,向周围看一下,找到坡度最陡的那个路线,迈出去。于是他很准确的迈了一步,如下图:

深度学习深度学习(五)如何找到最好的方程

 

好,第一步是成功的,那么第二步呢,显然和第一步思路一样,找出最陡的那个路线,继续。。。。当然,每次都是最陡峭的,那他的下降速度,显然是最快的,于是,他很快就下到了山底。

深度学习深度学习(五)如何找到最好的方程

 

好了,理论就是那么简单,这座山,我们可以理解就是这个cost function本身。这个二B青年,开始的位置,就是我们随便一个起始的方程,也即是起点,比如我一开始拍脑袋的方程Z=3x_{1}+2x_{2}-25即w_{1}=3,w_{2}=2,b=-25的时候。那么,这个二B青年每迈一步,就是每次在上一个w_{1},w_{2},b值上,做了一个变化即w_{1}-d_{1},w_{2}-d_{2},b-d_{3}。 (这里的d_{1}d_{2}d_{3}是指在每个维度上的一个变化量)   

ok,那么这里的问题是 d_{1}d_{2}d_{3} 是什么样的值,才能满足那个二B青年那样,这一步是下降最快的呢?答案也很简单,就是对应参数的导数!即

w_{1}-(dE/dw_{1}),w_{2}-(dE/dw_{2}),b-(dE/db),有有一个问题来了,步子迈多大呢,显然我们可以给一个比例η,这是0到1之间的一个数。显然,η越大,步子迈的就越大,但是,就越不精细。步子越小,就越进行,这是积分原理。  

好,我们总结一下,注意,下面不是数学公司,是计算机的伪代码,=表示赋值,不是数学的等号:

w_{1} =  w_{1}-η(dE/dw_{1});  

w_{2} =  w_{2}-η(dE/dw_{2}); 

b = b-η(dE/db);

这里有一个附带的解释:我的理解,比如现在就是一个二维的图形,U形的抛物线吧。这个时候,在图形上的一点,如何下降才是最快的收敛呢?

显然,是在这一点上对着这个导数的切线走一小步。

而切线所在的斜率正好就是这一点上的导数。由于是要朝最小值方向走的,显然,就是向下的,所以是减法。

η是一个步长,我暂时没找他在上述公式中的数学意义。

按照η是步长的话,导数(dE/db)就代表着这个步长的方向。

按照数学意义,我觉得η/( dE/dw_{2} )才能得到等量的w变化量,可是这里确实乘法,没想通,也希望有童鞋帮我解惑。

这个就是计算机求方程最小值的一个经典算法,叫做梯度下降,英文名为:gradient descent。这个也最好记住,Tensrotflow里面直接要设置这个costfunction最小值的方法,通常就设置为梯度下降。

这里,可能会有少许难度,碰到困难的,可以翻看高等数学里面的导数部分,尤其是导数的定义本身,对这个梯度下降的理解是很有帮助的。

另外,如果是细心的朋友会关注到一个问题,如果“这座山”有多个山谷怎么办,按照这个算法,则会因为起点不同导致不能找到真正的最低点:

 

深度学习深度学习(五)如何找到最好的方程

解决这个问题,如何设置合理的最低点,可以参考:
http://sebastianruder.com/optimizing-gradient-descent/index.html#momentum 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值