梯度下降法原理和实现
在机器学习算法中,在最小化损失函数时,可以通过梯度下降法来一步一步的迭代求解,得到最小化的损失函数。梯度下降不一定能找到全局的最优解,有可能是一个局部的最优解。当损失函数是一个凸函数时,梯度下降就一定能得到最优解。梯度下降的相关概念有:
步长。步长决定在梯度下降的过程中,每一步沿梯度负方向前进的长度。
特征。指的是样本特征。
假设函数:在监督学习中,为了拟合输入样本,而使用假设函数。
损失函数:为了评估模型的好坏。通常用损失函数来度量拟合的程度。损失函数最小化,意味着拟合程度较好,参数对于模型是最优的。损失函数通常采用假设函数和样本输出的差取平方。
梯度下降详细算法
(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()
视频课笔记,如有侵权删,欢迎批评指正,谢谢。
梯度下降法原理和实现相关推荐
- matlab求nmse,梯度下降法原理与仿真系列(1)
更多相关内容请关注vx公号 优化与算法 便捷及时阅览 1 引言 梯度下降法(Gradient Descent)也称为最速下降法(Steepest Descent),是法国数学家奥古斯丁·路易·柯西 ( ...
- 梯度下降法原理解析(大白话+公式推理)
目录 摘 要 第一章:梯度下降法原理解析 1.1梯度下降算法的浅层解析(深入浅出的理解,有些专业名词在这一节只需混个眼熟即可, 1.2中就会通过前后呼应的方式进行解析.) 1.2 梯 ...
- 梯度下降法原理及python实现
文章目录 引言 梯度 单变量梯度下降法 单变量梯度下降原理 python实现单变量梯度下降 批量梯度下降法 批量梯度下降法原理 python实现多变量梯度下降 梯度下降算法数据归一化 随机梯度下降法 ...
- 最清晰的讲解各种梯度下降法原理与Dropout
一.梯度法思想 梯度法思想的三要素:出发点.下降方向.下降步长. 机器学习中常用的权重更新表达式为 :,这里的λ就是学习率,本文从这个式子出发来把机器学习中的各种"梯度"下降法阐释 ...
- 各种梯度下降法原理与Dropout
一.梯度法思想 梯度法思想的三要素:出发点.下降方向.下降步长. 机器学习中常用的权重更新表达式为 :,这里的λ就是学习率,本文从这个式子出发来把机器学习中的各种"梯度"下降法阐释 ...
- 梯度下降算法c语言实现,机器学习中梯度下降法原理及用其解决线性回归问题的C语言实现...
本文讲梯度下降(Gradient Descent)前先看看利用梯度下降法进行监督学习(例如分类.回归等)的一般步骤: 1, 定义损失函数(Loss Function) 2, 信息流forward pr ...
- 梯度下降法原理及实现
梯度下降代表函数值减少速度最快的方向.当设定目标函数最小值时,只要朝着梯度下降的方向前进,就可以不断的逼近最优值 #encoding=utf-8 """ created ...
- 线性回归与梯度下降法——原理与实现
看了coursea的机器学习课,知道了梯度下降法.一开始只是对其做了下简单的了解.随着内容的深入,发现梯度下降法在很多算法中都用的到,除了之前看到的用来处理线性模型,还有BP神经网络等.于是就有了这篇 ...
- 梯度及梯度下降法原理、公式推导
导数.偏导数.方向导数.梯度 理解梯度首先要理解导数.偏导数.方向导数. 导数: 指的是一元函数 y = f ( x ) y = f(x) y=f(x) 在某一点处沿x轴正方向的变化率.若导数大于0, ...
- 梯度下降法原理完全式手推
梯度下降法 我手写在纸上了,思路是先这样,然后再那样,之后这样,最后再那样,是不是很简单? 函数单调 导数与方向导数 方向导数与梯度 梯度下降公式由来
最新文章
- 第11章 AOF持久化
- 程序员,技术的“背锅侠”,盘点 2020 年面向监狱编程的那些事!
- 让Windows Live Messenger支持多账户登录
- Sound Ventures斥资百万美元举行NFT竞赛活动
- 十进制四则运算计算器代码,输入为字符串
- Sublime Text 模板插件SublimeTmpl
- 如何恢复回收站清空的文件?简单步骤教你操作
- bp神经网络数字识别matlab_pytorch神经网络实践(1): 安装与初次使用pytorch搭建神经网络实践手写数字识别教程
- ADB各种操作指令详解大汇总
- msf与cs互传,msf与cs建立frp穿透
- HTML基础-02-文本格式化、引文(斜体、粗体、上/下标签、删除、插入、强调、加重、字号、预格式,缩写、文字方向、短引用、长引用、引证)
- Java就业方向和自学提升方法总结黑马就业班资源分享
- php正则表达式总结
- 2022年义乌医院三基考试临床检查多选专项模拟题及答案
- R语言:作业六(逆变换法生成随机变量;线性同余发生器LCG的编写)
- gephi软件_类似gephi的软件
- 【容斥】[ZJOI2016] 小星星
- yii2 smarty php,yii框架整合Smarty
- 深度强化学习资料(视频+PPT+PDF下载)
- 国产web中间件TongWeb部署项目方式(包含静态页面,vue打包后的页面)