深度学习基础概念的理解
Q7nl1s admin

起源

  1. 数据和算法在自然科学和数学中有着悠久的历史,如伯努利分布和高斯分布。
  2. 中世纪数学家已经开始进行数据估计,例如,通过测量多个人的脚长来定义一英尺的长度。
  3. 随着数据可用性的增加,统计学开始蓬勃发展,罗纳德·费舍尔是这一领域的重要人物。
  4. 信息论和计算理论,特别是香农和图灵的工作,也对机器学习有重大影响。
  5. 神经科学和心理学也为机器学习提供了灵感,如唐纳德·赫布的“赫布学习”。
  6. 神经网络模型基于生物学的概念,并采用了层(线性和非线性处理单元)和反向传播等关键原则。
  7. 尽管神经网络在早期得到了一些关注,但由于计算和数据限制,它们在一段时间内被其他统计方法(如核方法、决策树等)所超越。

发展

  1. 数据与算力增长: 从1970年到2020年,数据规模和计算能力都有显著增长,但内存的增长速度没有跟上数据的增长。这导致了对高效内存利用的统计模型的需求。
  2. 算法与模型的转变: 由于计算能力的提升,机器学习的焦点从传统的线性模型和核方法转移到了深度神经网络。一些多年未被重视的神经网络结构(例如多层感知机、卷积神经网络等)在过去的十年里得到了“重新发现”。
  3. 新技术与方法:
    • Dropout 用于减轻过拟合。
    • 注意力机制 解决了如何在不增加参数的情况下增加模型复杂性的问题。
    • 多阶段设计 允许模型进行更复杂的推理。
    • 生成对抗网络(GANs) 提供了一个全新的生成模型框架。
  4. 并行与分布式计算: 随着数据规模的增长,单个GPU不足以满足计算需求,因此并行和分布式训练算法应运而生。
  5. 强化学习的进步: 并行计算也推动了强化学习的发展,使计算机在诸如围棋、游戏等方面实现了超越人类的性能。
  6. 深度学习框架的发展: 从Caffe、Torch和Theano到TensorFlow和PyTorch,深度学习框架的进步极大地简化了模型的构建和训练过程。
  7. 工具与框架的简化: 与以往相比,现在用几行代码就可以实现复杂的模型,这大大降低了深度学习的门槛。

表1.5.1 数据集vs计算机内存和计算能力

年代 数据规模 内存 每秒浮点运算
1970 100 (鸢尾花卉) 1 KB 100 KF (Intel 8080)
1980 1 K (波士顿房价) 100 KB 1 MF (Intel 80186)
1990 10K (光学字符识别) 10 MB 10 MF (Intel 80486)
2000 10 M (网页) 100 MB 1 GF (Intel Core)
2010 10G (广告) 1 GB 1 TF (Nvidia C2050)
2020 1T (社交网络) 100 GB 1 PF (Nvidia DGX-2)

深度学习在日常的应用

如今手机智能助手,如:Siri、小爱同学、Alexa

识别唤醒词如下图

../_images/wake-word.svg

用数据训练(train)模型的过程如下图

../_images/ml-loop.svg

机器学习的关键组件

  1. 数据:用于学习
  2. 模型:转换数据
  3. 目标函数:量化模型有效性
  4. 算法:调整模型参数以优化目标函数

数据

这部分讨论了数据在数据科学和机器学习中的基础角色。数据集通常由独立同分布(i.i.d.)的样本组成,每个样本包含多个特征。这些特征用于训练机器学习模型进行预测。数据的质量和数量都是关键因素,错误或偏见的数据可能导致模型失效或带有偏见。

模型

模型是数据转换的核心机制。模型可以是简单的也可以是复杂的,但本文集中讨论了由神经网络组成的深度学习模型。这些模型能够执行复杂的数据转换,并因此更适用于解决一系列复杂问题。

目标函数

目标函数(或损失函数、成本函数)用于量化模型的性能。通过优化目标函数,机器学习算法试图提高模型的预测能力。目标函数可以有多种形式,包括平方误差、错误率等,取决于问题的性质。

