基于机器学习梯度下降优化算法来寻找最佳的线性回归模型
https://www.toutiao.com/a6638782437587419652/
幻风的AI之路 2018-12-25 18:12:27
线性回归模型
线性回归模型是一个非常简单的算法模型,它属于机器学习中的监督学习算法。假设数据集中有特征xi和特征yi,现在每个i对应于一个样本点(xi,yi),希望通过线性回归算法建立如下所示的一个模型。
线性回归模型
其中yi^为线性模型的预测值,我们肯定是希望yi^能够准确预测未知的样本。通俗来讲就是找到一个函数(wxi+b)拟合 yi使得误差最小,即最小化该模型的损失函数:
损失函数
只要能够使得损失函数最小化,那么此时建立的回归模型就能够较好的预测未知样本。那么如何最小化这个误差呢?这里需要用到梯度下降算法,非常简单,但是却非常强大,它的核心就是链式求导。
梯度
在梯度下降法中,我们首先要明确梯度的概念,一元回归中梯度就是我们所说的导数,多元回归中梯度就是我们所说的偏导数,如下所示是 f(x)=x² 这个函数在 x=1 处的梯度
f(x)=x²
我们为什么要求梯度呢?我们想要最快的进行回归模型的优化,而朝着梯度的方向进行优化往往是最快的。一个点的梯度值是这个函数变化最快的地方,也就是说沿着梯度的反方向,我们能够更快地找到函数的最小值点。
梯度下降算法
梯度下降算法,我们可以理解为朝着梯度的反方向一点一点的下降,最终我们就能找到损失函数的最小值,此时的模型就是我们所需要的。
下山的过程
比如我们在一座大山上的某处位置(函数的某一位置),由于我们不知道怎么下山,于是决定走一步算一步,也就是在每走到一个位置的时候,求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的位置向下走一步,然后继续求解当前位置梯度,这样一步步的走下去,一直走到山脚,这就是梯度下降算法的直观体现。
梯度下降过程
在我们进行梯度下降的时候,我们还需要指定算法走的这一步有多大,如果一步太小,那么算法的下降的速度会很慢,如果步长很大就容易在最小值点不断跳动,到不了最低点,所以步长是我们需要考虑中,机器学习中步长我们使用 η表示。
当算法进行一步梯度下降的之后,我们需要重新定位算法所在损失函数的位置,然后进行下一步梯度下降,更新公式是
更新公式
算法通过不断地迭代更新,最终我们能够找到一组最优的参数w和b,这就是梯度下降法的原理。
当我们找到最优的参数w和b之后,我们就拥有了最终的回归模型,我们就可以使用这个最终的模型来预测未知样本了,这就是机器学习梯度下降优化算法对线性回归模型进行优化的过程。
代码为
def linear_model(x):return x * w + b
def get_loss(y_, y):return torch.mean((y_ - y_train) ** 2)
for e in range(10): # 进行 10 次更新y_ = linear_model(x_train)loss = get_loss(y_, y_train)w.grad.zero_() b.grad.zero_() loss.backward()w.data = w.data - 1e-2 * w.grad.data # 更新 wb.data = b.data - 1e-2 * b.grad.data # 更新 b print('epoch: {}, loss: {}'.format(e, loss.data[0]))
基于机器学习梯度下降优化算法来寻找最佳的线性回归模型相关推荐
- 深度学习-各类梯度下降优化算法回顾
本文是根据 链接 进行的翻译,回顾了深度学习的各种梯度下降优化算法.*已获得原作者的翻译许可. 文章目录 一.概述 二.引言 三.Gradient Descent Variants(梯度下降法变体) ...
- 深度学习中的梯度下降优化算法综述
1 简介 梯度下降算法是最常用的神经网络优化算法.常见的深度学习库也都包含了多种算法进行梯度下降的优化.但是,一般情况下,大家都是把梯度下降系列算法当作是一个用于进行优化的黑盒子,不了解它们的优势和劣 ...
- 梯度下降优化算法总结
写在前面 梯度下降(Gradient descent)算法可以说是迄今最流行的机器学习领域的优化算法.并且,基本上每一个深度学习库都包括了梯度下降算法的实现,比如Lasagne.cafe.keras等 ...
- 梯度下降优化算法综述与PyTorch实现源码剖析
现代的机器学习系统均利用大量的数据,利用梯度下降算法或者相关的变体进行训练.传统上,最早出现的优化算法是SGD,之后又陆续出现了AdaGrad.RMSprop.ADAM等变体,那么这些算法之间又有哪些 ...
- 梯度下降优化算法综述(转载)
原文地址:http://www.cnblogs.com/ranjiewen/p/5938944.html 对梯度下降进行详细解释,以及总结不同的梯度下降优化算法的优劣,可以作为参考. 上两张图,简直不 ...
- 梯度下降优化算法概述
本文原文是 An overview of gradient descent optimization algorithms,同时作者也在 arXiv 上发了一篇同样内容的 论文. 本文结合了两者来翻译 ...
- 【深度学习】——梯度下降优化算法(批量梯度下降、随机梯度下降、小批量梯度下降、Momentum、Adam)
目录 梯度 梯度下降 常用的梯度下降算法(BGD,SGD,MBGD) 梯度下降的详细算法 算法过程 批量梯度下降法(Batch Gradient Descent) 随机梯度下降法(Stochastic ...
- 【机器学习基础】各种梯度下降优化算法回顾和总结
论文标题:An overview of gradient descent optimization algorithms 原文链接:https://arxiv.org/pdf/1609.04747.p ...
- 【机器学习】P17 梯度下降 与 梯度下降优化算法(BGD 等 与 Adam Optimizer、AdaGrad、RMSProp)
梯度下降与梯度下降算法 梯度下降 梯度下降算法 基础优化算法 批量梯度下降 BGD 随机梯度下降 SGD 小批量梯度下降 MBGD 动量梯度下降 MGD 基础优化算法上的改进和优化的算法 自适应梯度算 ...
最新文章
- Synchronized的两个用法
- MPB:基于BIOLOG的微生物群落功能分析
- lua学习笔记之闭包
- 【51NOD1287】加农炮
- 探寻新的治疗方法,研究人员用VR可视化DNA结构
- opencv编译python库_linux 下编译安装 opencv-python
- 计算机辅助分析及应用论文,故障树计算机辅助分析及应用研究-机械制造及自动化专业论文.docx...
- 前端学习(713)创建数组
- Python3 中的 asyncio async await 概念(实例)(ValueError: too many file descriptors in select())
- 快手与美团达成互联互通合作:美团将在快手上线小程序
- 系统登陆后自动注销的解决办法!
- krohne流量计接线图_KROHNE科隆电磁流量计工作原理介绍
- 如何使用谷歌搜索API来获取结果
- android 圆角 水波纹_Android实现水波纹点击效果
- linux实验报告ALU,《linux内核分析》第一次课 实验作业
- auto.js B0012 进入各频道 查找父控件 子控件 2021-10-03
- 移动端vue实现部门结构功能_基于Vue制作组织架构树组件
- 战队口号霸气押韵8字_三个字的公司名字怎么起?
- 坑之 Jpa 执行原生SQL 返回映射为对象
- 用美国主机空间的内容管理系统建站的优点
热门文章
- SQL begin end 块作用
- JFileChooser和FileFilter的使用
- JAVA sql2000 连接细节
- GIT常用命令以及使用详解图示
- 图灵奖得主Judea Pearl 智源大会演讲:从“大数据革命”到“因果革命”
- 智源青年科学家候选人 | 张祥雨:挑战自动化深度学习系统
- 分分钟掌握设计基本原则
- Intelij IDEA注册码生成代码
- AI监视打工人,这个国家明确说:保护我方“摸鱼权”!
- NLPer,是时候重视因果推理了!这有一份杨笛一等撰写的综述