Datawhale X 李宏毅苹果书 AI夏令营(2)

深度学习进阶

Task1.1      局部最小值 local minima 与 鞍点 saddle point

如何得知走到critical point时,这个点是local minima / local maxima / saddle point?

泰勒展开-Tayler Series Approximation

Error Surface 在sita附近可以写成这个样子。

g 次微分; H 里面有二次微分项;

当没有g这一项时,意味着走到 critical point ,再通过红色H这项来判断状态。

这里我们可以看到,只要我们判断出 Hessian 的正负 那么我们就可以判断到底是 local minima / local maxima / saddle point 了

从图中去判断 local minima / local maxima / saddle point

原点肯定是一个 critical point

-----> 算出 Hessian(有正有负)--> saddle point

(学会去算,忘光了都!)

(以下的方式计算量很大,以后会有更好的方法)

卡在 saddle point 并不可怕

沿着eigenvector的方向更新参数,可以告诉你下一步向哪个方向移动。

local minima V.S. saddle point

谁更常见呢?

二维空间中,local minima 相当的多;但在更高维的空间中,它会有更多路可以走时,它是不是就是saddle point了呢?

维度越高,走的路就越多呢?

local minima并没有那么常见;

当你的参数不再更新,其实往往是卡在了一个saddle point上。

小悬念

卡住了,那么如何解决呢?

Task1.2    批量 batch 和 动量 Momentum

在把所有资料分成一个一个batch的时候,第一个epoch会分成一种batch,下一个epoch会分成另一种batch;

那么哪些资料在同一个batch中 ----> 每一个epoch不一样 =====> Shuffle

为什么用batch?

左边是全batch(就相当于没用batch),右边是用了一个batch。

运用Batch的话,相比较而言,冷却时间短,但噪点多(预计不准)。(不准确的说法)

GPU平行运算,对于batch size在1000以内来说,其实用不用batch,时间都是相似的;但当batch size来到1000以上时,时间会越来越长(但也不过10s)

考虑平行运算时,一个epoch中大的batch花的时间反而比较少。

走noisy的方式,反而对training的结果是有帮助的。

Task2.1 自适应学习率

Training stuck != Small Gradient

Training stuck 是因为遇到了 critical point,但事实真的如此吗?

其实多数时候在遇到 critical point 之前,loss就很难再下降,训练就已经停止了。

我们可以通过上面这个例子,得证 我们需要 更好的、定制化的 learning rate;

在上面的例子中,我们想要loss从 black point 到 叉叉 的位置;

我们可以通过图片下方两张图发现,即使learning rate到了很小的一个数值(更新了100000次参数),也很难达到 叉叉。

那我们必须要更好的 Gradient Descent 的版本

--------> learning rate 应该为每一个参数客制化

不同的参数 需要 什么样的learning rate呢?

我们比上这个 sigma t 。

最后得到这个公式:

Adagrad 梯度下降算法

蓝-坡度缓 ---> loss小 ---> gradient小 ---> sigma小 ---> update时移动量较多

绿-坡度缓 ---> loss大 ---> gradient大 ---> sigma大 ---> update时移动量较少

这样的话,learning rate 还存在什么问题呢?

Error Surface can be more complex ---> 动态调整

坡度陡峭 ---> smaller learning rat

坡度平缓 ---> larger learning rate

传奇方法 -------- RMSProp

通过设定 alpha 的值,可以实现对 sigma 以及 step 的控制。

拓展:Adam : RMSProp + Momentum

得到结果:

纵轴方向上,gradient算出来很小,所以累积了很小的sigma,累计到一个地步之后,step突然就会变很大,走到规定比较大的地方时,sigma就会变大,那么意味着它不会一直震荡,会继续向前走,直到下一个累积节点。

那么如何解决这个问题呢?

Learning Rate Scheduling (两种方式)

Warm up        在多个 network 中都有提到

“15年(上古时代)的文章已提到“  /  transformer 也用一个公式提到了

拓展: Refer to RAdam

Summary of Optimization