当任务在试图预测数值时,最常见的损失函数是平方误差(squared error),即预测值与实际值之差的平方。

数据集通常可以分成两部分:训练数据集用于拟合模型参数,测试数据集用于评估拟合的模型。

当一个模型在训练集上表现良好,但不能推广到测试集时,这个模型被称为过拟合(overfitting)的。

优化算法

优化算法负责找到最优的模型参数,以最小化目标函数。深度学习中最常用的优化算法是基于梯度下降的。该算法在每一步中都会计算目标函数的梯度,并相应地调整模型参数以减小损失。(在每个步骤中,梯度下降法都会检查每个参数,看看如果仅对该参数进行少量变动,训练集损失会朝哪个方向移动。 然后,它在可以减少损失的方向上优化参数)

简而言之,数据提供了问题的上下文,模型是解决问题的工具,目标函数定义了“解决问题”意味着什么,而优化算法则寻找最佳解决方案。

各种机器学习问题

监督学习

回归

回归是一种监督学习算法,用于预测一个连续的输出值(也称为标签或目标值)基于一个或多个输入特征。这与分类不同,分类旨在预测离散的标签

在房价预测的例子中,输入特征可能包括房屋的面积、卧室的数量、浴室的数量等,而输出(标签)则是房屋的销售价格。因为这个标签是一个连续的数值,所以这是一个回归问题。算法的目标是生成一个模型,该模型能够准确地预测未知样本的房价。 ==销售价格(即标签)是一个数值。 当标签取任意数值时,我们称之为回归问题==

在日常生活中,回归问题非常常见。比如

  1. 电影评分
  2. 预测医院住院时间
  3. 预测降雨量等

都可以视为回归问题。一般来说,任何“有多少”的问题都很可能是一个回归问题。

算法性能的评估通常基于预测值与实际标签值之间的差异,也就是误差。常用的误差度量方式有平方误差损失函数(Mean Squared Error,MSE)、平均绝对误差(Mean Absolute Error,MAE)等。

在排水管修理的例子中,实际上在使用最简单的线性回归模型来估算费用。基于少量的样本数据(承包商的收费),对问题进行了简化和假设(按小时收费和上门服务费),然后解决了一个回归问题。

但是,在更复杂的情况下,单一的线性模型可能不够用。可能需要考虑更多的特征和使用更复杂的模型,例如多项式回归、决策树回归或神经网络等,以准确地进行预测。这通常涉及到尝试多种模型和调整参数,以找到最适合数据的模型。

分类

分类(Classification)是一种监督学习算法,用于解决“哪一个”的问题。不同于回归问题关注的“有多少”,分类模型试图预测输入数据点属于哪一个预先定义的类别(或“类”)。

在应用实例中,如银行移动应用程序添加支票扫描功能,这种文本识别问题就是一个分类任务。给定一张图片(输入特征),模型需要预测图片中的字符属于哪个已知的类别(比如A-Z,0-9等)。

基础分类

  • 二项分类(Binary Classification): 最简单的分类问题,只涉及两个类别。例如,通过图片判断一个动物是猫还是狗。
  • 多项分类(Multiclass Classification): 涉及两个以上的类别。比如手写数字识别,有0-9共10个类别。

概率与不确定性

分类模型通常会输出属于每个类别的概率。这有助于了解模型有多确信其预测。例如,一个猫狗分类模型可能会输出“这张图片90%的可能性是猫”,这不仅给出了预测还量化了模型的不确定性。

风险与损失函数

在某些情况下,错误分类的代价可能非常高。例如,在判断蘑菇是否有毒的场景中,即使有80%的把握认为蘑菇是安全的,依然不能冒20%的致命风险去食用。因此,在构建模型时,损失函数可能需要考虑不同类型错误的“预期风险”。

在这种情况下,食用蘑菇造成的损失为

而丢弃蘑菇的损失为

层次分类(Hierarchical Classification)

