大数据 爬虫Python AI SqlPython小哥哥

通过可视化体验人工智能神经网络工具——TensorFlow!

2019-06-10  本文已影响0人  14e61d025165

PlayGround是一个可视化的深度学习环境,只需在访问http://playground.tensorflow.org,就能在线学习,而且不需安装任何插件,效果十分惊艳。

如果橙色是橙子,蓝色是蓝莓。假设我们有2000个散落在各处的橙子和蓝莓。前1000个,我们知道坐标(1,1)的是蓝莓,(2,2)的是橙子,(0.5,0.5)的是蓝莓等等。我们要用这些信息来训练我们的神经网络,让它能够准确地预测出后1000个哪些是橙子、哪些是蓝莓。

神经网络的伟大之处就在于此。当我们在解决分类橙色点和蓝色点这样的简单问题时,想出额外的特征似乎并不是难事。但是,当我们要处理的问题越来越复杂,想出有用的特征就变成了最最困难的事。比如说,当我们需要识别出哪张图片是猫,哪张图片是狗时,哪些特征是真正有效的呢?

Python学习交流群:1004391443,这里是python学习者聚集地,有大牛答疑,有资源共享!小编也准备了一份python学习资料,有想学习python编程的,或是转行,或是大学生,还有工作中想提升自己能力的,正在学习的小伙伴欢迎加入学习。

  1. 演示环境及相关知识介绍

1.1. 演示环境

PlayGround环境,可以设置隐藏层层数(HIDDEN LAYERS),每个隐藏层可以设置神经元数量(neurons)。图中的特征(FEATURES)由直接输入(X1,X2)、平方、乘积、三角函数等方法处理输入变量。

其中每组数据(DATA),都是不同形态分布的一群点。每一个点具有2个特征:x1和x2,表示点的位置。而我们数据中的点有2类:橙色和蓝色。我们的神经网络的目标,就是通过训练,知道哪些位置的点是橙色、哪些位置的点是蓝色。

如果图中橙色是橙子,蓝色是蓝莓。假设我们有2000个散落在各处的橙子和蓝莓。前1000个,我们知道坐标(1,1)的是蓝莓,(2,2)的是橙子,(0.5,0.5)的是蓝莓等等。我们要用这些信息来训练我们的神经网络,让它能够准确地预测出,后1000个,哪些是橙子、哪些是蓝莓。

在这里插入图片描述

图中操作及展示内容说明:

Epoch:动态显示系统学习处理数据次数;

DATA:数据源,有四种随机数据;

OUTPUT:输出,默认是学习训练情况,其中,图下面有“Show test data”选项,用于显示测试情况(叠加中一起)。

1.2. 参数及其相关知识点

(1)Learning rate/学习率

学习率决定每一步学习的步长,作为监督学习以及深度学习中重要的超参,其决定着目标函数能否收敛到局部最小值以及何时收敛到最小值。合适的学习率能够使目标函数在合适的时间内收敛到局部最小值。取值一般取0-1之间。

学习速率是指导我们该如何通过损失函数的梯度调整网络权重的超参数。学习率越低,损失函数的变化速度就越慢。虽然使用低学习率可以确保我们不会错过任何局部极小值,但也意味着我们将花费更长的时间来进行收敛,特别是在被困在高原区域的情况下。

在这里插入图片描述

(2)Activation/激活函数

激活函数为神经元提供了规模化的非线性化能力。

ReLU函数

f(u)=max(0,u)

f(u)=max(0,u)

在这里插入图片描述

Sigmoid函数

f(x)=11+e−x

f(x)=1+e−x1​

在这里插入图片描述

(3)Regularization/正则化

机器学习中,如果参数过多,模型过于复杂,容易造成过拟合(overfit)。即模型在训练样本数据上表现的很好,但在实际测试样本上表现的较差,不具备良好的泛化能力。为了避免过拟合,最常用的一种方法是使用使用正则化,比如此工具中的 L1 和 L2 正则化(Regularization下拉列表选择项目)

L1正则化:

J(θ)=12m[∑mi=1(hθ(x(i))−y(i))2+λ∑nj=1∣θj∣]

J(θ)=2m1​[i=1∑m​(hθ​(x(i))−y(i))2+λj=1∑n​∣θj​∣]

L2正则化:

J(θ)=12m[∑mi=1(hθ(x(i))−y(i))2+λ∑nj=1θ2j]

J(θ)=2m1​[i=1∑m​(hθ​(x(i))−y(i))2+λj=1∑n​θj2​]

(4)Regularization rate/正则化权重参数

正则化公式上的参数 λ ,为正则化加上权重参数。

(5)Problem type/数据分析问题类型

问题类型包括分类(Classificition)和回归(Regression)。

(6)Ratio of training to test data/训练与测试数据集分配比率。

(7)Noise/数据噪声

可以用于模拟数据中噪声数据的比例。

(8)Training Loss和Testing Loss/训练损失和测试损失

Loss是损失,简单的说就是预测值和实际值之间的差别。损失越小,表示模型预测结果越准确,这种模型就越好。最理想的情况是两个Loss都逐渐变小,说明模型越来越准确。

如果Training Loss减小而Testing Loss增大,可能我们就过拟合(Overfit)了。对于不同的问题,会有合适的计算Loss的方法,也就是你可能经常听到的损失函数(Loss function),也叫代价函数(Cost function)。

在这里插入图片描述

如图OUTPUT所示,损失曲线呈现震荡锯齿状的原因,就是学习率设置过大造成的,使梯度下降呈现震荡。

在这里插入图片描述

其实就是设置步长,迈步不要过大,错过了最低点。同时也要保证不要迈步太小,导致太阳下山了,还没有走到山下。

在这里插入图片描述

1.3. 几点使用方法

(1)学习率中学习过程中,可以根据输出,动态调整,一般是先设置大些,例如1或0.3,逐渐减小到0.01,甚至更小;

(2)推荐增加点儿噪声,更接近实际。

  1. 神经网络体验

2.1. 线性神经网络

(1)Gaussion数据集分类成功效果

在这里插入图片描述

其他数据集,线性激活函数不收敛。

(2)按Circle数据集特征,增加平方输入特征

按Circle数据集特征,考虑输入特征圆的方程(x−a)2+(y−b)2=r2

(x−a)2+(y−b)2=r2,也可以得到较好的效果。

在这里插入图片描述

2.2. BP神经网络

BP神经网络,激活函数一般为Sigmoid。

在这里插入图片描述

2.3. 正则化

添加正则化,则有些神经元权重非常小,也就是图中白色的神经元是很少使用的神经元。

在这里插入图片描述

  1. 总结

对于学习神经网络的初学者,通过可视化体验人工智能神经网络工具——TensorFlow PlayGround来认识神经网络,是比较直观、便捷的。

在这个工具平台上,能任意设计多层神经网络(有限制,但是不影响学习),例如可以通过设计多层、每层多神经元的网络,模拟出过拟合情况;也可以通过调整学习率、激活函数、正则化等神经网络参数,把书本上的知识点形象化出来。

上一篇下一篇

猜你喜欢

热点阅读