神经网络的 maxout 激活函数怎么理解?

2021-11-21 20:34:03 +08:00
 zxCoder

看介绍说得天花乱坠,就是加个全连接层然后取个 max ?那把那些全连接层看成网络原来的解构,实际上的激活函数不应该就是 max 吗?

659 次点击
所在节点    问与答
3 条回复
ipwx
2021-11-21 21:24:12 +08:00
不是。

它是在多出来的一维上做 max 的。其实是拟合了一个分段线性的凸函数。。。
zxCoder
2021-11-22 09:45:07 +08:00
@ipwx 是不是比如输入是 n*d ,d 是输入节点个数,然后 maxout 层的 W 是三维的,d*m*k ,m 是 maxout 隐层节点个数,然后相乘就得到 n*m*k ,然后对 k 这一维取最大值,最后输出的就还是 n*m 的
ipwx
2021-11-22 11:26:00 +08:00
似乎就是这么回事。

然后之所以说它是分段线性凸函数,那是因为每个 d*m*1 相当于一个 y=Ax+b 。对于 k 个这样的线性函数求 max ,它永远是凸的(下凸)。当然凸函数只是这个 maxout 的一个特殊性质,但是比如二次函数 y=Ax^2+b 就是个凸函数,原则上你可以用多个线性函数去切,去逼近。

换句话说 maxout 是一个有限类别函数(像抛物线那样的下凸函数)逼近器,也许某些情况下比 leaky relu ,relu 之类的更好用一点 hhh 。

另外 relu 和 leaky relu 可以被 maxout 表示,这两个就是两段线性组成的凸函数。sigmoid 或者 tanh 倒是不能。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/816977

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX