文章目录

  • 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 卷积操作

复数卷积核:

复数特征表示:

复数卷积过程(滤波过程):

卷积过程的矩阵形式:

可视化描述:

3.2 激活函数:

前人定义的激活函数ModRELU

问题:不满足柯西黎曼方程

本文提出的复数域激活函数 CReLU

该激活函数一定程度上可以满足柯西黎曼方程。也就是在实部或虚部同时大于或小于0的情况下满足,也就是2,4象限不满足;

类似的还有zReLU

但zReLU在实部为0且虚部>0 或者 虚部=0且实部大于0的时候 不满足,即在x和y的正半轴不满足;

下图反应了各个激活函数的优缺点:

3.3 BatchNorm

实数域的BatchNorm不再适用,否则实部和虚部的分布就不能保障了。但与BatchNor一致,首先需要对输入进行0均值1方差的操作。
于是提出了复数域的BatchNorm,包含两个参数β\betaβ和γ\gammaγ。





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. / fanrng = 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实验效果对比:


在MusicNet数据集上的自动音乐转播。

语音频谱预测

5. 其他参考:

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

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

【复数表达】Deep Complex Network相关推荐

  1. 论文翻译:2020_DCCRN: Deep Complex Convolution Recurrent Network for Phase-Aware Speech Enhancement...

    论文地址:DCCRN:用于相位感知语音增强的深度复杂卷积循环网络 论文代码:https://paperswithcode.com/paper/dccrn-deep-complex-convolutio ...

  2. Deep Complex Convolution Recurrent Network(DCCRN模型)

    Abstract 深度学习给语音增强带来很多益处,传统的时频域(TF)方法主要通过朴素卷积神经网络(CNN)或递归神经网络(RNN)预测TF掩码或语音频谱.一些研究将将复值谱图作为训练目标,在实值网络 ...

  3. DCCRN:Deep Complex Convolution Recurrent Network for Phase-Aware Speech Enhancement

    文章目录 0. 摘要 1. Intorduction 1.1 Related work 1.2 Contributions 2. The DCCRN Model 2.1 Convolution rec ...

  4. 【复数表达】CNM: An Interpretable Complex-valued Network for Matching

    文章目录 1. 简介 2. 动机 2.1 启发 2.2 知识补充 3. 方法 3.1 概率驱动神经网络 3.2 希尔伯特空间-不同粒度语言单元 3.3 语义匹配 3.4 网络架构 4. 其他思考 5. ...

  5. 【文献学习】 2021 Deep-Waveform: A Learned OFDM Receiver Based on Deep Complex Convolutional Networks

    2018版 https://arxiv.org/abs/1810.07181 2018译文 参考文章 参考文章 深波:一种基于深复卷积网络的学习OFDM接收机: V 结果评估 OFDM系统和衰落信道配 ...

  6. 论文翻译:2022_PACDNN: A phase-aware composite deep neural network for speech enhancement

    论文地址:PACDNN:一种用于语音增强的相位感知复合深度神经网络 相似代码:https://github.com/phpstorm1/SE-FCN 引用格式:Hasannezhad M,Yu H,Z ...

  7. 7.Deep Interest Network for Click-Through Rate Prediction论文详解

    一.总述 这是2018年阿里Guorui Zhou等人发表在KDD上的一篇论文.论文提出在CTR任务中,丰富的用户历史行为数据包含了用户多种兴趣,对于不同的候选广告,起作用的用户历史行为数据表示应该不 ...

  8. Deep Belief Network简介——本质上是在做逐层无监督学习,每次学习一层网络结构再逐步加深网络...

    from:http://www.cnblogs.com/kemaswill/p/3266026.html 1. 多层神经网络存在的问题 常用的神经网络模型, 一般只包含输入层, 输出层和一个隐藏层: ...

  9. Deep Belief Network简介

    1. 多层神经网络存在的问题 常用的神经网络模型, 一般只包含输入层, 输出层和一个隐藏层: 理论上来说, 隐藏层越多, 模型的表达能力应该越强.但是, 当隐藏层数多于一层时, 如果我们使用随机值来初 ...

  10. 《DKN: Deep Knowledge-Aware Network for News Recommendation》知识图谱与推荐系统结合之DKN

    转自:https://cloud.tencent.com/developer/article/1095691 [导读]传统的新闻推荐算法仅仅从语义层对新闻进行表示学习,而忽略了新闻本身包含的知识层面的 ...

最新文章

  1. c++11的10个新特性
  2. .net core 使用 codegenerator 创建默认CRUD代码
  3. 使用matlab调用Oracle数据库
  4. Android SQLite数据库的基本操作-SQLiteDatabase
  5. php vprintf,vprintf - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
  6. 上一秒投简历下一秒被裁 ?小心,你的一举一动可能都在监控中
  7. Git(15)- Git 分支 - 分支开发工作流
  8. CCNA学习指南第三章
  9. 网络安全工具100强介绍与下载
  10. xp系统steam无法连接到更新服务器,xp系统打不开steam提示“无法链接至steam网络”的处理办法...
  11. android q mix3,Android Q+5G 小米MIX3流畅播放8K视频
  12. 塑料按照分子结构分类
  13. 基于多层结构的网络游戏平台的研究与应用
  14. 活用lambda之list函数处理
  15. 力扣刷题之二叉树的层序遍历
  16. Apache构建虚拟主机
  17. SC系列(SC-12S)低频率小型SMD石英晶振SC-12S32.768KHZ12.5PF/20PPM
  18. 机器人10大流行编程语言
  19. python怎么放音乐_[宜配屋]听图阁
  20. 【人脸识别】解析MS-Celeb-1M人脸数据集及FaceImageCroppedWithAlignment.tsv文件提取

热门文章

  1. 虚拟机之Jvm、dalvik、art联系和区别
  2. Windows10下载到U盘怎么安装?
  3. 微信开放平台 公众号第三方平台开发 教程二 创建公众号第三方平台
  4. 第10节、飞鹅云打印机对接调用
  5. java web应用开发期末考试_JavaWeb期末考试A卷
  6. The harvester安装使用
  7. 餐厅叫号语音包_医院叫号系统(需自行下载语音包)
  8. phpunit问题与解决
  9. 【详解】软件工程中的有效性威胁(Threats to validity)到底是什么?
  10. matlab 生成hasse图,Hasse图详解