fox同学tensorflow第4周学习分享--梯度下降法原理 by fox 20151217
最简单的情况,数据集分布呈线性分布
所以我们假设我们想要推导的函数,是一个线性函数:h(x) = hӨ(x) = Ө0 + Ө1x1 + Ө2x2……. 每个x表示一个特征,这个Ө表示任意实数,并且他就是我们要得到的值
首先我们要计算h(x)和真实数据的方差:(hӨ (x) – y)^2 根据方差的定义,方差越小,说明h(x)和真实函数越契合
然后计算所有数据的方差:
, 1/2是用来简化后面的计算的,n表示训练数据的数量 最后要求通过不断变化Ө,来找到一个J(Ө)最小的那个值。
通过偏导的定义,可以知道,对J(Ө)求偏导,可以获得Ө的方向,即
收敛的方向,所以
所以,当有多个训练数据时就是这样:
α表示步长,一般是手动设置的,将上面的式子带入得到:
通过对J(x)求偏导,然后加上原来的Ө,就可以获得新的Ө,然后再用这个新的Ө 这是更新Ө的过程,获得最小的hӨ(x)的公式,这就是梯度下降法
当循环这个公式直到函数收敛,最后的Ө值就是最小值
收敛:一般来说判断函数是否收敛可以通过上次和这次的值是否很接近来判断
由于假设函数是一个线性函数,所以全局最优解就是局部最优解 因为j(Ө)的偏导是 一个二次函数,所以它实际上是一个碗形:
求出Ө就可带入我们一开始假设的那个函数中,然后通过输入x预测我们想要的y了
附件是全文的word版
梯度下降法 by fox 20151217.docx
(155.49 KB, 下载次数: 13)
|