Python与人工神经网络(9)——其他改进技术介绍

我们用四期的时间,优化了最初的神经网络,代码量也层最初的一百四十行(包括注释)到了三百四十行。实际上在针对于某些特定的情况,还有一些优化的技术,这里做一个简单的介绍,以后不一定会用到,但是我自己觉得在看的过程中会加深对神经网络的理解。

Softmax神经网络
在介绍softmax之前,我先对第二期介绍的S曲线神经元系统时犯的错误做一个更正。我在第二期介绍S曲线神经元时,说S曲线函数σ的定义域是(-∞,+∞),值域是(0,1),我就以为输出值可以代表概率。实际上概率得保证几个输出值的和为1,而对于S曲线神经元系统是无法证明的。当然有了我以为的假冒伪劣产品,当然也就有真的用概率来做归一化的神经元系统了,这就是softmax神经元系统。

Softmax曲线神经元系统是这样的,对于:


前馈算法为:


很明显有:

这在物理意义上就可以表示概率了。作者在书的第六章有用到Softmax神经网络。

双曲正切函数(Tanh)神经网络
跟上面的softmax神经网络一样,tanh神经网络相对于S曲线神经网络,也是改变了前馈算法:

也就是:

他的曲线如图:

可以看到,tanh的输出值在(-1,1)之间,这是与S曲线最大的不同,其他的属性非常类似。
以此为启发,我们是不是可以造出这样一个前馈函数呢:

想一想这么一个前馈函数,是不是就可以避免我们在第五期说的训练变慢的问题,发散思维就是这一篇文章的目的了。

Hessian梯度下降算法
一直看下来的同学一定会有印象,成本函数C是根据w和b的变化而变化的,因为w和b都是多个值,为了讨论方便,我们只选取w。那就会有C=C(w)。根据多元函数的泰勒定理就有:

因为在梯度下降的过程中,只需要下降,对每次下降多少的精确程度要求并不严格,所以我们可以把这个泰勒展开的2项以后的部分省略掉,然后改写成矩阵形式:

▽C是第三期里说过的梯度矩阵,H叫做Hessian矩阵,为了C变小,就是要使得C(w+Δw)<C(w)。我们可以取:

在实际使用过程中,一般还会配一个训练速率参数η,就成了:

根据理论研究发现,Hessian算法比传统的梯度下降算法会更快的收敛。不过实际上挺少直接用的,因为Hessian矩阵相当大。比如一个神经网络中,w和b又10^7个,那么H就会有10^14个要素,计算量就会非常大了。不过,之后的各种针对梯度下降算法的改进,都是由Hessian算法启发的。

Momentum-based 梯度下降算法
这个算法是将梯度下降模拟成一个物理过程,如图:

曲面就是成本函数C的曲面,Z坐标是C值,横纵坐标都是w(这里只表示了2个w,因为三位以上的空间实在是不好画出来),上面有个小球,我们的希望是小球滚动到谷底。现在引入一个速度v。
单位时间内,Δw=v。不过v是变化的,这次定义Δv=-η▽C。可以看到,在到谷底的过程中,速度是越来越快的,也就是训练速度会越来越大。不过到了最大速度的时候,就会迅速的远离谷底,所以还需要模拟现实情况,给一定的摩擦系数。所以Δv的定义就成了Δv=(u-1)v0 -η▽C。这里的u是一个0到1之间的数字。
这只是一个简单的启发性文章,就简单介绍到这里,其实可以看出来,神经网络的改进,并不是特别高大上的事情,原理上也不是很难,连我写第二期的时候都歪打正着碰着一个。

欢迎关注我的微信公众号获取最新文章:



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值