用TensorFlow游乐场学习神经网络

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tissar/article/details/86624771


进入TensorFlow游乐场

在这里插入图片描述


认识TensorFlow游乐场界面

网页可以划分成4部分:

  • 训练控制器(左上 ↖)
  • 训练超参数(右上 ↗)
  • 样本超参数(左下 ↙)
  • 模型超参数(右下 ↘)

在这里插入图片描述

开始打副本

下图显示了一个神经网络。各个参数意义如下:

  • 数据集使用高斯分布
  • 90%用于训练,剩余10%用于测试
  • 一批取10个点用于训练,并对学习结果取平均
  • 学习率为0.1
  • 激活函数使用ReLU
  • 使用L2正则化
  • 正则化比率为0.001
  • 问题类型为分类(又或者叫逻辑回归)
  • 网络深度为4,每个隐藏层都有6个神经元
  • 不做数据特征预处理

在这里插入图片描述

参数解析

1. 学习率

学习率越高,学习速度越快。

  • 学习速度如果太高,会放大个体差异的影响,降低模型的上限
  • 学习速度如果太低,学习效率太差,浪费资源

2. 激活函数

关于激活,有4中选择。

选项 含义 特点
ReLU ReLU非线性 在隐藏层数大于1时,效果最好
Tanh Tanh非线性 效果比Sigmoid好,但计算稍慢
Sigmoid Sigmoid非线性 以前隐藏层只有1层,所以以前很常用
Linear 线性激活 废物,直接废掉神经网络
  • 神经网络的优点在于可以解决线性不可分的分类问题,而神经网络解决线性不可分的关键,在于使用非线性的激活函数!
  • 假如神经网络中使用了线性激活函数,那么相邻的两个网络层都会因为失去非线性特征而废掉。
  • Sigmoid和Tanh在以前很常用。但是最近开始流行多层的神经网络(也就是深度神经网络),在深度神经网络里面,Sigmoid和Tanh的导数在两端太小,会导致梯度消失。
  • 所以现在的深度神经网络基本都在用ReLU激活函数。

3. 正则化和正则化比率

关于正则化,有3中选择

选项 含义
None 不使用正则化
L1 使用L1正则化
L2 使用L2正则化

正则化是深度学习中的高级课题,是用于防止神经网络过拟合的一个技术。而正则化比率指示了正则化的强度。

4. 问题类型和数据集

有2种问题类型可供选择。

选项 含义 说明
Classification 分类 这里的分类是二分类,有时候又叫逻辑回归
Regression 回归

看看数据集就能大致理解分类和回归的区别:分类问题中,数据集只有两种颜色;而回归问题中,数据集除了橙色和蓝色还有中间的过渡色。

当使用分类问题类型时,有四种数据可供选择;而当使用回归问题时,只有两种数据集供选择。其中最有难度的是分类问题中的第四个数据集——高斯分布。

5. 训练集大小和噪声

  • TensorFlow游乐场只有Train和Test,所以Ratio of training to test data的意思在于控制训练集 的大小。如果占比越大,说明训练集中的数据量越大;反之,说明训练集中的数据量小。
  • Noise用于调整数据集的噪声,看图就非常直观,噪声越大,分布越散乱;反之,分布集中。
  • 读者可以通过改变训练集大小和噪声,感受数据集对机器学习的影响。

6. 批大小

批大小(Batch size)对神经网络的训练也有很大的影响。我们知道,机器学习中,算法会对每个样本都进行学习;批大小就是,把一批的数据的学习结果求平均值,然后再反馈到网络当中去。这样有什么好处呢?

  1. 批处理使得原本的输入从一维矩阵变成二维矩阵,用矩阵加速计算,从而提高计算速度。
  2. 批处理过程中会平均处理样本,从而起到平均滤波的作用,减轻个别噪声样本对模型的影响。

当然,批处理也会带来一定的缺点:

  1. 批处理降低的网络收敛的速度,轮数相同的情况下,批大小越大,收敛速度越慢。
  2. 太大的的批大小,会明显降低模型性能的上限。一般以32-256为宜。

7. 网络的深度和广度

游乐场中的HIDDEN LAYERS就是网络的深度,通常,当隐藏层数大于2,就可以称为深度学习了(至少可以勉强称为深度学习)。每层网络的神经元个数,就可以对应网络的广度。

为什么需要深度学习呢?

  • 理论上,但凡深度神经网络能解决的问题,用单个隐藏层的神经网络也可以解决,只是需要不断的扩大网络的广度。
  • 但是,一味简单的扩大神经网络的规模,会让网络的训练带来很多问题。而深度神经网络只需要非常少的神经元就可以实现“广度”神经网络的功能。

在过去,深度神经网络会遇到什么瓶颈?
深度神经网络比普通的神经网络发展晚了大约10年,而深度神经网络最近又得到了飞速的发展。为什么从普通的神经网络过渡到深度神经网络这么难呢?

  1. 计算力
  2. 数据规模
  3. 深度神经网络技术本身

可见,现在深度神经网络的许多瓶颈都不复存在了。

8. 损失值

损失值分为训练集损失和测试集损失,如果可以,那么当然是两者都很小啦!做不到的话,那么训练集的损失值小也可以,但是这种情况称为过拟合

可训练参数

  • Weight 大小 —— 用神经元之间的水管颜色和深浅表示
  • Bias 大小 —— 用神经元左下角的颜色和深浅表示

在这里插入图片描述

尾巴

TensorFlow游乐场其实和Google的TensorFlow没什么关系。但是不失为一个对初学者非常友好的学习方法。本文没有提及让人胆怯的机器学习数学基础,感兴趣的初学者需要自行了解。

猜你喜欢

转载自blog.csdn.net/tissar/article/details/86624771