美文网首页动手学深度学习
《动手学深度学习》 1. 引言 -3

《动手学深度学习》 1. 引言 -3

作者: 银河星尘 | 来源:发表于2024-03-29 14:36 被阅读0次

    《动手学深度学习》

    1. 引言

    1.3. 各种机器学习问题

    1.3.2. 无监督学习(unsupervised learning)

    监督学习需要向模型提供巨大数据集:每个样本包含特征和相应标签值。

    • “监督学习”模型像一个打工仔,有一份极其专业的工作和一位极其平庸的老板。 老板站在身后,准确地告诉模型在每种情况下应该做什么,直到模型学会从情况到行动的映射。 取悦这位老板很容易,只需尽快识别出模式并模仿他们的行为即可。

    如果工作没有十分具体的目标,就需要“自发”地去学习了。

    • 比如,老板可能会给我们一大堆数据,然后要求用它做一些数据科学研究,却没有对结果有要求。 这类数据中不含有“目标”的机器学习问题通常被为无监督学习(unsupervised learning)

    无监督学习可以回答什么样的问题呢?

    • 聚类(clustering)问题:没有标签的情况下,我们是否能给数据分类呢?比如,给定一组照片,我们能把它们分成风景照片、狗、婴儿、猫和山峰的照片吗?同样,给定一组用户的网页浏览记录,我们能否将具有相似行为的用户聚类呢?
    • 主成分分析(principal component analysis)问题:我们能否找到少量的参数来准确地捕捉数据的线性相关属性?比如,一个球的运动轨迹可以用球的速度、直径和质量来描述。再比如,裁缝们已经开发出了一小部分参数,这些参数相当准确地描述了人体的形状,以适应衣服的需要。另一个例子:在欧几里得空间中是否存在一种(任意结构的)对象的表示,使其符号属性能够很好地匹配?这可以用来描述实体及其关系,例如“罗马” (-) “意大利” (+) “法国” (=) “巴黎”。
    • 因果关系(causality)和概率图模型(probabilistic graphical models)问题:我们能否描述观察到的许多数据的根本原因?例如,如果我们有关于房价、污染、犯罪、地理位置、教育和工资的人口统计数据,我们能否简单地根据经验数据发现它们之间的关系?
    • 生成对抗性网络(generative adversarial networks):为我们提供一种合成数据的方法,甚至像图像和音频这样复杂的非结构化数据。潜在的统计机制是检查真实和虚假数据是否相同的测试,它是无监督学习的另一个重要而令人兴奋的领域。

    1.3.3. 与环境互动

    机器学习的输入(数据)来自哪里?机器学习的输出又将去往何方?到目前为止,不管是监督学习还是无监督学习,我们都会预先获取大量数据,然后启动模型,不再与环境交互。这里所有学习都是在算法与环境断开后进行的,被称为离线学习(offlinelearning)。
    对于监督学习,从环境中收集数据的过程类似于图1.3.6。


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

    这种简单的离线学习有它的魅力。

    • 好的一面是,我们可以孤立地进行模式识别,而不必分心于其他问题。
    • 但缺点是,解决的问题相当有限。

    这时我们可能会期望人工智能不仅能够做出预测,而且能够与真实环境互动。
    与预测不同,“与真实环境互动”实际上会影响环境。这里的人工智能是“智能代理”,而不仅是“预测模型”。 因此,我们必须考虑到它的行为可能会影响未来的观察结果。

    考虑“与真实环境互动”将打开一整套新的建模问题。以下只是几个例子。

    • 环境还记得我们以前做过什么吗?
    • 环境是否有助于我们建模?例如,用户将文本读入语音识别器。
    • 环境是否想要打败模型?例如,一个对抗性的设置,如垃圾邮件过滤或玩游戏?
    • 环境是否重要?
    • 环境是否变化?例如,未来的数据是否总是与过去相似,还是随着时间的推移会发生变化?是自然变化还是响应我们的自动化工具而发生变化?

    当训练和测试数据不同时,最后一个问题提出了分布偏移(distribution shift)的问题。 接下来的内容将简要描述强化学习问题,这是一类明确考虑与环境交互的问题。

    1.3.4. 强化学习(reinforcement learning)

    对使用机器学习开发与环境交互并采取行动感兴趣,那么最终可能会专注于强化学习(reinforcement learning)。
    这可能包括应用到机器人、对话系统,甚至开发视频游戏的人工智能(AI)。
    深度强化学习(deep reinforcement learning)将深度学习应用于强化学习的问题,是非常热门的研究领域。
    突破性的深度Q网络(Q-network)在雅达利游戏中仅使用视觉输入就击败了人类, 以及 AlphaGo 程序在棋盘游戏围棋中击败了世界冠军,是两个突出强化学习的例子。

    在强化学习问题中,智能体(agent)在一系列的时间步骤上与环境交互。
    在每个特定时间点,智能体从环境接收一些观察(observation),并且必须选择一个动作(action),然后通过某种机制(有时称为执行器)将其传输回环境,最后智能体从环境中获得奖励(reward)。
    此后新一轮循环开始,智能体接收后续观察,并选择后续操作,依此类推。
    强化学习的过程在图1.3.7中进行了说明。请注意,强化学习的目标是产生一个好的策略(policy)。强化学习智能体选择的“动作”受策略控制,即一个从环境观察映射到行动的功能。


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

    强化学习框架的通用性十分强大。
    例如,我们可以将任何监督学习问题转化为强化学习问题。
    假设我们有一个分类问题,可以创建一个强化学习智能体,每个分类对应一个“动作”。
    然后,我们可以创建一个环境,该环境给予智能体的奖励。 这个奖励与原始监督学习问题的损失函数是一致的。

    强化学习还可以解决许多监督学习无法解决的问题。
    例如,在监督学习中,我们总是希望输入与正确的标签相关联。
    但在强化学习中,我们并不假设环境告诉智能体每个观测的最优动作。
    一般来说,智能体只是得到一些奖励。 此外,环境甚至可能不会告诉是哪些行为导致了奖励。

    以强化学习在国际象棋的应用为例。
    唯一真正的奖励信号出现在游戏结束时:当智能体获胜时,智能体可以得到奖励1;当智能体失败时,智能体将得到奖励-1。
    因此,强化学习者必须处理学分分配(credit assignment)问题:
    决定哪些行为是值得奖励的,哪些行为是需要惩罚的。
    就像一个员工升职一样,这次升职很可能反映了前一年的大量的行动。要想在未来获得更多的晋升,就需要弄清楚这一过程中哪些行为导致了晋升。

    强化学习可能还必须处理部分可观测性问题。
    也就是说,当前的观察结果可能无法阐述有关当前状态的所有信息。
    比方说,一个清洁机器人发现自己被困在一个许多相同的壁橱的房子里。
    推断机器人的精确位置(从而推断其状态),需要在进入壁橱之前考虑它之前的观察结果。

    最后,在任何时间点上,强化学习智能体可能知道一个好的策略,但可能有许多更好的策略从未尝试过的。
    强化学习智能体必须不断地做出选择:是应该利用当前最好的策略,还是探索新的策略空间(放弃一些短期回报来换取知识)。

    一般的强化学习问题是一个非常普遍的问题。
    智能体的动作会影响后续的观察,而奖励只与所选的动作相对应。
    环境可以是完整观察到的,也可以是部分观察到的,解释所有这些复杂性可能会对研究人员要求太高。
    此外,并不是每个实际问题都表现出所有这些复杂性。
    因此,学者们研究了一些特殊情况下的强化学习问题。

    • 当环境可被完全观察到时,强化学习问题被称为马尔可夫决策过程(markov decision process)。
    • 当状态不依赖于之前的操作时,我们称该问题为上下文赌博机(contextual bandit problem)。
    • 当没有状态,只有一组最初未知回报的可用动作时,这个问题就是经典的多臂赌博机(multi-armed bandit problem)。

    1.4. 起源

    虽然许多深度学习方法都是最近才有重大突破,但使用数据和神经网络编程的核心思想已经研究了几个世纪。事实上,人类长期以来就有分析数据和预测未来结果的愿望,而自然科学大部分都植根于此。

    • 例如,伯努利分布是以雅各布•伯努利(1654-1705)命名的。而高斯分布是由卡尔•弗里德里希•高斯(1777-1855)发现的,他发明了最小均方算法,至今仍用于解决从保险计算到医疗诊断的许多问题。这些工具算法催生了自然科学中的一种实验方法——例如,电阻中电流和电压的欧姆定律可以用线性模型完美地描述。

    即使在中世纪,数学家对估计(estimation)也有敏锐的直觉。例如,雅各布·克贝尔(1460–1533)的几何学书籍举例说明,通过平均16名成年男性的脚的长度,可以得出一英尺的长度。
    16名成年男子被要求脚连脚排成一行。然后将它们的总长度除以16,得到现在等于1英尺的估计值。这个算法后来被改进以处理畸形的脚——将拥有最短和最长脚的两个人送走,对其余的人取平均值。这是最早的修剪均值估计的例子之一。

    随着数据的收集和可获得性,统计数据真正实现了腾飞。罗纳德·费舍尔(1890-1962)对统计理论和在遗传学中的应用做出了重大贡献。他的许多算法(如线性判别分析)和公式(如费舍尔信息矩阵)至今仍被频繁使用。甚至,费舍尔在1936年发布的鸢尾花卉数据集,有时仍然被用来解读机器学习算法。

    机器学习的第二个影响来自克劳德·香农(1916–2001)的信息论和艾伦·图灵(1912-1954)的计算理论。图灵在他著名的论文《计算机器与智能》(Turing,1950)中提出了“机器能思考吗?”的问题。在他所描述的图灵测试中,如果人类评估者很难根据文本互动区分机器和人类的回答,那么机器就可以被认为是“智能的”。

    另一个影响可以在神经科学和心理学中找到。其中,最古老的算法之一是唐纳德·赫布(1904–1985)开创性的著作《行为的组织》(HebbandHebb,1949)。他提出神经元通过积极强化学习,是Rosenblatt感知器学习算法的原型,被称为“赫布学习”。这个算法也为当今深度学习的许多随机梯度下降算法奠定了基础:强化期望行为和减少不良行为,从而在神经网络中获得良好的参数设置。

    神经网络(neuralnetworks)的得名源于生物灵感。一个多世纪以来(追溯到1873年亚历山大·贝恩和1890年詹姆斯·谢林顿的模型),研究人员一直试图组装类似于相互作用的神经元网络的计算电路。随着时间的推移,对生物学的解释变得不再肤浅,但这个名字仍然存在。其核心是当今大多数网络中都可以找到的几个关键原则:

    • 线性和非线性处理单元的交替,通常称为层(layers);
    • 使用链式规则(也称为反向传播(backpropagation))一次性调整网络中的全部参数。

    神经网络的研究从1995年左右开始停滞不前,直到2005年才稍有起色。这主要是因为两个原因。

    • 首先,训练网络(在计算上)非常昂贵。在上个世纪末,随机存取存储器(RAM)非常强大,而计算能力却很弱。
    • 其次,数据集相对较小。事实上,费舍尔1932年的鸢尾花卉数据集是测试算法有效性的流行工具,而MNIST数据集的60000个手写数字的数据集被认为是巨大的。

    考虑到数据和计算的稀缺性,核方法(kernelmethod)、决策树(decisiontree)和图模型(graphmodels)等强大的统计工具(在经验上)证明是更为优越的。与神经网络不同的是,这些算法不需要数周的训练,而且有很强的理论依据,可以提供可预测的结果。

    1.5. 深度学习的发展

    大约2010年开始,那些在计算上看起来不可行的神经网络算法变得热门起来,实际上是以下两点导致的:

    • 其一,随着互联网的公司的出现,为数亿在线用户提供服务,大规模数据集变得触手可及;
    • 另外,廉价又高质量的传感器、廉价的数据存储(克莱德定律)以及廉价计算(摩尔定律)的普及,特别是GPU的普及,使大规模算力唾手可得。


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

    随机存取存储器没有跟上数据增长的步伐。
    与此同时,算力的增长速度已经超过了现有数据的增长速度。
    这意味着统计模型需要提高内存效率(这通常是通过添加非线性来实现的),同时由于计算预算的增加,能够花费更多时间来优化这些参数。因此,机器学习和统计的关注点从(广义的)线性模型和核方法转移到了深度神经网络。
    这也造就了许多深度学习的中流砥柱,如多层感知机(McCullochandPitts,1943)、卷积神经网络(LeCunetal.,1998)、长短期记忆网络(GravesandSchmidhuber,2005)和Q学习(WatkinsandDayan,1992),在相对休眠了相当长一段时间之后,在过去十年中被“重新发现”。

    最近十年,在统计模型、应用和算法方面的进展就像寒武纪大爆发——历史上物种飞速进化的时期。事实上,最先进的技术不仅仅是将可用资源应用于几十年前的算法的结果。下面列举了帮助研究人员在过去十年中取得巨大进步的想法(虽然只触及了皮毛)。

    • 新的容量控制方法,如dropout(Srivastavaetal.,2014),有助于减轻过拟合的危险。这是通过在整个神经网络中应用噪声注入(Bishop,1995)来实现的,出于训练目的,用随机变量来代替权重。
    • 注意力机制解决了困扰统计学一个多世纪的问题:如何在不增加可学习参数的情况下增加系统的记忆和复杂性。研究人员通过使用只能被视为可学习的指针结构(Bahdanauetal.,2014)找到了一个优雅的解决方案。不需要记住整个文本序列(例如用于固定维度表示中的机器翻译),所有需要存储的都是指向翻译过程的中间状态的指针。这大大提高了长序列的准确性,因为模型在开始生成新序列之前不再需要记住整个序列。
    • 多阶段设计。例如,存储器网络(Sukhbaataretal.,2015)和神经编程器-解释器(ReedandDeFreitas,2015)。它们允许统计建模者描述用于推理的迭代方法。这些工具允许重复修改深度神经网络的内部状态,从而执行推理链中的后续步骤,类似于处理器如何修改用于计算的存储器。
    • 另一个关键的发展是生成对抗网络(Goodfellowetal.,2014)的发明。传统模型中,密度估计和生成模型的统计方法侧重于找到合适的概率分布(通常是近似的)和抽样算法。因此,这些算法在很大程度上受到统计模型固有灵活性的限制。生成式对抗性网络的关键创新是用具有可微参数的任意算法代替采样器。然后对这些数据进行调整,使得鉴别器(实际上是一个双样本测试)不能区分假数据和真实数据。通过使用任意算法生成数据的能力,它为各种技术打开了密度估计的大门。驰骋的斑马(Zhuetal.,2017)和假名人脸(Karrasetal.,2017)的例子都证明了这一进展。即使是业余的涂鸦者也可以根据描述场景布局的草图生成照片级真实图像((Parketal.,2019))。
    • 在许多情况下,单个GPU不足以处理可用于训练的大量数据。在过去的十年中,构建并行和分布式训练算法的能力有了显著提高。设计可伸缩算法的关键挑战之一是深度学习优化的主力——随机梯度下降,它依赖于相对较小的小批量数据来处理。同时,小批量限制了GPU的效率。因此,在1024个GPU上进行训练,例如每批32个图像的小批量大小相当于总计约32000个图像的小批量。最近的工作,首先是由(Li,2017)完成的,随后是(Youetal.,2017)和(Jiaetal.,2018),将观察大小提高到64000个,将ResNet-50模型在ImageNet数据集上的训练时间减少到不到7分钟。作为比较——最初的训练时间是按天为单位的。
    • 并行计算的能力也对强化学习的进步做出了相当关键的贡献。这导致了计算机在围棋、雅达里游戏、星际争霸和物理模拟(例如,使用MuJoCo)中实现超人性能的重大进步。有关如何在AlphaGo中实现这一点的说明,请参见如(Silveretal.,2016)。简而言之,如果有大量的(状态、动作、奖励)三元组可用,即只要有可能尝试很多东西来了解它们之间的关系,强化学习就会发挥最好的作用。仿真提供了这样一条途径。
    • 深度学习框架在传播思想方面发挥了至关重要的作用。允许轻松建模的第一代框架包括Caffe、Torch和Theano。许多开创性的论文都是用这些工具写的。到目前为止,它们已经被TensorFlow(通常通过其高级APIKeras使用)、CNTK、Caffe2和ApacheMXNet所取代。第三代工具,即用于深度学习的命令式工具,可以说是由Chainer率先推出的,它使用类似于PythonNumPy的语法来描述模型。这个想法被PyTorch、MXNet的GluonAPI和Jax都采纳了。

    “系统研究人员构建更好的工具”和“统计建模人员构建更好的神经网络”之间的分工大大简化了工作。 例如,在2014年,对卡内基梅隆大学机器学习博士生来说,训练线性回归模型曾经是一个不容易的作业问题。 而现在,这项任务只需不到10行代码就能完成,这让每个程序员轻易掌握了它。

    1.6. 深度学习的成功案例

    人工智能在交付结果方面有着悠久的历史,它能带来用其他方法很难实现的结果。例如,使用光学字符识别的邮件分拣系统从20世纪90年代开始部署,毕竟,这是著名的手写数字MNIST数据集的来源。这同样适用于阅读银行存款支票和对申请者的信用进行评分。系统会自动检查金融交易是否存在欺诈。这成为许多电子商务支付系统的支柱,如PayPal、Stripe、支付宝、微信、苹果、Visa和万事达卡。国际象棋的计算机程序已经竞争了几十年。机器学习在互联网上提供搜索、推荐、个性化和排名。换句话说,机器学习是无处不在的,尽管它经常隐藏在视线之外。

    直到最近,人工智能才成为人们关注的焦点,主要是因为解决了以前被认为难以解决的问题,这些问题与消费者直接相关。许多这样的进步都归功于深度学习。

    • 智能助理,如苹果的Siri、亚马逊的Alexa和谷歌助手,都能够相当准确地回答口头问题。这包括一些琐碎的工作,比如打开电灯开关(对残疾人来说是个福音)甚至预约理发师和提供电话支持对话。这可能是人工智能正在影响我们生活的最明显的迹象。
    • 数字助理的一个关键要素是准确识别语音的能力。逐渐地,在某些应用中,此类系统的准确性已经提高到与人类同等水平的程度(Xiongetal.,2018)。
    • 物体识别同样也取得了长足的进步。估计图片中的物体在2010年是一项相当具有挑战性的任务。在ImageNet基准上,来自NEC实验室和伊利诺伊大学香槟分校的研究人员获得了28%的Top-5错误率(Linetal.,2010)。到2017年,这一错误率降低到2.25%(Huetal.,2018)。同样,在鉴别鸟类或诊断皮肤癌方面也取得了惊人的成果。
    • 游戏曾经是人类智慧的堡垒。从TD-Gammon开始,一个使用时差强化学习的五子棋游戏程序,算法和计算的进步导致了算法被广泛应用。与五子棋不同的是,国际象棋有一个复杂得多的状态空间和一组动作。深蓝公司利用大规模并行性、专用硬件和高效搜索游戏树(Campbelletal.,2002)击败了加里·卡斯帕罗夫(GarryKasparov)。围棋由于其巨大的状态空间,难度更大。AlphaGo在2015年达到了相当于人类的棋力,使用和蒙特卡洛树抽样(Silveretal.,2016)相结合的深度学习。扑克中的挑战是状态空间很大,而且没有完全观察到(我们不知道对手的牌)。在扑克游戏中,库图斯使用有效的结构化策略超过了人类的表现(BrownandSandholm,2017)。这说明了游戏取得了令人瞩目的进步以及先进的算法在其中发挥了关键作用的事实。
    • 人工智能进步的另一个迹象是自动驾驶汽车和卡车的出现。虽然完全自主还没有完全触手可及,但在这个方向上已经取得了很好的进展,特斯拉(Tesla)、英伟达(NVIDIA)和Waymo等公司的产品至少实现了部分自主。让完全自主如此具有挑战性的是,正确的驾驶需要感知、推理和将规则纳入系统的能力。目前,深度学习主要应用于这些问题的计算机视觉方面。其余部分则由工程师进行大量调整。

    机器人学、物流、计算生物学、粒子物理学和天文学最近取得的一些突破性进展至少部分归功于机器学习。 因此,机器学习正在成为工程师和科学家必备的工具。

    关于人工智能的非技术性文章中,经常提到人工智能奇点的问题:机器学习系统会变得有知觉,并独立于主人来决定那些直接影响人类生计的事情。 在某种程度上,人工智能已经直接影响到人类的生计:信誉度的自动评估,车辆的自动驾驶,保释决定的自动准予等等。 甚至,我们可以让Alexa打开咖啡机。

    幸运的是,我们离一个能够控制人类创造者的有知觉的人工智能系统还很远。

    • 首先,人工智能系统是以一种特定的、面向目标的方式设计、训练和部署的。 虽然他们的行为可能会给人一种通用智能的错觉,但设计的基础是规则、启发式和统计模型的结合。
    • 其次,目前还不存在能够自我改进、自我推理、能够在试图解决一般任务的同时,修改、扩展和改进自己的架构的“人工通用智能”工具。

    一个更紧迫的问题是人工智能在日常生活中的应用。 卡车司机和店员完成的许多琐碎的工作很可能也将是自动化的。 农业机器人可能会降低有机农业的成本,它们也将使收割作业自动化。 工业革命的这一阶段可能对社会的大部分地区产生深远的影响,因为卡车司机和店员是许多国家最常见的工作之一。

    此外,如果不加注意地应用统计模型,可能会导致种族、性别或年龄偏见,如果自动驱动相应的决策,则会引起对程序公平性的合理关注。 重要的是要确保小心使用这些算法。 就我们今天所知,这比恶意超级智能毁灭人类的风险更令人担忧。

    1.7. 特点

    机器学习,它既是人工智能的一个分支,也是人工智能的一种方法。 虽然深度学习是机器学习的一个子集,但令人眼花缭乱的算法和应用程序集让人很难评估深度学习的具体成分是什么。 这就像试图确定披萨所需的配料一样困难,因为几乎每种成分都是可以替代的。

    如前所述,

    • 机器学习可以使用数据来学习输入和输出之间的转换,例如在语音识别中将音频转换为文本。 在这样做时,通常需要以适合算法的方式表示数据,以便将这种表示转换为输出。
    • 深度学习是“深度”的,模型学习了许多“层”的转换,每一层提供一个层次的表示。 例如,靠近输入的层可以表示数据的低级细节,而接近分类输出的层可以表示用于区分的更抽象的概念。 由于表示学习(representation learning)目的是寻找表示本身,因此深度学习可以称为“多级表示学习”。

    目前为止讨论的问题,例如从原始音频信号中学习,图像的原始像素值,或者任意长度的句子与外语中的对应句子之间的映射,都是深度学习优于传统机器学习方法的问题。 事实证明,这些多层模型能够以以前的工具所不能的方式处理低级的感知数据。

    毋庸置疑,深度学习方法中最显著的共同点是使用端到端训练。 也就是说,与其基于单独调整的组件组装系统,不如构建系统,然后联合调整它们的性能。
    例如,在计算机视觉中,科学家们习惯于将特征工程的过程与建立机器学习模型的过程分开。
    Canny边缘检测器(Canny,1987)和SIFT特征提取器(Lowe,2004)作为将图像映射到特征向量的算法,在过去的十年里占据了至高无上的地位。
    在过去的日子里,将机器学习应用于这些问题的关键部分是提出人工设计的特征工程方法,将数据转换为某种适合于浅层模型的形式。
    然而,与一个算法自动执行的数百万个选择相比,人类通过特征工程所能完成的事情很少。
    当深度学习开始时,这些特征抽取器被自动调整的滤波器所取代,产生了更高的精确度。

    深度学习的一个关键优势是它不仅取代了传统学习管道末端的浅层模型,而且还取代了劳动密集型的特征工程过程。 此外,通过取代大部分特定领域的预处理,深度学习消除了以前分隔计算机视觉、语音识别、自然语言处理、医学信息学和其他应用领域的许多界限,为解决各种问题提供了一套统一的工具。

    除了端到端的训练,人们正在经历从参数统计描述到完全非参数模型的转变。 当数据稀缺时,人们需要依靠简化对现实的假设来获得有用的模型。 当数据丰富时,可以用更准确地拟合实际情况的非参数模型来代替。 在某种程度上,这反映了物理学在上个世纪中叶随着计算机的出现所经历的进步。 现在人们可以借助于相关偏微分方程的数值模拟,而不是用手来求解电子行为的参数近似。这导致了更精确的模型,尽管常常以牺牲可解释性为代价。

    与以前工作的另一个不同之处是接受次优解,处理非凸非线性优化问题,并且愿意在证明之前尝试。 这种在处理统计问题上新发现的经验主义,加上人才的迅速涌入,导致了实用算法的快速进步。 尽管在许多情况下,这是以修改和重新发明存在了数十年的工具为代价的。

    《动手学深度学习》前言
    《动手学深度学习》 1. 引言 -1
    《动手学深度学习》 1. 引言 -2

    相关文章

      网友评论

        本文标题:《动手学深度学习》 1. 引言 -3

        本文链接:https://www.haomeiwen.com/subject/sfgptjtx.html