首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

听,是梯度的声音!用听觉监控神经网络训练,边听音乐边炼丹

大数据文摘出品

作者:钱天培、魏子敏

训练神经网络是个极为枯燥的工作。与其盯着Learning Curves发呆,或许可以调动一下其他感官,一起做点更有意思的事情。

比如说,眼睛看久了,可以让耳朵也活动活动。

一位酷爱弹吉他的数据科学家就希望,在调参时把其他器官也调动起来共同监督神经网络的训练。

他用一段程序将神经网络训练时的梯度转化成音频,这样,你就可以通过听不同的声音模式知晓训练情况。

先来一段我们制作的小样——梯度的声音!

听出来了嘛?这可是Adam optimizer的弹拨下,梯度发出的声音。

umm没错,确实很难听... 不过先别急着下结论,因为... 更难听的还在后头呢……

把梯度训练变成声音,边听音乐边炼丹

通常,我们需要通过测量许多不同的指标来完成训练,例如准确度、损失、梯度等。多数调参工程师会选择将这些指标整合,并在TensorBoard上绘制可视化图。

而这位名叫Christian S. Perone的数据科学家就厌倦了一直盯着各种参数的传统训练方式,经常玩音乐的他开发了一个小系统,把梯度训练变成声音,并且发布了全部120行代码。

Christian S. Perone也是位吉他手

他用一段程序将神经网络训练时的梯度转化成音频,通过听不同的声音模式就知道训练情况。

这是个讨巧的训练监督方式,毕竟,听觉是目前在神经网络训练中很少被用到的感官。而事实上,人类的听觉感官也非常敏锐,可以非常好地区分非常小的特征,例如节奏和音调,即便是很微小或者短暂的变动,人们也很容易有直观的感受。

先一起来看几个非常简单的训练例子。

以下的几段声音显示了我们使用每层的梯度范数进行的合成声音,以及使用不同设置(如不同学习率、优化器、动量)对MNIST进行卷积神经网络训练的训练步骤等。

使用LR 0.01训练声音与SGD

此段表示,在第一个epoch的前200个step中使用batch size为10的训练结果。我们选取了0.01的learning rate。音高越高,层的范数(norm)就越高,不同批次之前我们插入了短暂的静音。注意渐变在时间内增加。

使用LR 0.1训练声音与SGD

与上述相同,但我们把learning rate调高到了0.1。

使用LR 1.0训练声音与SGD

与上述相同,但是学习率更高,梯度爆炸并最后发散了,注意高音。嗯,听到最后觉得这个网络大概是死了吧,

使用LR 1.0和BS 256训练声音与SGD

相同的设置,但学习率高达1.0,批量大小为256.注意渐变如何爆炸,然后有NaNs导致最终声音。

这货真的有用吗?

花了这么大力气,我就想知道,靠耳朵调参真的靠谱吗?

没错,如你所料,可能没什么卵用。虽然在上面的例子中,我们可以很明显得听出不同参数的差别,但这些例子都是比较极端的情况。

所以,为什么还要制作这些音频呢?

大概是因为,调参真的是太无聊了吧。

开源代码,自己动手试试吧!

最后,还是放上Christian发布的完整开源代码,你需要安装PyAudio和PyTorch来运行代码。感兴趣的读者,不妨自己试试看。

相关报道:

http://blog.christianperone.com/2019/08/listening-to-the-neural-network-gradient-norms-during-training/

志愿者介绍

点「在看」的人都变好看了哦

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190805A0B7DB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券