用TensorFlow游乐场学习神经网络
进入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)对神经网络的训练也有很大的影响。我们知道,机器学习中,算法会对每个样本都进行学习;批大小就是,把一批的数据的学习结果求平均值,然后再反馈到网络当中去。这样有什么好处呢?
- 批处理使得原本的输入从一维矩阵变成二维矩阵,用矩阵加速计算,从而提高计算速度。
- 批处理过程中会平均处理样本,从而起到平均滤波的作用,减轻个别噪声样本对模型的影响。
当然,批处理也会带来一定的缺点:
- 批处理降低的网络收敛的速度,轮数相同的情况下,批大小越大,收敛速度越慢。
- 太大的的批大小,会明显降低模型性能的上限。一般以32-256为宜。
7. 网络的深度和广度
游乐场中的HIDDEN LAYERS就是网络的深度,通常,当隐藏层数大于2,就可以称为深度学习了(至少可以勉强称为深度学习)。每层网络的神经元个数,就可以对应网络的广度。
为什么需要深度学习呢?
- 理论上,但凡深度神经网络能解决的问题,用单个隐藏层的神经网络也可以解决,只是需要不断的扩大网络的广度。
- 但是,一味简单的扩大神经网络的规模,会让网络的训练带来很多问题。而深度神经网络只需要非常少的神经元就可以实现“广度”神经网络的功能。
在过去,深度神经网络会遇到什么瓶颈?
深度神经网络比普通的神经网络发展晚了大约10年,而深度神经网络最近又得到了飞速的发展。为什么从普通的神经网络过渡到深度神经网络这么难呢?
- 计算力
- 数据规模
- 深度神经网络技术本身
可见,现在深度神经网络的许多瓶颈都不复存在了。
8. 损失值
损失值分为训练集损失和测试集损失,如果可以,那么当然是两者都很小啦!做不到的话,那么训练集的损失值小也可以,但是这种情况称为过拟合。
可训练参数
- Weight 大小 —— 用神经元之间的水管的颜色和深浅表示
- Bias 大小 —— 用神经元左下角的点的颜色和深浅表示
尾巴
TensorFlow游乐场其实和Google的TensorFlow没什么关系。但是不失为一个对初学者非常友好的学习方法。本文没有提及让人胆怯的机器学习数学基础,感兴趣的初学者需要自行了解。