【李沐动手学深度学习】读书笔记 01前言

虽然之前已经学过这部分内容和深度学习中的基础知识,但总觉得学的不够系统扎实,所以希望再通过沐神的课程以及书籍,系统条理的学习一遍。在读书过程中,利用导图做了一下梳理,形成了这个读书笔记。如有侵权,请联系我删除。
沐神的课非常好呀,很全面,包括了卷积神经网络的backbone、cv两个细分领域——目标检测和语义分割,原书链接在这里《动手学深度学习》。

前言:机器学习基础

背景

想象一下,你正和你最聪明的一群朋友围绕着白板,试图解决以下问题之一:

  • 编写一个程序,给出地理信息、卫星图像和一些历史天气信息,来预测明天的天气。
  • 编写一个程序,给出自然文本表示的问题,并正确回答该问题。
  • 编写一个程序,给出一张图像,识别出图像所包含的人,并在每个人周围绘制轮廓。
  • 编写一个程序,向用户推荐他们可能喜欢,但在自然浏览过程中不太可能遇到的产品。

机器学习(machine learning,ML)

机器学习是一类强大的可以从经验中学习的技术。在这本书中,我们将带你开启机器学习之旅,并特别关注深度学习(deep learning,DL)的基础知识。 深度学习是一套强大的技术,它可以推动计算机视觉、自然语言处理、医疗保健和基因组学等不同领域的创新。

日常生活中机器学习

例子:编写一个程序来响应一个“唤醒词”(比如“Alexa”、“小爱同学”和“Hey Siri”)需要包含以下。

  • 收集一个包含音频样本的巨大的数据集(dataset),并对包含和不包含唤醒词的样本进行标记

  • 定义一个灵活的程序算法,其输出由许多参数(parameter)决定。

  • 任一调整参数后的程序,我们称为模型(model)

  • 通过操作参数而生成的所有不同程序(输入-输出映射)的集合称为“模型族”。

    • 同一个模型族应该适合于“Alexa”识别和“Hey Siri”识别,因为从直觉上看,它们似乎是相似的任务。如果我们想处理完全不同的输入或输出,比如:从图像映射到字幕,或从英语映射到中文,我们可能需要一个完全不同的模型族。
  • 使用数据集来选择参数的元程序被称为学习算法(learning algorithm)。

  • 学习(learning)是一个训练模型的过程。换句话说,我们用数据训练(train)我们的模型。你可以将这种“通过用数据集来确定程序行为”的方法看作是“用数据编程”(programming with data)。

  • 深度学习是机器学习的一个主要分支。

关键组件

我们可以学习的数据(data)。

  • 每个数据集由一个个样本(example, sample)组成,大多时候,它们遵循独立同分布(independently and identically distributed, i.i.d.)。 样本有时也叫做数据点(data point)或者数据实例(data instance)

  • 通常每个样本由一组称为特征(features,或协变量(covariates))的属性组成

  • 当每个样本的特征类别数量都是相同的时候,其特征向量是固定长度的,这个长度被称为数据的维数(dimensionality)

  • 在监督学习问题中,要预测的是一个特殊的属性,它被称为标签(label,或目标(target))

  • 例如

    • 图像数据,每一张单独的照片即为一个样本,它的特征由每个像素数值的有序列表表示。 比如200×200彩色照片由200×200×3=120000个数值组成,其中的“3”对应于每个空间位置的红、绿、蓝通道的强度。
    • 一组医疗数据,给定一组标准的特征(如年龄、生命体征和诊断),我们可能用此数据尝试预测患者是否会存活。
  • 存在的问题

    • 小样本问题

      • 拥有的数据越多,我们的工作就越容易。 当我们有了更多的数据,我们通常可以训练出更强大的模型,从而减少对预先设想假设的依赖。 数据集的由小变大为现代深度学习的成功奠定基础。在没有大数据集的情况下,许多令人兴奋的深度学习模型黯然失色。 就算一些深度学习模型在小数据集上能够工作,但其效能并不比传统方法高。
    • 正确的数据,警惕垃圾数据。

      • 还需要正确的数据。在一些敏感应用中,如预测性监管、简历筛选和用于贷款的风险模型,我们必须特别警惕垃圾数据带来的后果。
    • 样本不均衡性

      • 还有一种常见的问题来自不均衡的数据集,比如在一个有关医疗的训练数据集中,某些人群没有样本表示。
    • 数据的代表性会导致模型具有某种代表性

      • 再比如,如果用“过去的招聘决策数据”来训练一个筛选简历的模型,那么机器学习模型可能会无意中捕捉到历史残留的不公正,并将其自动化。 然而,这一切都可能在不知情的情况下发生。 因此,当数据不具有充分代表性,甚至包含了一些社会偏见时,模型就很有可能有偏见。
    • 数据长度不固定

      • 不是所有的数据都可以用“固定长度”的向量表示。如图片的大小各种各样大小,需要裁剪,有信息丢失的风险;客户评价的文本数据有长有短。与传统机器学习方法相比,深度学习的一个主要优势是可以处理不同长度的数据。

