天天看点

梯度下降梯度下降

梯度下降

引入:当我们得到了一个目标函数后,如何进行求解?

直接求解?(并不一定可解,线性回归可以当做一个特例)

常规套路:机器学习的套路就是我交给机器一堆数据,然后告诉它什么样的学习方式是对的(目标函数),然后让它朝着这个方向去做

如何优化:一口吃不成胖子,我们要静悄悄的一步步的完成迭代(每次优化一点点,积累起来就是个大成绩)

目标函数: J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x i ) − y ( i ) ) 2 J(\theta_{0},\theta_{1})=\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{i})-y^{(i)})^{2} J(θ0​,θ1​)=2m1​∑i=1m​(hθ​(xi)−y(i))2

梯度下降梯度下降

寻找山谷的最低点,也就是我们的目标函数终点(什么样的参数能使目标函数达到极值点)

下山分几步走?(更新参数)

(1)找到当前最合适的方向

(2)走那么一小步,走快了该“跌倒”了

(3)按照方向与步伐去更新我们的参数

梯度下降,目标函数: J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x i ) − y ( i ) ) 2 J(\theta_{0},\theta_{1})=\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{i})-y^{(i)})^{2} J(θ0​,θ1​)=2m1​∑i=1m​(hθ​(xi)−y(i))2

一般有三种梯度下降的方式:

批量梯度下降: ∂ J ( θ ) ∂ θ j = − 1 m ∑ i = 1 m ( y i − h 0 ( x i ) ) x j i \frac{\partial J(\theta)}{\partial \theta_{j}}=-\frac{1}{m}\sum_{i=1}^{m}(y^{i}-h_{0}(x^{i}))x_{j}^{i} ∂θj​∂J(θ)​=−m1​∑i=1m​(yi−h0​(xi))xji​

(容易得到最优解,但是由于每次考虑所有的样本,速度很慢)

随机梯度下降: θ j ′ = θ j + ( y i − h θ ( x i ) ) x j i \theta_{j}^{'}=\theta_{j}+(y^{i}-h_{\theta}(x^{i}))x_{j}^{i} θj′​=θj​+(yi−hθ​(xi))xji​

(每次找一个样本,迭代速度快,但是不一定每一次都朝着收敛的方向)

小批量梯度下降法: θ j : = θ j − α 1 10 ∑ k = i i + 9 ( h θ ( x ( k ) ) − y ( k ) ) x j ( k ) \theta_{j}:=\theta_{j}-\alpha \frac{1}{10}\sum_{k=i}^{i+9}(h_{\theta}(x^{(k)})-y^{(k)})x_{j}^{(k)} θj​:=θj​−α101​∑k=ii+9​(hθ​(x(k))−y(k))xj(k)​

(每次更新选择一小部分数据进行计算,实用!!!)

梯度下降学习率

学习率(步长):对结果会产生巨大的影响,一般取值小点

如何选择:从小的时候选择,不行再小

批处理数量:32,64,128一般都可以,很多时候还得考虑内存和效率

梯度下降梯度下降

继续阅读