在机器学习算法中,在最小化损失函数时,可以通过梯度下降法来一步一步的迭代求解,得到最小化的损失函数。梯度下降不一定能找到全局的最优解,有可能是一个局部的最优解。当损失函数是一个凸函数时,梯度下降就一定能得到最优解。梯度下降的相关概念有:
步长。步长决定在梯度下降的过程中,每一步沿梯度负方向前进的长度。
特征。指的是样本特征。
假设函数:在监督学习中,为了拟合输入样本,而使用假设函数。
损失函数:为了评估模型的好坏。通常用损失函数来度量拟合的程度。损失函数最小化,意味着拟合程度较好,参数对于模型是最优的。损失函数通常采用假设函数和样本输出的差取平方。
梯度下降详细算法
(1)先决条件
我们可以对假设函数进行一个简化,增加一个特征x0=1, 这样

对于上述的假设函数,损失函数为:

这里的系数不影响取极值时对应的模型参数值,仅影响损失函数的值。我们关心的是对应的模型参数值,所以系数可以根据使求导更加简单易化简的方式自定义。
(2)参数初始化
主要初始化特征参数θ,算法终止距离ε以及步长α。在没有任何先验知识的时候,通常设所有θ为0,步长为1.
(3)算法过程
1.确认损失函数,对θi求偏导。
2.用步长乘以损失函数的梯度,得到当前下降的距离。
3.确认是否所有θ的梯度下降距离都小于ε,如果是则算法终止,当前所有θ即为最终结果,否则进入步骤4。
4.更新所有的θ,对于θi其更新表达式如下,更新完成后继续转入步骤1。
θ_i=θ_i-α ∂/(∂θ_i ) J(θ_0,θ_1,…θ_n)
对梯度下降模拟的代码如下:

import numpy as np
import matplotlib.pyplot as plt
plot_x=np.linspace(-1,6,141)
plot_y=(plot_x-2.5)**2-1
#进行可视化
plt.plot(plot_x,plot_y)
plt.show()

def dJ(theta):return 2*(theta-2.5)
def J(theta):return (theta-2.5)**2-1theta=0.0
eta=0.1
epsilon=1e-8
theta_history=[theta]
i_iter=0
n_iter=1e4
while i_iter<n_iter:gradient=dJ(theta)last_theta=thetatheta=theta-eta*gradienttheta_history.append(theta)if(abs(J(theta)-J(last_theta))<epsilon):breaki_iter+=1
plt.plot(plot_x,J(plot_x))
plt.plot(np.array(theta_history),J(np.array(theta_history)),color='r',masker='+')
plt.show()


视频课笔记,如有侵权删,欢迎批评指正,谢谢。

