前语

三月底真的忙到不可开交,连学习笔记都没有做,所以现在来补笔记了,哪有深度学习学一次的嘛哈哈哈,不过前次的学习确实也学习了很多的东西,还误打误撞的得了一个“实践大神”称谓和优异学习者的奖,接下来经过笔记复盘笔记再加深一下了解,不多废话,开干!

装置

OK,咱们先下载d2l的包,去GitHub上面下载这个就不多说了,大约便是下面这个包。

《动手学深度学习》笔记整理1:安装与引言

里边有这么多东西

《动手学深度学习》笔记整理1:安装与引言
我是有conda的所以就比较简略啦,直接下面这两行,新建一个虚拟环境d2l,然后他就会加载各种包到这个环境里,经过activate d2l跳到咱们这个环境,再输入jupyter notebook到咱们的编程目录里边就可以开端操作。

《动手学深度学习》笔记整理1:安装与引言
大约装置就这些内容,conda,python,还有几行指令,其实我是觉得可以更简略,便是直接把这些库一个一个pip进去就行了就可以作业,当然这姿态也是必要的,不会混乱。

导言

《动手学深度学习》笔记整理1:安装与引言
首要咱们讲机器学习的要害组成:数据,模型,方针函数,优化算法
《动手学深度学习》笔记整理1:安装与引言

  • 数据:

毋庸置疑,假如没有数据,那么数据科学毫无用武之地。 每个数据集由一个个样本(example, sample)组成,大多时分,它们遵从独立同散布(独立且相同) 散布式,I.I.D.)。样本有时也叫做数据点(data point)或许数据实例(data instance),一般每个样本由一组称为特征(features,或协变量(covariates))的特色组成。 机器学习模型会依据这些特色进行猜测。 在上面的监督学习问题中,要猜测的是一个特别的特色,它被称为标签(label,或方针(target))。 当每个样本的特征类别数量都是相同的时分,其特征向量是固定长度的,这个长度被称为数据的维数(dimensionality)。 固定长度的特征向量是一个方便的特色,它可以用来量化学习很多样本。

一般来说,具有越多数据的时分,作业就越简略。 更多的数据可以被用来练习出更强壮的模型,然后削减对预先设想假定的依赖。 数据集的由小变大为现代深度学习的成功奠定根底。 在没有大数据集的状况下,许多令人兴奋的深度学习模型黯然失色。 就算一些深度学习模型在小数据集上可以作业,但其效能并不比传统办法高。请注意,仅仅具有海量的数据是不够的,咱们还需求正确的数据。 假如数据中充满了过错,或许假如数据的特征不能猜测使命方针,那么模型很或许无效。

  • 模型:

深度学习与经典办法的区别首要在于:前者关注的功能强壮的模型,这些模型由神经网络错综杂乱的交织在一起,包含层层数据转换,因而被称为深度学习

  • 方针函数:

在机器学习中,咱们需求定义模型的好坏程度的度量,这个度量在大多数状况是“可优化”的,这被称之为方针函数(objective 函数)。咱们一般定义一个方针函数,并希望优化它到最低点。 由于越低越好,所以这些函数有时被称为丢失函数(loss 函数,或成本函数)。

当使命在企图猜测数值时,最常见的丢失函数是平方差错(squared error),即猜测值与实践值之差的平方。 当企图处理分类问题时,最常见的方针函数是最小化过错率,即猜测与实践状况不符的样本比例。 有些方针函数(如平方差错)很简略被优化,有些方针(如过错率)由于不可微性或其他杂乱性难以直接优化。 在这些状况下,一般会优化替代方针

数据集一般可以分红两部分:练习数据集用于拟合模型参数,测验数据集用于评价拟合的模型。 然后咱们调查模型在这两部分数据集的功能。 “一个模型在练习数据集上的功能”可以被想象成”一个学生在模仿考试中的分数”。 这个分数用来为一些实在的期末考试做参考,即便成绩令人鼓舞,也不能保证期末考试成功。

  • 优化算法:

当咱们获得了一些数据源及其表明、一个模型和一个适宜的丢失函数,接下来就需求一种算法,它可以查找出最佳参数,以最小化丢失函数。 深度学习中,大多盛行的优化算法一般基于一种基本办法–梯度下降(gradient 下降)。 简而言之,在每个进程中,梯度下降法都会检查每个参数,看看假如仅对该参数进行少数变化,练习集丢失会朝哪个方向移动。 然后,它在可以削减丢失的方向上优化参数。

