找回密码
 立即注册
查看: 665|回复: 1

动手学深度学习理解

[复制链接]

2

主题

2

回帖

15

积分

新手上路

积分
15
发表于 2023-9-20 13:37:26 | 显示全部楼层 |阅读模式
一、前言(全文引用自《动手学深度学习》 — 动手学深度学习 2.0.0-beta0 documentation (d2l.ai)

1、组件

机器学习问题由四个组件构成:数据,模型,方针函数和优化算法。数据输入到模型傍边得到想要的输出,方针函数用来判断模型的优劣,优化算法调整模型参数得到想要的模型。
2、各种机器学习问题

2.1 监督学习:数据具有特征-标签的形式

  • 回归:对标签值的拟合,模型输出尽量接近标签值,输出值会有不等于标签值的情况。
  • 分类:对输出做一个判断,判断它属于哪个标签值,输出值必然等于标签值的此中一个。
  • 多标签分类:分歧于上面的分类,输出的成果不是彼此排斥的,对于一个输入,输出可能是标签的多种。
  • 搜索:输出不仅仅是一个类别或者标签值,可能是多个值,多个值的挨次也很重要。例如百度搜索出来的网页中,就是按照相关性进行排序的。
  • 保举系统:个性化保举。
  • 序列学习:序列是指样本之间有相关性,样本可长可短。标注和解析,凡是需要对原始数据进行转换,进行标注。
2.2 无监督学习:数据不具备标签

  • 聚类:自动将数据分类。
  • 主成分分析:少量的参数就可以描述对象。
  • 强化学习:与环境互动。智能体从环境中不雅观测做出行为,环境按照智能体的行为赐与奖励或者惩罚,循环往复,最终学习出一套策略,这套策略即智能体的不雅观测-行为的模式。强化学习可能还必需措置部门可不雅观测性问题,智能体当前的不雅察当作果可能无法阐述智能体当前状态的所有信息。分类:当环境可被完全不雅察看到时,我们将强化学习问题称为马尔可夫决策过程(markov decision process)。当状态不依赖于之前的操作时,我们称该问题为上下文赌钱机(contextual bandit problem)。当没有状态,只有一组最初未知回报的可用动作时,这个问题就是经典的多臂赌钱机(multi-armed bandit problem)。
3、深度学习之路

硬件的进步促使机器学习和统计的存眷点从广义的线性模型(极客时间的机器学习教程有讲)转移到了深度神经网络。下面列举了辅佐研究人员在过去十年中取得巨大进步的想法(虽然只触及了皮毛):
新的容量控制方式,如dropout [Srivastava et al., 2014],有助于减轻过拟合的危险。这是通过在整个神经网络中应用噪声注入 [Bishop, 1995] 来实现的,出于训练目的,用随机变量来代替权重。
注意力机制解决了困扰统计学一个多世纪的问题:如安在不增加可学习参数的情况下增加系统的记忆和复杂性。研究人员通过使用只能被视为可学习的指针布局 [Bahdanau et al., 2014] 找到了一个优雅的解决方案。不需要记住整个文本序列(例如用于固定维度暗示中的机器翻译),所有需要存储的都是指向翻译过程的中间状态的指针。这大大提高了长序列的准确性,因为模型在开始生成新序列之前不再需要记住整个序列。
多阶段设计。例如,存储器网络 [Sukhbaatar et al., 2015] 和神经编程器-解释器 [Reed & DeFreitas, 2015]。它们允许统计建模者描述用于推理的迭代方式。这些东西允许反复改削深度神经网络的内部状态,从而执行推理链中的后续法式,类似于措置器如何改削用于计算的存储器。
另一个关键的成长是生成对抗网络 [Goodfellow et al., 2014] 的发现。传统模型中,密度估计和生成模型的统计方式侧重于找到合适的概率分布(凡是是近似的)和抽样算法。因此,这些算法在很大程度上受到统计模型固有灵活性的限制。生成式对抗性网络的关键创新是用具有可微参数的任意算法代替采样器。然后对这些数据进行调整,使得分辩器(实际上是一个双样本测试)不能区分假数据和真实数据。通过使用任意算法生成数据的能力,它为各种技术打开了密度估计的大门。驰骋的斑马 [Zhu et al., 2017] 和假名人脸 [Karras et al., 2017] 的例子都证明了这一进展。即使是业余的涂鸦者也可以按照描述场景布局的草图生成照片级真实图像( [Park et al., 2019] )。
在许多情况下,单个GPU不足以措置可用于训练的大量数据。在过去的十年中,构建并行和分布式训练算法的能力有了显著提高。设计可伸缩算法的关键挑战之一是深度学习优化的主力——随机梯度下降,它依赖于相对较小的小批量数据来措置。同时,小批量限制了GPU的效率。因此,在1024个GPU长进行训练,例如每批32个图像的小批量大小相当于总计约32000个图像的小批量。比来的工作,首先是由 [Li, 2017] 完成的,随后是 [You et al., 2017][Jia et al., 2018] ,将不雅察看大小提高到64000个,将ResNet-50模型在ImageNet数据集上的训练时间减少到不到7分钟。作为斗劲——最初的训练时间是按天为单元的。
并行计算的能力也对强化学习的进步做出了相当关键的贡献。这导致了计算机在围棋、雅达里游戏、星际争霸和物理模拟(例如,使用MuJoCo)中实现超人性能的重大进步。有关如安在AlphaGo中实现这一点的说明,请参见如 [Silver et al., 2016] 。简而言之,如果有大量的(状态、动作、奖励)三元组可用,即只要有可能测验考试很多东西来了解它们之间的关系,强化学习就会阐扬最好的感化。仿真提供了这样一条途径。
深度学习框架在传布思想方面阐扬了至关重要的感化。允许轻松建模的第一代框架包罗CaffeTorchTheano。许多开创性的论文都是用这些东西写的。到目前为止,它们已经被TensorFlow(凡是通过其高级API Keras使用)、CNTKCaffe 2Apache MXNet所代替。第三代东西,即用于深度学习的命令式东西,可以说是由Chainer率先推出的,它使用类似于Python NumPy的语法来描述模型。这个想法被PyTorch、MXNet的Gluon APIJax都采纳了。
二、预备常识

1、数据操作


  • 张量:n维数组,torch.tensor()。操作方式:reshape,randn,ones,zeros等。
  • 运算符:(+、-、*、/和**)等都为按元素运算,还可线性代数运算,例如向量点积和矩阵乘法。操作张量:concatenate/cat,对两个张量指定任意轴连接成一个张量。
  • 广播机制(broadcasting mechanism)来执行按元素操作。 这种机制的工作方式如下:首先,通过适当复制元素来扩展一个或两个数组, 以便在转换之后,两个张量具有不异的形状。 其次,对生成的数组执行按元素操作。
  • 索引和切片:与任何Python数组一样,第一个元素的索引是0,最后一个元素索引是-1; 可以指定范围以包含第一个元素和最后一个之前的元素。
  • 节省内存:变量地址不变(原地操作)。执行原地操作非常简单, 我们可以使用切片暗示法将操作的成果分配给先前分配的数组,例如Y[:]=<expression>。如果在后续计算中没有反复使用X, 我们也可以使用X[:]=X+Y或X+=Y来减少操作的内存开销。
  • 深度学习存储和操作数据的主要接口是张量( n 维数组)。它提供了各种功能,包罗基本数学运算、广播、索引、切片、内存节省和转换其他Python对象。
2、数据预措置

Python中常用的数据分析东西中,我们凡是使用pandas软件包。

  • 读取数据集:以csv格式为例,pandas读取数据集的方式是read_csv()。
  • 措置缺掉值: 为了措置缺掉的数据,典型的方式包罗插值法和删除法, 此中插值法用一个替代值弥补缺掉值(插值法分为很多种),而删除法例直接忽略缺掉值。
3、线性代数

可以不雅观看3blue1brown的线性代数视频。
4、微积分

同济大学的高等数学。
5、自动微分

关键点:
1、当我们调用向量的反向计算时,我们凡是会试图计算一批训练样本中每个组成部门的损掉函数的导数。 这里,我们的目的不是计算微分矩阵,而是单独计算批量中每个样本的偏导数之和。单独计算批量中每个样本的偏导数之和是指:每输入一个样本,方针函数对模型参数求偏导得到一个储存偏导值的张量,例如有n个样本,就会有n个这样的张量,对这些张量的元素对应求和就可以得到批量样本求和的成果。
2、分手计算:假设y是作为x的函数计算的,而z则是作为y和x的函数计算的。要想将y看作一个常数,需要使用y.detach()方式,这样z对x求导的时候不要进行一个复合求导,即y对x的求导。
6、概率


  • 基本概率论:我们把从概率分布中抽取样本的过程称为抽样(sampling)。笼统来说,可以把分布(distribution)看作是对事件的概率分配, 将概率分配给一些离散选择的分布称为多项分布,这句话又让我对分布有了新的认识。
  • 概率论公理:有了这个公理系统,我们可以避免任何关于随机性的哲学争论; 相反,我们可以用数学语言严格地推理。 这让我大白了一点,数学规定使用条件或者法则,在法则的基础长进行理论的探索。
  • 随机变量:离散随机变量和持续随机变量区别,持续随机变量的可能性用密度量化,某个值的概率为0,但是密度不为0,求概率则是在某个区间求密度的积分,一个点的积分为0。
  • 联合概率和条件概率:两者都是在分歧的样本区间内,即求概率采用乘法。如果两个事件独立,那么条件概率就是各自的概率。
  • 贝叶斯定理:按照对称性得到两个条件概率等式求出。
  • 边际分布:将某一个随机变量的影响消除,则需要将该随机变量的所有取值求和。
  • 独立属性和依赖属性
三、线性神经网络

1、线性回归


  • 线性模型:输出的预测值由输入特征通过线性模型的仿射变换决定,仿射变换由所选权重和偏置确定。无论我们使用什么手段来不雅察看特征和标签, 都可能会呈现少量的不雅观测误差。 因此,即使确信特征与标签的潜在关系是线性的, 我们也会插手一个噪声项来考虑不雅观测误差带来的影响。仿射变换,又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。
  • 损掉函数:常使用平方误差函数。
  • 求解算法:随机梯度下降法。难的不是找到一组参数使得训练集的方针函数达到最小值,而是这组参数在验证集上有着很好的泛化效果。
  • 正态分布与平方损掉:直不雅观上来说,最小二乘法是在寻找不雅观测数据与回归超平面之间的误差距离最小的参数。最大似然估计是最大化不雅观测数据发生(复现)的概率。不雅观测的含义:探索特征X和标签Y之间的规律,探索(不雅观测)期间会呈现误差,我们需要如何做才能是真实值y呈现的概率越大,即我们需要求出好的参数w才能使得预测值越接近真实值Y(误差越小)。
  • 数据流水线、模型、损掉函数和小批量随机梯度下降优化器。
2、softmax回归

概率模型:形式为P(y|x),即在学习过程中,y未知,训练后模型得到的输出是y的一系列值的概率;非概率模型:形式为决策函数,即输入x到输出y的一个映射,且输出独一;软分类:使用的是概率模型,输出分歧类对应的概率,最后的分类成果取概率最大的类,如多SVM组合分类;硬分类:使用的长短概率模型,分类成果就是决策函数的决策成果。

  • 分类问题:标签数据格式采用独热编码(one-hot encoding)。
  • 网络架构:一层。
  • 全连接层的参数开销:可以缩减为本来的1/n,此中超参数n可以由我们灵活指定,以在实际应用中平衡参数节约和模型有效性[Zhang et al., 2021]
  • softmax运算:能否将未规范化的预测值直接视作我们感兴趣的输出呢? 答案是否认的。原因是不符合概率论的公理,因此需要采用softmax进行变换。尽管softmax是一个非线性函数,但softmax回归的输出仍然由输入特征的仿射变换决定。 因此,softmax回归是一个线性模型(linear model)。
  • 小批量样本的矢量化:Y=XW+b,Y为n×q的矩阵。
  • 信息论基础与交叉熵损掉函数:信息论的核心思想是量化数据中的信息内容。 在信息论中,该数值被称为分布 的(entropy)。可以通过以下方程得到:
H[P] = \sum_j - P(j) \log P(j)
信息论的基本定理之一指出,为了对从分布 中随机抽取的数据进行编码, 我们至少需要H[P]“纳特(nat)”对其进行编码。“纳特”相当于比特(bit),但是对数底为e而不是2。因此,一个纳特是 \frac{1}{\log(2)} \approx 1.44 比特。
预测与压缩的的关系:当数据易于预测,也就易于压缩,所以用交叉熵衡量损掉函数。
如果把熵H(P)想象为“知道真实概率的人所经历的惊异程度”,那么什么是交叉熵?交叉熵从P到Q,记为H(P, Q)。你可以把交叉熵想象为“主不雅观概率为Q的不雅察看者在看到按照概率P生成的数据时的预期惊异”。当P=Q时,交叉熵达到最低。在这种情况下,从P到Q的交叉熵是H(P, P)= H(P)。
简而言之,我们可以从两方面来考虑交叉熵分类方针:
(i)最大化不雅观测数据的似然;(ii)最小化传达标签所需的惊异(减少比特数)。
交叉熵是一个衡量两个概率分布之间差异的很好的度量,它测量给定模型编码数据所需的比特数。
3、softmax回归的简洁实现

从头审视Softmax的实现:由于计算机存在数字表达精度的问题,即有多少位可以用来表达该值,因此会呈现上溢和下溢的问题。尽管我们要计算指数函数,但我们最终在计算交叉熵损掉时会取它们的对数。 通过将softmax和交叉熵结合在一起,可以避免反向传布过程中可能会困扰我们的数值不变性问题。如下公式:
\begin{aligned} \log{(\hat y_j)} & = \log\left( \frac{\exp(o_j - \max(o_k))}{\sum_k \exp(o_k - \max(o_k))}\right) \\ & = \log{(\exp(o_j - \max(o_k)))}-\log{\left( \sum_k \exp(o_k - \max(o_k)) \right)} \\ & = o_j - \max(o_k) -\log{\left( \sum_k \exp(o_k - \max(o_k)) \right)}. \end{aligned}
我们也但愿保留传统的softmax函数,以备我们需要评估通过模型输出的概率。 但是,我们没有将softmax概率传递到损掉函数中, 而是在交叉熵损掉函数中传递未规范化的预测,并同时计算softmax及其对数, 这是一种类似“LogSumExp技巧”的聪明方式。
四、多层感知机

1、多层感知机

我们的数据可能会有一种暗示,这种暗示会考虑到我们在特征之间的相关交互感化。 在此暗示的基础上成立一个线性模型可能会是合适的, 但我们不知道如何手动计算这么一种暗示。 对于深度神经网络,我们使用不雅观测数据来联合学习隐藏层暗示和应用于该暗示的线性预测器(自动学习特征的暗示)。
2、模型选择、过拟合和欠拟合

重点介绍几个倾向于影响模型泛化的因素:

  • 可调整参数的数量。当可调整参数的数量(有时称为自由度)很大时,模型往往更容易过拟合。
  • 参数采用的值。当权重的取值范围较大时,模型可能更容易过拟合。
  • 训练样本的数量。即使你的模型很简单,也很容易过拟合只包含一两个样本的数据集。而过拟合一个有数百万个样本的数据集则需要一个极其灵活的模型。


  • 模型选择:数据多时,在验证集上验证模型;数据少时,K折交叉验证。
  • 过拟合与欠拟合:过拟合,训练误差小,验证误差大;欠拟合,训练误差大,验证误差也大。
3、权重衰减

权重衰减(weight decay)是最广泛使用的正则化的技术之一, 它凡是也被称为L2正则化。 这项技术通过函数与零的距离来衡量函数的复杂度, 因为在所有函数f中,函数f=0在某种意义上是最简单的。 但是我们应该如何精确地测量一个函数和零之间的距离呢? 没有一个正确的答案,而权重向量的某个范数来度量其复杂性。L2和L1范数的区别:L2侧重惩罚权重较大的分量,这使得我们的学习算法方向于在大量特征上均匀分布权重的模型。在实践中,这可能使它们对单个变量中的不雅观测误差更为不变。 对比之下,L1惩罚会导致模型将权重集中在一小部门特征上, 而将其他权重断根为零。 这称为特征选择(feature selection),这可能是其他场景下需要的。
4、暂退法

偏差-方差权衡:可以看这篇文章偏差(Bias)与方差(Variance) - 知乎 (zhihu.com)
简单性的另一个角度是平滑性,即函数不应该对其输入的微小变化敏感(减小方差)。1995年,克里斯托弗·毕晓普证明了 具有输入噪声的训练等价于Tikhonov正则化[Bishop, 1995]。这项工感化数学证实了“要求函数光滑”和“要求函数对输入的随机噪声具有适应性”之间的联系(数学的力量,赶紧学习数学吧)。在整个训练过程的每一次迭代中,尺度暂退法包罗在计算下一层之前将当前层中的一些节点置零。在尺度暂退法正则化中,通过按保留(未丢弃)的节点的分数进行规范化来消除每一层的偏差。 换言之,每个中间活性值h以暂退概率p由随机变量h′替换,如下所示:
\begin{split}\begin{aligned} h&#39; = \begin{cases}     0 & \text{ 概率为 } p \\     \frac{h}{1-p} & \text{ 其他情况} \end{cases} \end{aligned}\end{split}
按照此模型的设计,其期望值保持不变,即 E[h&#39;] = h 。
5、数值不变性和模型初始化

启发式方式指人在解决问题时所采纳的一种按照经验法则进行发现的方式。其特点是在解决问题时,操作过去的经验,选择已经行之有效的方式,而不是系统地、以确定的法式去寻求答案。
初始化模型参数方案的选择可以与非线性激活函数的选择有趣的结合在一起,我们选择哪个函数以及如何初始化参数可以决定优化算法收敛的速度有多快,糟糕选择可能会导致我们在训练时遇到梯度爆炸或梯度消掉。
解决(或至少减轻)对称性是进行参数初始化, 优化过程中的额外注意和适当的正则化可以进一步增强不变性,默认是正态分布。
6、环境和分布偏移


  • 分布偏移的类型:协变量偏移,协变量偏移可能是最为广泛研究的。 这里我们假设:虽然输入的分布可能随时间而改变, 但标签函数(即条件分布P(y∣x)没有改变。 统计学家称之为协变量偏移(covariate shift), 因为这个问题是由于协变量(特征)分布的变化而发生的,那么有一个疑问:特征X是协变量,什么是自变量了?不懂。找到答案:Covariate Shift - 知乎 (zhihu.com)。假设我们要拟合方程 y=wx,对于一个数据对(x,y):   y为因变量,w为自变量,x为协变量。因为我们要研究模型参数W对输出Y的影响,所以X是协变量。标签偏移(label shift)描述了与协变量偏移相反的问题。 这里我们假设标签边缘概率P(y)可以改变, 但是类别条件分布P(x∣y)P(x∣y)在分歧的范围之间保持不变。概念偏移(concept shift): 当标签的定义发生变化时,就会呈现这种问题。
7、分布偏移改正


  • 经验风险与实际风险:经验风险代替实际风险,因为在实践中,无法获取总体数据。
  • 协变量偏移改正:依赖性假设意味着条件分布保持不变,即:p(y∣x)=q(y∣x)。我们需要按照数据来自正确分布与来自错误分布的概率之比, 来从头衡量每个数据样本的权重。算法依赖于一个重要的假设: 需要方针分布(例如,测试分布)中的每个数据样本在训练时呈现的概率非零。这句话怎么理解?如果等于0,则无法判断对于不等于0的情况p(y∣x)=q(y∣x)吗?则等式∫∫l(f(x),y)p(y∣x)p(x)dxdy=∫∫l(f(x),y)q(y∣x)q(x)p(x)q(x)dxdy无法成立吗?
  • 标签偏移改正:重要性权重将对应于标签似然比率βi=p(yi)/q(yi)。如何求取P(y)没有看懂
  • 概念偏移改正:概念偏移变化迟缓,可以用新数据更新现有的网络权重,而不是从头开始训练。
8、学习问题的分类法


  • 批量学习:最开始接触深度学习的学习方式,模型基本不会更新。
  • 在线学习:例如,我们需要预测明天的股票价格, 这样我们就可以按照这个预测进行交易。\mathrm{model} ~ f_t \longrightarrow \mathrm{data} ~ \mathbf{x}_t \longrightarrow \mathrm{estimate} ~ f_t(\mathbf{x}_t) \longrightarrow \mathrm{observation} ~ y_t \longrightarrow \mathrm{loss} ~ l(y_t, f_t(\mathbf{x}_t)) \longrightarrow \mathrm{model} ~ f_{t+1}
  • 老虎机:组合选择优化问题?
  • 控制:近年来,控制理论(如PID的变体)也被用于自动调整超参数, 以获得更好的解构和重建质量,提高生成文本的多样性和生成图像的重建质量[Shao et al., 2020]
  • 强化学习:强调如何基于环境而步履,以取得最大化的预期利益。
  • 考虑到环境:如果我们知道事情只会迟缓地变化, 就可以迫使任何估计也只能迟缓地发生改变。 如果我们知道环境可能会瞬间发生变化,但这种变化非常罕见, 我们就可以在使用算法时考虑到这一点。即数据是否会随着时间或者其他因素发生变化。
五、深度学习计算

1、层和块

(block)可以描述单个层、由多个层组成的组件或整个模型本身。
2、参数打点


  • 访谒参数,用于调试、诊断和可视化。
  • 参数初始化。
  • 在分歧模型组件间共享参数。
六、卷积神经网络

1、从全连接层到卷积


  • 不变性:卷积操作空间不变性从而减少参数学习有用的暗示,空间不变性是指我们可以只检测物体而不必在意物体在哪里。平移不变性和局部性针对于神经网络前面几层这是应该具备的特点。
回复

使用道具 举报

0

主题

4

回帖

9

积分

新手上路

积分
9
发表于 2023-9-20 13:38:05 | 显示全部楼层
关于协变量偏移纠正中的问题,我的理解是如果对于测试集中某个样本  ,在训练集中没有出现,那么  ,从而  是无穷大;关于标签偏移纠正中的  按照我的理解并不是评分而是一个概率,也就是分类器预测训练集结果中第  类样本的比例。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|T9AI - 深度人工智能平台 ( 沪ICP备2023010006号 )

GMT+8, 2024-12-22 13:27 , Processed in 0.057558 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表