博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TensorFlow on Android(8): 知识准备
阅读量:4148 次
发布时间:2019-05-25

本文共 1827 字,大约阅读时间需要 6 分钟。

监督学习和非监督学习

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

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

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

那么, 训练计算机识别熊猫是监督学习还是非监督学习?

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

训练集和测试集

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

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

损失函数(Loss Function)

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

优化器(optimizer)

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

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

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

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

转移学习(transfer learning)

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

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

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


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

转载地址:http://isiti.baihongyu.com/

你可能感兴趣的文章
论文翻译:《一个包容性设计的具体例子:聋人导向可访问性》
查看>>
基于“分形”编写的交互应用
查看>>
《融入动画技术的交互应用》主题博文推荐
查看>>
链睿和家乐福合作推出下一代零售业隐私保护技术
查看>>
Unifrax宣布新建SiFAB™生产线
查看>>
艾默生纪念谷轮™在空调和制冷领域的百年创新成就
查看>>
NEXO代币持有者获得20,428,359.89美元股息
查看>>
Piper Sandler为EverArc收购Perimeter Solutions提供咨询服务
查看>>
RMRK筹集600万美元,用于在Polkadot上建立先进的NFT系统标准
查看>>
JavaSE_day14 集合中的Map集合_键值映射关系
查看>>
异常 Java学习Day_15
查看>>
Mysql初始化的命令
查看>>
MySQL关键字的些许问题
查看>>
浅谈HTML
查看>>
css基础
查看>>
Servlet进阶和JSP基础
查看>>
servlet中的cookie和session
查看>>
过滤器及JSP九大隐式对象
查看>>
软件(项目)的分层
查看>>
菜单树
查看>>