Datawhale X 李宏毅苹果书 AI夏令营 task1

目录

1 前言

2 逃离:局部最小值与鞍点

2.1 概念

2.2 方法

3 改进梯度下降法

3.1 概念

3.2 方法比较

3.3 batch_size的设置

3.4 实战

3.4.1 确定最大的batch_size

3.4.2 少量数据去尝试

3.4.3 最后跑全部数据

4 动量法

5 小结


1 前言

本次笔记涉及苹果书3.1~3.2章节,教学资料来源于datawhale AI夏令营。本次笔记的主要内容除了概念总结,还进行了概念的比较和我过去的实践经验思考(本文3.4部分)。

夏令营链接:Datawhale

苹果书开源链接:https://github.com/datawhalechina/leedl-tutorial

B站教程:李宏毅《机器学习/深度学习》2021课程(国语版本,已授权)_哔哩哔哩_bilibili

苹果书:《深度学习详解》人民邮电出版社(ISBN:9787115642110)

2 逃离:局部最小值与鞍点

2.1 概念

临界点:梯度为0的地方,局部最小值和鞍点都是临界点。

局部最小值:不是真正的最小值但是周围都比它高。

鞍点:虽然梯度为0并且有一个方向上它是局部最小值,但是另一个方向上它是局部最大值。

海森矩阵:能用于临界点的类型判断,同时给出逃离鞍点的方向。但是涉及二次微分计算,运算量大几乎不会实际使用。

2.2 方法

局部最小值和鞍点都会卡住梯度下降,但是经验上看大部分情况都是鞍点(参考苹果书3.1.3),所以会比较容易解决。

类型判断解决方案
局部最小值海森矩阵特征值动量法(苹果书3.2.2)
鞍点海森矩阵特征值

随机梯度下降(苹果书3.2.1)

动量法(苹果书3.2.2)

自适应学习率方法(苹果书3.3)

3 改进梯度下降法

3.1 概念

回合(epochs):训练轮数,每一个回合训练完全部的数据量。

批量大小(batch_size):把一轮 epoch 中分成几批数据,batch_size 就是每一批训练的数据数量。假设总数据量为N,那么每一轮就会进行 (N / batch_size) 批。批次顺序也会随机打乱。

批量梯度下降法(BGD):走完全部数据,也就是每一轮才更新1次参数。

随机梯度下降法(SGD):每一条数据都更新一次参数,假设总数据量为N,那么每一轮就会进行N次更新。

小批量梯度下降(MBGD):每一批都更新参数,那么每一轮就会更新 (N / batch_size) 次。

3.2 方法比较

方法更新参数每轮更新次数逃出鞍点每回合速度
批量梯度下降法(BGD)每一轮(epoch1不容易逃出最快
随机梯度下降法(SGD)每一条N更容易逃出最慢
小批量梯度下降(MBGD)每一批(batchN / batch_size

更容易逃出

中间

3.3 batch_size的设置

感觉 batch_size 设置为 full 或者1都有些极端。

我认为设置一个合适的 batch_size 对训练很重要。

batch_size 大小显存每个回合的速度精度
占用大并行时快可能低
占用小并行时慢可能更高

3.4 实战

3.4.1 确定最大的batch_size

因为 batch_size 过大会爆显存(如图,Out of memory error on GPU),所以我的第一步是先确定我能跑的、最大的 batch_size。

在我跑毕业论文的时候,40G内存的上限 batch_size 大约是28。

3.4.2 少量数据去尝试

这样比较省时间,数据不要全跑。记录结果比较,试出合适的 batch_size 

3.4.3 最后跑全部数据

最后是在四张Tesla V100 32G的显卡上跑了16的 batch_size。

算力支持来源于百度飞浆,可以阅读我的另一篇文章

飞桨PaddlePaddle平台算力白嫖从入门到入狱不完全指南(Datawhale AI 夏令营)_飞桨算力-CSDN博客

4 动量法

一图胜过千言万语,借用物理的“惯性”来越过鞍点和局部最小值。

我认为是非常巧妙的构思。

5 小结

毕业论文有调过 batch_size 和 epochs,所以这部分写得比较多。

而动量法目前还没有尝试过,所以这部分描写较少。

期待这部分理论的深入学习能在未来的项目中发挥作用。

  • 28
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PaddlePaddle是一个开源的深度学习平台,可以用于构建和训练深度学习模型。如果你想使用PaddlePaddle,可以通过源码编译的方式来安装。首先,你需要在Git Bash中执行以下两条命令来将PaddlePaddle的源码克隆到本地,并进入Paddle目录: ``` git clone https://github.com/PaddlePaddle/Paddle.git cd Paddle ``` 接下来,你可以根据自己的需求进行编译。如果你使用的是Windows系统,可以使用源码编译来安装符合你需求的PaddlePaddle版本。具体的编译步骤可以参考官方文档中的Windows下源码编译部分\[2\]。 如果你想在docker镜像中编译PaddlePaddle,可以使用以下命令启动docker镜像并进行编译。如果你需要编译CPU版本,可以使用以下命令: ``` sudo docker run --name paddle-test -v $PWD:/paddle --network=host -it hub.baidubce.com/paddlepaddle/paddle:latest-dev /bin/bash ``` 如果你需要编译GPU版本,可以使用以下命令: ``` sudo nvidia-docker run --name paddle-test -v $PWD:/paddle --network=host -it hub.baidubce.com/paddlepaddle/paddle:latest-dev /bin/bash ``` 以上是关于使用源码编译PaddlePaddle的一些基本步骤和命令。你可以根据自己的需求和操作系统选择适合的方式来安装PaddlePaddle。 #### 引用[.reference_title] - *1* *2* *3* [《PaddlePaddle从入门到炼丹》一——新版本PaddlePaddle的安装](https://blog.csdn.net/qq_33200967/article/details/83052060)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值