TensorFlow从0到1 | 第十三章: AI驯兽师:神经网络调教综述

在未来的AI时代,“手工程序”将变得越发稀有,而基于通用AI程序,通过大数据“习得”而生的程序,会无所不在。到那时,程序员将光荣卸任,取而代之的是一个新职业物种:他们无需像程序员那样了解所有细节,而是关注数据的获取和筛选、模型的训练和调教。他们是AI驯兽师

在过去的两场人机围棋旷世之战中,替AlphaGo执棋的黄士杰就是AI驯兽师的先驱:一个业余六段棋手作为首席工程师打造出AlphaGo,完胜人类专业九段,至此再无人类对手。

AI驯兽师

前面MNIST识别的实现,选用的各种参数值看似天经地义,一帆风顺,实则都是前人的经验,而真实情况下的调教过程,必定充满了过去不曾留意过的种种困难和不确定性。还记得在12 TensorFlow构建3层NN玩转MNIST中,一个不小心令权重和偏置初始化为0,导致了识别率连60%都无法逾越的结果。

本篇先对神经网络的调教做一个总览,作为“驯兽”的简要指南。

调教的几个层面

神经网络可调的选项实在太多了,也并不简单,我简单把它梳理为5个层面。

第一层:网络架构

网络的架构是在训练之前就需要确定的,包括:

  • 输入层神经元数量;
  • 输出层神经元数量;
  • 隐藏层的数量,以及各隐藏层神经元的数量;
  • 神经元激活函数的形式;

理论上,网络架构的规模越大,对复杂模型的表达就越充分。可随之而来的副作用也相当明显:训练难度相应增大,同时容易发生过拟合。此外,由于基于梯度下降的神经网络算法自身的局限,当网络的规模增加到一定程度时(尤其是隐藏层的数量),模型的性能则不再提升。

所以网络规模并不是越大越好,要根据问题的规模以及数据量的规模来综合考虑。

第二个层面:超参数

一旦网络架构定义完毕,那么除了网络自身的可训练参数之外,其余的参数都可以被认为是超参数,包括:

  • epoch,迭代数量;
  • mini batch;
  • learning rate,学习率;
  • lambda,正则化参数(如果损失函数进行了L1或L2正则化);

第三个层面:权重和偏置初始化

开始学习之前,权重和偏置的数值分布状态,也会很大的影响到模型的精度,以及学习的速度。常见的初始化方式:

  • 初始化为0;
  • 初始化均值为0,标准差为1;
  • 初始化均值为0,标准差为1/√n;
  • Xavier/He初始化方法;

其中第一种初始化为0,就遇到了12 TensorFlow构建3层NN玩转MNIST 提到的“60%识别率”的严重状况。

第二种是我们目前的已有MNIST识别实现所采用的初始化方法。相较于第二种方式,第三种会明显改善学习速度,后面的文章还会具体讲。

第四个层面:数据使用

用于模型学习的数据当然是越大越好,可现实中它总是稀缺而昂贵。在这种情况下就需要合理的划分和使用数据:

  • 训练数据的数量;
  • 验证数据的数量;
  • 测试数据的数量;
  • 数据的人为扩展;

训练集、验证集和测试集的划分方式我们已经了解了(参考11 74行Python实现手写体数字识别)。这里简单说下数据的扩展。

以图像数据为例。我们知道,只要把原图像整体挪动1个像素,就会得到一张全新的图像,由于图像的大部分像素的相对位置保持不变,所以其包含的语义信息仍然是完整无缺的。这样就可以在现有的数据基础上,人为产生更多的新数据。方法不限于平移,还可以做旋转、镜像、扭曲、添加噪音等等,以此来训练并提高模型的泛化能力。

第五个层面:最优化算法

即便是处于训练算法最外层的最优化算法框架,也可以被替换,《Neural Networks and Deep Learning》中提到了Hessian技术和momentum技术。

  • 损失函数的形式;
  • 最优化算法框架;
  • 基于全矩阵法的小批量数据(mini batch)反向传播;

