专栏首页博文视点BroadviewTensorFlow游乐场及神经网络简介

TensorFlow游乐场及神经网络简介

小编说:TensorFlow是谷歌2015年开源的主流深度学习框架,目前已在谷歌、优步(Uber)、京东、小米等科技公司广泛应用。本文将通过TensorFlow游乐场来简单介绍神经网络的主要功能以及计算流程。 本文选自《TensorFlow:实战Google深度学习框架》

本文将通过TensorFlow游乐场来快速介绍神经网络的主要功能。TensorFlow游乐场(http://playground.tensorflow.org)是一个通过网页浏览器就可以训练的简单神经网络并实现了可视化训练过程的工具。下图给出了TensorFlow游乐场默认设置的截图。

TensorFlow游乐场界面截图

从上图中可以看出,TensorFlow游乐场的左侧提供了4个不同的数据集来测试神经网络。默认的数据为左上角被框出来的那个。被选中的数据也会显示在上图中最右边的“OUTPUT”栏下。在这个数据中,可以看到一个二维平面上有黑色或者灰色的点,每一个小点代表了一个样例,而点的颜色代表了样例的标签。因为点的颜色只有两种,所以这是一个二分类的问题。在这里举一个例子来说明这个数据可以代表的实际问题。假设需要判断某工厂生产的零件是否合格,那么灰色的点可以表示所有合格的零件而黑色的表示不合格的零件。这样判断一个零件是否合格就变成了区分点的颜色。

为了将一个实际问题对应到平面上不同颜色点的划分,还需要将实际问题中的实体,比如上述例子中的零件,变成平面上的一个点①。这就是特征提取解决的问题。还是以零件为例,可以用零件的长度和质量来大致描述一个零件。这样一个物理意义上的零件就可以被转化成长度和质量这两个数字。在机器学习中,所有用于描述实体的数字的组合就是一个实体的特征向量(feature vector)。在第1章中介绍过,特征向量的提取对机器学习的效果至关重要,如何提取特征本书不再赘述。通过特征提取,就可以将实际问题中的实体转化为空间中的点。假设使用长度和质量作为一个零件的特征向量,那么每个零件就是二维平面上的一个点。TensorFlow游乐场中FEATURES一栏对应了特征向量。在本文的样例中,可以认为x1代表一个零件的长度,而x2代表零件的质量。

特征向量是神经网络的输入,神经网络的主体结构显示在了上图的中间位置。目前主流的神经网络都是分层的结构,第一层是输入层,代表特征向量中每一个特征的取值。比如如果一个零件的长度是0.5,那么x1的值就是0.5。同一层的节点不会相互连接,而且每一层只和下一层连接,直到最后一层作为输出层得到计算的结果②。在二分类问题中,比如判断零件是否合格,神经网络的输出层往往只包含一个节点,而这个节点会输出一个实数值。通过这个输出值和一个事先设定的阈值,就可以得到最后的分类结果。以判断零件合格为例,可以认为当输出的数值大于0时,给出的判断结果是零件合格,反之则零件不合格。一般可以认为当输出值离阈值越远时得到的答案越可靠。

在输入和输出层之间的神经网络叫做隐藏层,一般一个神经网络的隐藏层越多,这个神经网络越“深”。而所谓深度学习中的这个“深度”和神经网络的层数也是密切相关的。在TensorFlow游乐场中可以通过点击“+”或者“-”来增加/减少神经网络隐藏层的数量。除了可以选择神经网络的深度,TensorFlow游乐场也支持选择神经网络每一层的节点数以及学习率(learning rate)、激活函数(activation)、正则化(regularization)。如何使用这些参数将在后面的章节中讨论。在本文中都直接使用TensorFlow游乐场默认的设置。当所有配置都选好之后,可以通过左上角的开始标志“”来训练这个神经网络。下图中给出了迭代训练100轮之后的情况。

TensorFlow游乐场训练100轮之后的截图

如何训练一个神经网络将在下一节中介绍,在这里主要介绍如何解读TensorFlow游乐场的训练结果。在上图中,一个小格子代表神经网络中的一个节点,而边代表节点之间的连接。每一个节点和边都被涂上了或深或浅的颜色,但边上的颜色和格子中的颜色含义有略微的区别。每一条边代表了神经网络中的一个参数,它可以是任意实数。神经网络就是通过对参数的合理设置来解决分类或者回归问题的。边上的颜色体现了这个参数的取值,当边的颜色越深时,这个参数取值的绝对值越大;当边的颜色接近白色时,这个参数的取值接近于0③。

每一个节点上的颜色代表了这个节点的区分平面。具体来说,如果把这个平面当成一个卡迪尔坐标系,这个平面上的每一个点就代表了(x1,x2)的一种取值。而这个点的颜色就体现了x1,x2在这种取值下这个节点的输出值。和边类似,当节点的输出值的绝对值越大时,颜色越深④。下面将具体解读输入层x1所代表的节点。从上图中可以看到x1这个节点的区分平面就是y轴。因为这个节点的输出就是x1本身的值,所以当x1小于0时,这个节点的输出就是负数,而x1大于0时输出的就是正数。于是y轴的左侧都为灰色,而右侧都为黑色⑤。上图中其他节点可以类似的解读。唯一特殊的是最右边OUTPUT栏下的输出节点。这个节点中除了显示了区分平面之外,还显示了训练数据,也就是希望通过神经网络区分的数据点。从上图中可以看到,经过两层的隐藏层,输出节点的区分平面已经可以完全区分不同颜色的数据点。

综上所述,使用神经网络解决分类问题主要可以分为以下4个步骤。

1.提取问题中实体的特征向量作为神经网络的输入。不同的实体可以提取不同的特征向量,本书中将不具体介绍。本文假设作为神经网络输入的特征向量可以直接从数据集中获取。

2.定义神经网络的结构,并定义如何从神经网络的输入得到输出。这个过程就是神经网络的前向传播算法,以后将进行详细介绍。

3.通过训练数据来调整神经网络中参数的取值,这就是训练神经网络的过程。下一节将先介绍TensorFlow中表示神经网络参数的方法,然后下一节将大致介绍神经网络优化算法的框架,并介绍如何通过TensorFlow实现这个框架。

4.使用训练好的神经网络来预测未知的数据。这个过程和步骤2中的前向传播算法一致,本文不再赘述。

  • 注释 ①在真实问题中,一般会从实体中抽取更多的特征,所以一个实体会被表示为高维空间中的点。 ②有一些神经网络是可以跨层连接的,但目前大部分神经网络结构中都只是相邻两层有连接。 ③在TensorFlow游乐场网站上,边的颜色有黄色(文中浅色部分)和蓝色(文中深色部分)的区别,黄色越深表示负得越大,蓝色越深表示正得越大。 ④类似边上的颜色,TensorFlow游乐场网站中,点上的颜色也有黄色(文中浅色部分)和蓝色(文中深色部分),和边上颜色类似,黄色越深表示负得越大,蓝色越深表示正得越大。 ⑤在TensorFlow游乐场中,y轴左侧为黄色(文中浅色部分),右侧为蓝色(文中深色部分)。

本文分享自微信公众号 - 博文视点Broadview(bvbooks),作者:博文视点

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-03-24

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【神经网络丨主题周】深度学习中5种常见的网络类型

    卷积神经网络属于前面介绍的前馈神经网络之一,它对于图形图像的处理有着独特的效果,在结构上至少包括卷积层和池化层。卷积神经网络是最近几年不断发展的深度学习网络,并...

    博文视点Broadview
  • 书单丨5本神经网络好书带你告别深度学习恐惧症!

    周志华教授作序力荐,展现深度学习特别是CNN从数据、模型到系统的全栈式开发过程和技巧,一流的深度学习入门实践书!

    博文视点Broadview
  • 5000+收藏的Spring Boot面试核心总结,关键时刻可以救你一命!

    我们平常在项目中主要关注使用,程序run起来就ok了,很少去了解原理、架构、和性能调优。这样在面试问题中总有一种无法直击问题本质的无力感,很难充分表现自己,最终...

    博文视点Broadview
  • 深度学习究竟怎么入门?两位Google大神掀起剑气之争

    作为一名 华山派新弟子 深度学习新手,该先学会用框架快速搭出神经网络,用到实际问题中去,还是该先练习用Python基本徒手搭建模型,在小数据集上训练,了解它们的...

    量子位
  • [Python人工智能] 四.神经网络和深度学习入门知识

    首先第一部分也是莫烦老师的在线学习笔记,个人感觉挺好的基础知识,推荐给大家学习。对机器学习进行分类,包括: 1.监督学习:通过数据和标签进行学习,比如从...

    统计学家
  • 神经网络体系搭建(序)

    神经网络这个概念并不陌生,但是从接触到现在这一个月的时间里,云里雾里,始终无法建立起完整的体系,能让自己顺畅地用神经网络解决一个具体问题,并进行有针对性的优化。...

    刘开心_1266679
  • 卷积神经网络概述

    在 2012 年的 ILSVRC 比赛中 Hinton 的学生 Alex Krizhevsky 使用深度卷积神经网络模型 AlexNet 以显著的优势赢得了比...

    磐创AI
  • 小白学数据之什么是神经网络

    大数据文摘
  • 深度学习算法简要综述(上)

    自从 2012 年在一个图像识别比赛上,一个神经网络的性能超过人类后,深度学习就火了起来,但当时只有少数人会预料到接下来会发生什么。

    材ccc
  • NAS(神经结构搜索)综述

    本文是对神经结构搜索(NAS)的简单综述,在写作的过程中参考了文献[1]列出的部分文献。深度学习技术发展日新月异,市面的书很难跟上时代的步伐,本人希望写出一本内...

    SIGAI学习与实践平台

扫码关注云+社区

领取腾讯云代金券