《动手学深度学习》笔记整理1:安装与引言

监督学习

监督学习之所以能发挥效果,是由于在练习参数时,咱们为模型供给了一个数据集,其间每个样本都有实在的标签。 用概率论术语来说,咱们希望猜测”估量给定输入特征的标签”的条件概率。

比方:

  • 依据核算机断层扫描(Computed 断层扫描,CT)肿瘤图画,猜测是否为癌症;
  • 给出一个英语语句,猜测正确的法语翻译;
  • 依据本月的财务报告数据,猜测下个月股票的价格

监督学习的学习进程一般可以分为三大进程:

  1. 从已知很多数据样本中随机选取一个子集,为每个样本获取实在标签。有时,这些样本已有标签(例如,患者是否鄙人一年内恢复?);有时,这些样本或许需求被人工符号(例如,图画分类)。这些输入和相应的标签一起构成了练习数据集;
  2. 挑选有监督的学习算法,它将练习数据集作为输入,并输出一个”已完结学习的模型”;
  3. 将之前没有见过的样本特征放到这个”已完结学习的模型”中,运用模型的输出作为相应标签的猜测。

《动手学深度学习》笔记整理1:安装与引言

回归

回归是最简略的监督学习使命之一。销售价格(即标签)是一个数值。 当标签取恣意数值时,咱们称之为回归问题,此时的方针是生成一个模型,使它的猜测十分挨近实践标签值。任何有关”有多少”的问题很或许便是回归问题。

分类

尽管回归模型可以很好地处理”有多少”的问题,但是很多问题并非如此。 例如,一家银行希望在其移动运用程序中添加支票扫描功能。 详细地说,这款运用程序可以主动了解从图画中看到的文本,并将手写字符映射到对应的已知字符之上。 这种“哪一个”的问题叫做分类问题。

符号问题

有些分类问题很适合于二项分类或多项分类。 例如,咱们可以练习一个一般的二项分类器来区别猫和狗。 运用最前沿的核算机视觉的算法,这个模型可以很轻松地被练习。 尽管如此,无论模型有多精确,当分类器遇到新的动物时或许会束手无策。比方这张“不来梅的城市音乐家”的图画 (这是一个盛行的德国童话故事),图中有一只猫、一只公鸡、一只狗、一头驴,布景是一些树。 取决于咱们终究想用模型做什么,将其视为二项分类问题或许没有多大意义。 取而代之,咱们或许想让模型描绘输入图画的内容,一只猫、一只公鸡、一只狗,还有一头驴。

《动手学深度学习》笔记整理1:安装与引言

查找

在信息检索领域,咱们希望对一组项目进行排序。 以网络查找为例,方针不是简略的“查询(query)-网页(page)”分类,而是在海量查找成果中找到用户最需求的那部分。谷歌查找引擎背后开端的秘密武器便是这种评分体系的早期比方,但它的独特之处在于它不依赖于实践的查询。 在这里,他们依靠一个简略的相关性过滤来辨认一组相关条目,然后依据PageRank对包含查询条件的成果进行排序。 现在,查找引擎运用机器学习和用户行为模型来获取网页相关性得分

引荐体系

另一类与查找和排名相关的问题是引荐体系,它的方针是向特定用户进行“个性化”引荐。 例如,对于电影引荐,科幻迷和喜剧爱好者的引荐成果页面或许会有很大不同。

总的来说,引荐体系会为”给定用户和物品”的匹配性打分,这个”分数”或许是估量的评级或购买的概率。 由此,对于任何给定的用户,引荐体系都可以检索得分最高的方针集,然后将其引荐给用户。以上仅仅简略的算法,而工业生产的引荐体系要先进得多,它会将详细的用户活动和项目特征考虑在内。 引荐体系算法经过调整,可以捕捉一个人的偏好。

序列学习

在医学上序列输入和输出就更为重要。 设想一下,假定一个模型被用来监控重症监护病人,假如他们在未来24小时内死亡的风险超越某个阈值,这个模型就会宣布警报。 咱们绝不希望扔掉曩昔每小时有关病人病史的一切信息,而仅依据最近的测量成果做出猜测。 这些问题是序列学习的实例,是机器学习最令人兴奋的运用之一。 序列学习需求摄取输入序列或猜测输出序列,或两者兼而有之。 详细来说,输入和输出都是可变长度的序列,例如机器翻译和从语音中转录文本。

无监督学习

