算法工程师修仙之路:TensorFlow(四)

TensorFlow 入门

TensorFlow实现神经网络


TensorFlow 游乐场及神经网络简介

  • TensorFlow 游乐场是一个通过网页浏览器就可以训练的简单神经网络并实现了可视化训练过程的工具。

  • TensorFlow 游乐场界面
    在这里插入图片描述

    • TensorFlow 游乐场的左侧提供了4个不同的数据集来测试神经网络。

      • 默认的数据为左上角被框出来的那个。
      • 被选中的数据也会显示在最右边的“OUTPUT”栏下。
      • 在这个数据中,可以看到一个二维平面上有黄色或者蓝色的点,每一个小点代表了 一个样例,而点的颜色代表了样例的标签。因为点的颜色只有两种,所以这是一个二分类的问题。
    • 假设需要判断某工厂生产的零件是否合格,那么黄色的点可以表示所有合格的零件而蓝色的表示不合格的零件。这样判断一个零件是否合格就变成了区分点的颜色。

      • 为了将一个实际问题对应到平面上不同颜色点的划分,还需要将实际问题中的实体,变成平面上的一个点。这就是特征提取解决的问题。
      • 以零件为例,可以用零件的长度和质量来大致描述一个零件。这样一个物理意义上的零件就可以被转化成长度和质量这两个数字。在机器学习中,所有用于描述实体的数字的组合就是一个实体的特征向量(feature vector)。
      • 假设使用长度和质量作为一个零件的特征向量,那么每个零件就是二维平面上的一个点。
      • TensorFlow 游乐场中 FEATURES 一栏对应了特征向量。
      • 可以认为 x 1 x_1 代表一个零件的长度,而 x 2 x_2 代表零件的质量。
  • 特征向量是神经网络的输入,目前主流的神经网络都是分层的结构。

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

  • **在输入和输出层之间的神经网络叫做隐藏层,一般一个神经网络的隐藏层越多,这个神经网络越深。**在 TensorFlow 游乐场中可以通过点击“+”或者“-”来增加/减少神经网络隐藏层的数量。

  • 除了可以选择神经网络的深度,TensorFlow 游乐场也支持选择神经网络每一层的节点数以及学习率(learning rate)、激活函数(activation)、正则化(regularization)。

  • 在真实问题中,一般会从实体中抽取更多的特征,所以一个实体会被表示为高维空间中的点。有一些神经网络是可以跨层连接的,但目前大部分神经网络结构中都只是相邻两层有连接。

  • 当所有配置都选好之后,可以通过左上角的开始标志来训练这个神经网络。

  • TensorFlow 游乐场训练100轮之后
    在这里插入图片描述

    • 一个小格子代表神经网络中的一个节点,而边代表节点之间的连接。
    • 每一个节点和边都被涂上了或黄或蓝的颜色,但边上的颜色和格子中的颜色含
      义有略微的区别。
    • 每一条边代表了神经网络中的一个参数,它可以是任意实数。神经网络就是通过对参数的合理设置来解决分类或者回归问题的。
    • 边上的颜色体现了这个参数的取值,当边的颜色越深时,这个参数取值的绝对值越大;当边的颜色很浅时,这个参数的取值接近于0。
    • 每一个节点上的颜色代表了这个节点的区分平面。这个平面上的每一个点就代表了 ( x 1 , x 2 ) (x_1, x_2) 的一种取值。而这个点的颜色就体现了 x 1 , x 2 x_1, x_2 在这种取值下这个节点的输出值。和边类似,当节点的输出值的绝对值越大时,颜色越深。
    • 边的颜色有黄色和蓝色的区别,黄色越深表示负得越大,蓝色越深表示正得越大。类似边上的颜色,点上的颜色也有黄色和蓝色,黄色越深表示负得越大,蓝色越深表示正得越大。
    • x 1 x_1 这个节点的区分平面就是 y 轴。因为这个节点的输出就是 x 1 x_1 本身的值,所以当 X1 小于 0 时,这个节点的输出就是负数,而 x 1 x_1 大于 0 时输出的就是正数。于是 y 轴的左侧都为黄色,而右侧都为蓝色。
    • 唯一特殊的是最右边 OUTPUT 栏下的输出节点。这个节点中除了显示了区分平面,还显示了训练数据,也就是希望通过神经网络区分的数据点。经过两层的隐藏层,输出节点的区分平面已经可以完全区分不同颜色的数据点。
  • 使用神经网络解决分类问题主要可以分为以下 4 个步骤。

    • 提取问题中实体的特征向量作为神经网络的输入,不同的实体可以提取不同的特征向量。
    • 定义神经网络的结构,并定义如何从神经网络的输入得到输出,这个过程就是神经网络的前向传播算法。
    • 通过训练数据来调整神经网络中参数的取值,即训练神经网络的过程。
    • 使用训练好的神经网络来预测未知的数据。

猜你喜欢

转载自blog.csdn.net/faker1895/article/details/85914647