调整模型参数以优化目标函数的算法(algorithm)。

  • 深度学习中,大多流行的优化算法通常基于一种基本方法–梯度下降(gradient descent)。

如何转换数据的模型(model)。

一个目标函数(objective function),用来量化模型的有效性。

  • 在机器学习中,定义模型的优劣程度的度量在大多数情况是“可优化”的,我们称之为目标函数(objective function)。

    • 当任务在试图预测数值时,最常见的损失函数是平方误差(squared error),即预测值与实际值之差的平方。
    • 当解决分类问题时,最常见的目标函数是最小化错误率,即预测与实际情况不符的样本比例。(?)
  • 我们通常定义一个目标函数,并希望优化它到最低点。 因为越低越好,所以这些函数有时被称为损失函数(loss function,或cost function)。 你也可以取一个新的函数,优化到它的最高点。

  • 通常,损失函数是根据模型参数定义的,并取决于数据集。

各种机器学习问题

离线学习

  • 监督学习

    • 监督学习(supervised learning)擅长在“给定输入特征”的情况下预测标签。 每个“特征-标签”对都称为一个样本(example)。在给定一组特定的可用数据的情况下,估计未知事物的概率。比如:

      • 根据计算机断层扫描(CT)肿瘤图像,预测是否为癌症。
      • 给出一个英语句子,预测正确的法语翻译。
      • 根据本月的财务报告数据,预测下个月股票的价格。
    • 回归

      • 回归(regression)是最简单的监督学习任务之一。
      • 输出决定一个任务属于什么问题。
        • 假设你在市场上寻找新房子,你可能需要估计一栋房子的公平市场价值。 销售价格,即标签,是一个数值。 当标签取任意数值时,我们称之为回归问题。
        • 判断回归问题的一个很好的经验法则是,任何有关“多少”的问题很可能就是回归问题。比如:
          • 这个手术需要多少小时?
          • 在未来六小时,这个镇会有多少降雨量?
    • 分类

      • 预测样本属于哪个类别(category,正式称为类(class)),用概率语言来理解模型。

      • 与解决回归问题不同,分类问题的常见损失函数被称为交叉熵(cross-entropy)

      • 但注意,分类得到的概率并不一定直接用于决策。如毒蘑菇的例子。需要将结果的概率乘以与之相关的收益(或伤害)

      • 层次分类(hierarchical classification)

        • 有一些分类任务的变体可以用于寻找层次结构,层次结构假定在许多类之间存在某种关系
    • 标记问题

      • 学习预测不相互排斥的类别的问题称为多标签分类(multi-label classification)

        • 文本

          • 例如,在技术博客上贴的标签,比如“机器学习”、“技术”、“小工具”、“编程语言”、“Linux”、“云计算”、“AWS”。 一篇典型的文章可能会用5-10个标签,因为这些概念是相互关联的。 关于“云计算”的帖子可能会提到“AWS”,而关于“机器学习”的帖子也可能涉及“编程语言”。
        • 图像

          • 让模型描绘输入图像的内容,画面中有一只猫、一只狗、一头驴,还有一只公鸡。(语义分割了吗
    • 搜索

      • 学习算法需要输出有序的元素子集

        • 该问题的一种可能的解决方案:首先为集合中的每个元素分配相应的相关性分数,然后检索评级最高的元素
    • 推荐系统

      • 目标是向特定用户进行“个性化”推荐

      • 原理

        • 推荐系统会为“给定用户和物品”的匹配性打分,这个“分数”可能是估计的评级或购买的概率。对于任何给定的用户,推荐系统都可以检索得分最高的对象集,然后将其推荐给用户。
    • 序列学习

      • 前言:以上大多数问题都具有固定大小的输入和产生固定大小的输出。

        • 在预测房价的问题中,我们考虑从一组固定的特征:平方英尺、卧室数量、浴室数量、步行到市中心的时间
        • 图像分类问题中,输入为固定尺寸的图像,输出则为固定数量(有关每一个类别)的预测概率
      • 应用

        • 处理视频片段,每个视频片段可能由不同数量的帧组成。通过前一帧的图像,我们可能对后一帧中发生的事情更有把握。
        • 语言也是如此,机器翻译的输入和输出都为文字序列。
        • 医学上序列输入和输出就更为重要。假设我们用一个模型来监控重症监护病人,如果他们在未来24小时内死亡的风险超过某个阈值,这个模型就会发出警报。 我们绝不希望抛弃过去每小时有关病人病史的所有信息,而仅根据最近的测量结果做出预测。
  • 无监督学习

    • 数据中不含有“目标”的机器学习问题为无监督学习(unsupervised learning)。

    • 可以回答什么样的问题

      • 聚类(clustering)问题

        • 没有标签的情况下,我们是否能给数据分类呢?比如,给定一组照片,我们能把它们分成风景照片、狗、婴儿、猫和山峰的照片吗?同样,给定一组用户的网页浏览记录,我们能否将具有相似行为的用户聚类呢?
      • 主成分分析(principal component analysis)问题

      • 因果关系(causality)和概率图模型(probabilistic graphical models)问题

        • 例如,如果我们有关于房价、污染、犯罪、地理位置、教育和工资的人口统计数据,我们能否简单地根据经验数据发现它们之间的关系?
      • 生成对抗性网络(generative adversarial networks)

        • 为我们提供一种合成数据的方法,甚至像图像和音频这样复杂的非结构化数据。

与环境互动

  • 人工智能不仅能够做出预测,而且能够与真实环境互动。 与预测不同,“与真实环境互动”实际上会影响环境。 这里的人工智能是“智能代理”,而不仅是“预测模型”。

  • 强化学习

    • 如果你对使用机器学习开发与环境交互并采取行动感兴趣,那么你最终可能会专注于强化学习(reinforcement learning)。 这可能包括应用到机器人、对话系统,甚至开发视频游戏的人工智能(AI)。

    • 突破性的深度Q网络(Q-network)在雅达利游戏中仅使用视觉输入就击败了人类, 以及 AlphaGo 程序在棋盘游戏围棋中击败了世界冠军,是两个突出强化学习的例子。

    • 强化学习的目标是产生一个好的策略(policy)。 强化学习agent选择的“动作”受策略控制,即一个从环境观察映射到行动的功能。

      • 简而言之,如果有大量的(状态、动作、奖励)三元组可用,即只要有可能尝试很多东西来了解它们之间的关系,强化学习就会发挥最好的作用。仿真提供了这样一条途径。

如何从机器学习关注点从传统的线性模型和核方法转移到深度学习上

新的容量控制方法,如dropout [Srivastava et al., 2014],有助于减轻过拟合的危险。

  • 通过在整个神经网络中应用噪声注入 [Bishop, 1995] 来实现的,出于训练目的,用随机变量来代替权重。

注意力机制

  • 在不增加可学习参数的情况下增加系统的记忆和复杂性。

多阶段设计

  • 例如,存储器网络 [Sukhbaatar et al., 2015] 和神经编程器-解释器 [Reed & DeFreitas, 2015]
    • 允许统计建模者描述用于推理的迭代方法。这些工具允许重复修改深度神经网络的内部状态,从而执行推理链中的后续步骤,类似于处理器如何修改用于计算的存储器。

生成对抗网络 [Goodfellow et al., 2014] 的发明

构建并行和分布式训练算法的能力有了显著提高

你可能感兴趣的:(沐神之动手学深度学习课,学习,机器学习)