动手学深度学习_个人笔记01_李沐(更新中......)

序言

神经网络——本书中关注的DL模型的前身,被认为是过时的工具。

深度学习在近几年推动了CV、NLP和ASR等领域的快速发展。

关于本书

让DL平易近人,教会概念、背景和代码。

一种结合了代码、数学和HTML的媒介

测试深度学习(DL)的潜力带来了独特的挑战,因为任何一个应用都会将不同的学科结合在一起。应用DL需要同时了解:
(1)以特定方式提出问题的动机;
(2)给定建模方法的数学;
(3)将模型拟合数据的优化算 法;
(4)能够有效训练模型、克服数值计算缺陷并最大限度地利用现有硬件的工程方法。
同时教授表述问题所需的批判性思维技能、解决问题所需的数学知识,以及实现这些解决方案所需的软件工具,这是一个巨大的挑战。

我们着手创建的资源可以:(1)每个人都可以免费获得;(2)提供足够的技术深度,为真正成为一名应用机 器学习科学家提供起步;(3)包括可运行的代码,向读者展示如何解决实践中的问题;(4)允许我们和社区 的快速更新;(5)由一个论坛作为补充,用于技术细节的互动讨论和回答问题。

这些目标经常是相互冲突的。公式、定理和引用最好用LaTeX来管理和布局。代码最好用Python描述。网⻚原生是HTML和JavaScript的。
此外,我们希望内容既可以作为可执行代码访问、作为纸质书访问,作为可下载的PDF访问,也可以作为网站在互联网上访问。目前还没有完全适合这些需求的工具和工作流程,所以我 们不得不自行组装。
我们在 16.5节中详细描述了我们的方法。我们选择GitHub来共享源代码并允许编辑,选择Jupyter记事本来混合代码、公式和文本,选择Sphinx作为渲染引擎来生成多个输出,并为论坛提供讨论。 虽然我们的体系尚不完善,但这些选择在相互冲突的问题之间提供了一个很好的妥协。我们相信,这可能是 第一本使用这种集成工作流程出版的书。

在实践中学习

本书实践性强!一定要动手实践,体会训练model的满足感!

内容和结构

全书大致分为3个部分,图1中用不同颜色呈现

在这里插入图片描述

  • 1 - 4节:基础知识和预备知识。
  • 5 - 9节:集中讨论现代DL技术。
  • 10节:介绍一类新的model,它采用注意力机制技术。
  • 11 - 15节:讨论可伸缩性、效率和应用程序。

代码

本书中的大部分代码都是基于PyTorch的。PyTorch是一个开源的深度学习框架,在研究界非常受欢迎。本书中的所有代码都在最新版本的PyTorch下通过了测试。但是,由于深度学习的快速发展,一些在印刷版中代码可能在PyTorch的未来版本无法正常工作。但是,我们计划使在线版本保持最新。如果你遇到任何此类问题,请查看安装 (page 9) 以更新你的代码和运行时环境。

目标受众

本书面向学生(本科生或研究生)、工程师和研究人员,他们希望扎实掌握深度学习的实用技术。

论坛

discuss.d2l.ai

小结

在这里插入图片描述

练习

安装

安装 Miniconda

以下是Miniconda的官方介绍:
Miniconda is a free minimal installer for conda. It is a small bootstrap version of Anaconda that includes only conda, Python, the packages they both depend on, and a small number of other useful packages (like pip, zlib, and a few others). If you need more packages, use the conda install command to install from thousands of packages available by default in Anaconda’s public repo, or from other channels, like conda-forge or bioconda.

安装深度学习框架和d2l软件包

注意安装或下载相关包时,不要翻墙,否则将会被拒绝访问导致下载失败!
创建学习该书中的项目时,要为每一个项目安装对应环境,否则可能出现环境与项目不匹配而导致无法运行的情况出现。例如pip install d2l时,需要创建一个新环境:conda create -n customname python=3.8,注意customname是由个人以项目相关名称进行命名的。

在运行书籍代码、更新深度学习框架或d2l软件包之前,请始终执行conda activate d2l以 激活运行时环境。要退出环境,请运行conda deactivate。

符号

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1 前言

机器学习(ML)是一类强大的可以从经验中学习的技术,通常采用观测数据或与环境交互的形式。
本书将带领你开启ML之旅,并特别关注DL的基础知识。

