Sitzmann V., Martel J. N. P., Bergman A. W., Lindell D. B., Wetzstein G. Implicit neural representations with periodic activation functions. Advances in Neural Information Processing Systems (NIPS), 2020.

本文提出用\(\sin\)作为激活函数, 并分析该类型的网络应该如何初始化.

主要内容

本文研究如下的网络结构:

\[\Phi(x) = W_n (\phi_{n-1} \circ \phi_{n-2}\circ \cdots \circ \phi_0)(x), x_i \rightarrow \phi_i(x_i) = \sin (W_i x_i + b_i).
\]

即一个用sin作为激活函数的MLP.

为了说明使用sin作为激活函数的好处, 作者首先利用一个简单的例子作为说明, 设想如下的任务:

  1. \(\Phi\) 以位置坐标\((i, j)\)为输入, 输出\(\Phi(i, j) \in \mathbb{R}^3\)表示该像素点图片的r, g, b;
  2. \(\Phi\)以一个图片作为训练集, 假设该图片为\(f(i, j) \in \mathbb{R}^3, i = 1,2,\cdots, j = 1,2,\cdots, W\), 则训练集为\(\{(i, j, f(i, j))\}\), 共\(HW\)个坐标点及其对应的目标;
  3. 通过平方损失\(\tilde{\mathcal{L}} = \sum_i \sum_j \|\Phi(i, j) - f(i, j)\|^2\)训练网络.

上图给了一个例子(既然是灰度图, 我想这时\(\Phi(i, j) \in \mathbb{R}\)), 展示了用不同激活函数得到的\(\Phi(i, j)\)的图, 显然图和原图越接近, 说明拟合能力越强.

特别的, 作者还展示了\(\nabla f(x)\)和\(\Delta f(x)\) (分别用sobel算子和laplacian算子得到的) 和各自网络关于\((i, j)\)的梯度和二阶梯度的比较. 发现只有SIREN是高度一致的(一个很重要的原因是ReLU等分段连续函数二阶导为0).

初始化策略

作者希望每一层(除了第一层)的输入输出的分布是一致的, 这能够让堆叠网络层数变得容易, 加快收敛.

其策略是:

\[w_i \sim \mathcal{U}(-\sqrt{6 / n}, \sqrt{6 / n}),
\]

其中\(n\)是输入\(x \in \mathbb{R}^n\)的维度.

但是, 因为\(\sin (wx+b)\)中的\(w\)可以看成是采样频率, 为了保证第一层的采样频率足够高(采样定理), 作者乘上了一个额外的系数:

\[\sin (w_0 \cdot W x + b),
\]

文中说\(w_0=30\)是一个不错的选择.

同时作者还发现, 该技巧应用于别的层一样有效, 所以干脆所有层都长上面那个样, 同时

\[w_i \sim \mathcal{U}(-\sqrt{6 / w_0^2n}, \sqrt{6 / w_0^2n}).
\]

作者认为这么做有效是因为关于\(W\)的梯度也乘上了一个因子\(w_0\), 但同时分布不变.

其它的好处

SIREN对于包含梯度问题的处理尤为出色, 这或许应该归功于其导数依然是一个SIREN网络, 而如ReLU的一阶导为常数, 二阶导为0自然无法胜任.

类似的结构, 但是这一次, 假设只知道图片的\(\nabla f(i, j)\)或者\(\Delta f(i, j)\),由此通过

\[\|\nabla \Phi(i, j) - \nabla f(i, j)\|^2,
\]

或者

\[\|\Delta \Phi(i, j) - \Delta f(i, j)\|^2,
\]

来拟合, 则\(\Phi(i, j)\)依然输出和\(f(i, j)\)相近的结果(如上图左所示).

上图右则是逼近\(\alpha \nabla f_1 (i, j) + ( 1- \alpha) f_2 (i, j)\)

对两张图片进行混合, 得到的\(\Phi(i, j)\)恰为两张图片的融合.

SIREN的强大之处可见一斑.

