Code前端首页关于Code前端联系我们

Tensorflow Playground 讲解进入深度学习

terry 2年前 (2023-09-23) 阅读数 96 #AI人工智能

TensorFlow Playground 简介

TenforFlow Playground,也称为 TensorFlow Playground,是一个用于图形教学的简单神经网络在线演示和实验的平台。它非常强大并且非常容易使用。如果你已经有一定的神经网络知识,你可以在这个极其简单易懂的演示中快速体验算法工程师调整参数。

可以在本地运行这个项目,进入github项目地址,clone到本地,依次运行npm i,npm run build,npm runserve,访问http://localhost:5000,可以看到如下内容浏览器 Playground 页面与在线相同

Tensorflow Playground 讲解,进入深度学习领域

(Tensorflow Playground)

让我们对 Tensorflow Playground 进行详细布局。一般有以下几个区域:

  • 执行控制区域,主要控制算法的执行。您可以开始、暂停和重置。
  • 迭代次数显示区域,显示当前算法执行了哪次迭代。
  • 超参数选择区域,您可以在其中调整一些算法的超参数。不同的超参数可以解决不同的算法问题。 ,得到不同的效果
  • 数据集定制区域,数据集决定了我们要解决什么问题,数据集是机器学习最重要的部分,
  • 选择从数据集中提取的特征向量可以用来获取的值训练好的函数
  • 神经网络区域,由数据拟合算法工程师构建的网络
  • 预测结果区域,展示本算法的预测结果

Tensorflow Playground 讲解,进入深度学习领域

(游乐场区域分布)

接下来,我们将展示对深度学习进行了总体介绍,然后详细讲解了各个领域涉及的深度学习知识。

结合操场强烈的视觉信息,相信每一个读到这篇文章的同学都会喜欢的。

深度学习简介

在 TensorFlow Playground 中,您是一名初级算法工程师。您需要选择要解决的数据集分类问题,依次调整数据集、超参数、特征向量和隐藏层,点击运行即可看到预测结果。

回到深度学习本身,我们需要去掉模糊的概念,提供一个即使没有基础知识的学生也能理解的解释。

机器学习没有魔法。它实际上是一个发现过去数据的内在模式并预测未来新数据的过程。所有机器学习,包括深度学习,都是从生物神经网络的原理中寻找一条从输入到输出的路径。逐步调整网络结构中每个神经元的权重以匹配功能的方法的启发。

以操场上的第三组数据为例。我们选择这个数据集,设置任意参数,当我们运行它时,我们看到输出区域的结果是对角划分的蓝色和黄色区域的图像。

我们需要分别查看节点和颜色。节点是我们的训练数据。可以看到,由于x和y值不同,我们人为地将数据分为黄色和蓝色。这样的场景其实还有很多。例如,西红柿和樱桃西红柿可以根据其宽度和高度的不同来划分。假设我们有两种类型的数据:西红柿和樱桃西红柿,一种是黄色的,一种是蓝色的。通过深度或传统的机器学习,我们得到这种方法可以用来识别水果的类型。把这个方法可视化之后,就是一个区域划分图。坐标系中长宽较大的右上角区域颜色更蓝。当新数据到达时,将根据其宽度和高度对其进行评估。如果掉在这里,就会被分类。估计是番茄,不然就是樱桃番茄。

Tensorflow Playground 讲解,进入深度学习领域

(传统机器学习和深度学习问题解决步骤)

上图中,传统机器学习解决问题的中心路径来自于统计。例如,SVM向量机的基本思想是解决能够正确划分训练数据集和最大分离度的几何分离超平面的问题。如下图所示,Tensorflow Playground 讲解,进入深度学习领域是一个分离超平面。对于线性可分离的数据集,这样的超平面(所谓的感知器)有无限多个,但几何间隔最大的分离超平面是唯一的。 。

Tensorflow Playground 讲解,进入深度学习领域

(svm方案)

深度学习的核心是神经网络。通常,一个简单的神经网络包含3个部分:输入层、隐藏层和输出层。图中的圆圈代表神经元,箭头代表数据。流量的方向,每个连接都有不同的权重,权重是网络通过学习获得的。网络中的每个神经元包含三部分:输入、输出和计算模型。神经元可以被认为是计算和存储的单元。计算是神经元计算其输入的功能。存储是指神经元暂时存储计算结果并将其转发到下一层。

Tensorflow Playground 讲解,进入深度学习领域

(神经网络原理)

数据集dataSet

首先可以在数据集区选择四种类型的数据集。每个数据集都有两个类别。按形状的功能划分,两条矩形直线、对角线和螺旋线。与前三个数据集相比,最后一个数据集是最难拟合特征的数据集,也是最难在球场上调试的数据集。

