分治法—可能会错过更好的取值。如果数据集或者维度大,代价也大。
我们要找一个更好的算法—梯度下降算法。

梯度:gradient,本文将用g代替。

所以:


梯度下降总是朝着下降速度最快的方向。

如果不都在随便一个辅助线之上或者之下则就是非凸函数。如果损失函数是上图的曲线,很容易卡在局部最优点。那么为什么深度学习里最普遍的就是梯度下降算法呢,是因为非凸函数在真正的深度学习里是很少见的。你我们要解决的最大问题就是鞍点。

import numpy as np
import matplotlib.pyplot as pltx_data=[1.0,2.0,3.0]
y_data=[2.0,4.0,6.0]w=1.0
a=0.01
def forward(x):return x*wdef cost(xs,ys):cost=0for x,y in zip(xs,ys):y_pred=forward(x)cost+=(y_pred-y)**2return cost/len(xs)def gradient(xs,ys):grad=0for x,y in zip(xs,ys):grad+=2*x*(x*w-y)return grad/len(xs)print("Predict (before training):",4,forward(4))cost_list=[]
epoch_list=[]for epoch in range(100):cost_val=cost(x_data,y_data)grad_val=gradient(x_data,y_data)w-=a*grad_valcost_list.append(cost_val)epoch_list.append(epoch)print("Epoch=",epoch,"w=",w,"cost=",cost_val)print("Predict(after training):",4,forward(4)

运行结果:

plt.plot(epoch_list,cost_list)
plt.ylabel("cost")
plt.xlabel("epoch")
plt.show()


训练结果一定是收敛的,如果发散则训练失败了,一般原因就是学习率a太大,调参重新训练。

此时鞍点问题还是没有解决
我们引入***随机梯度下降***(Stochastic Gradient Descent)SGD

cost所有样本的损失函数,loss是一个样本的损失函数,随机梯度下降是用样本里随即一个样本来计算。

引入随机噪声可能会将鞍点跨过去,让样本继续前进,事实证明这是一种非常有效的办法。

import numpy as np
import matplotlib.pyplot as pltx_data=[1.0,2.0,3.0]
y_data=[2.0,4.0,6.0]w=1.0
a=0.01def forward(x):return x*wdef loss_i(x,y):y_pred=forward(x)lossi=(y_pred-y)**2return lossidef Sgradient(x,y):grad=2*x*(x*w-y)return gradprint("Predict (before training):",4,forward(4))for epoch in range(100):for x,y in zip(x_data,y_data):loss_val=loss_i(x,y)grad_val=Sgradient(x,y)w-=a*grad_valprint("\tgrad: ",x,y,grad_val)print("progress:",epoch,"w=",w,"loss=",loss_val)print("Predict(after training):",4,forward(4))

处理结果:




梯度下降的效率高。可能无法找到最优点。
随机梯度下降运算性能太高,无法并行,时间空间复杂度高。

实际应用的时候,我们会采用折中的方式—批量随机梯度下降(batch),性能越高越好,时间复杂度越低越好。

将一个个样本分组,用随机梯度下降法来学习。
MiNi-Batch是主流。

梯度下降,随机梯度下降,代码实现相关推荐

  1. 【数据挖掘】神经网络 后向传播算法 ( 梯度下降过程 | 梯度方向说明 | 梯度下降原理 | 损失函数 | 损失函数求导 | 批量梯度下降法 | 随机梯度下降法 | 小批量梯度下降法 )

    文章目录 I . 梯度下降 Gradient Descent 简介 ( 梯度下降过程 | 梯度下降方向 ) II . 梯度下降 示例说明 ( 单个参数 ) III . 梯度下降 示例说明 ( 多个参数 ...

  2. 批梯度下降 随机梯度下降_梯度下降及其变体快速指南

    批梯度下降 随机梯度下降 In this article, I am going to discuss the Gradient Descent algorithm. The next article ...

  3. 坐标下降+随机梯度下降

    坐标下降+随机梯度下降 坐标轴下降法(Coordinate Descent, CD)是一种迭代法,通过启发式的方法一步步的迭代求解函数的最小值,和梯度下降法(GD)不同的时候,坐标轴下降法是沿着坐标轴 ...

  4. 线性回归随机梯度下降_线性回归的批次梯度与随机梯度下降

    线性回归随机梯度下降 In this article, we will introduce about batch gradient and stochastic gradient descent m ...

  5. 批量梯度下降 | 随机梯度下降 | 小批度梯度下降

    文章目录 1. 什么是梯度?求梯度有什么公式? 2. 批量梯度下降 | 随机梯度下降 | 小批度梯度下降 区别 3. 随机梯度下降的两种方式:原始形式 和 对偶形式 1. 什么是梯度?求梯度有什么公式 ...

  6. 线性模型(梯度下降随机梯度下降)

    参考视频:03.梯度下降算法_哔哩哔哩_bilibili 显然使用穷举法效率太低了,如果权重多一些,时间复杂度将是指数级的增长.所以我们需要使用梯度下降算法来优化. 梯度Gradient: ∂ c o ...

  7. 梯度下降法—随机梯度下降

    1.算法描述 批量梯度下降的主要问题是它要用整个训练集来计算每一步的梯度,训练集大时算法特别慢.相反,随机梯度下降,每一步在训练集中随机选择一个实例,并且仅基于该单个实例来计算梯度. 与使用批量梯度下 ...

  8. 一般梯度、随机梯度、相对梯度和自然梯度

    一般梯度 也称常规梯度,就是 f ( w ⃗ ) f(\vec w) f(w ) 对 w ⃗ \vec w w 的偏导,即 ∂ f ( w ⃗ ) ∂ w ⃗ \frac{\partial f(\ve ...

  9. 【转载】深度学习数学基础(二)~随机梯度下降(Stochastic Gradient Descent, SGD)

    Source: 作者:Evan 链接:https://www.zhihu.com/question/264189719/answer/291167114 来源:知乎 著作权归作者所有.商业转载请联系作 ...

  10. Sklearn官方文档中文整理4——随机梯度下降和最近邻篇

    Sklearn官方文档中文整理4--随机梯度下降和最近邻篇 1. 监督学习 1.5. 随机梯度下降 1.5.1. 分类[linear_model.SGDClassifier] 1.5.2. 回归[li ...

最新文章

  1. 从未在一起更让人遗憾_明明是真爱,却又不能在一起
  2. springboot 启动的时候报错 Error creating bean with name 'solrClient'
  3. 兼容单片机的CRC32查表计算程序的C语言实现
  4. 剑指Offer - 面试题54. 二叉搜索树的第k大节点(二叉树循环遍历)
  5. python中list函数_list()函数以及Python中的示例
  6. 各种说明方法的答题格式_初中语文阅读答题公式 语文阅读理解万能公式大全...
  7. 编译Java程序一共要安装什么_如何编译java程序
  8. SQLServer组成:
  9. react轮播图插件_React 基础面试题 - 和你随便聊聊 React
  10. java的安装包下载 百度云_Java开发相关安装包网盘下载链接分享
  11. LM算法——列文伯格-马夸尔特算法(最速下降法,牛顿法,高斯牛顿法)(完美解释负梯度方向)
  12. 一个正经的前端学习 开源 仓库(阶段十九)
  13. 新视野大学英语(第三版)读写教程1答案(Units1-6)
  14. 逆向分析中加解密算法常用工具
  15. 阿里云价格/报价 - 阿里云服务器最新收费标准
  16. c语言中switch的参数,C语言 switch 语句-嗨客网
  17. 数字视频处理(五)——频率域陷波滤波
  18. 计算机的位、字节、字
  19. 苹果又出新专利,Apple Watch可以靠手腕皮肤识别主人了?!|技术前沿洞察
  20. clamav Java_ClamAV安装使用详解

热门文章

  1. 软件测试项目实战案例分解,跟着我一步一步操作【人力资源管理系统】
  2. Vijos 1055 奶牛浴场 最大子矩阵 算♂法①
  3. excel单元格斜线_掌握Excel的这个制表技巧,“小白老师”也能变“超神”!
  4. 00 引言:你想谈一场恋爱吗?
  5. 根据身份证号回填信息
  6. 基于Python实现的作家风格识别
  7. 处理 unity崩溃日志
  8. 2012年度最佳分享:仿webQQ界面,详情请下载,不吃亏
  9. 微信支付宝免签约支付方案
  10. 第十一、十二、十三、十四章 网络配置管理、归档和远程复制同步文件、软件包管理、创建访问linux文件系统