1.1 日常生活中的机器学习

dataset
parameter
model
模型族:通过操作参数而生成的所有不同程序(输入-输出映射)的集合。
learning algorithm:使用dataset来选择参数的元程序。

在这里插入图片描述
DL是ML的一个主要分支。

1.2 关键组件

在这里插入图片描述

1.2.1 数据

独立同分布(independently and identically distributed, i.i.d)

样本有时也叫做数据点 (data point)或者数据实例(data instance),通常每个样本由一组称为特征(features,或协变量(covariates))的属性组成。机器学习模型会根据这些属性进行预测。在上面的监督学习问题中,要预测的是一个特殊的属 性,它被称为标签(label,或目标(target))。

当每个样本的特征类别数量都是相同的时候,其特征向量是固定⻓度的,这个⻓度被称为数据的维数(dimensionality)。固定⻓度的特征向量是一个方便的属性,它有助于我们量化学习大量样本。

然而,并不是所有的数据都可以用“固定⻓度”的向量表示。与传统机器学习方法相比,深度学习的一个主要优势是可以处理不同⻓度的数据。

一般来说,数据越多,工作就越容易。数据集的由小变大为现代深度学习的成功奠定基础。注意,仅仅拥有海量数据也不够,还需要正确的数据!

古语:“Garbage in, garbage out.”

ML模型具有inductive bias。

1.2.2 模型

深度学习与经典方法的区别主要在于:DL关注的功能强大的模型,这些模型由神经网络错综复杂的交织在一起,包含层层数据转换,因此被称为深度学习(deep learning)。

1.2.3 目标函数

机器学习中的“从经验中学习”,“学习”指自主提高model完成某些任务的效能。

objective function(目标函数):在ML中,需要定义模型的优劣程度的度量,这个度量在大多数情况是“可优化”的,称为目标函数。

损失函数(loss function,或cost function): 我们通常定义一个目标函数,并希望优化它到最低点。因为越低越好,所以这些函数有时被称为损失函数。

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

通常将可用数据集分成两部分:训练数据集(training dataset)用于拟合模型参数,测试数据集(test dataset)用于评估拟合的模型。

overfitting:一个模型在训练集上表现良好,但不能推 广到测试集。

1.2.4 优化算法

一旦我们获得了一些数据源及其表示、一个模型和一个合适的损失函数,我们接下来就需要一种算法,它能 够搜索出最佳参数,以最小化损失函数。DL中,大多流行的优化算法通常基于一种基本方法‒梯度下降 (gradient descent)。

1.3 各种机器学习问题

下面是一些常⻅机器学习问题和应用,后续将不断引用前 面提到的概念,如数据、模型和训练技术。

Examples of supervised learning problems include classification and regression, and examples of supervised learning algorithms include logistic regression and random forest.

1.3.1 监督学习

监督学习(supervised learning)擅⻓在“给定输入特征”的情况下预测标签。每个“特征-标签”对都称为一 个样本(example)。
虽然监督学习只是几大类 机器学习问题之一,但是在工业中,大部分机器学习的成功应用都是监督学习。

在这里插入图片描述

regression

回归(regression)是最简单的监督学习任务之一。当标签取任意数值(即实数集R)时,称之为回归问题。我们的目标是生成一个模型,它的预测非常接近实际标签值。

总而言之,判断回归问题的一个很好的经验 法则是,任何有关“多少”的问题很可能就是回归问题。

在本书大部分章节中,我们将关注最小化平方 误差损失函数。正如我们稍后将看到的,这种损失对应于我们的数据被高斯噪声破坏的假设。

分类(classification)

classification:预测样本属于哪个类别(category,正式称为类(class))

cross-entropy(交叉熵)
multiclass classification(多元分类)

分类可能变得比二元分类、多元分类复杂得多。

层次分类(hierarchical classification): 宁愿错误地分入一个相关 的类别,也不愿错误地分入一个遥远的类别。

标记问题

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

搜索

如今,搜索引擎使用ML和用户行为模型来获取网页相关性得分,很多学术会议也致力于这一主题。

推荐系统

另一类与搜索和排名相关的问题是推荐系统(recommender system),它的目标是向特定用戶进行“个性化” 推荐。