假如作业没有十分详细的方针,就需求”自发”地去学习了。 比方,老板或许会给咱们一大堆数据,然后要求用它做一些数据科学研讨,却没有对成果有要求。 这类数据中不含有“方针”的机器学习问题一般被为无监督学习

那么无监督学习可以答复什么样的问题呢?来看看下面的比方。

  • 聚类(clustering)问题:没有标签的状况下,咱们是否能给数据分类呢?比方,给定一组相片,咱们能把它们分红景色相片、狗、婴儿、猫和山峰的相片吗?相同,给定一组用户的网页阅读记载,咱们能否将具有相似行为的用户聚类呢?
  • 主成分分析(主成分analysis)问题:咱们能否找到少数的参数来精确地捕捉数据的线性相关特色?比方,一个球的运动轨迹可以用球的速度、直径和质量来描绘。再比方,裁缝们现已开宣布了一小部分参数,这些参数适当精确地描绘了人体的形状,以适应衣服的需求。另一个比方:在欧几里得空间中是否存在一种(恣意结构的)方针的表明,使其符号特色可以很好地匹配?这可以用来描绘实体及其联系,例如”罗马” “意大利” “法国” “巴黎”。−+=
  • 因果联系(causality)和概率图模型(probabilistic graphic) models)问题:咱们能否描绘调查到的许多数据的根本原因?例如,假如咱们有关于房价、污染、犯罪、地理位置、教育和工资的人口核算数据,咱们能否简略地依据经历数据发现它们之间的联系?
  • 生成对立性网络(Generative adversarial networks):为咱们供给一种合成数据的办法,乃至像图画和音频这样杂乱的非结构化数据。潜在的核算机制是检查实在和虚伪数据是否相同的测验,它是无监督学习的另一个重要而令人兴奋的领域。

与环境互动学习

《动手学深度学习》笔记整理1:安装与引言

强化学习

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

在强化学习问题中,智能体(agent)在一系列的时刻进程上与环境交互。 在每个特定时刻点,智能体从环境接纳一些调查(observation),并且必须挑选一个动作(action),然后经过某种机制(有时称为履行器)将其传输回环境,最终智能体从环境中获得奖励(reward)。 此后新一轮循环开端,智能体接纳后续调查,并挑选后续操作,依此类推。 强化学习的进程鄙人图中进行了说明。 请注意,强化学习的方针是产生一个好的战略(policy)。 强化学习智能体挑选的”动作”受战略操控,即一个从环境调查映射到行动的功能。

《动手学深度学习》笔记整理1:安装与引言

当环境可被彻底调查到时,强化学习问题被称为马尔可夫决议计划进程(markov 决议计划进程)。 当状况不依赖于之前的操作时,咱们称该问题为上下文赌博机(concontext 匪徒问题)。 当没有状况,只需一组开端不知道回报的可用动作时,这个问题便是经典的多臂赌博机(multi-arm 匪徒问题)。

深度学习来源

跟着数据的搜集和可获得性,核算数据实在完成了腾飞。罗纳德费舍尔(1890-1962)对核算理论和在遗传学中的运用做出了严重奉献。 他的许多算法(如线性判别分析)和公式(如费舍尔信息矩阵)至今仍被频繁运用。 乃至,费舍尔在1936年发布的鸢尾花卉数据集,有时仍然被用来解读机器学习算法。 他也是优生学的倡导者,这提示咱们:数据科学在道德上存疑的运用,与其在工业和自然科学中的生产性运用相同,有着悠远而耐久的前史。

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

另一个影响可以在神经科学和心理学中找到。 其间,最古老的算法之一是唐纳德赫布 (1904年-1985年)开创性的著作《行为的安排》(Hebb and Hebb, 1949)。 他提出神经元经过积极强化学习,是Rosenblatt感知器学习算法的原型,被称为“赫布学习”。 这个算法也为当今深度学习的许多随机梯度下降算法奠定了根底:强化希望行为和削减不良行为,然后在神经网络中获得杰出的参数设置。

神经网络(神经网络)的得名源于生物灵感。 一个多世纪以来(追溯到1873年亚历山大贝恩和1890年詹姆斯谢林顿的模型),研讨人员一直企图拼装类似于相互效果的神经元网络的核算电路。 跟着时刻的推移,对生物学的解说变得不再肤浅,但这个姓名仍然存在。 其核心是当今大多数网络中都可以找到的几个要害原则:

  • 线性和非线性处理单元的替换,一般称为(layers);
  • 运用链式规矩(也称为反向传达(backpropagation))一次性调整网络中的悉数参数。

