【复数表达】Deep Complex Network

文章目录

  • 1. Introduction
  • 2. Motivation
    • 2.1 现状
    • 2. 2 复数表达特点
    • 2.3 如何构建
    • 2.4 贡献点
  • 3. Method
    • 3.1 卷积操作
    • 3.2 激活函数:
    • 3.3 BatchNorm
    • 3.4 权值初始化
  • 4. Experiments
  • 5. 其他参考:

1. Introduction

来源:ICLR 2018,基于复数的深度网络
论文:https://arxiv.org/abs/1705.09792
代码:http://www.github.com/ChihebTrabelsi/deep_complex_networks

2. Motivation

2.1 现状

现有大部分的深度学习模块框架等操作都是基于实数表达和操作的。
然而,现有在循环神经网络或更早期的基础理论分析表明复数有着更丰富的表达能力,且可以促进对噪声鲁棒的记忆检索机制。但现阶段缺少这样的模型所需要的构建模块。

2. 2 复数表达特点

总体而言,基于复数的特征表达有以下几大特点:

  1. 更易于优化的潜能
  2. 更好的泛化特性
  3. 学习更快
  4. 允许噪声鲁邦的记忆机制

2.3 如何构建

需要思考两点:

  1. 如何在神经网络里表示复数:y= a+bi
  2. 如何进行卷积运算

2.4 贡献点

为了发觉复数表达的优势,提出来构建深度复数网络的一办公室,将其应用到了前馈和LSTM当中:

  1. 复数Batch Norm
  2. 复数权重初始化
  3. 复数不同激活函数的比较
  4. 在MusicNet多乐器上的验证试验
  5. 在Speech Spectrum Prediction任务上的验证,TIMIT

3. Method

3.1 卷积操作

复数卷积核:
在这里插入图片描述
复数特征表示:
在这里插入图片描述
复数卷积过程(滤波过程):
在这里插入图片描述
卷积过程的矩阵形式:
【复数表达】Deep Complex Network_第1张图片
可视化描述:
【复数表达】Deep Complex Network_第2张图片

3.2 激活函数:

前人定义的激活函数ModRELU
在这里插入图片描述
问题:不满足柯西黎曼方程
【复数表达】Deep Complex Network_第3张图片
本文提出的复数域激活函数 CReLU
在这里插入图片描述
该激活函数一定程度上可以满足柯西黎曼方程。也就是在实部或虚部同时大于或小于0的情况下满足,也就是2,4象限不满足;

类似的还有zReLU
在这里插入图片描述
但zReLU在实部为0且虚部>0 或者 虚部=0且实部大于0的时候 不满足,即在x和y的正半轴不满足;

下图反应了各个激活函数的优缺点:
【复数表达】Deep Complex Network_第4张图片

3.3 BatchNorm

实数域的BatchNorm不再适用,否则实部和虚部的分布就不能保障了。但与BatchNor一致,首先需要对输入进行0均值1方差的操作。
于是提出了复数域的BatchNorm,包含两个参数 β \beta β γ \gamma γ
在这里插入图片描述
【复数表达】Deep Complex Network_第5张图片
【复数表达】Deep Complex Network_第6张图片
【复数表达】Deep Complex Network_第7张图片
在这里插入图片描述
【复数表达】Deep Complex Network_第8张图片

3.4 权值初始化

两种方式:Glorot、He
初始化时需要对振幅和相位分别初始化。
具体参见_calculate_correct_fan()里

def complex_kaiming_normal_(tensor_real, tensor_imag, a=0, mode='fan_in'):

    fan = _calculate_correct_fan(tensor_real, mode)
    s = 1. / fan
    rng = RandomState()
    modulus = rng.rayleigh(scale=s, size=tensor.shape)
    phase = rng.uniform(low=-np.pi, high=np.pi, size=tensor.shape)
    weight_real = modulus * np.cos(phase)
    weight_imag = modulus * np.sin(phase)
    weight = np.concatenate([weight_real, weight_imag], axis=-1)

    with torch.no_grad():
        return torch.tensor(weight)

4. Experiments

数据集:

  1. 图像 CIFAR-10, CIFAR-100 ,SVHN ∗
  2. 音乐识别 MusicNet
  3. 光谱预测 TIMIT

我们表明,这样的复数值模型可以实现与其对应的实数值模型相媲美或更好的表现。我们在一些计算机视觉任务和使用 MusicNet 数据集的音乐转录任务上对深度复数模型进行了测试,实现了当前最佳的表现。

三种ReLU实验效果对比:
【复数表达】Deep Complex Network_第9张图片
【复数表达】Deep Complex Network_第10张图片
在MusicNet数据集上的自动音乐转播。
【复数表达】Deep Complex Network_第11张图片
语音频谱预测
【复数表达】Deep Complex Network_第12张图片

5. 其他参考:

几个可参考的复数网络模块

  1. https://github.com/ivannz/cplxmodule
  2. https://github.com/wavefrontshaping/complexPyTorch
  3. https://blog.csdn.net/ssqqssqq/article/details/80398802

你可能感兴趣的:(科研,深度复数网络,复数表达,复数卷积)