梯度下降到底是什么?

news/2024/7/8 2:07:27

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达66d5810eb1fbcee2e4b1dcba5e7213f5.png

我们回忆深度学习“三板斧”:

1. 选择神经网络

2. 定义神经网络的好坏

3. 选择最好的参数集合

其中步骤三,如何选择神经网络的好坏呢?

9b44ff6e495659c29cf4b2cfd4e024fb.png

梯度下降是目前,最有效的方法之一。

方法:我们举两个参数的例子 θ1、θ2, 损失函数是L。那么它的梯度是:

bd0feec38928790ad1347d0008020fca.png

那我为了求得最小值,我们有:

976f4c6aa93218c7bca31a5e6ba59e68.png

参数不断被梯度乘以学习率η 迭代

d649cd6057bb4cb92f0e96778a2305b4.png

那么上述公示公为什么是减号,不是加号呢?

我们定义 θ 改变的方向是movement的方向, 而gradient的方向是等高线的法线方向

6b184f2c9b6c778a53b39caa44b72b13.png

基础的Gradient Decent已经介绍完了,接下来,我们一起探讨GD的使用技巧。

Learning rate学习率的设定

Learning Rate η 如果设定不好,Loss反而增大

79355007727f51870358865850fdd1f5.png

自适应的学习率 adaptive learning rate

很多小伙伴在机器学习代码中,学习率一般都是设置为一个固定的数值(需要不断调参)。

根据学习经验,一般的我们有如下结论:

1. 训练刚开始的时候,学习率较大

2. 经过几轮训练后,结果慢慢接近的时候,需要调小学习率

2c35ab8c7fa4813345ca67bddf999593.png

Adagrad 的学习率是现有学习率 除以 导数的平方和的开根号

6d2973b84bfa4de2256f790ca5b10eb2.png

Stochastic Gradient Decent (SGD)

让训练更加快速

一般的GD方法是所有的训练数据后,进行一次参数更新

bac312f65e22613c7264c614a186bc8e.png

SGD是一个样本就可以更新参数

075da7405a7acada638f4642191287b3.png

GD和SGD的对比效果:

496d738c7a236831c61fdd3a4495af78.png

特征裁剪 Feature Scaling

让不同维度的数据,有相同的变化幅度

b08e2a68435c328a8454803c14f51285.png

训练的时候,哪一个好train,一目了然

d7bed4f5e8f69435f080ca2defa90cc2.png

归一化方法:

9f8a297b1d1adf8d83f8f5320b90274c.png

总结: Gradient Decent 是机器学习、深度学习求解Optimal问题的“普世”方法,但是也会遇到很多问题,例如local minima 和 saddle point 的问题。 我们以后会展开讨论。

124631902b76aace30d19796328b152a.png

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

91ea4d4922ea611049d4022b5dd4ba90.png

fcb57c4eca004fab3e6856a2d0f87c24.png


http://lihuaxi.xjx100.cn/news/268470.html

相关文章

GPT-3 的到来,程序员会被 AI 取代吗?

无需任何训练,AI可用任何语言编程。作者 | Frederik Bussler译者 | 弯月,责编 | 晋兆雨头图 | CSDN 下载自东方 IC来源 | CSDN以下为译文:2017年的时候,曾有研究人员问:到2040年人工智能是否承担起大多数的编程工作&am…

正则表达式的概述

1. 正则表达式的介绍 在实际开发过程中经常会有查找符合某些复杂规则的字符串的需要,比如:邮箱、图片地址、手机号码等,这时候想匹配或者查找符合某些规则的字符串就可以使用正则表达式了。 正则表达式是匹配符合某些规则的字符串数据 2. 正则表达式概念…

leetcode004 Median_of_Two_Sorted_Arrays.py

"""给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 [1, 3] nums2 [2]则中位数是 2.0 示例 2:nums1 [1, 2]…

Unity的三种Interceptor

Unity默认提供了三种拦截器:TransparentProxyInterceptor、InterfaceInterceptor、VirtualMethodInterceptor。 TransparentProxyInterceptor:代理实现基于.NET Remoting技术,它可拦截对象的所有函数。缺点是被拦截类型必须派生于MarshalByRe…

搭建samba服务器

先安装samba服务器, 常规安装 sudo apt-get install samba 这种方式在不同版本ubuntu中,由于库版本支持问题,可能是无法安装的,所以需要降库版本来安装,安装命令为:sudo aptitude install samba ,这样执行后…

C# 多态的实现

C# 多态的实现 封装、继承、多态,面向对象的三大特性,前两项理解相对容易,但要理解多态,特别是深入的了解,对于初学者而言可能就会有一定困难了。我一直认为学习OO的最好方法就是结合实践,封装、继承在实际…

蜡笔小新鸿蒙系统,盘点蜡笔小新最污的四处剧情,网友:当年太纯洁现在终于看懂!...

《蜡笔小新》是童年时的一部经典动漫作品,里面的主角小新给我们带来了许多的乐趣。不过在《蜡笔小新》的剧情中却有很多比较污的剧情让当年的我们没有看懂,而现在再来回顾一下发现当年的这些剧情怎么可以这么污!!第一处&#xff1…

字符集图标制作

字符集图标: 将网页上常见的icon做成font(字符集),以字体的方式插入到网页上,作用是减轻服务器负担,减少宽带。 我最常在这两个网站上下载字体图标: https://icomoon.io/app/#/select https://w…