在更复杂的场景中,类别之间可能存在某种层次或关系。例如,在动物分类问题中,将狮子狗误分类为雪纳瑞可能不算大错,但如果将其误分类为恐龙则完全不同。这种情况下,层次结构和类别之间的关系需要纳入模型中。

常见损失函数

与回归问题使用平方误差或绝对误差作为损失函数不同,分类问题通常使用交叉熵(Cross-Entropy)作为损失函数。

总的来说,分类是一种非常广泛的机器学习任务,应用场景多样,从简单的二分类到复杂的层次分类都有涉及。而模型的选择和优化则取决于具体应用的需求和限制。

标记问题

标记问题(Tagging Problems)通常涉及到为输入数据分配一个或多个标签,这种问题的特点是标签之间不互斥,也就是说一个实例(如一张图片或一篇文章)可以被分配到多个标签。

../_images/stackedanimals.png

一只猫、一只公鸡、一只狗、一头驴

多标签分类(Multi-label Classification)

与二项或多项分类问题不同,在多标签分类问题中,一个实例可能同时属于多个类别。这在现实生活中应用非常广泛,例如:

  • 在技术博客上,一篇关于“云计算”的文章可能同时也与“AWS”、“技术”和“编程语言”等标签相关。
  • 在生物医学研究领域,一篇文献可能需要与多个预定义术语(如Mesh标签)关联,以便于研究人员检索。

应用场景

  1. 图像标记:在一个包含多个对象(如猫、狗、公鸡、驴)的图像中,多标签分类模型可以识别并标记图像中的每一个对象。
  2. 文本分类:多标签分类也广泛应用于文本数据。例如,新闻文章可能同时关联到“政治”、“经济”和“国际”等多个标签。
  3. 科研文献标记:在美国国家医学图书馆(The United States National Library of Medicine)等机构,多标签分类可以用于自动(或半自动)地标记大量的科研文献,极大地提高了标记效率。

与多项分类的区别

多项分类问题通常要求从多个选项中选择一个最合适的类别,而多标签分类则允许选择多个相关的标签。因此,多标签分类问题更为复杂,需要更精细的模型来捕捉标签之间的关联性。

挑战与解决方案

  1. 标签关联性:因为标签之间不是相互独立的,捕捉它们之间的关联性是一个挑战。
  2. 数据不平衡:某些标签可能出现得比其他标签更频繁,需要特殊的处理方法来解决这个问题。

多标签分类是一种相对复杂但应用广泛的问题,尤其在需要处理高度关联和复杂结构的标签时,如在生物医学、图像识别和文本分类等领域有着广泛应用。

搜索

实质上就是一个相关性的问题

在机器学习和信息检索的上下文中,搜索问题并不仅仅是关于分类或者预测一个特定的输出值;它更多地是关于在一个大规模数据集内找到和排序最相关的项目或信息。

核心要点

  1. 排序重要性:与简单地分类或标记不同,搜索问题需要考虑输出结果的排序。即使结果集中的元素是相同的,其内部的顺序也可能非常重要。比如,在网页搜索结果中,用户更可能点击排名靠前的链接。
  2. 相关性评分:一个常见的解决方案是为数据集内的每一个元素分配一个相关性评分,然后根据这个评分进行排序。例如,谷歌最初用PageRank算法来评分和排序网页,这个算法特别地不依赖于特定的搜索查询。
  3. 机器学习与用户行为模型:现代搜索引擎已经进化到使用复杂的机器学习算法和用户行为模型来更精确地评估和排序搜索结果。这是一个持续发展和研究的热门领域。

应用场景

  1. 网络搜索:这是最典型的例子,需要在海量网页中找到与用户查询最相关的内容。
  2. 推荐系统:例如,在电子商务网站或流媒体服务上,系统需要根据用户的历史行为或特定查询来推荐产品或内容。
  3. 学术研究:在大型文献数据库中,研究人员需要找到与其研究最相关的论文或资料。
  4. 社交媒体:在像Twitter或Facebook这样的平台上,搜索算法用于找到与用户最相关的帖子或人物。

