梯度下降(Gradient Descent)法自动求解一元线性回归中的w,b参数

先聊一聊

这篇文章所写的内容,全部是本人在网易云课堂上面,报了一门深度学习的课程,因为学了一圈下来,每天看视频,听课,发现学习到了后面,前面讲了啥,只有个印象了,真正讲一讲,说一说,到底学习到了什么,苦笑着。。。

借着CSDN的平台,记录一下自己的学习笔记,整理成文字,总比听一遍记得牢吧

下面聊正事,开始了

如标题所述,整理记忆一下,在机器学习也好,深度学习也罢,经常用到的,去寻找一个函数的最优值的算法

梯度下降算法(Gradient Descent)

首先,看一眼梯度的概念,也是先在理论背景知识上过去,因为任何的算法,都要有扎实可靠的理论作支撑的

梯度
梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。
注:以上来源于百度百科

个人理解:
因为在本人考研的时候,要考数学一,所以就报了某数学考研辅导老师的课程,也是得益于这位有真才实学的好老师,因本人愚笨,学到多少数学知识,先不谈,最受益的就是他教会我的一些人生道理,下面是一点我依稀记得的他在课程上面的关于对梯度的解释

曰:梯度,要知道,这是一个向量,所谓向量,是一个有大小有方向的量,这也就印证了百度所说的第一句,梯度,明确是一个向量,有方向的

然后他表达的就是一个函数的某点,在此方向上,可以获得最大值,变化的最快

主菜上来了

正因为函数点在这个方向上是最大值,那么前面加一个负号,取相反数,不就是最小值的方向了吗,然后我们在定义一个学习率(Learn Rate),也就是每次朝着那个下降的方向,前进的步长,我们在迭代好多次,不就如愿能找到那个函数最小值了吗

以上在说什么,见代码,一看便知

上代码:

Step 1:定义损失函数(Loss Function):
def loss(w, b, point):
    total_error = 0#初始化误差值

    # 遍历每一个点,将每一个点的误差计算,并加和,且除以N(点的数量)
    for i in range(len(point)):
        x = point[i][0]
        y = point[i][1]
        total_error += (1/float(len(point))) * (((w*x + b) - y) ** 2)

    return total_error

注:我们要求解最小值,即最优解,的那个函数,是我们自己人为定义的损失函数,形式多样,取决于实际场景

Step2:定义计算梯度函数并更新
def compute_Gradient(w, b, point, LearningRate):
    w_Grad, b_Grad = 0, 0#初始化w,b梯度值
    N = float(len(point))

    for i 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值