神经网络是什么?
简单说,就是一种让计算机程序从数据里学东西的办法。它只是非常粗略地借用了人脑的工作方式:先造出一堆软件“神经元”连成网络,让它们互相传消息;再丢给它一个问题反复练,每次都把通向正确答案的连接加强一点,把通向错误答案的连接减弱一点。想看更细的入门,可以读 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 团队其他成员的意见和指导。