深度学习原理 Lesson 9 :Loss functions, optimizers, the training loop

9402cded56d610490956fe68b93fc9c5.jpeg

上节课学习了矩阵乘积和正向传递,反向传递的基本原理;本节课重点讲解一种loss function - 交叉熵,还原了Fit的过程,讲解了optimizer callback。

1

   

简介

  1. 如何研究论文:Kaiming init 论文解读

  2. training loop - loss func :cross-entropy

  3. 重构

    1. nn.Parameter

    2. nn.Module

    3. nn.optim

    4. Dataset

    5. DateLoader

  4. Fastai核心模块

    1. callbacks

    2. DataBunch

    3. Learner

2

   

如何做研究

上节课在模拟源代码的时候遇到2个问题:一个是对weight进行标准化时遇到的一个默认值,没有任何说明,效果也比较差;另一个是处理Linear层时,得到的数据是转置过的,那为什么要转置呢?

2.1

   

问题1

得到Pytorch官方回复,是个历史遗留问题,已经创建issue去优化init配置了

ffe0f1badceb618e62bfcda736a3c296.jpeg

2.2

   

问题2

也是得到了官方的回复,这里告诉我们不要盲目的相信,要深入进去并且提出问题

8b970f13c40e19f348bda7de49668b6e.jpeg

3

   

mini-batch training

3.1

   

Loss Function Cross-entropy 交叉熵

基本概念:

EXP:e的n次方,可以把值都变成正数,而且越大的数越大,这里有篇很好的帮助理解自然数e的文章 https://www.zhihu.com/question/20296247softmax:类似于求市场份额,可以把一堆正数转化到0-1entropy:描述的是一种不确定性

Cross-entropy:这里有个比较好的解释 https://www.zhihu.com/question/65288314/answer/244557337

从头开始写这个公式:

a627d1172d1ec0f17cab312a578e8d0a.jpeg

把除法简化一下

7a342c600adb18012fc2fc679fe12360.png

把log里的求和变得更高效最后用one-hot code的方式,在pred中取到正确结果对应的预测值,取个均值就是loss了

44e5b3aae23d6627a7c025f62909d256.png

用pytorch自带的函数实现就是这样的

678999ec212a18185f9e5408c09a3064.png

3.2

   

基础training loop流程

806982eb0a2a9be60956ed1a5f00f20e.jpeg

467265d70345f2ab350fa1e3c588ff01.jpeg

4

   

重构

  1. nn.Parameter

  2. nn.Module

  3. nn.optim

  4. Dataset

  5. DateLoader

4.1

   

nn.Parameter

626a132321ef049b6f74fa9787ac6243.png

取代的是这一段

272199f737226dde3a6f27ad9266d28d.png

定义在这里
525878bb189e01c3ea03cee51e43d50a.png

4.2

   

nn.Module

35b693388a01e87f79e1ad2909539df2.png

nn.Module.add_module

4dbd369980119deb36333d16e141b63a.jpeg

nn.ModuleList

fe7e21406bb54821a02c818d49a96d23.png

nn.Sequential

93091cbca4658dba5df008946e8e4a7c.png

4.3

   

optim

原始版

762079f3cb0c0446e6f0dd6160db6672.png

pytorch版

424e7693a6b4d12d7909bfde0e4ec233.png

39e2e4da8ad0c08ef455305ad138e013.png

4.4

   

Dataset

08376a05348344ad60a8ce5e2e14c51a.jpeg

4.5

   

DataLoader

299f40f06043aaaaf2b7b59ff698f695.jpeg

yield就是用的时候再执行有了DataLoader,就可以写的更简单了

a4f97ef1cefd661546be3f50520d04fa.png

4.6

   

Random Sampling

为了让每个batch可以随机抽取,同时对应的y可以匹配上

ef888cd20ff57cf583fdd356c1977e16.jpeg

4.7

   

Pytorch DataLoader

效果和上面的一样

090feff4c1a7317d6e6891407ebb8fdb.jpeg

5

   

加上验证组

fit的过程除了训练,还有一个计算accuracy的过程,就是跑validset的数据,这时候就不会计算梯度,不会batchnorm,dropout等这一堆训练时才会做的操作

0e29e487dec19606a96f028ccadcca3b.jpeg

这里vaild_ds的bs2倍因为没有backward,所以有2倍的内容可以使用

7dfbe0628cde49b2c5163e17ee3c01c8.png

6

   

Fastai核心模块

  1. DataBunch

  2. Learner

  3. 初步认识Callbacks

7b0bbbf3741b7ccb7bfdbccbc6448d31.jpeg有了callbacks可以很容易的实现如下前沿的技术

6db010786443c722dbbc32b9e268de14.jpeg

6.1

   

DataBunch

85a82e92fc9e0fbce5f5444436af9add.jpeg

6.2

   

Learner

d7b443c3cc9e7c96b33efac822b604e7.jpeg

有了learner,一切都可以用这样的方式调用

d7ae293804c35287ca01817de8f3f4c4.jpeg

6.3

   

Callbacks

Callback是用来根据状态函数去做一些事情,可以让fit函数看起来特别清晰易懂Callbackhandler是用来管理多个Callback的,还可以给他们排优先级

631075069e7d58c7dc77c99e3925419a.jpeg

6.4

   

Runner

把learner配置好了之后,通过runner设定该如何训练,如何调用那些callback,最常见的就是runner.fit(1,learn)

fbb5b7a736637be979c31b231d5626ba.jpeg

1.Metrics Callback:fit过程中统计metrics指标,并且还设置成了runner的属性run.avg_stats.valid_stats.avg_stats

560a21764300d39665848922de0484bb.jpeg

bf6f4a083d961b836c953c8f045afc65.jpeg

2.Recorder Callback:记录每个batch的loss和计划好的lr

3.ParamScheduler Callback:部署这些计划好的超参数,如lr

06138245fa4d9ea77602502a979c9114.jpeg

常见的3中callbacks

38f041af9f1585e78c31b26733013283.png给不同的param groups设定不同的lr

a48e9a8e8f0f79da981180543c5b6baa.jpeg下节课会讲解如何用卷积神经网络训练模型。

相关阅读

产品经理也能动手实践的AI (一)|(二)|(三)|(四)|(五)|(六)|(七)|(八)

人人都能搞懂的AI (一)|(二)|(三)|(四)

18a2b18804a93663cfd0b30b3f7622f6.png

如果你喜欢思考,又喜欢学点新东西,别忘记关注+置顶公众号哦!

我是Hawk,8年产品经理,目前专注AI机器学习。

0601985730659aab2fcf16fc5c50f14c.jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值