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是 ,则 ,,则 ,所以 的关系图是下图左边那样子,而Maxout是找输入最大值,也就是说它会去找 哪一个比较大,所以 的关系图是下图右边这样子,那就可以看出只要给它们的 是一样的,它们得到的结果就会是一样的。
前面提到Maxout也可以做出更多不同的Activation function,只要给它不同的 就可以得到不一样的结果,所以它就是一个Learnable Activation function,是一个可以根据data产生的Activation function。
ReLU可以做出任何的Piecewise Linear convex activation function,那这个function里面有多少个piece决定於你把多少个element放在同一组,
假设下图用红框框起来的是那组的最大值,也就是这个Max operation的输出,那这个Max operation其实就是一个Linear operation。
而其他比较小的值就可以拿掉了,你就只要去训练这个Linear Network就好,这样做是可以的,是因为你在给它不同输入的时候,它选择的最大值也会不同,所以不会有参数没被训练到的问题。
这个我们之前在梯度下降法(Gradient Descent) --- Tip 1中就有提到了,就是Adagrad,它的做法就是,我们每一个parameter都要有不同的Learning rate,然後把一个固定的Learning rate 除掉这一个参数过去所有Gradient值得平方和开根号,就可以得到新的parameter。
但是在处理深度学习的问题,用Adagrad可能是不够的,因为你需要更能动态的调整Learning rate的方法,也就是接下来会介绍的RMSProp。
它是把这个固定的Learning rate除掉一个值 ,在第一个时间点, 是你第一个算出来的Gradient的值 ,而在第二个时间点,你的 就是原来刚刚 的值的平方乘上 ,再加上新的 的平方再乘上 ,而 是可以随意调整的,如果设的小,就代表你更偏向於看新的Gradient。
除了Learning rate的问题以外,在做深度学习的时候,我们可能会卡在Local minimum、saddle point、甚至是plateau,但是 Yann LeCun 是说,其实在error surface上没有太多local minimum,因为如果是local minimum就必须要是像图中显示的山谷谷底的形状,而你的参数越多,这个谷底的机率出现的就越低,所以local minimum在一个很大的Neural Network里面,是没有这麽多的。
<<: [Day 18 - webpack] 模组化开发好帮手 — 打包工具 webpack
首先先将各个快捷键设好 将ActionBattle_Var.js改成 开一只程序ActionBatt...
从一张白纸开始学习前端,掐指一算也大概一年了 但对於$Props的应用,一直无法深入理解 可能碍於本...
数学函数 ceil(): 进上取整 echo ceil(9.99999); // 10 floor(...
前言 今天继续看看 event loop 的核心循环, uv_run() , 可以查看以下网址 ht...
...接续前一篇 2.一次性情况的动态变化 在上一篇中讲解如何覆盖 Material-UI 组件的样...