李宏毅老师课程:Tips for Deep Learning

【学习笔记5】New Optimizers for Deep Learning(1) 深度学习的优化方法   (一)Background Knowledge   1、SGD算法   2、SGDM算法 用上一步的movement - 在此点的梯度,得到在此点上的movement   momentum就是一个惯性,使加速度为0(即梯度为0)时,仍可以往前移动,避免了梯度消失。(相当于有一个惯性指数)   3、Adagrad自适应梯度算法 当gradient突然变得很大时(较陡峭),学习率就变得很小,避免梯度爆炸;当gradient突然变得很小时(较平 阅读详情

Recipe of Deep Learning

three step of deep learning

deep learning的三个步骤:

  • define the function set(network structure)
  • goodness of function(loss function – cross entropy)
  • pick the best function(gradient descent – optimization)

做完这些事情以后,你会得到一个更好的neural network,那接下来你要做什么事情呢?
在这里插入图片描述

  • 提高model在training set上的正确率
  • 提高model在testing set上的正确率

Do not always blame overfitting

不要看到所有不好的performance就归责于overfitting

右边是testing data图,横坐标是model做gradient descent所update的次数,纵坐标则是error rate(越低说明model表现得越好),黄线表示的是20层的neural network,红色表示56层的neural network

此时,56层network的error rate比较高,它的performance比较差,而20层network的performance则是比较好的,有些人会得到一个结论:56层的network参数太多了,56层果然没有必要,这个是overfitting
在这里插入图片描述
事实上,在说结果是overfitting之前,需要检查training set上的performance。

对neural network来说,在training set上得到的结果很可能会像左边training error的图,即20层的network本来就要比56层的network表现得更好,所以testing set得到的结果并不能说明56层的case就是发生了overfitting

在做neural network training的时候,有很多问题可以让training set表现的不好,比如说local minimum问题,saddle point问题,plateau问题等等,所以这个56层的neural network,有可能在train的时候就卡在了一个local minimum的地方,于是得到了一个差的参数,但这并不是overfitting,而是在training的时候就没有train好

有人认为这个问题叫做underfitting,但按李宏毅老师的理解,underfitting的本意应该是指这个model的complexity不足,这个model的参数不够多,所以它的能力不足以解出这个问题;但这个56层的network,它的参数是比20层的network要来得多的,所以它明明有能力比20层的network要做的更好,却没有得到理想的结果,这种情况不应该被称为underfitting,其实就只是没有train好而已
在这里插入图片描述

Good Results on Training Data?

在这里插入图片描述

New activation function

activation function

如果你今天的training结果不好,很有可能是因为你的network架构设计得不好。举例来说,可能你用的activation function是对training比较不利的,那你就尝试着换一些新的activation function,也许可以带来比较好的结果

Vanishing Gradient Problem

当把network叠得很深的时候,在靠近input的地方,这些参数的gradient(即对最后loss function的微分)是比较小的;而在比较靠近output的地方,它对loss的微分值会是比较大的

因此当设定同样learning rate的时候,靠近input的地方,它参数的update是很慢的;而靠近output的地方,它参数的update是比较快的

所以在靠近input的地方,参数几乎还是random的时候,output就已经根据这些random的结果找到了一个local minima,然后就converge(收敛)了

这时候参数的loss下降的速度变得很慢,你就会觉得gradient已经接近于0了,于是把程序停掉了,由于这个converge,是几乎base on random的参数,所以model的参数并没有被训练充分,那在training data上得到的结果肯定是很差的在这里插入图片描述

ReLU

现在比较常用的activation function叫做Rectified Linear Unit(整流线性单元函数,又称修正线性单元),它的缩写是ReLU,该函数形状如下图所示,z为input,a为output,如果input>0则output = input,如果input<0则output = 0
在这里插入图片描述
下图是ReLU的neural network,以ReLU作为activation function的neuron,它的output要么等于0,要么等于input

当output=input的时候,这个activation function就是linear的;而output=0的neuron对整个network是没有任何作用的,因此可以把它们从network中拿掉
在这里插入图片描述
拿掉所有output为0的neuron后如下图所示,此时整个network就变成了一个瘦长的linear network,linear的好处是,output=input,不会像sigmoid function一样使input产生的影响逐层递减
在这里插入图片描述
其实ReLU还存在一定的问题,比如当input<0的时候,output=0,此时微分值gradient也为0,就没有办法去update参数了,所以应该让input<0的时候,微分后还能有一点点的值,比如令a=0.01z,这个东西就叫做Leaky ReLU
在这里插入图片描述
既然a可以等于0.01z,那这个z的系数自然可以是0.07、0.08之类的,所以就有人提出了Parametric ReLU,也就是令a=αz,其中α并不是固定的值,而是network的一个参数,它可以通过training data学出来,甚至每个neuron都可以有不同的α值

Maxout

Maxout的想法是,让network自动去学习它的activation function,那Maxout network就可以自动学出ReLU,也可以学出其他的activation function,这一切都是由training data来决定的在这里插入图片描述
下图左上角是一个ReLU的neuron,它的input x会乘上neuron的weight w,再加上bias b,然后通过activation function-ReLU,得到output a在这里插入图片描述
除了ReLU,Maxout还可以实现更多不同的activation function在这里插入图片描述
这个时候得到的activation function的形状(绿线形状),是由network的参数w,b,w’,b’ 决定的,因此它是一个Learnable Activation Function,具体的形状可以根据training data去generate出来

Maxout可以实现任何piecewise linear convex activation function(分段线性凸激活函数),其中这个activation function被分为多少段,取决于你把多少个element z放到一个group里,下图分别是2个element一组和3个element一组的activation function的不同形状
在这里插入图片描述
假设在下面的Maxout network中,红框圈起来的部分为每个neuron的output在这里插入图片描述
其实Max operation就是linear的operation,只是它仅接在前面这个group里的某一个element上,因此我们可以把那些并没有被Max连接到的element通通拿掉,从而得到一个比较细长的linear network
在这里插入图片描述
此时有一个问题,如果按照上面的做法,那岂不是只会train留在network里面的那些参数,剩下的参数该怎么办?那些被拿掉的直线(weight)岂不是永远也train不到了吗?

其实这只是个理论上的问题,在实际操作上,每个linear network的structure都是由input的那一笔data来决定的,当你input不同data的时候,得到的network structure是不同的,留在network里面的参数也是不同的,由于我们有很多很多笔training data,所以network的structure在训练中不断地变换,实际上最后每一个weight参数都会被train到

Adaptive learning rate

Review - Adagrad

Adagrad的精神是,假设我们考虑两个参数w1,w2,如果在w1这个方向上,平常的gradient都比较小,那它是比较平坦的,于是就给它比较大的learning rate;反过来说,在w2这个方向上,平常gradient都比较大,那它是比较陡峭的,于是给它比较小的learning rate在这里插入图片描述

RMSProp

loss function可以是任何形状,对convex loss function来说,在每个方向上它会一直保持平坦或陡峭的状态,所以你只需要针对平坦的情况设置较大的learning rate,对陡峭的情况设置较小的learning rate即可

但是在下图所示的情况中,即使是在同一个方向上(如w1方向),loss function也有可能一会儿平坦一会儿陡峭,所以你要随时根据gradient的大小来快速地调整learning rate
在这里插入图片描述
在这里插入图片描述

Momentum

除了learning rate的问题以外,在做deep learning的时候,也会出现卡在local minimum、saddle point或是plateau的地方,很多人都会担心,deep learning这么复杂的model,可能非常容易就会被卡住了,但其实当你的network越复杂,参数越多,这件事发生的概率就越低在这里插入图片描述
所以在一个很大的neural network里面,其实并没有那么多的local minima,搞不好它看起来其实是很平滑的,所以当你走到一个你觉得是local minima的地方被卡住了,那它八成就是global minima,或者是很接近global minima的地方

当我们在gradient descent里加上Momentum的时候,每一次update的方向,不再只考虑gradient的方向,还要考虑上一次update的方向,那这里我们就用一个变量v去记录前一个时间点update的方向在这里插入图片描述
gradient告诉我们走红色虚线的方向,惯性告诉我们走绿色虚线的方向,合起来就是走蓝色的方向

在加入Momentum以后,每一次移动的方向,就是negative的gradient加上Momentum建议我们要走的方向,Momentum其实就是上一个时间点的movement

下图中,红色实线是gradient建议我们走的方向,直观上看就是根据坡度要走的方向;绿色虚线是Momentum建议我们走的方向,实际上就是上一次移动的方向;蓝色实线则是最终真正走的方向在这里插入图片描述
如果我们今天走到local minimum的地方,此时gradient是0,红色箭头没有指向,它就会告诉你就停在这里吧,但是Momentum也就是绿色箭头,它指向右侧就是告诉你之前是要走向右边的,所以你仍然应该要继续往右走,所以最后你参数update的方向仍然会继续向右;你甚至可以期待Momentum比较强,惯性的力量可以支撑着你走出这个谷底,去到loss更低的地方

Good Results on Testing Data?

在这里插入图片描述

Early Stopping

假设你的learning rate调的比较好,那随着训练的进行,total loss通常会越来越小,但是Training set和Testing set的情况并不是完全一样的,很有可能当你在Training set上的loss逐渐减小的时候,在Testing set上的loss反而上升了

所以,理想上假如你知道testing data上的loss变化情况,你会在testing set的loss最小的时候停下来,而不是在training set的loss最小的时候停下来;但testing set实际上是未知的东西,所以我们需要用validation set来替代它去做这件事情在这里插入图片描述

Regularization

regularization就是在原来的loss function上额外增加几个term,比如我们要minimize的loss function原先应该是square error或cross entropy,那在做Regularization的时候,就在后面加一个Regularization的term

推导如下:
在这里插入图片描述在这里插入图片描述在这里插入图片描述

Dropout

在training的时候,每次update参数之前,我们对每一个neuron(也包括input layer的“neuron”)做sampling(抽样) ,每个neuron都有p%的几率会被丢掉,如果某个neuron被丢掉的话,跟它相连的weight也都要被丢掉

实际上就是每次update参数之前都通过抽样只保留network中的一部分neuron来做训练
在这里插入图片描述
Dropout真正要做的事情,就是要让你在training set上的结果变差,但是在testing set上的结果是变好的在这里插入图片描述
所以如果在training set上得到的performance不够好,再加dropout,就只会越做越差,dropout就是针对testing set的方法,不能够拿来解决training set上的问题。

在使用dropout方法做testing的时候要注意两件事情:

  • testing的时候不做dropout,所有的neuron都要被用到
  • 假设在training的时候,dropout rate是p%,从training data中被learn出来的所有weight都要乘上(1-p%)才能被当做testing的weight使用
    在这里插入图片描述
    neural network里面的每一个neuron就是一个“学生”,那大家被连接在一起就是大家听到说要组队做final project,那在一个团队里总是有人会拖后腿,就是他会dropout,所以假设你觉得自己的队友会dropout,这个时候你就会想要好好做,然后去carry这个队友,这就是training的过程

那实际在testing的时候,大家都有好好做,没有人需要被carry,由于每个人都比一般情况下更努力,所以得到的结果会是更好的,这也就是testing的时候不做dropout的原因
在这里插入图片描述
conclusion:如果network很接近linear的话,dropout所得到的performance会比较好,而ReLU和Maxout的network相对来说是比较接近于linear的,所以我们通常会把含有ReLU或Maxout的network与Dropout配合起来使用

本文图片来自李宏毅老师课程PPT,文字是对李宏毅老师上课内容的笔记或者原话复述,在此感谢李宏毅老师的教导。

[机器学习入门] 李宏毅机器学习笔记-1(Learning Map 课程导览图) 自1956年提出人工智能的概念,其一方面被认为是人类文明未来的发展方向,另一方面也被认为是难以企及的梦想。然而过去几年,随着GPU并行计算性能的强大和海量数据的收集,人工智能取得了爆发性增长。而增长的功臣便是机器学习,特别是机器学习中的深度学习。现在我将系统学习《李宏毅机器学习这门课》,并整理笔记,供学习讨论。 阅读详情

相关推荐

李宏毅—1天搞懂深度学习(ppt,pdf以及精心整理的目录)

Deep Learning Tutorial——李宏毅Hung-yi Lee, 李宏毅—1天搞懂深度学习的ppt,pdf以及精心整理的目录。

TensorFlow相关组件的安装

TensorFlow相关组件的安装

AAI666666的博客 3937

保姆级教程:用GD32F470的EXMC Bank0 Region0与FPGA实现16位并行通信(附完整代码)

本文详细介绍了如何利用GD32F470的EXMC Bank0 Region0与FPGA实现16位并行通信,涵盖硬件连接、寄存器配置、时序优化及FPGA接口设计等关键步骤。通过实例代码和调试技巧,帮助开发者快速掌握高效数据交互技术,提升嵌入式系统设计能力。

weixin_26918763的博客 226

台湾大学李宏毅机器学习课程

李宏毅((Hung-yi Lee)目前任台湾大学电机工程学系和电机资讯学院的助理教授,他曾于2012年获得台湾大学博士学位,并于2013年赴麻省理工学院(MIT)计算机科学和人工智能实验室做访问学者。他的研究方向主要是语义理解、语音识别、机器学习和深度学习)老师的机器学习课程以机器学习和深度学习的基础知识为主,包含了AI领域的各种最新知识和技术点。课程深入简出,通俗易懂,颇受欢迎,非常适合对AI感兴趣的学习者。本课程已经获得李宏毅老师授权。

【高低温试验】试验报告模板

高低温循环试验,验证被测设备(DUT)在极端高温、低温环境下的性能稳定性、功能可靠性及安全性,确保其符合设计规范和相关标准(如GB/T 2423.1、GB/T 2423.2)。:验证设备在剧烈温度变化下的耐受能力(如-40℃↔+85℃,温变速率≥10℃/min)。低温测试标准:GB/T 2423.2-2008(温度-40℃,保持时间4小时):模拟高温高湿环境(如温度+60℃,湿度95%RH),测试防潮性能。

电路巫师把一切不可能变成不可能 1565

Windows下的Geant4安装教程

本教程将从0开始展示在Windows下如何安装Geant4,包括各种辅助工具(QT、Cmake、Visual Studio)的下载安装,环境变量的配置,以及example的生成等。

weixin_49065278的博客 4113

李宏毅老师《机器学习》课程笔记--合辑目录

合辑索引目录

宁萌Julie的博客 1567

ABAP传输自定义IDOC实例

首先确定出站方和入站方,本例中我使用150作为发送方将200作为接收方。 发送端系统配置 进入tcode-SALE,点击定义逻辑系统,这里我定义D01CLNT150为发送端, D01CLNT200为接收端 2,将逻辑系统分配给对应的client 3,进入tcode-WE31,创建IDOC开发段(segment)这里可以按照实际需求创建想要传输的结构,为求简单我创建了ZKNA1并选取了几个客户主数据的字段作为示例 4,进入tcode-WE30,创建Idoc Ty...

Nathan的博客 4080

台大李宏毅课程笔记3——New Optimization for Deep Learning深度学习新优化

台大李宏毅课程笔记3SGD with Momentum(SGDM)RMSPropAdamSWATS 本次笔记主要包含两节课: https://www.bilibili.com/video/BV1JE411g7XF?p=8 https://www.bilibili.com/video/BV1JE411g7XF?p=9 SGD with Momentum(SGDM) SGDM通俗的讲就是在本次计算的偏导和learningrate的基础上,加上上一次的运动长度,也就是保持原来的运动趋势。 下面两个图是对比SGDM

专业技能学习笔记本 805

【异常】OpenClaw LLM请求超时故障全链路排查与解决方案 LLM request timed out. 网络连接超时了

摘要: OpenClaw LLM请求超时故障是高频网络交互问题,表现为客户端在预设时间内未收到服务端响应。根因分为四类:客户端配置缺陷(如超时阈值不合理)、网络链路异常(防火墙拦截等)、服务端问题(限流/宕机)及硬件瓶颈(算力不足)。解决方案分三步: 通用排查:检查网络连通性、关闭防火墙/代理校验,调整超时阈值至60-300秒; 分场景修复:云端API需核对密钥/限流规则,本地部署需验证服务状态与硬件资源; 兜底方案:重启程序、更新版本或更换服务端点,结合日志精准定位。修复后不影响OpenClaw数据完整性

奶爸的编程之路,也就一周冷个三天 2060

YOLOv11改进 | Neck篇 | 双向特征金字塔网络BiFPN助力YOLOv11有效涨点

本文给大家带来的改进机制是BiFPN双向特征金字塔网络,其是一种特征融合层的结构,也就是我们本文改进YOLOv11模型中的Neck部分,它的主要思想是通过多层级的特征金字塔和双向信息传递来提高精度。本文给大家带来的结构可以让大家自行调节网络结构大小,同时能够达到一定的轻量化效果,为什么发BiFPN呢因为它算是YOLO系列改进中的常青树了,大家可以借鉴它的双向特征思想来创新自己的Neck结构本文的BiFPN通过yaml文件配置可以让大家自行调配其结构。

Snu77的博客 9105

【台大李宏毅ML课程】Lecture 6-11 Deep Learning笔记

李宏毅老师ML课程的Lecture 6-11都是在讲deep learning,所以合在一起总结好了。 主要内容我用xmind大致总结了一下。 如有错误,请务必指正谢谢!! 用图来源于课程以及网上的图~ 1.Deep learning发展史 略(= =||) 2.Mini-batch Gradient Descent 每次(one epoch)选取一部分数据进行梯度下降,从而参数...

code_caq的博客 649

STM32串口控制LED灯的亮灭

STM32中的串口控制LED灯的亮灭,分为两种方式,一种是直接发送数字0和1来控制灯的亮灭,另一种是通过发送字符串来控制。 我所使用的开发板主控芯片是STM32F401RET6,主频84MHz, 首先要进行串口的初始化: /* 函数功能:串口的初始化 函数名:Usart_Init 返回值:无 参数:u32 brr 备注: USART1_TXD->PA9 USART1_RXD->PA10 */ void Usart_Init(u32 brr) { float div; u16 div

博客 2万+

强化学习RL总结篇(李宏毅老师2020强化学习6-11完结)

强化学习RL总结篇(李宏毅老师2020强化学习6-11完结)

阿芒Aris的博客 3987

OpenClaw 自定义 Skill 开发完整指南(最新版)

OpenClaw 中的每个 Skill,本质是一套“能力描述 + 执行逻辑”的组合包,核心特征如下:核心载体:以文件夹为单位,文件夹内必须包含SKILL.md文件(能力描述核心);扩展文件:可选agent.py(Python 执行逻辑)、index.ts(TypeScript 执行逻辑)、(辅助文档/示例资源)等;核心优势:AI 通过阅读 SKILL.md 的自然语言描述理解技能,无需严格遵循代码接口,灵活度极高;

haolove527的专栏 2万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

李宏毅机器学习课程笔记2:Classification、Logistic Regression、Brief Introduction of Deep Learning

台湾大学李宏毅老师的机器学习课程是一份非常好的ML/DL入门资料,李宏毅老师将课程录像上传到了YouTube,地址:NTUEE ML 2016 。 这篇文章是学习本课程第4-6课所做的笔记和自己的理解。 Lecture 4: Classification: Probabilistic Generative Model 以根据宝可梦各属性值预测其类型为例说明分类问题。 训练数据是若干宝可梦的各属性值及其类型。 1...

Fighting Hua 319

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

李宏毅机器学习课程笔记3:Backpropagation、"Hello world" of Deep Learning、Tips for Training DNN

台湾大学李宏毅老师的机器学习课程是一份非常好的ML/DL入门资料,李宏毅老师将课程录像上传到了YouTube,地址:NTUEE ML 2016 。 这篇文章是学习本课程第7-9课所做的笔记和自己的理解。Lecture 7: Backpropagation 神经网络可能有百万数量级的参数,为了在梯度下降时有效地计算梯度,使用反向传播。 下面只考虑一笔data对参数的偏微分。根据链式法则, ∂C

徐子尧的博客 6672

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

李宏毅机器学习(7)—Tips for Deep Learning(1)

在这节课之前,李宏毅老师还介绍了一些其他与DL相关的知识,包括Backpropagation(反向传播),和Keras的使用方法,不过这部分比较简单,所以我不单独再做笔记。 DL与ML的一个重要区别 ...

qq_37217397的博客 300

独家思维导图!让你秒懂李宏毅2020机器学习(一)—— Regression回归

李宏毅2020机器学习部分总结 前言:博主为一名大二本科生,最近决心开始看李宏毅的深度学习系列课程,每学一个阶段决定写篇博客来归纳记录一下所学的东西,也希望自己的理解对大家有所帮助! Lesson1——Introduction 第一课的内容我用借鉴李宏毅老师ppt所画的一张图来总结(就不再过多赘述了) Lesson2——Regression 案例——预测宝可梦进化后的CP值 先与Lesson1的部分回顾一下,确定 Senario: Supervised Learining Task: Reg

小哨的博客 3061

李宏毅《机器学习》丨7. Conclusion(总结)

Datawhale组队学习,李宏毅《机器学习》Task7. Conclusion(总结)。

AXYZdong的博客 844

[搬运]台湾大学机器学习课程 by 李宏毅

台湾大学电机系李宏毅老师讲的机器学习课程,含有deep learning相关内容,深入浅出,建议选择性学习。

lgnlgn的专栏 2万+

Machine Learning第四记——Deep Learning部分知识简介

一、Deep Learning     有关发展历史不再一一赘述,看深度学习的发展过程,我理解的深度学习即为输入、输出、中间网络构成。其中中间网络通过多层的叠加实现不断地特征学习,学习出想要达到的目的的网络,这整个过程即可理解为深度学习。 二、Why Deep     在为什么深度学习需要多层网络的解释上,李宏毅老师首先将其比作一个模块化的过程。     首先看上面第一幅图,图中可以看出长发男这一样本集很少,但经过模块化之后可以获得较好的学习效果。这个过程可以从第二幅图中进行解释。首先我们训练过程中不去

g1162141320的博客 337

【学习笔记】强化学习

生活需要Passion!!!

小宝的博客 2609

李宏毅深度学习笔记2-3Tips for DeepLearning

1、当你的模型表现不好,应该怎么处理? 经过建立deep learning的三个步骤:define a set function•;goodness of function; pick the best function后,会得到一个neural network。在这之后 神经网络的表现 (1)首先检查这个neural network在training set结果如何,是否陷入局部最优,有的话,分析是哪个步骤出了问题,并解决它、(2)假如在training set得到好的结果,之后在testing set的

qq_34340574的博客 370

李宏毅机器学习课程笔记9:Recurrent Neural Network

台湾大学李宏毅老师的机器学习课程是一份非常好的ML/DL入门资料,李宏毅老师将课程录像上传到了YouTube,地址:NTUEE ML 2016 。 这篇文章是学习本课程第25-26课所做的笔记和自己的理解。Lecture 25,26: Recurrent Neural Network RNN的基本概念与SimpleRNN以订票系统中的Slot Filling为例,我们希望订票系统听到用户说:”I

徐子尧的博客 1万+
上一篇: 李宏毅老师课程:Backpropagation(反向传播)
下一篇: 李宏毅老师课程:Recurrent Neural Network
APythonC
博客等级 码龄7年 23粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值