1.训练模型之准备工作

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

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

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

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

监督学习和非监督学习

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

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

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

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

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

训练集和测试集

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

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

损失函数(Loss Function)

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

优化器(optimizer)

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

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

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

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

转移学习(transfer learning)

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

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

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

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

原文发布于微信公众号 - 人人都是极客(rrgeek)

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据科学与人工智能

【陆勤践行】SVM之核函数

前段时间热映的《星际穿越》想必大家都看过,在这部烧脑大片中,主角库珀进入到了高维度空间,在那里,时间这个维度变成实体存在,人们可以像散步一样沿着时间这个维度来回...

2268
来自专栏崔庆才的专栏

NanoNets:数据有限如何应用深度学习?

1875
来自专栏决胜机器学习

机器学习(七) ——logistic回归

机器学习(七)——logistic回归 (原创内容,转载请注明来源,谢谢) 一、概述 1、基本概念 logistic回归(logisticre...

3356
来自专栏杨熹的专栏

特征工程怎么做

在工业应用中,feature 比算法重要,数据比 feature 重要,有很多 kaggle 参赛者分享经验时也是说 feature engineering 很...

3353
来自专栏新智元

谷歌放大招!数据增强实现自动化

1892
来自专栏人工智能LeadAI

基于Tensorflow的神经网络解决用户流失概率问题

前言 用户流失一直都是公司非常重视的一个问题,也是AAARR中的Retention的核心问题,所以各大算法竞赛都很关注。比如最近的:KKBOX的会员流失预测算法...

69314
来自专栏汪毅雄的专栏

机器学习之数据清洗与特征提取

本文详细的解释了机器学习中,经常会用到数据清洗与特征提取的方法PCA,从理论、数据、代码三个层次予以分析。

6.7K5
来自专栏AI研习社

数据增强:数据有限时如何使用深度学习 ? (续)

这篇文章是对深度学习数据增强技术的全面回顾,具体到图像领域。这是《在有限的数据下如何使用深度学习》的第2部分。

2373
来自专栏专知

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

【导读】前几天,深度学习工程师George Seif发表了一篇博文,总结了7个深度学习的技巧,主要从提高深度学习模型的准确性和速度两个角度来分析这些小技巧。在使...

3634
来自专栏机器之心

研学社•架构组 | 实时深度学习的推理加速和连续学习

机器之心原创 作者:Yanchen Wang 参与:panda 在本技术分析报告的第一部分《研学社·系统组 | 实时深度学习的推理加速和持续训练》,我们介绍了最...

2836

扫码关注云+社区