【Day 18】深度学习(Deep Learning)--- Tip(三)

  • 昨天提到了ReLU还有它的一些variant,那接下来要讲的是另外一个更进阶的想法,叫做Maxout Network。

Maxout

Maxout Network就是让你的Network自动去学它的Activation function,而因为是自动学出来的,所以昨天提到的ReLU就变成只是Maxout network的一个特别案例而已,也就可以是其他的Activation function,用训练资料来决定Activation function。

Maxout Network的架构如下图所示,将输入乘上weight得到value,本来这些value会通过Activation function来得到另一组value,但是在Maxout里面,我们是把这些value事先分组,然後在一组里面拿最大值当作输出,再将这些值去乘上weight得到另外一排不同的值,一样分组找最大值,以此类推。

Maxout也可以做到跟ReLU一样的事,从下图中可以看到,ReLU是 https://chart.googleapis.com/chart?cht=tx&chl=z%20%3E%200,则 https://chart.googleapis.com/chart?cht=tx&chl=a%20%3D%20zhttps://chart.googleapis.com/chart?cht=tx&chl=z%20%3C%200,则 https://chart.googleapis.com/chart?cht=tx&chl=a%20%3D%200,所以 https://chart.googleapis.com/chart?cht=tx&chl=a%2C%20z 的关系图是下图左边那样子,而Maxout是找输入最大值,也就是说它会去找 https://chart.googleapis.com/chart?cht=tx&chl=z_1%2C%20z_2 哪一个比较大,所以 https://chart.googleapis.com/chart?cht=tx&chl=z_1%2C%20z_2%2C%20a 的关系图是下图右边这样子,那就可以看出只要给它们的 https://chart.googleapis.com/chart?cht=tx&chl=w%2C%20b 是一样的,它们得到的结果就会是一样的。

前面提到Maxout也可以做出更多不同的Activation function,只要给它不同的 https://chart.googleapis.com/chart?cht=tx&chl=w%2C%20b 就可以得到不一样的结果,所以它就是一个Learnable Activation function,是一个可以根据data产生的Activation function。

ReLU可以做出任何的Piecewise Linear convex activation function,那这个function里面有多少个piece决定於你把多少个element放在同一组,

Maxout - Training

假设下图用红框框起来的是那组的最大值,也就是这个Max operation的输出,那这个Max operation其实就是一个Linear operation。

而其他比较小的值就可以拿掉了,你就只要去训练这个Linear Network就好,这样做是可以的,是因为你在给它不同输入的时候,它选择的最大值也会不同,所以不会有参数没被训练到的问题。

Aaptive Learning Rate

这个我们之前在梯度下降法(Gradient Descent) --- Tip 1中就有提到了,就是Adagrad,它的做法就是,我们每一个parameter都要有不同的Learning rate,然後把一个固定的Learning rate https://chart.googleapis.com/chart?cht=tx&chl=%5Ceta 除掉这一个参数过去所有Gradient值得平方和开根号,就可以得到新的parameter。

但是在处理深度学习的问题,用Adagrad可能是不够的,因为你需要更能动态的调整Learning rate的方法,也就是接下来会介绍的RMSProp。

RMSProp

它是把这个固定的Learning rate除掉一个值 https://chart.googleapis.com/chart?cht=tx&chl=%5Csigma,在第一个时间点,https://chart.googleapis.com/chart?cht=tx&chl=%5Csigma%5E0 是你第一个算出来的Gradient的值 https://chart.googleapis.com/chart?cht=tx&chl=g%5E0,而在第二个时间点,你的 https://chart.googleapis.com/chart?cht=tx&chl=%5Csigma%5E1 就是原来刚刚 https://chart.googleapis.com/chart?cht=tx&chl=%5Csigma 的值的平方乘上 https://chart.googleapis.com/chart?cht=tx&chl=%5Calpha,再加上新的 https://chart.googleapis.com/chart?cht=tx&chl=g%5E1 的平方再乘上 https://chart.googleapis.com/chart?cht=tx&chl=1%20-%20%5Calpha,而 https://chart.googleapis.com/chart?cht=tx&chl=%5Calpha 是可以随意调整的,如果设的小,就代表你更偏向於看新的Gradient。

很难找到最好的参数

除了Learning rate的问题以外,在做深度学习的时候,我们可能会卡在Local minimum、saddle point、甚至是plateau,但是 Yann LeCun 是说,其实在error surface上没有太多local minimum,因为如果是local minimum就必须要是像图中显示的山谷谷底的形状,而你的参数越多,这个谷底的机率出现的就越低,所以local minimum在一个很大的Neural Network里面,是没有这麽多的。


参考资料

李宏毅老师 - ML Lecture 9-1


<<:  [Day 18 - webpack] 模组化开发好帮手 — 打包工具 webpack

>>:  [Day16] 检讨会议这样开,就可惜了

[Day 19] 实作 - 介面篇3

首先先将各个快捷键设好 将ActionBattle_Var.js改成 开一只程序ActionBatt...

VueCli $Props简单范例分享

从一张白纸开始学习前端,掐指一算也大概一年了 但对於$Props的应用,一直无法深入理解 可能碍於本...

Day16 PHP的常用函数-1:数学、字符串函数

数学函数 ceil(): 进上取整 echo ceil(9.99999); // 10 floor(...

[Day 24] Node Event loop 3

前言 今天继续看看 event loop 的核心循环, uv_run() , 可以查看以下网址 ht...

Material UI in React [ Day 29 ] Customization Component 自订组件 (part2)

...接续前一篇 2.一次性情况的动态变化 在上一篇中讲解如何覆盖 Material-UI 组件的样...