Tensorflow Playground 讲解,进入深度学习领域

(数据集类型)

您可以在训练和测试数据比率下调整训练和测试数据的比率。一般来说,全机器学习具有三种类型的数据集:训练集、验证集和测试集。训练集是程序用来查找特征的数据集。一般来说,数据量是最大的。验证集是在每次迭代中用于检查训练期间模型的状态和收敛性的数据集。测试集用于评估模型的泛化能力。模型训练完成后,需要在测试集上检查实际结果。测试和验证集的数量可能会稍微少一些。 Andrew Ng的深度学习课程给出了不同数据量级别下每个数据集的不同推荐比例。当数据量达到百万甚至更多时,验证集和测试集可以是百分之一甚至千分之一。当数据量较小时,验证集和测试集应该太小。建议训练集、验证集和测试集遵循 7:2:1 的比例分布。 Tensorflow Playground 中没有设定验证的概念,因此当训练数据与测试数据的比例设置为 80%+ 时,训练效果最佳。

噪声是数据噪声。您可以根据情况决定是否启用噪音。噪音越低,运动效果越好。批次大小是每批次中进入神经网络的数据点的数量。我们需要在一次迭代中运行整个数据集。当数据量很大时,一次性将所有数据输入网络显然是没有意义的,因此我们可以设置数据包大小,然后每次将大小数据输入网络进行训练。

功能 功能

功能栏包含 7 个功能可供选择。这里写的是x1,x2。我们也可以直接将 X2 视为 y 坐标。对于球场上这些由 (x, y) 描述的平面的二维数据集,我们可以从 x, y 开始并提取许多特征,例如 x, y, x, y, sin 的平方的简单大小(X)。 、sin(y) 正弦分布等这里函数的小方块里也有黄色和蓝色两种颜色。该颜色表示数值的大小。蓝色代表大,黄色代表小。基本上,蓝色可以被认为是正数,黄色可以被认为是负数。正方形本身代表了整个价值空间。中心点可以被​​认为是坐标原点。从x1x2特征来看,第一象限和第三象限的值都是蓝色,为正数,第二象限和第四象限的值都是负数。他很活泼。可视化代表了我们数据的特征。

Tensorflow Playground 讲解,进入深度学习领域

(选择合适的函数非常重要)

上图的例子清楚地说明了选择合适函数的重要性。对于同时需要横坐标和纵坐标数据进行预测的数据集,仅横坐标上的一个函数是不够的。由于数据中对分类真正重要的有效信息没有传输到网络中,因此无论有多少隐藏层和神经元,都无法对数据进行有效划分。

在上图中,我们仅使用横坐标失败了,但是当我们添加纵坐标时我们成功了。然后我们选择了最合适的x*y函数,效果出乎意料的好。

隐藏层

一般来说,TensorFlow、keras等框架中的模型训练结果包含两部分:模型结构信息和隐藏层权重信息,因此神经网络训练实际上就是隐藏层中各个节点的训练权重值。通过解释比赛场地上的颜色可以理解隐藏层权重的含义。它们的颜色与数据点的蓝色和黄色略有不同:

  • 每个神经元只有两种颜色:蓝色和白色,蓝色部分是神经元的这个敏感区域
  • 的输出线每个神经元都是蓝色和黄色的。蓝色是正反馈,黄色是负反馈。越厚,该特征在下层节点眼中越重要

Tensorflow Playground 讲解,进入深度学习领域

(神经元和权重的可视化)

隐藏层 您可以在这一栏设置许多隐藏层。一般来说,隐藏层越多,导出的特征类型越丰富,分类效果越好。但如果层数过多,训练速度会变慢,收敛效果可能不好,而且容易过载。

我试图用一种容易理解的方式来描述上面的段落。

简单来说,我们需要用神经网络来拟合一条可以划分两个数据边界的线。隐藏层的深度和大小就是线条的细节程度。如果隐藏层越多,线条就会越细。更多的积分将被准确分配。但太详细也不好,因为如果数据中有噪音,比如数据不小心跑到了对面,那么我的线可能要为那个数据绕一大圈。这样,虽然训练集的准确率很高,每个训练数据的特征都已经被充​​分学习了,但它的划分实际上是不合理的。很可能会对新数据进行错误的评估,如下图所示:

Tensorflow Playground 讲解,进入深度学习领域

(三类分类问题State of fit)

因此,机器学习中一个很常见的问题就是解决过拟合问题- 适配问题。为了解决这个问题,我们要求我们的网络或者它的某些步骤具有一定的“软”效果。只要是模糊的,内置功能就会轻松,不挑剔。

迭代时代

