• 《python深度学习》笔记---4.1-4.2、机器学习的四个分支


    《python深度学习》笔记---4.1-4.2、机器学习的四个分支

    一、总结

    一句话总结:

    弄清楚分类便于构建知识架构:监督学习、无监督学习、自监督学习、强化学习

    1、虽然监督学习主要包括分类和回归,但还有更多的奇特变体,主要包括如下几种?

    序列生成(sequence generation):给定一张图像,预测描述图像的文字。序列生成有时 可以被重新表示为一系列分类问题,比如反复预测序列中的单词或标记。
    语法树预测(syntax tree prediction):给定一个句子,预测其分解生成的语法树。
    目标检测(object detection):给定一张图像,在图中特定目标的周围画一个边界框。这 个问题也可以表示为分类问题(给定多个候选边界框,对每个框内的目标进行分类)或 分类与回归联合问题(用向量回归来预测边界框的坐标)。
    图像分割(image segmentation):给定一张图像,在特定物体上画一个像素级的掩模(mask)。

    2、无监督学习?

    数据中的相关性:无监督学习是指在没有目标的情况下寻找输入数据的有趣变换,其目的在于数据可视化、 数据压缩、数据去噪或更好地理解数据中的相关性。
    必备技能:无监督学习是数据分析的必备技能,在解 决监督学习问题之前,为了更好地了解数据集,它通常是一个必要步骤。
    降维和聚类:降维(dimensionality reduction)和聚类(clustering)都是众所周知的无监督学习方法。

    3、自监督学习?

    没有人类参与的监督学习:自监督学习是没有 人工标注的标签的监督学习,你可以将它看作没有人类参与的监督学习。
    标签从输入数据生成:标签仍然存在(因为 总要有什么东西来监督学习过程),但它们是从输入数据中生成的,通常是使用启发式算法生 成的。
    自编码器:自编码器(autoencoder)是有名的自监督学习的例子,其生成的目标就是未经 修改的输入。

    4、自监督学习的例子?

    自编码器:自编码器(autoencoder)是有名的自监督学习的例子,其生成的目标就是未经 修改的输入。
    【即用未来的输入数据作为监督】:同样,给定视频中过去的帧来预测下一帧,或者给定文本中前面的词来预测下一个词, 都是自监督学习的例子[这两个例子也属于时序监督学习(temporally supervised learning), 即用 未来的输入数据作为监督]。

    5、强化学习?

    玩Atari游戏:强化学习一直以来被人们所忽视,但最近随着Google 的 DeepMind 公司将其成功应用于学 习玩 Atari 游戏(以及后来学习下围棋并达到最高水平),机器学习的这一分支开始受到大量关注。
    智能体(agent):在强化学习中,智能体(agent)接收有关其环境的信息,并学会选择使某种奖励最大化的行动。 例如,神经网络会“观察”视频游戏的屏幕并输出游戏操作,目的是尽可能得高分,这种神经 网络可以通过强化学习来训练。
    强化学习主要在游戏领域:目前,强化学习主要集中在研究领域,除游戏外还没有取得实践上的重大成功。

    6、为什么评估模型分为三个集合:训练集、验证集和测试集,而不是训练集和测试集,在训练集上训练模型,然 后在测试集上评估模型。这样简单得多?

    调节模型配置:原因在于开发模型时总是需要调节模型配置,比如选择层数或每层大小[这叫作模型的超 参数(hyperparameter),以便与模型参数(即权重)区分开]
    需要使用模型在验证数据上的性能:这个调节过程需要使用模型在验证数据上的性能作为反馈信号。这个调节过程本质上就是一种学习:在某个参数空间中寻找良 好的模型配置。
    在验证集上过拟合:因此,如果基于模型在验证集上的性能来调节模型配置,会很快导致模型在验 证集上过拟合,即使你并没有在验证集上直接训练模型也会如此。
    信息泄露:造成这一现象的关键在于信息泄露(information leak)。每次基于模型在验证集上的性能来 调节模型超参数,都会有一些关于验证数据的信息泄露到模型中。

    7、将数据划分为训练集、验证集和测试集可能看起来很简单,但如果可用数据很少,还有几 种高级方法可以派上用场?

    简单的留出验证、
    K折验证,
    以及带有打乱数据的重复 K 折验证

    8、简单的留出验证 ?

    留出一定比例的数据作为测试集:在剩余的数据上训练模型,然后在测试集上评估模型。

    9、K 折验证 ?

    K个分区取一个做验证集:K 折验证(K-fold validation)将数据划分为大小相同的K 个分区。对于每个分区 i,在剩 余的K-1 个分区上训练模型,然后在分区 i 上评估模型。最终分数等于K 个分数的平均值。
    模型性能变化大很有用:对 于不同的训练集- 测试集划分,如果模型性能的变化很大,那么这种方法很有用。与留出验证 一样,这种方法也需要独立的验证集进行模型校正。

    10、验证集的意义:评估模型,调整超参数?

    validation_score = model.evaluate(validation_data)

    11、带有打乱数据的重复 K 折验证 ?

    尽可能精确地评估模型:如果可用的数据相对较少,而你又需要尽可能精确地评估模型,那么可以选择带有打乱数 据的重复K 折验证(iterated K-fold validation with shuffling)。在Kaggle 竞赛中 特别有用。
    划分K折前打乱:具体做法是多次使用 K 折验证,在每次将数据划分为 K 个分区之前都先将数据打乱。 最终分数是每次K 折验证分数的平均值。注意,这种方法一共要训练和评估P×K 个模型(P 是重复次数),计算代价很大。

    12、评估模型的注意事项?

    打乱数据集之前先打乱:在将数据划分为训练集和测试集 之前,通常应该随机打乱数据。
    时间数据不要打乱: 时间箭头(the arrow of time)。如果想要根据过去预测未来(比如明天的天气、股票走势 等),那么在划分数据前你不应该随机打乱数据,因为这么做会造成时间泄露(temporal leak):你的模型将在未来数据上得到有效训练。
    去掉冗余数据:如果有冗余数据,效果非常糟糕。一 定要确保训练集和验证集之间没有交集。

    二、内容在总结中

    博客对应课程的视频位置:

     
    我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
    博主25岁,前端后端算法大数据人工智能都有兴趣。
    大家有啥都可以加博主联系方式(qq404006308,微信fan404006308)互相交流。工作、生活、心境,可以互相启迪。
    聊技术,交朋友,修心境,qq404006308,微信fan404006308
    26岁,真心找女朋友,非诚勿扰,微信fan404006308,qq404006308
    人工智能群:939687837

    作者相关推荐

  • 相关阅读:
    精妙SQL语句介绍
    ASP判断文件地址是否有效
    将源代码清空,这样别人就看不到源码了
    部署
    sublime
    vscode
    android node
    mac开启热点
    微信
    常见问题
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/13778871.html
Copyright © 2020-2023  润新知