在浏览器里玩一个神经网络。
弄不坏,放心点。

轮次

数据

用哪一组数据?

特征

把哪些特征喂进去?

点任意位置即可编辑。
权重 / 偏置 = 0.2。
这是单个神经元的输出。鼠标移上去可以放大。
各路输出按不同的权重混合,线的粗细表示权重大小。

输出

测试损失
训练损失
颜色代表数据、神经元和权重的取值。

神经网络是什么?

简单说,就是一种让计算机程序从数据里学东西的办法。它只是非常粗略地借用了人脑的工作方式:先造出一堆软件“神经元”连成网络,让它们互相传消息;再丢给它一个问题反复练,每次都把通向正确答案的连接加强一点,把通向错误答案的连接减弱一点。想看更细的入门,可以读 Michael Nielsen 的 Neural Networks and Deep Learning;想要更技术化的综述,看 Ian Goodfellow、Yoshua Bengio、Aaron Courville 的 Deep Learning。

能拿去自己用吗?

当然可以。我们把它开源在 GitHub 上,就是希望神经网络能更容易接触、更容易学。只要遵守 Apache 许可,随你怎么用。有修改建议或想加功能,告诉我们。

下面还留了一组开关,可以把页面裁剪成适合某节课的样子:勾掉不想显示的部分,然后保存这个链接,或者刷新页面。

这些颜色代表什么?

整张图里橙和蓝反复出现,用法略有不同,但大体上橙色表示负值,蓝色表示正值。

数据点(图上的小圆环)一开始就被染成橙色或蓝色,分别对应 1 和 −1 两类。

隐藏层里的连线按神经元之间连接的权重上色。蓝色是正权重,表示网络按原样使用那个神经元的输出;橙色是负权重,表示网络把它反号使用。

输出层的圆点按原始取值染成橙或蓝;背景色表示网络对这片区域的预测,颜色越深,说明网络对这个预测越有把握。

用的是什么库?

为了这个教学可视化,我们自己写了一个很小的神经网络库。真要上生产,用 TensorFlow。

致谢

由 Daniel Smilkov 和 Shan Carter 制作。它站在很多前人的工作上,尤其参考了 Andrej Karpathy 的 convnet.js 演示 和 Chris Olah 关于神经网络的文章。还要感谢 D. Sculley 在最初构思上的帮助,以及 Fernanda Viégas、Martin Wattenberg 和 Big Picture 与 Google Brain 团队其他成员的意见和指导。