Tensorflow新手通过PlayGround可视化初识神经网络

是不是觉得神经网络不够形象,概念不够清晰,如果你是新手,来玩玩PlayGround就知道,大神请绕道。

PlayGround是一个在线演示、实验的神经网络平台,是一个入门神经网络非常直观的网站。这个图形化平台非常强大,将神经网络的训练过程直接可视化。同时也能让我们对Tensorflow有一个感性的认识。

PlayGround的网址是:http://playground.tensorflow.org/

PlayGround页面如图所示,主要分为DATA(数据),FEATURES(特征),HIDDEN LAYERS(隐含层),OUTPUT(输出层)。

PlayGround主页面

DATA一栏里提供了4种不同形态的数据,分别是圆形、异或、高斯和螺旋。平面内的数据分为蓝色和黄色两类。

四种数据形态

我们的目标就是通过神经网络将这两种数据分类,可以看出螺旋形态的数据分类是难度最高的。除此之外,PlayGround还提供了非常灵活的数据配置,可以调节噪声、训练数据和测试数据的比例和Batch size的大小。

噪声的影响

训练数据和测试数据的比例

Batch size大小

Batch size就是每批进入神经网络数据点的个数。

FEATURES一栏包含了可供选择的7种特征:X1、X2、X1X1、X2X2、X1X2、sin(X1)、sin(X2)。

7种特征

X1可以看成以横坐标分布的数据特征,X2是以纵坐标分布的数据特征,X1X1和X2X2是非负的抛物线分布,X1X2是双曲抛物面分布,sin(X1)和sin(X2)正弦分布。我们的目标就是通过这些特征的分布组合将两类数据(蓝色和黄色)区分开,这就是训练的目的。

HIDDEN LAYERS一栏可设置多少隐含层。一般来讲,隐含层越多,衍生出的特征类型也就越丰富,对于分类的效果也会越好,但不是越多越好,层数多了训练的速度会变慢,同时收敛的效果不一定会更好,后面也会提到。

隐含层结构

因为在这里是一个分类的问题,隐含层设置为两层,刚好对应输出的类型。层与层之间的连线粗细表示权重的绝对值大小,我们可以把鼠标放在线上查看权值,也可以点击修改。

OUTPUT一栏将输出的训练过程直接可视化,通过test loss和training loss来评估模型的好坏。

输出模型

除了主要的四个部分外,在界面上还有一列控制神经网络的参数,从左到右分别是,训练的开关、迭代次数、学习速率、激活函数、正则化、正则化率和问题的类型。

神经网络控制参数

我们接下来尝试了几个例子,考虑到图片太多,直接讲一些结论,读者可以自行去摸索。

首先考虑的是激活函数的影响,比较了一下Sigmoid函数和ReLU函数:

1、选择Sigmoid函数作为激活函数,明显能感觉到训练的时间很长,ReLU函数能大大加快收敛速度,这也是现在大多数神经网络都采用的激活函数。

2、当把隐含层数加深后,会发现Sigmoid函数作为激活函数,训练过程loss降不下来,这是因为Sigmoid函数反向传播时出现梯度消失的问题(在sigmoid接近饱和区时,变换太缓慢,导数趋于0,这种情况会造成信息丢失)。

接着我们选用ReLU函数作为激活函数,比较一下隐含层数量对结果的影响:

1、我们选用了3层隐含层,每层特征个数为8,8,2的模型和6层隐含层,每层特征个数为8,8,8,8,8,2的模型。3层隐含层模型大概200步就达到了test loss为0.005,training loss为0.005,而6层隐含层模型跑了700步,test loss为0.015,training loss为0.005,有点过拟合。

8,8,2模型

8,8,8,8,8,2模型

隐含层的数量不是越多越好,层数和特征的个数太多,会造成优化的难度和出现过拟合的现象。

如果你感兴趣,很多测试你都可以尝试一下。通过神经网络,我们的系统自己就能学习到哪些特征是有效的,哪些特征是无效的,通过自己学习这些特征,然后判断问题。值得一提的是,最近很热的AlphaGo zero通过自我学习的过程,从无到有,打败了参照人类知识学习的AlphaGo,可见机器自我学习,自我进化的速度太快了,远远超越了人类历史经验的总结。人生苦短,快用Tensorflow!

原文发布于微信公众号 - 人工智能LeadAI(atleadai)

原文发表时间:2017-12-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习算法与Python学习

CS231n课程笔记翻译:图像分类笔记(下)

用于超参数调优的验证集 k-NN分类器需要设定k值,那么选择哪个k值最合适的呢?我们可以选择不同的距离函数,比如L1范数和L2范数等,那么选哪个好?还有不少选择...

3678
来自专栏计算机视觉战队

深度网络自我学习,最终实现更少样本的学习

接下来我们就开始今日的主题:自我学习,最少的样本去学习。听到这个,大家会想到剪枝、压缩神经网络。今天这个更加有趣,现在我们开始欣赏学术的盛宴!

2401
来自专栏小樱的经验随笔

神经网络算法

我们在设计机器学习系统时,特别希望能够建立类似人脑的一种机制。神经网络就是其中一种。但是考虑到实际情况,一般的神经网络(BP网络)不需要设计的那么复杂,不需要包...

3554
来自专栏人工智能

Tensorflow新手通过PlayGround可视化初识神经网络

北京 上海巡回站 | NVIDIA DLI深度学习培训 2018年1月26/1月12日 ? NVIDIA 深度学习学院 带你快速进入火热的DL领域 正文共179...

2338
来自专栏量子位

怎样构建深度学习模型?六步走,时刻小心过拟合 | 入门指南

1182
来自专栏人工智能LeadAI

译文 | 在使用过采样或欠采样处理类别不均衡数据后,如何正确做交叉验证?

最近读的一篇英文博客,讲的很不错,于是便抽空翻译成了中文。 [关于我在这篇文章中使用的术语可以在 Physionet (http://www.physionet...

4715
来自专栏人工智能LeadAI

LSTM模型在问答系统中的应用

在问答系统的应用中,用户输入一个问题,系统需要根据问题去寻找最合适的答案。 1、采用句子相似度的方式。根据问题的字面相似度选择相似度最高的问题对应的答案,但是采...

4767
来自专栏ATYUN订阅号

自动驾驶中机器学习算法应用大盘点

今天,机器学习算法被广泛应用于解决自动驾驶汽车制造的各种挑战问题中。人类将传感器数据处理集成到汽车的ECU(电子控制单元)中。 提高机器学习的利用率去完成新...

3584
来自专栏专知

【深度学习】一文教你如何确定好的“学习率”

【导读】近日,数据科学家Hafidz Zulkifli发布一篇文章,主要讲解了深度学习中的“学习率”,以及如何利用学习率来提高深度学习模型的性能并减少训练时间。...

3895
来自专栏机器之心

学界 | 新型池化层sort_pool2d实现更快更好的收敛:表现优于最大池化层(附代码实现)

选自Hackernoon 作者:Sahil Singla 机器之心编译 参与:黄小天、路雪 近日,Sahil Singla 在 Medium 上发表了一篇题为《...

37112

扫码关注云+社区

领取腾讯云代金券