您的位置:首页 > 其它

【深度学习】梯度下降和反向传播

2017-05-18 16:51 483 查看
声明:本博客只是小白博主自己的记录博客,仅供参考。

导数到底是什么?

引用知乎上的一个回答

那么导数的本质是什么?就是变化率呗,例如小王今年卖了100头猪,去年90头,前年80头,,,也就是说每年增加10头,这就是变化率,完整点就是说10头/年,是有单位的,也就是说导数为10,说白点就是自变量单位变化量的基础上因变量的变化量,自变量就是年份,单位为年,因变量为猪的数量,年份的单位变化量就是指每年,猪的数量的变化量就是10头,所以变化率10头/年,导数为10咯。

上述例子指的是变化率为恒定的,对于一般的变化率不断变化的函数例如 y = 2x^2+30,这里的x代表年份,y代表猪的数量,这个时候变化率就是变化的,例如x = 1, y = 32, x = 2, y =38,你看x变化了1,y变化了6,为什么?对上面的式子求导为4x,这个代表变化率,你会说x=1的时候变化率不是为4嘛,不是意味着单位x的变化量y应该改变量为4嘛?高中数学学过导数就是斜率,你在x=1出的斜率为4,在其他地方就不是了啊,你如果在x= 1出做一个切线,你让x=2出做垂直线,形成的直角三角形的变化量就是4,不过函数是曲线并不是你的切线。

什么是偏导数?看下面的例子,y = 5a + 6b + 7c + 30,这个地方y代表猪的数量,a代表年份,b代表养猪场的面积,c代表饲料的数量,前面说导数就是变化率,实质上应该说是y对于x的变化率,此处偏导数就是针对某个变量的变化率呗,也就是说a变量的单位变化造成y的变化量不就是y对a的偏导数,上面的例子y对a的偏导数5,对b的偏导数6,对c的偏导数为7,注意在考虑偏导数的时候其他的变量是认为常量,也就是a变化1,y变化5,b变化1,y变化6,依次类推。

线性回归

在说到梯度下降之前一般都会说到线性回归,回归本质上就是给定一个点集,也就是有好多的点,用一条曲线去拟合,如果曲线为直线,就为线性回归,例如帝都的房子价格y由两个因素影响,x1为房子面积,x2为房子的地理位置,那么我们最后用一个表达式拟合出来,



问题的关键是如何评价我这个拟合的好坏呢?

下面就提出了损失函数



这里直接对应到了神经网络中,神经网络的目的就是训练一组优良的w,b使得最后的C最小,

这里w为权重,b为偏向,相当于x1,x2,n为训练集实例的个数,y(x)相当于h(x)神经网路的内部相当于一个模型,输入x,输出y(x),这个函数表达式本质上是一样的,相当于一种映射,a为实际的输出值,所以这对应于有监督学习,也就是输入x,经过神经网络输出y(x),和我的标签输出值a进行比较,我们的目标是C(w,b)最小,这样说明经过模型输出的预测值和真实值的差别最小

损失函数的最小化问题就要用梯度下降实现。

假设C(v1,v2),如下图



这就属于变量有两个的情况,下面先看二维的情况,也就是变量只有一个。

假设一个小球在曲面上的某一点,滚动到最低点



这个图片就特别形象,当小球在右边的点时,可以看到曲线斜率为正,也就是导数,表变化率为正值,这个时候令v = v - def J(x),也就是v 减去导数,会看到小球会往左边移动,当小球在左边的点时,斜率为负,同样v = v - defJ(x),这个时候小球会往右移动,总之最后会到达最低点。

三维的情况如下





那个系数代表学习率,如果没有学习率系数,相当于为1,导数的本质就是单位自变量导致的因变量的变化量,学习率控制更新的快慢,我们的目的是找到最低点的w和b的值,相当于坐标,学习率控制变化的步伐大小。

存在局部最优的情况





反向传播

其实就是一种利用误差来反向更新权重和偏置的方法,就是几个公式,重点理解下面的例子。







内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息