梯度下降

梯度下降

引入:当我们得到了一个目标函数后,如何进行求解?
直接求解?(并不一定可解,线性回归可以当做一个特例)
常规套路:机器学习的套路就是我交给机器一堆数据,然后告诉它什么样的学习方式是对的(目标函数),然后让它朝着这个方向去做
如何优化:一口吃不成胖子,我们要静悄悄的一步步的完成迭代(每次优化一点点,积累起来就是个大成绩)

目标函数 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)=2m1i=1m(hθ(xi)y(i))2
梯度下降_第1张图片
寻找山谷的最低点,也就是我们的目标函数终点(什么样的参数能使目标函数达到极值点)
下山分几步走?(更新参数)
(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)=2m1i=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} θjJ(θ)=m1i=1m(yih0(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+(yihθ(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α101k=ii+9(hθ(x(k))y(k))xj(k)
(每次更新选择一小部分数据进行计算,实用!!!)

梯度下降学习率

学习率(步长):对结果会产生巨大的影响,一般取值小点
如何选择:从小的时候选择,不行再小
批处理数量:32,64,128一般都可以,很多时候还得考虑内存和效率
梯度下降_第2张图片

你可能感兴趣的:(机器学习,梯度下降)