本文概述
TensorFlow Playground是一个用d3.js(JavaScript)编写的Web应用程序。而且它是学习无数学的神经网络(NN)的最佳应用程序。在我们的Web浏览器中, 我们可以创建一个NN(神经网络)并立即查看我们的结果。它在2004年1月的Apache许可2.0下获得许可(http://www.apache.org/licenses/)。
丹尼尔·斯米尔科夫(Daniel Smilkov)和珊·卡特(Shan Carter)创造了它, 并基于许多先前的作品。它的贡献成员是Fernanda Viegas和Martin Wattenberg, 以及Big Picture和Google Brain团队, 以提供反馈和指导。
TensorFlow Playground是一个网络应用程序, 允许用户使用TensorFlow机器学习库测试人工智能(AI)算法。
TensorFlow Playground不熟悉用于深度学习和其他机器学习应用程序的高级数学和神经网络编码。神经网络操作是交互式的, 并在Playground中表示。
开源库旨在满足教育需求。
现在转到链接http://playground.tensorflow.org。
该网站的顶部是时代, 学习率, 激活率, 正则化率, 问题类型, 下面逐一描述。
每次针对训练集进行训练时, 纪元数都会增加, 如下所示。
学习速度决定学习的速度;因此, 我们需要选择适当的学习率。
节点的激活功能定义该节点或数据集的输出。标准的计算机芯片电路可以是激活功能的数字网络, 根据其输入, 激活功能可以是” ON”(1)或” OFF”(0)。
软输出激活功能
ReLU(校正线性单位)g(y)= max(0, y)
tanh(双曲正切)t(y)=
乙状结肠(逻辑乙状结肠)σ(y)=
线性(例如α= 1)l(y)=αy
正则化用于避免过度拟合。
TensorFlow Playground实现两种类型的正则化:L1, L2。
正则化可以增加或减少牢固或较弱连接的权重, 以使模式分类更清晰。
L1和L2是流行的正则化方法。
L1正则化
- L1在稀疏特征空间中很有用, 在稀疏特征空间中, 需要在许多特征空间中进行选择。
- L1将进行选择并分配重要的权重值, 并使未选择的权重极小(或为零)
L2正则化
- L2具有相关输入
- L2将控制权重值, 使其与相关级别相同。
辍学也是一种正则化方法。
较高的正则化率将使权重范围受到更大限制。
在问题类型中, 从以下两种问题中选择:
- 分类
- 回归
我们必须根据我们在此处指定的数据集来了解要解决的问题类型。根据我们在下面定义的数据集进行求解。
总的来说, 有四种类型的分类, 下面给出了两种存在的回归问题。
在这里, 蓝色和橙色点形成数据集意味着
橙色点的值为-1。蓝点值为+1
使用测试数据的训练比率, 可以在此处使用控制模块来控制训练集的百分比。
例如:如果是50%, 则点与它的默认设置相同, 因为它是默认设置, 但是如果我们将控件更改为10%。然后, 我们可以看到那里的点变得不再像给定的数字那样多了。
数据集的噪声水平可以控制。我们可以使用控制模块来做到这一点。随着噪声的增加, 数据模式变得更加不可靠。当噪声为零时, 则可以清楚地区分问题。但是, 通过将其增加到50, 我们可以看到蓝色点和橙色点混合在一起, 并强加了分配。
批次大小决定了每次训练迭代要使用的数据速率, 我们根据以下屏幕截图进行控制。我们可以使用下面的方法控制它。
现在, 我们需要选择功能。功能选择将使用此处给出的x1和x2;
- X1是水平轴上的值。
- X2是垂直轴上的值。
x1和x2-的示例该点的x1值约为3.1, x2值约为4, 就像我们在下图中看到的那样。
隐藏层的结构在下面列出, 其中最多可以设置六个隐藏层。如果我们要通过添加隐藏层来控制隐藏层的数量, 请单击加号。而且我们还可以在每个隐藏的工作表中最多添加八个神经元, 并通过单击加号将神经元添加到隐藏层来控制它。
通过按箭头按钮, 开始NN(神经网络)训练, 其中Epoch将增加1, 然后使用反向传播训练神经网络。如果我们需要刷新整体实践, 则可以通过单击刷新按钮来做到这一点。
NN(神经网络)使测试损失和训练损失最小化。测试损失和训练损失的变化将以小的性能曲线表示, 该曲线将位于下面的右侧。测试损失将具有白色的性能曲线, 而训练损失将具有灰色的性能曲线。如果损失减少, 则曲线将下降。
神经网络模型/感知器
神经网络模型或感知器是称为神经元的简单组件网络, 这些组件接收输入, 并根据数据更改其内部状态。并根据数据和激活产生输出(0和1)。我们只有一个输入和输出, 充其量只有最易访问的神经网络(称为浅层神经网络)中的一个隐藏层。
所有的颜色在操场上意味着
橙色和蓝色用于可视化的方式有所不同, 但实际橙色显示负值, 蓝色显示正值。
数据点被涂成橙色或蓝色, 分别对应于一个正数和一个负数。
在隐藏层中, 这些线由神经元之间的连接权重来着色。蓝色显示实际重量, 橙色显示负重量。
在输出层中, 根据原始值, 点的颜色为橙色或蓝色。背景颜色显示网络对特定区域的预测。
用例
为什么我们要增加隐藏层中的神经元?
我们可以从隐藏层中单个神经元的基本模型(浅层神经网络)开始。让我们选择数据集”圆”, ” X1″和” X2″, 0.03学习率和” ReLU”刺激。
我们将按下运行按钮, 等待一百个纪元的完成, 然后单击”暂停”。
完成100个纪元后, 训练损失和测试均大于0.4。现在, 我们将使用添加按钮在隐藏层中添加四个神经元, 然后再次运行。
现在, 我们的测试和训练损失为0.02, 并且输出可以很好地分为两类(橙色和蓝色)。隐藏层中神经的添加提供了分配不同权重和并行计算的灵活性。但是, 在一定程度上添加神经元将是昂贵的, 几乎没有好处。
为什么我们对分类问题使用非线性激活函数?
在神经网络中, 我们将非线性激活函数用于分类问题, 因为我们的输出标签介于0和1之间, 其中线性激活函数可以提供-∞到+∞之间的任何数字。结果, 输出将不会在任何时候收敛。
在上面的图中, 我们运行了相同的模型, 但是线性激活, 并且它没有收敛。 100个纪元后, 测试和培训效率大于0.5。
为什么我们要增加Playground中的隐藏层?
现在, 我们再添加一个具有双神经元的隐藏层, 然后按运行按钮。与任何单个隐藏层模型相比, 我们的测试和准确性仅在50个纪元内降低到0.02以下, 几乎降低了一半。与神经元相似, 添加隐藏层并不是在所有情况下的正确选择。它变得昂贵而没有增加任何好处。图片中对此进行了很好的解释。即使运行100个纪元, 我们也无法取得良好的结果。
为什么ReLU激活是所有隐藏层的绝佳选择, 因为如果z为正数, 则导数为1;当z为负数时, 导数为0。
我们将运行训练的不同激活函数(ReLU, Sigmoid, tanh和线性函数), 我们将看到影响。
为什么ReLU激活隐藏层的正确选择?
整流线性单位(ReLU)是所有隐藏层的选择选择, 因为如果z为正, 则其导数为1, 而当z为负时, 其导数为0。换句话说, 由于z很大或很小, 所以S型和tanh函数都不适合隐藏层。然后任务的范围变得很小, 这会减慢到梯度下降的速度。
在上图中, 很明显ReLU优于所有其他激活功能。 Tanh在我们选择的数据集上表现很好, 但是效率不如ReLU函数。这是ReLU在深度学习中如此盛行的主要原因。
添加/减少或更改任何输入功能的动作
所有可用功能均无助于建模问题。使用所有功能或不相关的功能将很昂贵, 并可能影响最终精度。在现实生活中的应用程序中, 要找出哪种方法最适合该问题需要花费大量的尝试和错误。我们将在模型中探索不同的功能。
评论前必须登录!
注册