经过开端的快速开展,神经网络的研讨从1995年左右开端停滞不前,直到2005年才稍有起色。 这首要是由于两个原因。首要,练习网络(在核算上)十分昂贵。 在上个世纪末,随机存取存储器(RAM)十分强壮,而核算才能却很弱。 其次,数据集相对较小。 事实上,费舍尔1932年的鸢尾花卉数据集是测验算法有用性的盛行东西, 而MNIST数据集的60000个手写数字的数据集被认为是巨大的。 考虑到数据和核算的稀缺性,核办法(kernel method)、决议计划树(decision tree)和图模型(graph models)等强壮的核算东西(在经历上)证明是更为优胜的。 与神经网络不同的是,这些算法不需求数周的练习,并且有很强的理论依据,可以供给可猜测的成果。

深度学习开展

最近十年,在核算模型、运用和算法方面的发展就像寒武纪大爆发——前史上物种飞速进化的时期。 事实上,最先进的技能不仅仅是将可用资源运用于几十年前的算法的成果。 下面列举了帮助研讨人员在曩昔十年中取得巨大前进的主意(尽管只触及了皮裘)。

  • 新的容量操控办法,如dropout(Srivastavaet al. , 2014),有助于减轻过拟合的风险。这是经过在整个神经网络中运用噪声注入(Bishop, 1995)来完成的,出于练习意图,用随机变量来替代权重。
  • 注意力机制处理了困扰核算学一个多世纪的问题:怎么在不添加可学习参数的状况下添加体系的回忆和杂乱性。研讨人员经过运用只能被视为可学习的指针结构(Bahdanauet al. , 2014)找到了一个优雅的处理方案。不需求记住整个文本序列(例如用于固定维度表明中的机器翻译),一切需求存储的都是指向翻译进程的中间状况的指针。这大大前进了长序列的精确性,由于模型在开端生成新序列之前不再需求记住整个序列。
  • 多阶段规划。例如,存储器网络(Sukhbaataret al. , 2015) 和神经编程器-解说器(Reed and De Freitas, 2015)。它们答应核算建模者描绘用于推理的迭代办法。这些东西答应重复修正深度神经网络的内部状况,然后履行推理链中的后续进程,类似于处理器怎么修正用于核算的存储器。
  • 另一个要害的开展是生成对立网络(Goodfellowet al. , 2014)的创造。传统模型中,密度估量和生成模型的核算办法侧重于找到适宜的概率散布(一般是近似的)和抽样算法。因而,这些算法在很大程度上受到核算模型固有灵活性的约束。生成式对立性网络的要害立异是用具有可微参数的恣意算法替代采样器。然后对这些数据进行调整,使得辨别器(实践上是一个双样本测验)不能区别假数据和实在数据。经过运用恣意算法生成数据的才能,它为各种技能翻开了密度估量的大门。奔驰的斑马 (Zhu et al., 2017) 和假名人脸(Karraset al. , 2017)的比方都证明了这一发展。**即便是业余的涂鸦者也可以依据描绘场景布局的草图生成相片级实在图画((Parket al. , 2019))。
  • 在许多状况下,单个GPU不足以处理可用于练习的很多数据。在曩昔的十年中,构建并行和散布式练习算法的才能有了明显前进。规划可弹性算法的要害应战之一是深度学习优化的主力——随机梯度下降,它依赖于相对较小的小批量数据来处理。同时,小批量约束了GPU的效率。因而,在1024个GPU上进行练习,例如每批32个图画的小批量巨细适当于总计约32000个图画的小批量。最近的作业,首要是由 (Li, 2017) 完结的,随后是 (You et al., 2017) 和(Jiaet al., 2018),将调查巨细前进到64000个**,将ResNet-50模型在ImageNet数据集上的练习时刻削减到不到7分钟。作为比较——开端的练习时刻是按天为单位的。
  • 并行核算的才能也对强化学习的前进做出了适当要害的奉献。这导致了核算机在围棋、雅达里游戏、星际争霸和物理模仿(例如,运用MuJoCo)中完成超人功能的严重前进。有关怎么在AlphaGo中完成这一点的说明,请参见如(Silveret al. , 2016)。简而言之,假如有很多的(状况、动作、奖励)三元组可用,即只需有或许尝试很多东西来了解它们之间的联系,强化学习就会发挥最好的效果。仿真供给了这样一条途径。
  • 深度学习框架在传达思维方面发挥了至关重要的效果。答应轻松建模的第一代框架包含Caffe、Torch和Theano。许多开创性的论文都是用这些东西写的。到现在为止,它们现已被TensorFlow(一般经过其高档APIKeras运用)、CNTK、Caffe 2、阿帕奇 MXNet所替代。第三代东西,即用于深度学习的指令式东西,可以说是由Chainer率先推出的,它运用类似于Python NumPy的语法来描绘模型。这个主意被PyTorch、MXNet的Gluon API和Jax都采用了。

