梯度下降法

作者: code_solve | 来源:发表于2019-01-24 14:24 被阅读0次

梯度下降法

本文主要是为了讲解 梯度下降法 的原理和实践,至于什么是梯度下降法,他能做什么,相信百度一下你就都知道了,所以下面进入正题

从一元二次方程开始

梯度下降法主要是用来求解某个方程的最小值,这里我们以 凹一元二次方程为例。

准备数据

这里我们用到 matplotlibnumpy,如果你对这两个库不了解也没关系,我们主要是借助它来进行讲解,不会过多涉及相关的东西

import matplotlib.pyplot as plt
import numpy as np
# 生成一个等差数列 plot_x
plot_x = np.linspace(1,5,20)
# plot_x 平方 再加2 生成一个数列 plot_y
plot_y = (plot_x-3)**2+2
# 将 plot_x  plot_y 对应位置作为一个点的 x,y 坐标,那么就可以画出如下图的一条一元二次方程的曲线
plt.plot(plot_x,plot_y)
plt.show()
数据曲线.png

损失函数 和 梯度函数

这里我们首先明确两个概念:

  • 损失函数:即是我们这个一元二次方程,为什么叫损失函数呢?一般来说,我们都希望将损失降低到最小,所以求最小值,就是为了将损失减到最少咯,所以。。。这里就是我自己想当然把。。。哈哈

  • 梯度函数:一元二次方程来说,就是某个点的导数,可以指导我们的函数该往哪个方向走。并且梯度总是指向损失函数变大的方向,这里因为是梯度下降,所以每次迭代的值应该是梯度的负方向

编程实现梯度下降法

# 梯度函数
def dJ(x):
    return (x-3)*2

# 损失函数    
def J(x):
    return (x-3)**2+2


x = 0.1
# 记录每次梯度下降的点
history_x=[x]

i_iter=1

# 进行梯度迭代
while i_iter < 1e4:
    i_iter += 1
    dj = dJ(x)
    last_x = x
    x =x -0.1*dj
    history_x.append(x)
    
    # 如果迭代精确的达到,则结束结算     
    if abs(J(x)-J(last_x))<0.0000000001 :
        break

history_y = J(np.array(history_x))

plt.plot(plot_x,plot_y)
plt.plot(history_x,history_y,color='r',marker='+')
plt.show()
梯度下降法.png

后记

本文讲的并不如何易懂 和 通俗,不过因为 一元二次的 梯度应该是相对很容易的,所以这里也就不啰嗦了,梯度下降其实也不外呼这个原理,只是可能损失函数会不太一样,那么梯度函数也就跟着不太一样了,但是到最后都是通过这两个函数来进行迭代达到最后的标准求出最优解

梯度下降法容易陷入局部最优解的而达不到全局最优解,所以可能需要随机选取多个起始点进行梯度迭代,这样全量的梯度下降法也叫做 批量梯度下降法

对于多元二次方程,因为多元会使得 批量梯度下降法 的梯度函数计算的非常缓慢,所以可以采用随机梯度下降,并且随机梯度下降不容易陷入局部最优解的的陷阱,所谓的随机梯度就是随机选取多元二次方程的 某元进行一次迭代。

其实梯度函数是不容易求得,所以如何验证你的梯度函数是否正确也就显的相当重要了。。。。然后。。。这里一句两句就说不明白了。。。还是留个读者你把

嗯,当作知识点看看就好,别太较真,写的确实不咋样。。。哈哈!!!

相关文章

  • 2020-08-19--梯度下降法01

    梯度下降法简介 多元线性回归中的梯度下降法 随机梯度下降法 梯度下降法 的调试 1.梯度下降法简介 不是一个机器学...

  • 梯度下降法

    梯度下降法 本文主要是为了讲解 梯度下降法 的原理和实践,至于什么是梯度下降法,他能做什么,相信百度一下你就都知道...

  • 学习笔记:两种梯度下降法的思考

    在看梯度下降法的时候最初还真没看明白两种梯度下降法的区别,于是昨天散步的时候认真的思考了一下。 两种梯度下降法分别...

  • 最速梯度下降

    梯度下降法实现简单,当目标函数是凸函数时,梯度下降法的解是全局解。一般情况下,其解不保证是全局最优解,梯度下降法的...

  • 神经网络优化2

    梯度下降 梯度下降法 批梯度下降法(Batch Gradient Descent,BGD)是最常用的梯度下降形式,...

  • 2019-03-17神经网络——optimizer

    神经网络优化算法,通常有三种:小批量梯度下降法,随机梯度下降法和批量梯度下降法。 小批量梯度下降法 适用于训练数据...

  • 2019-11-01第二课二周优化算法

    指数加权平均: 动量梯度下降法: RMSprop:和动量梯度下降法相似 adam优化算法:将动量梯度下降法和RMS...

  • 机器学习系列(十六)——随机梯度下降Stochastic Gra

    随机梯度下降法Stochastic Gradient Descent 在之前的梯度下降法解决线性回归问题中,梯度向...

  • 全梯度下降算法从零实现,基于Numpy

    批量梯度下降法BGD Github 批量梯度下降法(Batch Gradient Descent,简称BGD)是梯...

  • 机器学习学习笔记(六)梯度下降法

    基础 (1)梯度下降法本身不是一个机器学习算法 (2)梯度下降法是一种基于搜索的最优化方法 (3)梯度下降法的作用...

网友评论

    本文标题:梯度下降法

    本文链接:https://www.haomeiwen.com/subject/zpbyjqtx.html