前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >小白学数据神经网络第二弹:Google可视化体验平台Tensorflow Playground

小白学数据神经网络第二弹:Google可视化体验平台Tensorflow Playground

作者头像
大数据文摘
发布于 2018-05-25 02:30:28
发布于 2018-05-25 02:30:28
1.2K0
举报
文章被收录于专栏:大数据文摘大数据文摘

编译整合:Nancyzxll 审稿:张远园 Aileen

◆ ◆ ◆

引言

小白学数据系列的读者们,大家好久不见。谷歌最近推出了一个神经网络可视化教学平台“游乐场”Tensorflow Playground。大家通过浏览器就可以玩玩神经网络了!是不是很神奇?跟着小白一起试玩之后,一定会感觉,“啊哈,这就是神经网络啊,我也明白了”。

那么,现在就把网址发给大家,http://playground.tensorflow.org,整体来看它是长这个样子的:

让我们一起来了解一下这个神经网络游乐场吧!

◆ ◆ ◆

几个基本问题

小白:我有点忘了什么是神经网络了,能不能再帮我复习一下?

答:好吧。想回顾以往小白学数据系列的同学可以在文末的历史文章回顾中找到小白学神经网络的基础篇。简单来说神经网络是通过计算机程序从数据中进行学习的一项技术。它是基于我们目前我们对人脑工作方式的理解而产生的(注意,这里说是基于,是因为人脑是一个非常复杂的神经网络,而人工神经网络实际上是我们对人脑工作过程的理解的一种非常简化的表示)。首先,我们需要创建一堆具有互联系的神经元,这些神经元可以互相传送信息。然后,我们想用这个网络去解决一个问题。我们并不指望网络一下子就找到问题的正确答案,它可以不断的去自我调适,每一次可以增强神经元之间导致输出正确的连接,并削弱那些导致输出不正确的连接。更多关于神经网络的细节介绍,请参考Michael Nielsen的神经网络和深度学习(http://neuralnetworksanddeeplearning.com/index.html)。如果想了解神经网络更加技术性的介绍,请参考Ian Goodfellow, Yoshua Bengio和Aaron Courville著的深度学习http://www.deeplearningbook.org/。

小白:什么叫神经元呀?

答:我们来看一个最最简化的图片。本质上来说,它是这个样子的。

是不是够简单粗暴?里面那个大圆圈圈就是一个神经元,其中的f(·),我们称之为激活函数。它的输入,例如上图,就是所有输入xi乘以相应权重wji的总和。

小白:什么叫做激活函数呀?

答:激活函数嘛,顾名思义,就是激活那个神经元的函数。再说清楚一点,例如一个阶跃函数(如下图的例子)就可以是一个激活函数,一旦它的输入到达一个值,它的输出就蹦到上面那个值去,实现“激活”,完成量变到质变的过程。

小白:那网络“不断的去自我调适”,具体是怎么实现的呢?

答:我们再看一张稍微复杂一点的图。看到里面那个“Error”了吗?这就是一个反向传播的过程。我们说网络的“自我调适”,就是指通过这一次的输出和正确输出的差值,来矫正下一次的输入。那么如何矫正呢?就是用的梯度下降算法。梯度下降,你可以这么理解,在你面前有3个滑梯,一个30度,一个60度,最后一个是90度。如果想最快到达地面,那一定会选择90度的那个滑梯。这个选择的过程,就可以称为梯度下降算法。

小白:酷,那我可以按自己的想法建网络吗?

答:当然可以了!在Tensorflow Playground这个平台上我们可以选择不同的参数和设计,神经网络训练的每一步迭代将会用可视化显示出来。谷歌已经把开源代码放在GitHub上了,就是希望能够让入门和学习神经网络变得更加容易。拉到网页的最上面一行,我们会看到有一个参数选项列表。现在对我们对这些选项一一进行解释:

Activation是激活函数,定义了每一个神经元的输出,Google提供了四种选择。用户可以一一尝试并且通过可视化清楚的看懂他们的区别。

Learning Rate是学习率,决定每一步学习的步长。这个和前面的问题里我们谈到梯度学习有关。运用梯度下降算法进行优化时,在梯度项前会乘以一个系数,这个系数就叫学习率。学习率如果太小函数收敛很慢,太大则可能无法找到极值,甚至函数无法收敛。

小白:打断一下,那我们该如何选择学习率呢?

答:嗯,好问题!为了解释这个问题,那我们还要介绍一个名词叫Loss。Loss翻译过来是损失。简单的说就是预测值和实际值之间的差别。损失越小,表示模型预测结果越准确,这种模型就越好。Playground的右上角可以直观地看到每一次迭代之后的Training Loss和Testing Loss的走向。最理想的情况是两个Loss都逐渐变小,说明模型越来越准确。如果Training Loss减小而Testing Loss增大,可能我们就过拟合(Overfit)了。对于不同的问题,会有合适的计算Loss的方法,也就是你可能经常听到的损失函数(Loss function),也叫代价函数(Cost function)。

回到学习率的选择问题,大概就只有通过不断尝试了。一个在实践中选择学习率的办法是先把学习速率设置为0.01,然后观察Testing and Training Loss 的走向,如果Loss一直在变小,那你可以逐步地调大学习速率。如果Loss在变大或者走向多变,那就得减小学习速率。经过一番尝试之后,你可以大概确定学习速率的合适的值。从Playground平台的右边的OUTPUT栏可以清楚直观的看到每一步迭代后的Loss趋势图。

小白:我懂啦!这个平台可以模拟什么样的问题呢?

答:回来看到参数设定部分。

Problem type包含神经网络能够解决的两类问题: 1)分类(Classification),离散化的问题。在这里可以直观的看出,我们的问题是建立一个模型成功区分橙色和蓝色的点

