看介绍说得天花乱坠,就是加个全连接层然后取个 max ?那把那些全连接层看成网络原来的解构,实际上的激活函数不应该就是 max 吗?
1
ipwx 2021-11-21 21:24:12 +08:00
不是。
它是在多出来的一维上做 max 的。其实是拟合了一个分段线性的凸函数。。。 |
2
zxCoder OP @ipwx 是不是比如输入是 n*d ,d 是输入节点个数,然后 maxout 层的 W 是三维的,d*m*k ,m 是 maxout 隐层节点个数,然后相乘就得到 n*m*k ,然后对 k 这一维取最大值,最后输出的就还是 n*m 的
|
3
ipwx 2021-11-22 11:26:00 +08:00 1
似乎就是这么回事。
然后之所以说它是分段线性凸函数,那是因为每个 d*m*1 相当于一个 y=Ax+b 。对于 k 个这样的线性函数求 max ,它永远是凸的(下凸)。当然凸函数只是这个 maxout 的一个特殊性质,但是比如二次函数 y=Ax^2+b 就是个凸函数,原则上你可以用多个线性函数去切,去逼近。 换句话说 maxout 是一个有限类别函数(像抛物线那样的下凸函数)逼近器,也许某些情况下比 leaky relu ,relu 之类的更好用一点 hhh 。 另外 relu 和 leaky relu 可以被 maxout 表示,这两个就是两段线性组成的凸函数。sigmoid 或者 tanh 倒是不能。 |