梯度下降法原理和实现相关推荐

  1. matlab求nmse,梯度下降法原理与仿真系列(1)

    更多相关内容请关注vx公号 优化与算法 便捷及时阅览 1 引言 梯度下降法(Gradient Descent)也称为最速下降法(Steepest Descent),是法国数学家奥古斯丁·路易·柯西 ( ...

  2. 梯度下降法原理解析(大白话+公式推理)

    目录 摘 要 第一章:梯度下降法原理解析 1.1梯度下降算法的浅层解析(深入浅出的理解,有些专业名词在这一节只需混个眼熟即可,         1.2中就会通过前后呼应的方式进行解析.) 1.2  梯 ...

  3. 梯度下降法原理及python实现

    文章目录 引言 梯度 单变量梯度下降法 单变量梯度下降原理 python实现单变量梯度下降 批量梯度下降法 批量梯度下降法原理 python实现多变量梯度下降 梯度下降算法数据归一化 随机梯度下降法 ...

  4. 最清晰的讲解各种梯度下降法原理与Dropout

    一.梯度法思想 梯度法思想的三要素:出发点.下降方向.下降步长. 机器学习中常用的权重更新表达式为 :,这里的λ就是学习率,本文从这个式子出发来把机器学习中的各种"梯度"下降法阐释 ...

  5. 各种梯度下降法原理与Dropout

    一.梯度法思想 梯度法思想的三要素:出发点.下降方向.下降步长. 机器学习中常用的权重更新表达式为 :,这里的λ就是学习率,本文从这个式子出发来把机器学习中的各种"梯度"下降法阐释 ...

  6. 梯度下降算法c语言实现,机器学习中梯度下降法原理及用其解决线性回归问题的C语言实现...

    本文讲梯度下降(Gradient Descent)前先看看利用梯度下降法进行监督学习(例如分类.回归等)的一般步骤: 1, 定义损失函数(Loss Function) 2, 信息流forward pr ...

  7. 梯度下降法原理及实现

    梯度下降代表函数值减少速度最快的方向.当设定目标函数最小值时,只要朝着梯度下降的方向前进,就可以不断的逼近最优值 #encoding=utf-8 """ created  ...

  8. 线性回归与梯度下降法——原理与实现

    看了coursea的机器学习课,知道了梯度下降法.一开始只是对其做了下简单的了解.随着内容的深入,发现梯度下降法在很多算法中都用的到,除了之前看到的用来处理线性模型,还有BP神经网络等.于是就有了这篇 ...

  9. 梯度及梯度下降法原理、公式推导

    导数.偏导数.方向导数.梯度 理解梯度首先要理解导数.偏导数.方向导数. 导数: 指的是一元函数 y = f ( x ) y = f(x) y=f(x) 在某一点处沿x轴正方向的变化率.若导数大于0, ...

  10. 梯度下降法原理完全式手推

    梯度下降法 我手写在纸上了,思路是先这样,然后再那样,之后这样,最后再那样,是不是很简单? 函数单调 导数与方向导数 方向导数与梯度 梯度下降公式由来

最新文章

  1. 第11章 AOF持久化
  2. 程序员,技术的“背锅侠”,盘点 2020 年面向监狱编程的那些事!
  3. 让Windows Live Messenger支持多账户登录
  4. Sound Ventures斥资百万美元举行NFT竞赛活动
  5. 十进制四则运算计算器代码,输入为字符串
  6. Sublime Text 模板插件SublimeTmpl
  7. 如何恢复回收站清空的文件?简单步骤教你操作
  8. bp神经网络数字识别matlab_pytorch神经网络实践(1): 安装与初次使用pytorch搭建神经网络实践手写数字识别教程
  9. ADB各种操作指令详解大汇总
  10. msf与cs互传,msf与cs建立frp穿透
  11. HTML基础-02-文本格式化、引文(斜体、粗体、上/下标签、删除、插入、强调、加重、字号、预格式,缩写、文字方向、短引用、长引用、引证)
  12. Java就业方向和自学提升方法总结黑马就业班资源分享
  13. php正则表达式总结
  14. 2022年义乌医院三基考试临床检查多选专项模拟题及答案
  15. R语言:作业六(逆变换法生成随机变量;线性同余发生器LCG的编写)
  16. gephi软件_类似gephi的软件
  17. 【容斥】[ZJOI2016] 小星星
  18. yii2 smarty php,yii框架整合Smarty
  19. 深度强化学习资料(视频+PPT+PDF下载)
  20. 国产web中间件TongWeb部署项目方式(包含静态页面,vue打包后的页面)

热门文章

  1. 分区扩容软件:调整分区大小/移动分区
  2. CNET盘点2012年IT人物:进退得意还是没落迷茫
  3. 臻和科技独家引进乳腺癌精准诊断利器MammaPrint 为国内患者带来福音
  4. (js)删除数组中某个元素的几种方式
  5. 米家接入HomeKit系列一:接入基本原理与开篇
  6. 2021015979李庚奇
  7. Linux 自定义网桥配置静态 IP
  8. iMindMap思维导图下载包如何添加水印教程
  9. 在EF中执行SQL语句
  10. 电动车号牌输入组件plate-number-input使用