对于任何给定的用戶,推荐系统都可以检索得分最高的对象集,然后将其推荐 给用戶。以上只是简单的算法,而工业生产的推荐系统要先进得多,它会将详细的用戶活动和项目特征考虑在内。

序列学习

1.3.2 无监督学习

在这里插入图片描述
Examples of unsupervised learning problems include clustering and generative modeling, and examples of unsupervised learning algorithms are K-means and Generative Adversarial Networks.

无监督学习可以回答的问题:

  • 聚类(clustering)问题
  • 主成分分析(principal component analysis)问题
  • 因果关系(causality)和概率图模型(probabilistic graphical models)问题
  • 生成对抗性网络(generative adversarial networks):为我们提供一种合成数据的方法,甚至像图像和 音频这样复杂的结构化数据。

1.3.3 与环境互动

离线学习(offline learning):所有学习都是在算法与环境断开后进行的。

对于监督学习,从环境中收集数据 的过程类似于 图1.3.6。
在这里插入图片描述

分布偏移(distribution shift)的问题

1.3.4 强化学习

如果你对使用机器学习开发与环境交互并采取行动感兴趣,那么你最终可能会专注于强化学习(reinforcement learning)。这可能包括应用到机器人、对话系统,甚至开发视频游戏的人工智能(AI)。深度强化学习(deep reinforcement learning)将深度学习应用于强化学习的问题,是非常热⻔的研究领域。

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

在这里插入图片描述

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

1.4 起源

神经网络(neural networks)的得名源于生物灵感。其核心是当今大多数网络中都可以找到的几个关键原则:

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

1.5 深度学习之路

在这里插入图片描述

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

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

1.6 成功案例

  • 智能助理,如苹果的Siri、亚⻢逊的Alexa和谷歌助手。
  • 数字助理的一个关键要素是准确识别语音的能力。
  • 物体识别同样也取得了⻓足的进步。
  • 游戏曾经是人类智慧的堡垒。
  • 人工智能进步的另一个迹象是自动驾驶汽⻋和卡⻋的出现。

同样,上面的列表仅仅触及了机器学习对实际应用的影响之处的皮毛。例如,机器人学、物流、计算生物学、 粒子物理学和天文学最近取得的一些突破性进展至少部分归功于机器学习。因此,机器学习正在成为工程师 和科学家必备的工具。

AI的伦理问题。

1.7 特点

到目前为止,我们已经广泛地讨论了机器学习,它既是人工智能的一个分支,也是人工智能的一种方法。虽 然深度学习是机器学习的一个子集,但令人眼花缭乱的算法和应用程序集让人很难评估深度学习的具体成分 是什么。这就像试图确定披萨所需的配料一样困难,因为几乎每种成分都是可以替代的。
深度学习是“深度”的,模型 学习了许多“层”的转换,每一层提供一个层次的表示。由于表示学习(representation learning)目的是寻 找表示本身,因此深度学习可以称为“多级表示学习”。

最后,深度学习社区引以为豪的是,他们跨越学术界和企业界共享工具,发布了许多优秀的算法库、统计模 型和经过训练的开源神经网络。正是本着这种精神,本书免费分发和使用。我们努力降低每个人了解深度学习的⻔槛,我们希望我们的读者能从中受益。

1.8 小结

在这里插入图片描述

1.9 练习

2 预备知识

tensor(张量)

2.1 数据操作

2.1.1 入⻔

在这里插入图片描述
在这里插入图片描述

注意,通过改变张量的形状, 张量的大小不会改变。

2.1.2 运算符

我们的兴趣不仅限于读取数据和写入数据。我们想在这些数据上执行数学运算,其中最简单且最有用的操作 是按元素(elementwise)运算。它们将标准标量运算符应用于数组的每个元素。

2.1.3 广播机制(broadcasting mechanism)

这种机制的工作方式如 下:首先,通过适当复制元素来扩展一个或两个数组,以便在转换之后,两个张量具有相同的形状。其次,对 生成的数组执行按元素操作。

2.1.4 索引和切片

就像在任何其他Python数组中一样,张量中的元素可以通过索引访问。与任何Python数组一样:第一个元素 的索引是0,最后一个元素索引是-1;可以指定范围以包含第一个元素和最后一个之前的元素。

2.1.5 节省内存

