冰冰点灯,照亮我家门前~
欢迎进入nnetinfo
用户名:
密码:
深圳学习数据分析,数据挖掘,请联系yahushuxue@163.com~
nnetinfo : 本网发布神经网络相关的学习与研讨内容。
当前位置:教学区
梯度下降法
作者:xiaoH   日期:2015-07-17 13:29:24.0

        神经网络的求解,就是求得一组W和B,使得历史数据拟合的误差E最小,当W和B不同时,误差就不同,误差可以说是W,B的函数E(W,B)。

         由于这个函数是非线性的,且一般来说,未知数极多,(例如5个输入,隐节点4个,2个输出的网络,就会有5*4+4*2个权值和5+2个阈值),这样的方程是很庞大的,因此不好用求导等方法求得最小值。

       一般来说,采用的求解方法是,先初始化一个解,再在这个解的基础上一步一步调整,最后找到一个领域的极小值(不一定是全局最小)。

那么,现在的问题是,怎么调整。

        我们从《数学分析》/《高等数学》知道,一个二元函数z=f(x,y)在x0,y0点爬升得最快的方向是梯度方向,也就是,最快下降的自然是反梯度方向(多元亦一样)。

那么,想要让我们的误差下降,我们可以有很多方法去调整W和B,但若果沿反梯度方向调整,误差是降得最快的。因此我们每次调整W,B就沿反梯度方向调整。

例如求随便初始化一个值,例如x=1,y=1.然后调整。如下图。

学习率是防止步长过大设定的一个值,这里设为0.1,也可以设为其它值。

       同理,在神经网络中,权值wi和阈值bi梯度下降的方向分别是,一个3隐层(2输出1输出)的网络共有2*3+3*1=9个w, 3+1=4个b,那么每迭代一次,就要求9+4=13次偏导数。其中,是网络的表达式,xi是第i个样本的输入,yi是第i个样本的输出,n是样本个数,所以偏导的具体式子有些长,在这里不再展开书写。

      神经网络的误差函数梯度下降时终止迭代条件可以设为:误差小到一定值,则退出迭代,或设为达到最大迭代步数,则退出迭代等。