挑战与解决方案

  1. 大规模数据处理:搜索算法需要高效地处理和排序大量的数据。
  2. 动态环境适应:因为网络内容和用户行为是不断变化的,搜索算法需要能够适应这些变化。

搜索问题在很多方面都有广泛的应用,从网页搜索、推荐系统到各种信息检索任务,它都扮演着重要的角色。解决这类问题通常需要综合应用机器学习、数据挖掘和用户行为分析等多种技术。

推荐系统

推荐系统是一种机器学习算法,旨在根据用户的个性化需求和喜好为其提供最相关的产品或服务。

核心要点

  1. 个性化推荐:推荐系统的主要目标是为不同用户提供个性化的推荐内容。例如,对于喜好科幻和喜好喜剧的两类观众,电影推荐结果会有很大差异。
  2. 明确与隐性反馈:用户提供的反馈可以是明确的,比如产品评分和评论;也可以是隐性的,比如跳过某首歌曲。推荐系统需要综合这些反馈来生成更准确的推荐。
  3. 评分与排序:推荐系统通常会为用户和物品之间的匹配性打分。这些分数可以是预测的用户评分,也可以是购买或点击的概率。
  4. 高级特性:工业级的推荐系统通常会考虑更多的因素,比如用户的历史行为、物品的多维特性等,以提供更精准的推荐。

应用场景

  • 电影或音乐推荐
  • 电子商务网站
  • 新闻和社交媒体内容

挑战与解决方案

  1. 反馈偏见:用户通常只对他们感觉强烈的产品或服务进行评分或评论,这可能导致数据偏见。
  2. 反馈循环:推荐系统可能造成自我强化的效应,即热门产品更容易被推荐,从而变得更加热门。
  3. 动态适应:用户的偏好可能会随时间变化,推荐系统需要能够适应这些变化。

总体而言,推荐系统是一种强大但复杂的工具,具有广泛的应用潜力,但同时也面临多种挑战,包括如何处理不完全或偏见的反馈、如何避免反馈循环,以及如何持续适应用户不断变化的需求和喜好。这些都是目前研究和开发中的重要问题。

../_images/deeplearning-amazon.jpg

亚马逊推荐的深度学习书籍

序列学习

序列学习(Sequence Learning)

序列学习是一种特殊类型的机器学习,主要应用于输入或输出数据具有时间或序列依赖性的问题。

核心要点

  1. 序列依赖性:与传统的机器学习模型(如房价预测、图像分类等)不同,序列学习需要模型具有“记忆”功能,以考虑输入或输出数据的序列结构。

  2. 可变长度:序列学习通常涉及具有不同长度的输入和输出序列,如机器翻译或语音转文本等。

  3. 多应用场景:序列学习在多个领域有广泛的应用,包括自然语言处理(如机器翻译、命名实体识别)、语音识别、医疗监控等。

应用实例

  • 标记和解析:比如,自然语言处理中,输入和输出序列基本长度相同,目的是识别文本中的特定元素(如动词、命名实体等)。

    1
    2
    Tom has dinner in Washington with Sally
    Ent - - - Ent - Ent

    上面是一个非常简单的示例,它使用“标记”来注释一个句子,该标记指示哪些单词引用命名实体。 标记为“Ent”,是实体(entity)的简写。

  • 自动语音识别(ASR):输入是音频信号,输出是相应的文本。通常,音频信号的长度远大于输出文本。

    ../_images/speech.png

    -D-e-e-p- L-ea-r-ni-ng- 在录音中。

  • 文本到语音(TTS):与ASR相反,输入是文本,输出是音频信号。

  • 机器翻译:输入和输出都是文本,但通常它们的长度和顺序都会不同。

    1
    2
    3
    德语:           Haben Sie sich schon dieses grossartige Lehrwerk angeschaut?
    英语: Did you already check out this excellent tutorial?
    错误的对齐: Did you yourself already this excellent tutorial looked-at?

    “错误的对齐”反应了德国人喜欢把动词放在句尾的特殊倾向。

  • 医疗监控:序列学习也用于分析病人的连续医疗数据,如心跳、血压等,以预测病人未来的健康状况。