调教目标和策略

调教神经网络的终极目标,狭义的说就是测试集上的识别精度。

尽管目标明确,但是整个训练过程只能间接的影响它——模型学习的数据是来自训练集,而测试集的识别精度要依靠模型的泛化能力来支撑。

提高模型泛化能力的切入点,并不是盲目的去尝试调整上面所有层面的选项,而通常是从着手改善问题开始的。未经优化的神经网络,通常都存在以下两个问题:

  • 学习缓慢;
  • 过拟合。

先从它们入手进行神经网络的优化,不失为一个好策略。

小结

本篇从整体上分析了神经网络调教的几个层面,以及调教的目标和策略。每当需要优化神经网络时,可以把它当做一份check list。

原文发布于微信公众号 - 人工智能LeadAI(atleadai)

原文发表时间:2017-08-26

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习算法原理与实践

强化学习(二)马尔科夫决策过程(MDP)

    在强化学习(一)模型基础中,我们讲到了强化学习模型的8个基本要素。但是仅凭这些要素还是无法使用强化学习来帮助我们解决问题的, 在讲到模型训练前,模型的简...

1123
来自专栏目标检测和深度学习

你可能不知道的7个深度学习实用技巧

深度学习已经成为解决许多具有挑战性的现实世界问题的方法。对目标检测,语音识别和语言翻译来说,这是迄今为止表现最好的方法。许多人将深度神经网络(DNNs)视为神奇...

2659
来自专栏华章科技

大神Hinton的Capsule论文终于公开,神经网络迎来新探索

今年9月的一次大会上,大神Geoffrey Hinton再次号召展开一次AI革命。

743
来自专栏PPV课数据科学社区

【学习】机器学习中的数据清洗与特征处理综述

背景 随着美团交易规模的逐步增大,积累下来的业务数据和交易数据越来越多,这些数据是美团做为一个团购平台最宝贵的财富。通过对这些数据的分析和挖掘,不仅能给美团业务...

2505
来自专栏贾志刚-OpenCV学堂

谷歌机器学习速成课程系列二

谷歌tensorflow官方推出了免费的机器学习视频课,总计25个课时,支持中英文语言播放、大量练习、实例代码学习,是初学tensorflow与机器学习爱好者必...

1022
来自专栏新智元

DeepMind提出快速调参新算法PBT,适用GAN训练(附论文)

来源: DeepMind 编译:马文 【新智元导读】DeepMind在最新的一篇论文 Population Based Training of Neural N...

3659
来自专栏机器之心

CVPR 2018 | 新研究提出深度残差等价映射:由正脸加强侧脸识别效果

选自arXiv 作者:Kaidi Cao等 机器之心编译 参与:李诗萌、白妤昕、思源 由于类别样本不均衡,人脸检测只在正脸识别上有优秀的表现,它们很难识别侧脸样...

2825
来自专栏ATYUN订阅号

【学术】手把手教你解决90%的自然语言处理问题

无论你是成熟的公司,还是想要推出一个新服务,都可以利用文本数据来验证、改进和扩展产品的功能。科学的从文本数据中提取语义并学习是自然语言处理(NLP)研究的一个课...

3395
来自专栏AI科技评论

学界 | 伯克利 AI 实验室博客发布首篇文章:让神经网络自行选择模块,实现动态推理

深度神经网络虽然在图像,语音,机器人等方面取得了巨大的成功,但是这些成功通常局限在识别任务或者生成任务中,对于推理任务,常规的神经网络通常是无能为力的。伯克利A...

3109
来自专栏机器学习之旅

理论:Logistic使用前提

工程效果经验,坏样本个数至少要是你的特征变量个数的10倍以上;总样本个数要是你的特征变量个数的20-30倍以上。比如假设你会采用10变量,理论上,你例子中的高血...

362

扫描关注云+社区