注意:平方根只在乎大小、无方向,所以不抵消!

OK, 加油吧。

Task2.2 分类

分类与回归的关系

假设三个类本身没有特定的关系,那么我们需要引入 独热向量 来表示类。

Class as one-hot vector

Softmax的分类

softmax     就是把 y 里面可以放任何值这件事情 改成了 0到1之间。

大的更大,小得更小

总之,改变损失函数可以改变优化的难度。

Task3.1 Batch Normalization 批量归一化

Error surface 在比较崎岖的时候很难train,所以我们需要把它”铲平“。  

----> 引入Batch normalization

Changing Landscape

当每一个 dimension 的 scale 值差距很大时,就会产生左图这样的 Error surface;

----> 给不同的 dimension 的 scale 值同样的数值范围,制造比较好的 Error surface,更好training。 like 右图。

Feature Normalization

做完 normalization ,means ---> 0, variances ---> 1;

----> 所有的不同的 dimension 的 scale 就都在 0 上下了。

其实在 z / a 做 feature normalization,效果差不多;如果选择 sigmoid,那么推荐在 z 做 feature normalization;

如何对 z 做 feature normalization 呢?

先算 mu / sigma;

做完 feature normalization,这个时候Example1 x1 中的 z1 变化,那么 z2,z3 也跟着变化,Example2 3也会变化。

----> 这样就变成了 一个巨大的 network 来处理一堆 examples;

----> Batch Normalization       Cool!

引入 gamma / beta;初始情况下,gamma vector为 1 / beta vector为 0;

现实中的 batch normalization - Testing

Task 3.2 卷积神经网络(Convolutional Neural Networks,CNN)

专用于影像方面

第一种介绍方式

Image Classification

能辨识多少种类的东西,取决于最右侧的 y 长度有多少;

如果它的长度有2000,那么就说明它可以辨识出2000种事物。

y‘ 是 model 做判断后输出的值;与 y 作比较,得出的结果 如果是 1,则是 cat。

100(pixels)  x 100 x 3channels 把 组成图片的这些数字列出来排成一排,就是一个巨大的向量。而这个向量可以作为 network的输入。每一个 pixel 有rgb 3个颜色组成,每一维的数值就代表了某一个位置的某一个颜色的强度。

Observation 1

Identifying some critical patterns ----> 抓住重要的特征(人也一样)

每一个neural都要去试图抓住它的pattern。

----> 神经网络结合这些patterns可以告诉你说,它看到了一只鸟。

Simplification 1 - 简化

neural 守备的区域可以重叠,可以有多个 neural 守备同一个 receptive field;

形成新的守备范围 所移动的距离 叫作 stride(设1 / 2就好)。超出了影像的范围叫做 padding。

Simplification 1 - Typical Setting

Observation 2

相同的特征可能出现在不同图片的不同位置----> 一定有一个 neural 能抓住这种特征。

难道每个守备区域都需要一个 “beak” detector。

Simplification 2
parameter sharing  共享参数

虽然参数(w1等)相同,但它们的守备位置不同(输入x不同),所以它们的输出不可能相同。让一部分neurons共享参数。

----> 这就意味着,守备相同区域的 neurons 不能共享参数(因为它们的输出相同)。

Simplification 2 - Typical Setting

每一个守备区域有 64个neurons;

每一个守备区域只有一组参数;第一个守备区域中第一个neuron和第二个守备区域中第一个neuron的 参数相同。(下图用颜色区分,且用 filter 标识)

Benefit of Convolutional Layer

可发现 CNN 的 model bias 比较大,虽然大,但它专为影像设计,所以不算问题。

第二种介绍方式

Convolutional Layer

Convolutional Layer中有很多 filter ;

filter就是一个一个的 tensor 组成,其中的数值就是model中的parameter(通过gradient descent来找到);下图假设这些parameter数值已找到。

当 像上图连成一条线时,值最大,为3。根据输出也可反推。

两种方式的比较


笔记很多没有记全,今后会细化总结,继续上传。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值