专栏首页人人都是极客1.训练模型之准备工作

1.训练模型之准备工作

经常关注我公众号的读者应该还记得之前写了5课关于嵌入式人工智能的文章,可以点击这里查看(文章末尾有前4节课时的推荐),前5节课时都在讲一个主题,即如何识别物体。照着这5节课时学习相信初学人工智能的你已经掌握了如何在嵌入式端利用已有的模型去识别物体。

这里将手把手和大家分享第二个主题---如何训练模型。针对这一主题暂时准备5节课,分别是:

  • 《训练之前的简单机器学习的知识点准备工作》
  • 《运行一个demo》
  • 《在GPU上如何训练》
  • 《准备训练数据》
  • 《利用训练的模型识别物体》

下面开始如何训练模型这一主题的第一节课程。这里主要介绍基本的机器学习术语和概念,我想这样比较利于初学者的理解。

监督学习和非监督学习

在使用机器学习来解决问题之前,有一个很重要的事情,就是要问对问题。什么意思呢,就是说要能够定量的去描述你想用机器学习来解决的问题,比如说,“我想让计算机辅助医生来诊断癌症” 就不是一个很好的问题描述;如果换成,“我想让计算机从已知的癌症病人的历史病历和体检报告中找到某种规律,然后从一个患者的病历和体检报告来推测未来患癌症的可能性” ,这就是一个很好的问题描述。正确的描述问题可以指导你去选择合适的算法和模型。

监督学习是指存在先验知识的情况下进行训练,比如上面的例子,大量的已知癌症病人的病历和体检报告就是已知的经验,我们也称为样本数据,或者带标签的数据。通过用带标签的数据来进行训练,然后运用训练结果来推导新的样本,如新的患者的病历和体检报告,来判断是否有患癌症的可能,就是典型的监督学习。

非监督学习是指在没有带标记的样本数据下进行训练(无先验知识),比如说想从大量的服务器日志中去找到异常的的记录,但是事先我们并不知道异常记录的特征是什么样的,没有任何的带标记的数据,只有靠计算机去找到其中隐藏的某种模式。非监督学习主要是一些聚类算法,即按照数据的相似度将它们分类。

回到本课程的问题,训练计算机识别熊猫是监督学习还是非监督学习?

答案当然是:识别熊猫属于监督学习。因为我们知道熊猫是什么样子、哪些图片是熊猫。所以需要准备一些带标签的熊猫图片来进行训练。

训练集和测试集

准备好带标签的数据以后,我们还需要从这些数据中划分出训练集和测试集。训练集很好理解,就是真正用来训练模型的数据;测试集是用来检验训练效果的数据,简单来说就是用训练完的模型来推导测试集的数据,对比推导结果和测试数据的标签来评估训练效果,如准确率。

训练集和测试集的划分有很多方法,最简单的是将数据顺序打乱以后,按照一定比例进行切分,比如 70% 的数据划分到训练集,剩下 30% 的划分到测试集。

损失函数(Loss Function)

损失函数是用来衡量学习预测和现实结果差距的转换为具体数值(损失 Loss)的一方法,那么整个训练过程的就是不停的迭代优化(optimize),将损失减少到最小。比如我们用训练得到的模型来推导测试数据集里面的数据,将得到的结果和数据的真实标签进行对比,把他们的差距量化为一个数值,即损失值。然后再想办法降低这个损失值。

优化器(optimizer)

当准备好训练数据,选择好算法以后,其实还有很多工作要做。 一个算法本身还有很多配置参数需要配置,就好像安装完 MySQL 以后要配置端口和 IP,为了优化查询速度,还要调整查询缓存等参数一样。算法的这些参数都会明显的影响训练效果,而且我们并不可能事先知道针对某个具体问题,哪样的参数是最优的,只能根据训练结果调整参数,再重新训练、再评估、再修改,直到找到相对最优的参数集。

一个算法的参数可能有几十来个,对于复杂的神经网络,参数可能有成千上万个,显然用人来调整是不现实的,所以这个工作也是由计算机来完成的,即优化器(optimizer)。它的原理是先选择一个参数集作为起始的参数集,完成一次训练后,根据学习效果(损失值)按照一定算法调整参数,然后不停的迭代调整寻找最优参数集(损失值最小)。

