<~生~信~交~流~与~合~作~请~关~注~公~众~号@生信探索>

标题来自张玉宏老师书的目录《深度学习之美》

之前的推文中使用最小二乘法求损失函数的最小值,但是在机器学习和深度学习中更通用的方法是使用梯度下降方法找到最优解。

名词解释

梯度下降:核心就是希望能够通过数学意义上的迭代运算,从一个随机点出发,一步步逼近最优解。

梯度:有大小和方向,用导数求得大小,目标函数变化最快的方向的反方向作为移动的方向

方向:往哪个方向走

步长:每一步走多远

学习率:在梯度下降过程中,学习率乘以梯度大小为步长。学习率如果过小,损失函数的变化速度很慢,会大大增加网络的收敛复杂度,并且很容易被困在局部最小值或者鞍点

迭代:数学上的迭代,第一步运算的结果带入到第二步的函数中,以此类推

用代数表示梯度下降迭代过程

目标方程(多元一次方程)

那么多元一次方程可以写为(矩阵形式表示)

令其损失函数为

其实是预测值减去真实值的平方除以2倍的样本数m(即0.5*MSE),多乘以0.5可以消除掉平方求导后的系数2

迭代过程

  1. 对任意一个 有,即在某个具体的点上带入w值,对损失函数求导
  1. 计算步长

是学习率。步长 = 梯度 * 学习率

  1. 更新所有参数w

移动的方向从减号表示出来,减号表示梯度的反方向

简单的示例

x是特征,只有一个;y是真实标签

如果需要对 建模的话,需要找到一个a和b,使得损失函数L最小

x y
1 2
2 4
3 6

所以特征矩阵X为(多出来的全为1的一列为截距b)

真实标签矩阵y为

那么参数矩阵w为

令损失函数为

一阶导数

函数实现

设步长 , 初始点 ,迭代次数为10000

import torchdef g(X, y, alpha = torch.tensor(0.01, requires_grad = True), n = 10000):    b=torch.ones(X.shape[0], requires_grad = True,dtype=torch.float32).reshape(-1,1)    X = torch.cat([X,b],1)    m, nc = X.shape    w = torch.zeros(nc, 1, requires_grad = True)    for _ in range(n):        grad = torch.mm(X.t(), (torch.mm(X, w) - y))/m        w = w - alpha * grad    return w

因为函数g中,可以给X增加一列全为1所以输入的时候就不需要写了

X = torch.tensor([[1],[2],[3]], requires_grad = True,dtype=torch.float32)X# tensor([[1.],#         [2.],#         [3.]], requires_grad=True)y = torch.tensor([2,4,6], requires_grad = True,dtype=torch.float32).reshape(-1,1)y# tensor([[2.],#         [4.],#         [6.]], grad_fn=<ReshapeAliasBackward0>)

计算结果 ,其实用最小二乘法令一阶导数为0即可求的a=2,b=0

g(X,y, n = 10000)# tensor([[2.0000e+00],#         [1.9127e-05]], grad_fn=<SubBackward0>)

计算此时的损失函数值,改写原来的g函数

def g(X, y, alpha = torch.tensor(0.01, requires_grad = True), n = 10000):    b=torch.ones(X.shape[0], requires_grad = True,dtype=torch.float32).reshape(-1,1)    X = torch.cat([X,b],1)    m, nc = X.shape    w = torch.zeros(nc, 1, requires_grad = True)    for _ in range(n):        grad = torch.mm(X.t(), (torch.mm(X, w) - y))/m        w = w - alpha * grad    loss = torch.mm((torch.mm(X,w)-y).t(), torch.mm(X,w)-y)/m*0.5    return w,loss

此时的损失函数非常接近于0

w,loss=g(X,y)loss#  tensor([[2.9644e-11]], grad_fn=<MulBackward0>))

本文由 mdnice 多平台发布