2)回归(Regression),连续性的问题。

上面左边的图是Google提供的为分类问题的4种选择实例,右图为回归问题的2种选择。

页面的左边还有一些参数可以设置: Ratio of training to test data指在总数据集中,拿出多少作为训练数据集。训练数据指用这些数据来调适网络,测试数据指用这些数据来验证网络的效果如何。训练数据+测试数据=总数据量),设置Noise可以选择噪音数据多少以及每次训练使用的数据量。 Noise可以设定是否加入噪音。 Batch size指在每一次迭代中,计算多少个数据。 下面还有一个”REGENERATE”按钮,每按下这个按钮,Playground就会重新按照你选择的参数生成随机数据集。

小白:所以说我们只能在这些提供的实验和数据中选择一个特定的问题,但是参数我们可以自由调节。

答:是的。接下来,在中间这一栏,我们可以选择这个神经网络中自己想要输入的特征(feature)和层数,以及每层有几个神经元。

小白:能不能具体说一下FEATURES(特征)是什么意思?

答:这是指的在训练网络时,是否需要给网络输入特征。举个很简单的例子,如果你在描述一个人的时候,你会用一些最能够区分他和其他人的特征来描述这个人。我们在这里说的特征,也是一个意思。即我们找到的,能够最大限度描述输入数据特性的那些东西(“东西”可以用函数或者参数值来表示。)现在回去看截屏中可选择的FEATURES,这些数据都为二维数据,X1代表横轴坐标值,X2代表纵轴坐标值,知道这个之后,其余的特征值就很容易懂啦。

根据不同的问题,我们需要输入不同的特征。如上图这种复杂的分类问题,仅仅X1 , X2, X12, X21这样单一维度的特征可能不足以做出好的模型,这时候我们就会考虑X1X2这样的交叉特征了。咱们也可以限制特征,让神经网络自己通过不断的迭代,修改神经元的权重,从而自己“学习”到有用的特征。在实际应用中,很多图像识别问题已经可以做到不需要人为进行特征提取,直接对原始图片进行操作。

小白:网络中里显示的颜色代表什么?

答:橙色代表负值,蓝色代表正值。在这里,我们用-1(橙色)或者+1(蓝色)来初始化数据(这些数据用小圆圈表示)。在隐含层(HIDDEN LAYERS)中,层与层之间的线条颜色由连接神经元之间的权重决定。蓝色代表权重为正,橙色代表权重为负。位于连接线右边的神经元的输入值,由位于连接线左边神经元的输出值及相应连接线的权重、以及激活函数来决定。在输出层(OUTPUT),点的颜色由其所具有的数值决定。在输出层中的背景颜色代表针对某一个特定区域,网络预测出来的值为多少。背景颜色的强度代表预测的可信度。

小白:这个平台能做好多事儿啊!他们使用的是什么程序库呢?

我可能想更加深入的学习一下。

