我更好奇排第一的回答明明不懂理论, 为啥可以得这么多赞. 就说对这篇 paper 的评价:
假设不强? 输入都高斯了...
为了证明过程严谨? 哪有正经做理论的这么写证明的. 中间一堆没必要的细节, 也不整理下, 定义也不定义清楚
保证梯度不会爆炸或消失? 我眼拙, 就看见作者一直 claim 这个, 然而证的东西跟梯度好像没关系啊
就这还成为了 "深度学习理论的正确方向"...
怂, 怕得罪人, 匿了
今天早上起来看到这篇文章火了,主要爆点是长达93页的附录证明。下面是附录的一页,你们感受一下(让我们一起心疼reviewer一秒):
而这篇文章的实现却简短的醉人,只有5行:
我刚刚在飞机上看完了正文,并扫了一眼附录。其实证明思路并不复杂,但是场面十分暴力,满篇复杂不等式求值,还上了电脑辅助证明。作者为了证明过程严谨,还引用了IEEE浮点数的精度保证。。。
先说两句题外话,我认为这篇文章才是深度学习理论研究的正确方向,作者通过求解不动点,设计出了一个新颖的自稳定激活函数,保证训练过程中梯度不会爆炸或消失。而且定理的假设非常弱,作用域非常大,直觉很容易理解。读完证明的感觉是如果那93页的附录没错,那么这个方法就一定会好用,这样才是好理论。
反观很多鸡汤理论,用一车极强的假设,证出一个松到天上的bound,假装解释了一个已经被实践广泛证明好用的算法,实际上原来的算法已经被relax的妈都不认识了。搞理论的证完了心满意足,搞实验的看了感觉就像喝了一碗鸡汤,喝完了该干嘛干嘛,对未来探索新的算法一点具体的启发都没有。
==========================正题的分割线=========================
听我吹了一波以后有兴趣的同学可以自己看证明,我这里主要讲一下直观理解。文章提出的新激活函数很简单:
其实就是ELU乘了个lambda,关键在于这个lambda是大于1的。以前relu,prelu,elu这些激活函数,都是在负半轴坡度平缓,这样在activation的方差过大的时候可以让它减小,防止了梯度爆炸,但是正半轴坡度简单的设成了1。而selu的正半轴大于1,在方差过小的的时候可以让它增大,同时防止了梯度消失。这样激活函数就有一个不动点,网络深了以后每一层的输出都是均值为0方差为1。
美中不足的是这篇论文实验比较弱,但是因为理论很赞,我认为不能成为否定selu的理由,可能只是因为作者的预算或者码力受限吧。另外个人认为没有做cifar,imagenet这些原因是selu的强项是全连接网络,在CNN上不一定好用。可以期待后续在kaggle数据挖掘任务上面的表现。