挑战与解决方案

  1. 时间复杂性:由于输入/输出序列的长度可变,处理这类问题通常更为复杂。

  2. 长依赖问题:在处理长序列时,模型需要能够记住距离当前状态较远的信息。

  3. 对齐问题:在如机器翻译等任务中,输入和输出序列的元素之间可能没有直接的一对一映射,需要特殊的对齐机制。

无监督学习

与监督学习不同,无监督学习不依赖标签或特定指导,而是自主地从数据中找出模式。这相当于模型需要在没有明确任务指导的情况下,“自发”地进行学习。无监督学习在以下几个方面具有广泛的应用:

  1. 聚类: 如对照片或用户行为进行分类。

    比如,给定一组照片,我们能把它们分成风景照片、狗、婴儿、猫和山峰的照片吗?同样,给定一组用户的网页浏览记录,我们能否将具有相似行为的用户聚类呢?

  2. 主成分分析: 通过少量参数捕捉数据的主要特征。

    例如“罗马” − “意大利” + “法国” = “巴黎”。

  3. 因果关系和概率图模型: 探究数据背后的因果关系。

    例如,如果我们有关于房价、污染、犯罪、地理位置、教育和工资的人口统计数据,我们能否简单地根据经验数据发现它们之间的关系?

  4. 生成对抗性网络 (GANs): 用于合成如图像和音频等复杂的非结构化数据。

无监督学习能解决广泛的问题,从数据探索到因果关系研究,再到复杂数据的生成,都有它的身影。

与环境互动

在机器学习中,尤其是离线学习(offline learning)的情境下,数据通常是预先收集的,然后用于训练模型。这样的模型一般是”预测模型”,用于识别模式或进行预测,但并不与外界环境有实际的互动。

然而,与环境互动的需要正在逐渐凸显出其重要性。这种互动性带来的是一种”智能代理”的概念,与仅仅做出预测的模型有本质的不同。智能代理不仅需要对环境做出反应,而且需要考虑其行为如何影响未来的环境状态和观测。

这种与环境互动的机器学习模型引发了一系列新的问题和挑战:

  1. 环境记忆性: 环境是否会“记得”模型以前的行为,并据此调整自己?

  2. 环境协助性: 环境是否会主动协助模型的任务?比如,用户主动对语音识别器进行校准。

  3. 环境对抗性: 是否存在敌意环境,比如在垃圾邮件过滤或游戏中试图“打败”模型?

  4. 环境重要性: 环境因素对模型的性能有多大影响?

  5. 环境变化性: 环境是否会随时间而变化?这种变化是自然发生的还是由模型的干预导致的?

  6. 分布偏移: 当训练和测试数据不同时,如何处理数据分布的变化?

考虑这些因素,强化学习就是一个典型的与环境互动的机器学习范例,它不仅关心如何从环境中获取最优反馈,还关心如何通过与环境的互动来优化长期的结果。

总体而言,与环境的互动为机器学习带来了一个更加动态和复杂的维度,也提出了更高的要求,即不仅要做出准确的预测,还需要在复杂和不断变化的环境中做出有益的决策。

对于监督学习,从环境中收集数据的过程类似于下图

../_images/data-collection.svg

从环境中为监督学习收集数据。

强化学习

强化学习(Reinforcement Learning,RL)是机器学习的一个子领域,特别关注智能体(agent)如何与环境交互以实现某种目标。该领域有多个应用,包括机器人、对话系统和视频游戏AI。深度强化学习,将深度学习与强化学习结合,是目前非常热门的研究方向。

工作原理

在强化学习中,智能体在一系列时间步骤中与环境互动。它从环境获取观察(observation),选择一个动作(action)并执行,最后从环境中获取一个奖励(reward)。这一系列动作-反馈循环继续进行。智能体的目标是找到一个好的策略(policy),即一个从观察到动作的映射函数,以便最大化某种形式的累积奖励。

