当前位置: 首页 > news >正文

深度学习:梯度下降法

损失函数 L:衡量单一训练样例的效果。

成本函数 J:用于衡量 w 和 b 的效果。

如何使用梯度下降法来训练或学习训练集上的参数w和b ?

 成本函数J是参数w和b的函数,它被定义为平均值;

损失函数L可以衡量你的算法效果,每一个训练样例都输出y\widehat{}^{(i)},把它跟真实标签y^{(i)}进行比较。

梯度下降法:从初始点开始,朝最陡的下坡方向走一步,在梯度下降一步后,或许在那里停下,或者尽可能快的向下走,这是梯度下降的一次迭代。然后继续,希望收敛到全局最优解。

Gradient Descent 梯度下降法,重复执行以下的更新操作:

  • 更新w的值(使用 := 表示更新w)。
  • Learning Rate 学习率 \alpha 可以控制每一次迭代,或者梯度下降法中的步长。
  • 这里的导数 dJ(w)/dw 就是对参数w的更新或变化量。
  • 我们写代码来实现梯度下降时,会使用变量名dw表示导数,即上图中的式子写为:
  • w := w - \alphadw
  • 新的w的值 等于 w自身 减去 学习率和导数的乘积

导数是函数在对应点的斜率,函数的斜率是高除以宽。如果J函数最开始在右边的点,那么它的斜率是正数,更新的w的值w := w - \alphadw会变小,即上图中的点会往左移;反之,如果一开始点在左上方,即斜率为负数,那么更新的w的值会变大,也就是会逐渐往右移。不论起始点在左边还是右边,最终都会到中间底部那个点。

在深度学习里,有循环会降低算法的运行效率。实现梯度下降的迭代,不使用任何循环,而是向量化(Vectorization)。使用内置函数,避免使用显式for循环,可以让程序运行速度快很多。

import numpy as npimport timea = np.random.rand(1000000)
b = np.random.rand(1000000)tic = time.time()
c = np.dot(a,b)
toc = time.time()print(c)
print("Vectorization version: " + str(1000*(toc-tic)) + "ms")c = 0
tic = time.time()
for i in range(1000000):c += a[i]*b[i]
toc = time.time()print(c)
print("For loop:" + str(1000*(toc-tic)) + "ms")

运行结果:

 由上述代码运行结果可知,使用内置函数比显式使用for循环快了200倍,所以我们尽量不要使用显示for循环。

http://www.lryc.cn/news/495129.html

相关文章:

  • `console.log`调试完全指南
  • ROS VSCode调试方法
  • 16 —— Webpack多页面打包
  • 微服务即时通讯系统的实现(服务端)----(3)
  • .net6.0 mvc 传递 model 实体参数(无法对 null 引用执行运行时绑定)
  • VUE 入门级教程:开启 Vue.js 编程之旅
  • Ubantu系统docker运行成功拉取失败【成功解决】
  • mvn-mac操作小记
  • 机器学习——生成对抗网络(GANs):原理、进展与应用前景分析
  • 「Mac畅玩鸿蒙与硬件33」UI互动应用篇10 - 数字猜谜游戏
  • Ps:存储 Adobe PDF
  • DDR3保姆级使用教程:ZYNQ 7010
  • OpenCV 模板匹配全解析:从单模板到多模板的实战指南
  • 【JAVA] 杂谈: java中的拷贝(克隆方法)
  • 使用 PDF API 合并 PDF 文件
  • 关于BeanUtils.copyProperties是否能正常复制字段【详细版】
  • 爬虫框架快速入门——Scrapy
  • 鸿蒙开发-HMS Kit能力集(应用内支付、推送服务)
  • TYUT设计模式大题
  • Webman中实现定时任务
  • 《以 C++破局:人工智能系统可解释性的探索与实现》
  • C++:QTableWidget删除选中行(单行,多行即可)
  • C++类中多线程的编码方式
  • 数据湖的概念(包含数据中台、数据湖、数据仓库、数据集市的区别)--了解数据湖,这一篇就够了
  • EDKII之安全启动详细介绍
  • 原生js上传图片
  • 使用torch==2.5.1版本用的清华源遇到的坑
  • 泷羽Sec-星河飞雪-BurpSuite之解码、日志、对比模块基础使用
  • 对拍详细使用方法
  • Python面向对象编程与模块化设计练习