迭代的概念是机器学习与传统统计分析之间最大的区别之一。首先,我们需要知道机器学习是基于统计学的。机器学习基于统计框架。作为一门数据处理学科,不通过统计框架就不可能直接描述数据。此外,机器学习还利用大量其他数据和计算知识。例如,理论层面源自数学、统计学等领域,算法层面源自最优化、矩阵代数、微积分等领域,实现层面源自计算机科学和工程概念。虽然在使用tensorflow处理算法时你不会意识到很多概念,但掌握一门知识的正确方法是研究它的来源。

回到我们的“迭代”概念,我们以监督学习为例。我们已经有了一些数据。目标是找到一个将 x 值映射到 y 值的函数。可以描述此映射的所有可能特征的集合。当我们成为一个假设空间时,由神经网络中每个节点的权重组成的权重网络就是假设空间中的每个“特征集”。为了找到最准确的函数或者最准确的权重网络,我们需要有一些最佳实践,使算法逐渐收敛并找到最优解。

这种最佳实践称为损失函数求解过程。我们对最终结果建立了“风险函数评估机制”。每次我们在假设空间中搜索时,我们都会拿着这个风险函数计算出的数据并实时查看,总是朝着低风险的方向。如果我们在假设空间中朝着正确的方向前进,我们的风险函数(损失函数)将会减小并最终趋向于最小值。

Tensorflow Playground 讲解,进入深度学习领域

(损失函数求解过程)

这里的损失函数计算步骤都是在全部数据量完成后才进行的。一旦全部数据量通过网络,就会计算损失函数的当前大小,然后继续下一个方向。这个过程是一个重复(纪元)。当我们在 Tensorflow Playground 中运行算法时,随着 epoch 的增加,输出中的损失(损失函数的值)也会相应变化,直到经过 N 次迭代后达到损失函数的最优点。此时,我们可以说已经找到了最适合当前数据模式的特征,并且我们的模型已经被训练。

超参数

除了隐藏层数量和神经元数量之外,我们还有很多影响训练结果的初始参数。它们都称为超参数。

学习层面Rete学习

我们看一下上面求解损失函数的过程。学习率是每次迭代后的步长。如果步长太大,可能会超出最优解,无法实现重复的水平跳跃。最佳结果。如果步长太小,不仅收敛效果慢,而且还可能陷入局部最优,如下图所示。只有提高学习率,才能越过这座山找到真正的最优解。总之,选择合适的学习水平很重要。不同的模型也有不同对应的学习率。您甚至可以使用一些动态学习率方法来在运行时动态调整学习率。当损失显着减少时增加学习率,当损失减慢时减少学习率。

Tensorflow Playground 讲解,进入深度学习领域

(下降到局部最优)

激活函数激活

激活函数是神经网络的一个独特概念。可以说,如果没有激活函数,神经网络就无法画出这条详细的分类线。 ,无论使用多少个隐藏层和神经元,都只能组合线性运算,只能画直线来拟合线性函数。 Playground 中可供选择的激活函数包括 Relu、Tanh、Sigmoid 等。它们看起来像这样:

Tensorflow Playground 讲解,进入深度学习领域

(激活函数比较)

  • sigmoid 左端接近0,右端接近1,两端接近饱和。在饱和时,差异可能太小并且顶部消失。函数
  • TanH 与 sigmoid 具有类似的趋势,但比 sigmoid 更中心对称。函数
  • ReLU是一个部分线性函数,是目前最常用的激活函数。由于正值的区间是线性的,所以很好地解决了梯度消失问题。计算速度也很快,收敛速度比sigmoid和tanh高很多。 Relu的模型可以走得很深,也带来了很多模型的突破

正则化的规制和水平

正则化是应对过拟合的手段之一。正则化的使用可以降低模型的复杂度,增加模型的泛化性。更常用的调节方法是L1和L2。

  • 范数L1:权重向量w中每个元素的绝对值之和。
  • 范数L2:权重向量w

中各元素平方和的平方根,即调节程度。增加修剪水平可以减少过拟合,但要注意不要设置得太高而导致欠拟合。配件。

问题类型

您可以更改问题类型。本文提出了分类问题。目的是给出一条信息并猜测它的分类。

第二类问题称为回归问题。根据数据的不同,猜测的结果不一定是分类,而是数值。

Tensorflow Playground 讲解,进入深度学习领域

模型评估

最后,我们可以在右侧区域检查训练模型的质量。

价值的损失基本上可以认为是模型的质量。损失越小,我们的模型当前估计的函数越接近数据集。因此,各算法的损失函数计算方法是算法的核心之一。定义损失函数就相当于定义了问题的解决路径。

作者:设计稿智能生成代码
来源:掘金

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门