常见的优化算法有梯度下降和其变种,Adadelta、Adagrad、RMSProp 等。

建议自行推导一下梯度下降算法,不是很难,如果要面试机器学习相关的职位,会用到的。

转移学习(transfer learning)

回想一下我们怎么学会乘法的,老师给我们一张九九乘法表,背会了就学会了乘法,并不需要我们从头推导和总结这些乘法规则。如果需要从头来做这些事情,那么学会乘法将是一件耗时很长的事情。因为直接学习了老师的知识,而不需要自己去发现,则很快就学会了乘法。整个人类文明也是建立在这样的知识积累与传递上的。知识的传递,大大加快了文明的发展。

在深度学习的世界里面,也有类似的机制,叫做转移学习。我们可以将已经训练好的模型的参数移植到新的模型上面帮助其训练,比起从零开始训练一个新模型,使用转移学习进行的训练所花的时间将大大减少。

在本课程中,我们也会使用上一门课中事先训练好的物体识别模型进行转移学习,来训练新的模型。

知识准备的差不多了,接下来撸起袖子开始干活吧!

本文分享自微信公众号 - 人人都是极客(rrgeek),作者:Peter Liu

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

原始发表时间:2018-02-10

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 5.训练模型之利用训练的模型识别物体

    接下来我们开始训练,这里要做三件事: 将训练数据上传到训练服务器,开始训练。 将训练过程可视化。 导出训练结果导出为可用作推导的模型文件。 配置 Pipelin...

    刘盼
  • 一文看尽2018全年AI技术大突破

    这一年成为NLP研究的分水岭,各种突破接连不断;CV领域同样精彩纷呈,与四年前相比GAN生成的假脸逼真到让人不敢相信;新工具、新框架的出现,也让这个领域的明天特...

    刘盼
  • 机器学习三要素之数据、模型、算法

    我们都知道,机器学习需要大量的数据来训练模型,尤其是训练神经网络。在进行机器学习时,数据集一般会被划分为训练集和测试集,很多时候还会划分出验证集。

    刘盼
  • TensorFlow从0到1 | 第七篇:TensorFlow线性回归的参数溢出之坑

    上一篇 6 解锁梯度下降算法 解释清楚了学习率(learning rate)。本篇基于对梯度下降算法和学习率的理解,去填下之前在线性回归中发现的一个坑。 在5 ...

    用户1332428
  • tensorflow使用object detection实现目标检测超详细全流程(视频+图像集检测)

    https://github.com/tensorflow/models/tree/master/research 本文以mobilenet-ssd-v2为例进...

    朱晓霞
  • tensorflow使用object detection实现目标检测超详细全流程(视频+图像集检测)

    参考原始代码:https://github.com/tensorflow/models/tree/master/research 本文以mobilenet-ss...

    机器学习AI算法工程
  • 预、自训练之争:谷歌说预训练虽火,但在标注数据上自训练更有效

    早在 2018 年,何恺明等人在论文《Rethinking ImageNet Pre-training》中重新思考了 ImageNet 预训练模型。他们发现这种...

    机器之心
  • 吴恩达《ML Yearning》| 关于学习曲线的分析&与人类级别的表现对比

    MachineLearning YearningSharing 是北京科技大学“机器学习研讨小组”旗下的文献翻译项目,其原文由Deep Learning.ai ...

    马上科普尚尚
  • 32分钟训练神经机器翻译,速度提升45倍

    我们想让用户用自己喜欢的语言体验我们的产品,同时与世界各地的人们建立联系。为此,我们使用神经机器学习(NMT)自动翻译帖子和内容中的文本。我们之前关于这一课题的...

    机器之心
  • 《机器学习实战:基于Scikit-Learn、Keras和TensorFlow》第11章 训练深度神经网络

    第 10 章介绍了人工神经网络,并训练了第一个深度神经网络。 但它非常浅,只有两个隐藏层。 如果你需要解决非常复杂的问题,例如检测高分辨率图像中的数百种类型的对...

    SeanCheney

扫码关注云+社区

领取腾讯云代金券