概
本文提出用(sin)作为激活函数, 并分析该类型的网络应该如何初始化.
主要内容
本文研究如下的网络结构:
即一个用sin作为激活函数的MLP.
为了说明使用sin作为激活函数的好处, 作者首先利用一个简单的例子作为说明, 设想如下的任务:
- (Phi) 以位置坐标((i, j))为输入, 输出(Phi(i, j) in mathbb{R}^3)表示该像素点图片的r, g, b;
- (Phi)以一个图片作为训练集, 假设该图片为(f(i, j) in mathbb{R}^3, i = 1,2,cdots, j = 1,2,cdots, W), 则训练集为({(i, j, f(i, j))}), 共(HW)个坐标点及其对应的目标;
- 通过平方损失( ilde{mathcal{L}} = sum_i sum_j |Phi(i, j) - f(i, j)|^2)训练网络.
上图给了一个例子(既然是灰度图, 我想这时(Phi(i, j) in mathbb{R})), 展示了用不同激活函数得到的(Phi(i, j))的图, 显然图和原图越接近, 说明拟合能力越强.
特别的, 作者还展示了(
abla f(x))和(Delta f(x)) (分别用sobel算子和laplacian算子得到的) 和各自网络关于((i, j))的梯度和二阶梯度的比较. 发现只有SIREN是高度一致的(一个很重要的原因是ReLU等分段连续函数二阶导为0).
初始化策略
作者希望每一层(除了第一层)的输入输出的分布是一致的, 这能够让堆叠网络层数变得容易, 加快收敛.
其策略是:
其中(n)是输入(x in mathbb{R}^n)的维度.
但是, 因为(sin (wx+b))中的(w)可以看成是采样频率, 为了保证第一层的采样频率足够高(采样定理), 作者乘上了一个额外的系数:
文中说(w_0=30)是一个不错的选择.
同时作者还发现, 该技巧应用于别的层一样有效, 所以干脆所有层都长上面那个样, 同时
作者认为这么做有效是因为关于(W)的梯度也乘上了一个因子(w_0), 但同时分布不变.
其它的好处
SIREN对于包含梯度问题的处理尤为出色, 这或许应该归功于其导数依然是一个SIREN网络, 而如ReLU的一阶导为常数, 二阶导为0自然无法胜任.
类似的结构, 但是这一次, 假设只知道图片的( abla f(i, j))或者(Delta f(i, j)),由此通过
或者
来拟合, 则(Phi(i, j))依然输出和(f(i, j))相近的结果(如上图左所示).
上图右则是逼近(alpha
abla f_1 (i, j) + ( 1- alpha) f_2 (i, j))
对两张图片进行混合, 得到的(Phi(i, j))恰为两张图片的融合.
SIREN的强大之处可见一斑.