深度学习成功事例

  • 智能助理,如苹果的Siri、亚马逊的Alexa和谷歌帮手,都可以适当精确地答复口头问题。这包含一些琐碎的作业,比方翻开电灯开关(对残疾人来说是个福音)乃至预定理发师和供给电话支持对话。这或许是人工智能正在影响咱们日子的最显着的痕迹。
  • 数字助理的一个要害要素是精确辨认语音的才能。逐渐地,在某些运用中,此类体系的精确性现已前进到与人类平等水平的程度(Xionget al. , 2018)。
  • 物体辨认相同也取得了长足的前进。估量图片中的物体在2010年是一项适当具有应战性的使命。在ImageNet基准上,来自NEC实验室和伊利诺伊大学香槟分校的研讨人员获得了28%的Top-5过错率(Linet al. , 2010)。到2017年,这一过错率降低到2.25%(Huet al. , 2018)。相同,在辨别鸟类或确诊皮肤癌方面也取得了惊人的成果。
  • 游戏曾经是人类智慧的堡垒。从TD-Gammon开端,一个运用时差强化学习的五子棋游戏程序,算法和核算的前进导致了算法被广泛运用。与五子棋不同的是,国际象棋有一个杂乱得多的状况空间和一组动作。深蓝公司利用大规模并行性、专用硬件和高效查找游戏树(Campbellet al. , 2002)打败了加里卡斯帕罗夫(Garry 卡斯帕罗夫)。围棋由于其巨大的状况空间,难度更大。AlphaGo在2015年达到了适当于人类的棋力,运用和蒙特卡洛树抽样(Silveret al. , 2016)相结合的深度学习。扑克中的应战是状况空间很大,并且没有彻底调查到(咱们不知道对手的牌)。在扑克游戏中,库图斯运用有用的结构化战略超越了人类的表现(Brown and Sandholm, 2017)。这说明了游戏取得了令人瞩意图前进以及先进的算法在其间发挥了要害效果的事实。
  • 人工智能前进的另一个痕迹是主动驾驭汽车和卡车的出现。尽管彻底自主还没有彻底触手可及,但在这个方向上现已取得了很好的发展,特斯拉(Tesla)、英伟达(NVIDIA)和Waymo等公司的产品至少完成了部分自主。让彻底自主如此具有应战性的是,正确的驾驭需求感知、推理和将规矩纳入体系的才能。现在,深度学习首要运用于这些问题的核算机视觉方面。其余部分则由工程师进行很多调整。

深度学习的特色

尽管深度学习是机器学习的一个子集,但令人目不暇接的算法和运用程序集让人很难评价深度学习的详细成分是什么。 这就像企图确认披萨所需的配料相同困难,由于简直每种成分都是可以替代的。

事实证明,这些多层模型可以以以前的东西所不能的方法处理初级的感知数据。 毋庸置疑,深度学习办法中最明显的共同点是运用端到端练习。 也便是说,与其基于独自调整的组件拼装体系,不如构建体系,然后联合调整它们的功能。 例如,在核算机视觉中,科学家们习惯于将特征工程的进程与树立机器学习模型的进程分隔。 Canny边缘检测器 (Canny, 1987) 和SIFT特征提取器(Lowe, 2004)作为将图画映射到特征向量的算法,在曩昔的十年里占有了登峰造极的地位。 在曩昔的日子里,将机器学习运用于这些问题的要害部分是提出人工规划的特征工程办法,将数据转换为某种适合于浅层模型的形式。 但是,与一个算法主动履行的数百万个挑选相比,人类经过特征工程所能完结的事情很少。 当深度学习开端时,这些特征抽取器被主动调整的滤波器所替代,产生了更高的精确度。

因而,深度学习的一个要害优势是它不仅替代了传统学习管道结尾的浅层模型,并且还替代了劳动密集型的特征工程进程。 此外,经过替代大部分特定领域的预处理,深度学习消除了以前分隔核算机视觉、语音辨认、自然语言处理、医学信息学和其他运用领域的许多边界,为处理各种问题供给了一套统一的东西。