<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"><span style="font-size:12px;">这是一篇试验失败的总结。</span></span>
第一次读博士的时候,就是读的凸优化。所以对凸函数有一种莫名的好感。去年在做SGD加速,发现很多SGD算法的理论分析都是基于凸函数的。详见Zhang Tong, Li Mu这两年来的文章。这也就是我为什么想把神经网络凸化的背景。
为了构建一个凸函数,那么从最基本的ANN出发。基本是一个函数套入另外一个函数。这里主要的函数分几大类:
1)weight和input组成的alpine函数。为了使凸化,我们必须让weight > 0。然后一个比较简单可行的办法是exp(weight),而且还可以求导!
2)activation的选择,也必须是凸函数。这里我采用的是SoftPlus, 也就是 log( 1 + exp(weight) ).
大家可以用Hessian矩阵的正定性来验证这样搭建起来的ANN是否是凸函数。这里有一个很简单的matlab代码:<