强化学习智能体选择的“动作”受策略控制,即一个从环境观察映射到行动的功能。

../_images/rl-environment.svg

强化学习和环境之间的相互作用

主要问题与挑战

  1. 学分分配(Credit Assignment): 确定哪些动作导致了正面或负面的奖励是一个主要问题。比如,在棋类游戏中,胜利或失败可能是一系列动作的结果。

  2. 部分可观测性(Partial Observability): 在许多情况下,智能体不能完全观察到环境状态。

  3. 探索-利用权衡(Exploration-Exploitation Trade-off): 智能体必须在利用当前最佳策略和探索新策略之间找到平衡。

通用性和特殊情况

强化学习非常通用,能够解决许多其他类型的机器学习问题,包括监督学习问题。对于更简单或特殊的场景,研究者也考虑了一些特殊情况,比如:

  • 马尔可夫决策过程(Markov Decision Process, MDP): 当环境可以完全观察到。

  • 上下文赌博机(Contextual Bandit Problem): 当状态不依赖于之前的动作。

  • 多臂赌博机(Multi-armed Bandit Problem): 当没有状态,只有一组初始未知回报的可用动作。

总体来说,强化学习提供了一种强大的框架,用于开发能够从与环境的互动中学习的智能系统。这使得它在需要决策和行动的多种应用场景中,具有极高的灵活性和潜力。

练习

  1. 你当前正在编写的代码的哪些部分可以“学习”,即通过学习和自动确定代码中所做的设计选择来改进?你的代码是否包含启发式设计选择?

    有关 springboot 框架部分的代码,以及增删改查部分还有一点简单的业务流程设计。并不包含启发式设计选择。

  2. 你遇到的哪些问题有许多解决它们的样本,但没有具体的自动化方法?这些可能是使用深度学习的主要候选者。

    photoshop 中对光影模式的处理,以及各种艺术化处理都有非常多解决和实现的样本,而且实现的效果都差不多

  3. 如果把人工智能的发展看作一场新的工业革命,那么算法和数据之间的关系是什么?它类似于蒸汽机和煤吗?根本区别是什么?

    将人工智能(AI)发展看作一种新形式的工业革命是一个有趣的比喻,这有助于我们更好地理解算法和数据之间的关系。在这个比喻中,算法可以被看作是“蒸汽机”——一种用于执行特定任务或解决特定问题的工具。与此同时,数据就像是“煤”——为算法提供动力的资源。

    相似之处:

    1. 相互依赖:蒸汽机需要煤来生成蒸汽并运转,而算法需要数据来训练和做出预测。
    2. 效率与规模:就像蒸汽机允许更高效和更大规模的生产一样,算法(尤其是机器学习算法)允许我们从大量数据中提取信息,实现自动化和优化。
    3. 改变生产方式:蒸汽机改变了制造业和交通,而算法和数据正在改变几乎所有行业,从医疗到零售,从交通到娱乐。

    根本区别:

    1. 抽象性和通用性:算法通常更加抽象和通用,可以应用于各种不同类型的数据和问题,而蒸汽机主要是为特定类型的物理劳动设计的。
    2. 复制和分发:算法和数据可以几乎免费地复制和分发,而蒸汽机和煤则是物理对象,需要物流和存储。
    3. 迭代和更新:算法可以通过在线学习不断更新和改进,而蒸汽机则通常需要物理改造或替换。
    4. 可解释性和透明度:蒸汽机的工作原理相对容易理解和解释。然而,尤其是在深度学习的场景下,算法的决策过程可能非常复杂,难以解释。
    5. 环境影响:煤炭燃烧会产生环境污染,而数据中心也有能源消耗和环境影响,但这通常被认为是更可持续的。
  4. 你还可以在哪里应用端到端的训练方法,比如 图1.1.2 、物理、工程和计量经济学?

    图形处理和图像生成->在绘画领域

 Comments
Comment plugin failed to load
Loading comment plugin
Powered by Hexo & Theme Keep
Unique Visitor Page View