在这里插入图片描述

2.1.6 转换为其他Python对象

2.1.7 小结

深度学习存储和操作数据的主要接口是张量(n维数组)。它提供了各种功能,包括基本数学运算、广 播、索引、切片、内存节省和转换其他Python对象。

2.1.8 练习

2.2 数据预处理

注意编程实践。

2.2.1 读取数据集

2.2.2 处理缺失值

2.2.3 转换为张量格式

2.2.4 小结

  • pandas软件包是Python中常用的数据分析工具,pandas可以与张量兼容。
  • 用pandas处理缺失的数据时,我们可根据情况选择用插值法和删除法。

2.3 线性代数

2.3.1 标量(scalar)

表达式c = 5 / 9 (f - 32),符号c和f 称为变量(variable),它们表示未知的标量值。

2.3.2 向量

⻓度、维度和形状

在这里插入图片描述
在这里插入图片描述

2.3.3 矩阵

在这里插入图片描述

2.3.4 张量

在这里插入图片描述

2.3.5 张量算法的基本性质

在这里插入图片描述

将张量乘以或加上一个标量不会改变张量的形状,其中张量的每个元素都将与标量相加或相乘。

2.3.6 降维

在这里插入图片描述

2.3.7 点积(Dot Product)

3 线性神经网络

4 多层感知机

5 深度学习计算

6 卷积神经网络

7 现代卷积神经网络

8 循环神经网络

9 现代循环神经网络

10 注意力机制

11 优化算法

12 计算性能

13 计算机视觉

14 自然语言处理:预训练

15 自然语言处理:应用

16 附录:深度学习工具

Bibliography

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/133945.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Redis】Lua脚本在Redis中的基本使用及其原子性保证原理

文章目录 背景一、Eval二、EvalSHA三、Redis 对 Lua 脚本的管理3.1 script flush3.2 script exists3.3 script load3.4 script kill 四、Lua在Redis中原子性执行的原理 背景 Lua 本身是一种轻量小巧的脚本语言,在Redis2.6版本开始引入了对Lua脚本的支持。通过在服务…

Hadoop源码阅读(二):DataNode启动

说明: 1.Hadoop版本:3.1.3 2.阅读工具:IDEA 2023.1.2 3.源码获取:Index of /dist/hadoop/core/hadoop-3.1.3 (apache.org) 4.工程导入:下载源码之后得到 hadoop-3.1.3-src.tar.gz 压缩包,在当前目录打开Pow…

【算法|虚拟头节点|链表】移除链表元素

Leetcode203 移除链表元素 题目描述: 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出&#xf…

通过curl命令分析http接口请求各阶段的耗时等

目录 一、介绍二、功能1、-v 输出请求 响应头状态码 响应文本等信息2、-x 测试代理ip是否能在该网站使用3、-w 额外输出查看接口请求响应的消耗时间4、-o 将响应结果存储到文件里面5、-X post请求测试 (没测成功用的不多) 一、介绍 Curl是一个用于发送和接收请求的命令行工具和…

使用Python CV2融合人脸到新图片--优化版

优化说明 上一版本人脸跟奥特曼图片合并后边界感很严重,于是查找资料发现CV2还有一个泊松函数很适合融合图像。具体代码如下: import numpy as np import cv2usrFilePath "newpic22.jpg" atmFilePath "atm2.jpg" src cv2.imrea…

基于matlab实现的额 BP神经网络电力系统短期负荷预测未来(对比+误差)完整程序分享