答:这个库是谷歌自己开发的,专门用于这个可视化教学的小程序库(链接在这里:https://github.com/tensorflow/playground/blob/master/nn.ts)。如果想做实际应用的话,可以考虑使用谷歌开发的TensorFlow开源库(https://www.tensorflow.org/)。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-08-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据文摘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一款入门神器TensorFlowPlayground
本文介绍一款有趣的入门工具,可以在线(网页端)直接搭建简易的网络并可视化整个训练的过程!
AI算法与图像处理
2019/06/03
3.3K0
深度神经网络基础知识
在很多情况下,可能会遇到数据不平衡问题。数据不平衡是什么意思呢?举一个简单的例子:假设你正在训练一个网络模型,该模型用来预测视频中是否有人持有致命武器。但是训练数据中只有 50 个持有武器的视频,而有 1000 个没有持有武器的视频。如果使用这个数据集完成训练的话,模型肯定倾向于预测视频中没有持有武器。针对这个问题,可以做一些事情来解决:
嵌入式视觉
2022/09/05
1.4K0
深度神经网络基础知识
Tensorflow新手通过PlayGround可视化初识神经网络
北京 上海巡回站 | NVIDIA DLI深度学习培训 2018年1月26/1月12日 NVIDIA 深度学习学院 带你快速进入火热的DL领域 正文共1791个字,12张图,预计阅读时间6分钟。 是不是觉得神经网络不够形象,概念不够清晰,如果你是新手,来玩玩PlayGround就知道,大神请绕道。 PlayGround是一个在线演示、实验的神经网络平台,是一个入门神经网络非常直观的网站。这个图形化平台非常强大,将神经网络的训练过程直接可视化。同时也能让我们对Tensorflow有一个感性的认识。 Pla
企鹅号小编
2018/01/17
7100
Tensorflow新手通过PlayGround可视化初识神经网络
推荐一个神经网络原理可视化的平台
神经网络具有很强的学习能力和自适应自组织能力,而且随着隐含层的数量增大学习能力也将变得更强,因此目前很多场景都使用神经网络,比如深度学习,我们更熟悉的就是阿法狗。
double
2019/09/16
1.9K0
推荐一个神经网络原理可视化的平台
直观思考:深度学习为何要 “深”?
数学式子: ,其中 是输入向量, 是输出向量, 是偏移向量, 是权重矩阵, 是激活函数。每一层仅仅是把输入 经过如此简单的操作得到 。
公众号机器学习与AI生成创作
2021/09/15
4390
机器学习的大局:用神经网络和TensorFlow分类文本
该文章介绍了如何使用深度学习将文本分类为三个类别。首先,作者介绍了神经网络的基础知识和架构,然后提供了实现文本分类的代码示例。文章使用了MNIST数据集进行训练和测试,并使用不同的超参数进行优化。最后,作者评估了模型的性能,并提供了示例输出。"
花落花飞去
2017/12/20
3.1K1
【他山之石】TensorFlow神经网络实现二分类的正确姿势
“他山之石,可以攻玉”,站在巨人的肩膀才能看得更高,走得更远。在科研的道路上,更需借助东风才能更快前行。为此,我们特别搜集整理了一些实用的代码链接,数据集,软件,编程技巧等,开辟“他山之石”专栏,助你乘风破浪,一路奋勇向前,敬请关注。
马上科普尚尚
2021/03/17
9610
【他山之石】TensorFlow神经网络实现二分类的正确姿势
基于Tensorflow的神经网络解决用户流失概率问题
注意,已经很多很多人和我说最后的loss不变,大家的数据都不一样,如果发现loss不变请降低learning_rate = 1e-6,就可以解决,还有问题的话,公众号里面联系我,帮助大家搞定。
sladesal
2018/08/27
5040
基于Tensorflow的神经网络解决用户流失概率问题
译文 | 与TensorFlow的第一次接触 第四章:单层神经网络
在前言中,已经提到经常使用深度学习的领域就是模式识别。编程初学者都是从打印“Hello World”开始,深度学习中我们则是从识别手写数字开始。 本章中,我会讲解如何在TensorFlow中一步步建立单层神经网络,这个建立的神经网络用来识别手写数字,它是基于TensorFlow官方新手指南中的一个例子改变而来。 根据本书的风格,在本例子中会简化一些概念与理论证明。 如果读者在读完本章后,有兴趣研究例子中相关的理论概念,建议读者去阅读神经网络与深度学习一书,该书同样可在网上获得,该书阐述了本例子中的一些深度理
用户1332428
2018/03/09
9800
译文 | 与TensorFlow的第一次接触 第四章:单层神经网络
什么是神经网络
本文结构: 什么是神经网络 什么是神经元 神经网络的计算和训练 代码实现 ---- 1. 什么是神经网络 神经网络就是按照一定规则将多个神经元连接起来的网络 例如全连接(full connected, FC)神经网络,它的规则包括: 有三种层:输入层,输出层,隐藏层。 同一层的神经元之间没有连接。 full connected的含义:第 N 层的每个神经元和第 N-1 层的所有神经元相连,第 N-1 层神经元的输出就是第 N 层神经元的输入。 每个连接都有一个权值。 不同的神经网络,具有不同的连接规则 --
杨熹
2018/04/02
8940
什么是神经网络
实例解析神经网络的工作原理
在机器学习和相关领域,人工神经网络的计算模型灵感正是来自生物神经网络:每个神经元与其他神经元相连,当它兴奋时,就会像相邻的神经元发送化学物质,从而改变这些神经元内的电位;如果某神经元的电位超过了一个阈值,那么它就会被激活(兴奋),向其他神经元发送化学物质。
算法进阶
2023/11/27
3140
实例解析神经网络的工作原理
Tensorflow 笔记:搭建神经网络
用张量表示数据,用计算图搭建神经网络,用会话执行计算图,优化线上的权重(参数),得到模型。
云时之间
2018/05/02
1.5K6
Tensorflow 笔记:搭建神经网络
神经网络(TensorFlow)游乐场
TensorFlow游乐场是一个通过网页浏览器就可以训练的简单神经网络并实现了可视化训练过程的工具。可以去简单地模拟深度学习的过程。连线越粗表明权重越大。
里克贝斯
2021/05/21
1.5K0
神经网络(TensorFlow)游乐场
深度学习简易入门
该文介绍了深度学习简易入门,包括深度学习是什么、神经网络、神经元、神经网络组成、训练神经网络、神经网络能做什么、案例、神经网络训练过程中需要注意的问题、调参、深度学习框架选择、安装等。
MelonTeam
2018/01/04
9170
深度学习简易入门
Coursera吴恩达《神经网络与深度学习》课程笔记(4)-- 浅层神经网络
上节课我们主要介绍了向量化、矩阵计算的方法和python编程的相关技巧。并以逻辑回归为例,将其算法流程包括梯度下降转换为向量化的形式,从而大大提高了程序运算速度。本节课我们将从浅层神经网络入手,开始真
红色石头
2017/12/28
1.2K0
Coursera吴恩达《神经网络与深度学习》课程笔记(4)-- 浅层神经网络
Python高级算法——人工神经网络(Artificial Neural Network)
人工神经网络是一种模拟生物神经网络结构和功能的计算模型,近年来在机器学习和深度学习领域取得了巨大成功。本文将深入讲解Python中的人工神经网络,包括基本概念、神经网络结构、前向传播、反向传播、激活函数、损失函数等关键知识点,并通过实际代码示例演示人工神经网络在手写数字识别问题上的应用。
Echo_Wish
2023/12/18
1.9K0
神经网络–反向传播详细推导过程
为了描述神经网络,我们先从最简单的神经网络讲起,这个神经网络仅由一个“神经元”构成,以下即是这个“神经元”的图示:
全栈程序员站长
2022/08/23
8500
神经网络–反向传播详细推导过程
【算法】什么是神经网络?
本文结构: 什么是神经网络 什么是神经元 神经网络的计算和训练 代码实现 1. 什么是神经网络 神经网络就是按照一定规则将多个神经元连接起来的网络 例如全连接(full connected, FC)神经网络,它的规则包括: 有三种层:输入层,输出层,隐藏层。 同一层的神经元之间没有连接。 full connected的含义:第 N 层的每个神经元和第 N-1 层的所有神经元相连,第 N-1 层神经元的输出就是第 N 层神经元的输入。 每个连接都有一个权值。 不同的神经网络,具有不同的连接规则 2. 什么
小莹莹
2018/04/24
1.4K0
【算法】什么是神经网络?
深度学习简易入门
本文介绍了深度学习简易入门,从深度学习是什么、神经网络、深度学习框架、训练神经网络、深度学习应用等方面,系统地介绍了深度学习的基础知识和实现方法。
jennyxia
2017/07/03
1.3K0
深度学习简易入门
前馈神经网络——深度学习之神经网络核心原理与算法
因上几次读者反映,公式代码有乱码和不规整的问题,小编有改善哟,这篇文章开始亲们会看到效果的哟~
用户1332428
2018/07/30
1.2K0
前馈神经网络——深度学习之神经网络核心原理与算法
推荐阅读
相关推荐
一款入门神器TensorFlowPlayground
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档