山重水复疑无路,最快下降问梯度相关推荐

  1. 山重水复疑无路,柳暗花明又一村——记一次在win7下安装MATLAB的经历

    某人现在搞课程设计,要用到MATLAB,请求我帮忙装一下.其电脑是惠普的本本,系统是win7. 拿到本本后,我的第一个想法就是,把我机子上安装的MATLAB6.5的安装程序考过去,直接安装.顺利的话, ...

  2. 山重水复疑无路,柳暗花明又一村

    本来找不到钥匙 怎么找也找不到 最后发现在羽绒服的口袋里面 我觉得 重点是我们如何按照"道"来做这个事情 不要太在乎这个眼前的得失 这个很难平衡好 但是我们可以做到

  3. 山重水复疑无路,柳暗花明又一村(12.15一周总结)

    一周总结 最美的不是下雨天 是曾与你躲过雨的屋檐 这一周天气变化的非常频繁,忽冷忽热.今天还下了点小雨,一直都很喜欢下雨天,尤其是小雨,淋着雨走在路上的感觉非常的美妙,美中不足的是--心疼自己的耳机, ...

  4. 山穷水尽疑无路,柳暗花明又一村

    1.在现在的屋子里做需要窗帘(不想去弄了,因为我在一个基本全空的屋子里做,就住剩下十几天(谈不上住,只是上午下午在这而已),就没人住这里了), 在里屋做,需要再来个插座,这倒是没问题,回家再拿个,但是 ...

  5. 山穷水尽疑无路,柳岸花明又一村

    有很多时候会发生很多,很巧合,但是不可思议的事情.而今天就发生了一件在我的身上. 早上起来,洗漱完了,准备去上班.开门的时候突然发现门打不开,这是为什么?以为是没有开过这样的门,尝试了各种方式才发先, ...

  6. “山空水尽疑无路,柳暗花明又一村?”

    "山空水尽疑无路,柳暗花明又一村"? 在这句话的后面加个问号,最能表达我的心情,昨天很苦恼的事情,今天在很多热心人的帮助下有了转机,刚好今天考试组织方来了人(性格很好,人也很漂亮) ...

  7. 国产手机:2022疑无路,2023又一村?

    配图来自Canva可画 1月28日,Counterpoint Research公布的2022中国智能手机市场销量报告显示,中国智能手机销量2022年同比下降14%,达到十年来的最低水平.销量持续走下坡 ...

  8. 山穷水复疑无路?柳暗花明又一村|转行软件测试月薪12K

    他从基层业务做到业务总监,再到团队解散,开启3次创业之路,经历了3年的"试错期",最终选择了转行做软件测试.希望张同学的分享能对一直处于迷茫的小伙伴一些帮助. 初入职场,风生水起 ...

  9. Glide源码解析之山清水秀疑无路(一)

    本篇主要由以下内容构成: 1.框架结构简介 2.按照glide源码使用的时序图进行深入简述的方式讲解 3.核心类和核心模块总结 ps:本人博客写的太少,逻辑有时会走火入魔,希望你看到我的文章,可以理清 ...

最新文章

  1. ad hoc是什么的简称_签名后的App安装时出现安装失败是什么原因?如何解决?
  2. 《LeetCode力扣练习》剑指 Offer 09. 用两个栈实现队列 Java
  3. 译-在Python正则模式中search()和match()的区别是什么?
  4. k8s的资源限制及资源请求
  5. Hibernate HQL基础 投影查询
  6. SAP UI5 sap.ui.core.OpenState.CLOSED Dialog open and close
  7. Repeater分页
  8. “Python简直万能!”拜托快醒醒!
  9. Oracle内部错误:ORA-07445[kcflfi()+466] [INT_DIVIDE_BY_ZERO]一例
  10. 【知识】OpenStack计算设施----Nova
  11. 5月7日MySQL 学习
  12. [Markdown] Markdown使用 - 持续更新
  13. 微信无法打开xlsx文件_微信打不开文件怎么办显示excel丢失或损坏
  14. 元境云游戏技术让游戏全平台畅玩成为现实
  15. 2020中山大学计算机学院保研,我校举行中山大学2020级研究生招生宣讲会
  16. ADP(自适应动态规划)-HDP
  17. 盘点微软使用火热的编程语言!程序员:你看我还有机会吗?
  18. mysql 审批表_用sql统计信贷业务审批表、逾期表(即期)
  19. 三分钟快速了解typeScript 类
  20. 网站网页快速变黑白方法

热门文章

  1. 吴恩达机器学习课程-作业1-线性回归(python实现)
  2. [资料共享] 用细分控制步进电机,原理图+程序
  3. 我们需要一颗强劲的心脏1--小谈机房建设工程
  4. Sigcomm2017 re-architecting datacenter networks and stacks for low latency and high performance 论文笔记
  5. win11使用wsl2安装Linux子系统
  6. 录屏软件哪个好?分享:好用的录屏软件,一款就够!
  7. Edius4.10 安装版下载及破解,升级,视频教程下载
  8. 对电化学稳态阻抗谱(EIS)的数据进行自动化处理并可视化作图/画图(科研投稿)
  9. 操作系统期末知识点集锦及习题总结——第一章
  10. 腾讯云香港服务器网速稳定吗,腾讯云香港云服务器测评,香港CN2,延迟、速度、丢包测试...