基于matlab实现的额 BP神经网络电力系统短期负荷预测 完整程序: clear; clc; %%输入矢量P(15*10) P[0.2452 0.1466 0.1314 0.2243 0.5523 0.6642 0.7105 0.6981 0.6821 0.6945 0.7549 0.8215 0.2415 0.3027 0; 0.2217 0.1581 0.1408 0.23…

【JVM 内存结构丨堆】

堆 定义内存分配特点:分代结构对象分配过程Full GC /Major GC 触发条件引用方式堆参数堆内存实例 主页传送门:📀 传送 定义 JVM(Java Virtual Machine)堆是Java应用程序运行时内存管理的重要组成部分之一。堆内存用于存储Java对象…

深度思考ES面经

1 推荐文章 2万字详解,吃透 Elasticsearch 2 什么是倒排索引,为什么这么叫? 倒排索引(Inverted Index)是一种为快速全文搜索而设计的数据结构。它被广泛应用于搜索引擎,其中 Elasticsearch(简…

CVPR2023 RIFormer, 无需TokenMixer也能达成SOTA性能的极简ViT架构

编辑 | Happy 首发 | AIWalker 链接 | https://mp.weixin.qq.com/s/l3US8Dsd0yNC19o7B1ZBgw project, paper, code Token Mixer是ViT骨干非常重要的组成成分,它用于对不同空域位置信息进行自适应聚合,但常规的自注意力往往存在高计算复杂度与高延迟问题。…

软文推广在企业中运用的优势有哪些?

随着互联网的发展,越来越多的企业在推广方式上已经逐渐脱离于传统媒体,软文推广已经成为了企业宣传的主要方式。也有不少企业来找盒子进行推广,接下来媒介盒子就来告诉大家,企业进行软文推广的优势有哪些? 成本低 传统…

ELK 企业级日志分析系统 ELFK

目录 一、概述 二、组件介绍 2.1、ElasticSearch 2.2、Kiabana 2.3、Logstash 2.4、可以添加的其它组件:Filebeat 2.5、缓存/消息队列(redis、kafka、RabbitMQ等) 2.6、Fluentd 三、ELK工作原理 四、实例演示 1.ELK之 部署"E&q…

Leetcode 剑指Offer

求 12...n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 示例 1: 输入: n 3 输出: 6示例 2: 输入: n 9 输出: 45 一、信息 1.求一个等差数列的求和 2.要求不能使…

lua环境搭建数据类型

lua作为一门计算机语言,从语法角度个人感觉还是挺简洁的接下来我们从0开始学习lua语言。 1.首先我们需要下载lua开发工具包 在这里我们使用的工具是luadist 下载链接为:https://luadist.org/repository/下载后的压缩包解压后就能用。 2.接下来就是老生…

ARM 相关概念2

一、汇编中三种符号(汇编指令、伪指令、伪操作) 二、汇编基本格式 三、数据操作指令 3.1 数据搬移指令mov/mvn ① 示例 ② 立即数 0xff000000 >判断的数 1111 1111 0000 0000 0000 0000 0000 0000 >判断的数 0000 0000 0000 0000 0000 0000 1111…

企业架构LNMP学习笔记51

企业案例使用: 主从模式: 缓存集群结构示意图: 去实现Redis的业务分离: 读的请求分配到从服务器上,写的请求分配到主服务器上。 Redis是没有中间件来进行分离的。 是通过业务代码直接来进行读写分离。 准备两台虚…

华为云云耀云服务器L实例评测|部署前后端分离项目

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 学习测评 ✨特色专栏: MyS…

2022年全国研究生数学建模竞赛华为杯D题PISA架构芯片资源排布问题求解全过程文档及程序

2022年全国研究生数学建模竞赛华为杯 D题 PISA架构芯片资源排布问题 原题再现: 一、背景介绍 芯片是电子行业的基础,在当前日益复杂的国际形势下,芯片成了各个大国必争的高科技技术。本课题关注网络通信领域的交换芯片,传统的交…

Python爬虫逆向猿人学刷题系列——第七题

题目:采集这5页中胜点列的数据,找出胜点最高的召唤师,将召唤师姓名填入答案中 地址:https://match.yuanrenxue.cn/match/7 本题主要是考察字体的动态变化,同样也是从字体文件下手构造出映射关系就好,但本题…

TuyaOS开发学习笔记(2)——NB-IoT开发SDK架构、运行流程

一、SDK架构 1.1 架构框图 基于 TuyaOS 系统,可以裁剪得到的适用于 NB-IoT 协议产品接入的 SDK。SDK 将设备配网、上下行数据通信、产测授权、固件 OTA 升级等接口进行封装,并提供相关函数。 1.2 目录结构 1.2.1 TuyaOS目录说明 adapter:T…

70、Spring Data JPA 的 自定义查询(全手动,自己写完整 SQL 语句)

1、方法名关键字查询(全自动,既不需要提供sql语句,也不需要提供方法体) 2、Query查询(半自动:提供 SQL 或 JPQL 查询) 3、自定义查询(全手动) ★ 自定义查询&#xff08…