Implicit Neural Representations with Periodic Activation Functions的更多相关文章

  1. [CS231n-CNN] Training Neural Networks Part 1 : activation functions, weight initialization, gradient flow, batch normalization | babysitting the learning process, hyperparameter optimization

    课程主页:http://cs231n.stanford.edu/   Introduction to neural networks -Training Neural Network ________ ...

  2. Activation Functions

    Sigmoid Sigmoids saturate and kill gradients. Sigmoid outputs are not zero-centered. Exponential fun ...

  3. Activation Functions and Their Derivatives

    1. Sigmoid Function: when z=0,g'(z)=0.25 2. tanh Function: when x=0,tanh'(x)=1 3. Relu

  4. Activation functions on the Keras

    sigmoid tanh tanh函数定义如下: 激活函数形状: ReLU 大家族 ReLU softmax 函数 softmax是一个函数,其主要用于输出节点的分类,它有一个特点,所以的值相加会等于 ...

  5. 《MATLAB Deep Learning:With Machine Learning,Neural Networks and Artificial Intelligence》选记

    一.Training of a Single-Layer Neural Network 1 Delta Rule Consider a single-layer neural network, as ...

  6. Glossary Collection

    目录 直接修饰用 间接强调用 (多为副词) 过渡用 特别的名词 动词 词组 各种介词 句子 摘要 引言 总结 正文 实验 直接修饰用 Word 含义 例句 近义词 nuanced adj. 微妙的:具 ...

  7. 深度学习材料:从感知机到深度网络A Deep Learning Tutorial: From Perceptrons to Deep Networks

    In recent years, there’s been a resurgence in the field of Artificial Intelligence. It’s spread beyo ...

  8. TensorFlow 常用函数汇总

    本文介绍了tensorflow的常用函数,源自网上整理. TensorFlow 将图形定义转换成分布式执行的操作, 以充分利用可用的计算资源(如 CPU 或 GPU.一般你不需要显式指定使用 CPU ...

  9. TensorFlow 常用函数与方法

    摘要:本文主要对tf的一些常用概念与方法进行描述. tf函数 TensorFlow 将图形定义转换成分布式执行的操作, 以充分利用可用的计算资源(如 CPU 或 GPU.一般你不需要显式指定使用 CP ...

随机推荐

  1. linux vi和vim编辑器

    所有的Linux系统都会内建vi文本编辑器,vim具有程序编辑的能力,可以看作是vi的增强版本 三种常见模式 正常模式 以vim打开一个文档直接进入的模式,快捷键可以使用. 1.这个模式可以使用上下左 ...

  2. github小白的记录随笔

    此文章是基础本地安装好了git环境的新手小白. 进入您要上传项目的根路径,右键选择Git Bash Here. 输入命令: git init //初始化git仓库环境 git remote add o ...

  3. 2021广东工业大学十月月赛 F-hnjhd爱序列

    题目:GDUTOJ | hnjhd爱序列 (gdutcode.cn) 一开始是用双指针从尾至头遍历,但发现会tle!! 后来朋友@77给出了一种用桶的做法,相当于是用空间换时间了. 其中用到的一个原理 ...

  4. OpenStack之七: compute服务(端口8774)

    注意此处的bug,参考o版 官网地址 https://docs.openstack.org/nova/stein/install/controller-install-rdo.html 控制端配置 # ...

  5. Function Overloading in C++

    In C++, following function declarations cannot be overloaded. (1)Function declarations that differ o ...

  6. 【C/C++】PAT A1025 Ranking/算法笔记

    题目意思大概是输入一堆人的学号,成绩,给出学号,总排名,考场号,考场内排名. 这是我第一次写的: #include <iostream> #include <algorithm> ...

  7. 【HarmonyOS】【DevEco Studio】NOTE02 :Create a  “Hello World ”Application

    Author:萌狼蓝天 StudyTime:2021/12/06 Version:3.0 Beta1 包结构 src | --> resource 资源文件目录 | --> layout/ ...

  8. 【阿菜漏洞复现】DeFi 平台 MonoX Finance 漏洞分析及复现

    前言 2021 年 11 ⽉ 30 ⽇,DeFi 平台 MonoX Finance 遭遇攻击,损失共计约 3100 万美元. 造成本次攻击的漏洞主要有两个: 移除流动性的函数未对调用者进行检测,使得任 ...

  9. 论文翻译:2021_Low-Delay Speech Enhancement Using Perceptually Motivated Target and Loss

    论文地址:使用感知动机目标和损失的低延迟语音增强 引用格式:Zhang X, Ren X, Zheng X, et al. Low-Delay Speech Enhancement Using Per ...

  10. MySQL查询数据库表空间大小

    一.查询所有数据库占用空间大小 SELECT TABLE_SCHEMA, CONCAT( TRUNCATE(SUM(data_length) / 1024 / 1024, 2), ' MB' ) AS ...