深度学习 Deep Learning 学习笔记

本文部分内容来自KTH课程Deep Learning in Data Science.

部分内容为Cousera吴恩达课程deeplearning.ai.

有可能会出现图片打不开的情况,翻墙会解决这个问题

目录

1 From Deep Learning in Data Science course

2 From DeepLearninhg.ai

Course 1: Neural Networks and Deep Learning

Course 2: Improving Deep Neural Networks

第2周:Gradient Descent with momentum

第3周:Batch Normalization

Course4: Convolutional Neural Networks

第1周: Foundations of Convolutional Neural Networks


1 From Deep Learning in Data Science course

1. Forward propagate it through the graph and calculate loss.

2. Backward propagate to calculate the gradients.


2 From DeepLearninhg.ai

Course 1: Neural Networks and Deep Learning

第2周:

第4周:

(g表示的是activation function:

 

Course 2: Improving Deep Neural Networks

--Hyperparameter tuning, Regularization and Optimization

第2周:Gradient Descent with momentum

紫色: learning rate too big

蓝色: learning rate正常。但convergence所需时间还是很长

红色:应用momentum后,可以加快速度

△learning rate too big可能会导致overshooting(图中紫色曲线)。

△垂直坐标上,希望learning rate slower, 水平坐标上,希望faster

△momentum原理--smooth out the steps of GD。

vdw,vdb初始值设成0就行。

alpha是learning rate,beta是momentum parameter(commom value 0.9)。

第3周:Batch Normalization

If training a deep network, you should use Batch Normalization.

1)Normalizing activations in a network

Normalize the inputs:

以上是没有hidden layer的情况,对于有hidden layer时,我们能不能通过normalize a[2]使得train w[3],b[3]faster?(下图)

“There are some debates in the deep learning literature about whether you should normalize the value before the activation function, so z2, or whether you should normalize the value after applying the activation function, a2. In practice, normalizing z2 is done much more often.” (z2=g(a2))

(mu是对batch中的所有数据点求平均)

2)Fitting Batch Norm into a neural network

后向传播:(此处的s就是z)

总结一下如图:

(也work with Gradient Descent with momentum, or RMSprop, or Adam)

3)Why does Batch Norm work?

reason1:不仅normalize inputs, 也normalize hidden units

reason2:batch norm可以使得权重比你的网络更滞后或更深层,为了更好地理解可以看下面的例子:

如上图所示,假设我们现在要计算第三层隐藏层的值,很显然该层的计算结果依赖第二层的数据,但是第二层的数据如果未归一化之前是不可知的,分布是随机的。而如果进行归一化后,即可以将第二层数据限制为均值为β[2],方差为γ[2]的分布,注意这两个参数并不需要人为设置,它会自动学习的。所以即使输入数据千变万化,但是经过归一化后分布都是可以满足我们的需求的,更简单地说就是归一化数据可以减弱前层参数的作用与后层参数的作用之间的联系,它使得网络每层都可以自己学习。

reason3:batch norm奏效的另一个原因则是它具有正则化的效果。其与dropout有异曲同工之妙,我们知道dropout会随机的丢掉一些节点,即数据,这样使得模型训练不会过分依赖某一个节点或某一层数据。batch norm也是如此,通过归一化使得各层之间的依赖性降低,并且会给每层都加入一些噪声(mutiple noise:因为除以了方差;additive noise:因为减去了平均值),从而达到正则化的目的。(但是正则化的成都比较轻,可以与dropout一起使用;dropout有一个property:mini-batch越大的时候,正则化的程度越小。)

注意:不要将batch norm视为正则化方法!这只是它的side-effect。

3)Batch Norm at Test Time

前面提到的batch norm都是基于训练集的,但是在测试集上,有时候可能我们的测试数据很少,例如只有1个,在这个时候进行归一化则显得没多大意义了。那么该怎么办呢?均值μ和方差σ2该如何确定呢?

方法就是第三节所介绍的指数加权平均,原理是类似的。

假设一共有如下x{1},x{2},……,x{5000}的批量数据,每组mini-batch都得到了对应的均值μ(方差同理,不详细说明了),即μ{1},μ{2},……,μ{5000},如果测试集数据很少,那么就可以使用指数加权平均的方法来得到测试集的均值和方差。之后就根据指数加权平均计算得到的值来计算归一化后的输入值即可。

(注意:测试集的均值和方差生成的方式不一定非得是上面提到的指数加权平均,也可以是简单粗暴的计算所有训练集的均值和方差,视频中吴大大说这也是可行的~)

Course4: Convolutional Neural Networks

第1周: Foundations of Convolutional Neural Networks

(上图所示边界detection用于更大的图片会更好,边界不会那么thick)

猜你喜欢

转载自blog.csdn.net/m0_37622530/article/details/81143368