《深度学习图解》读书笔记

本文最后更新于:2023年1月7日 晚上

先看看一个有趣的问题:“国王 - 男人 + 女人 = ?” 自然语言的神经网络NLP用了词向量解决了这个问题。答案是女王 Queen。

深度学习是人工智能的一个分支,受到人类大脑的启发,致力于指导计算机用神经网络进行学习。在线文本翻译、自动驾驶、商品推荐和智能语音助手等一系列令人兴奋的现代技术应用领域,都在深度学习的辅助下取得了突破性进展。

本书主要内容包括:

  • 深度学习的基础科学原理。
  • 自行设计和训练神经网络。
  • 隐私保护的知识,包括联邦学习。
  • 帮助你继续深度学习之旅的建议。

不要担心你在数学上遇到的困难。我可以向你保证,我遇到的困难甚至更大。 – 阿尔伯特 · 爱因斯坦
“噢,深思熟虑的计算机,” 他说,“我们设计你来执行的任务是这样的。我们想让你告诉我们…” 他停顿一下,“答案”。 – 道格拉斯 · 亚当斯《银河系漫游指南》

微信图片_20221109205616.jpg

微信图片_20221109205622.jpg

1. 机器如何学习

使计算机不需要显示编程就能拥有学习能力的研究领域。 – 亚瑟 · 塞缪尔
image-20221109172719658

1
机器学习 ≈ 先观察,后照做

机器学习分类:

  • 有监督的:对结果进行打标签,比如阴性、阳性。
  • 无监督的:不对结果打标签,自动根据想形似分类。

或者

  • 参数: 参数模型的特征是具有固定数量的参数。
  • 非参数:分参数模型的参数数量是无线的(由数据决定)。

1.1 监督机器学习

image-20221109172755153

有监督的机器学习可以直接模仿两个数据集之间的模式。它总是尝试获取一个输入数据集并将其转换为对应的输出数据集。比如:

  • 使用图像的像素来检测猫存在与否
  • 使用你喜欢的电影来预测你可能喜欢的电影
  • 使用人们所说的话来预测他们是高兴还是难过
  • 使用天气传感器数据预测下雨的概率
  • 使用汽车发动机传感器预测最佳调节设置
  • 使用新闻数据预测明天的股价
  • 使用输入的数字预测其两倍规模的值
  • 使用原始音频文件预测音频文本
    image-20221109172805674

1.2 无监督机器学习

监督学习是给训练数据的结果打标签,比如天气预测是下雨、下雪、晴天、阴天等。
无监督机器学习是不给结果数据打标签,然后在对数据进行分类。比如google分类文章为:科技类、地理类、娱乐类等等。
image-20221109172813928

2. 神经网络

神经网络的步骤: 预测 - 比较 - 学习 模式。

2.1 预测导论:前向传播。

神经网络如何学习? 秘诀是试错!首先,它试图做出预测。然后,它会看到预测的结果是过高合适过低。最后,它改变权重(增大或者减小),以便下次看到相同的输入时能够给出更准确的预测。
image-20221109172823583
image-20221109172831613

2.2 梯度下降

2.2.1 冷热学习

冷热学习:冷热学习指的是通过扰动权重来确定向哪个方向调整可以使得误差的降低幅度最大,基于此将权重的值向那个方向移动,不断重复这个过程,直到误差趋于0.
冷热学习效率低下。你必须通过多次预测才能进行一次权重的更新。
冷热学习就,有时准确预测出的目标是不可能的。如果选择的步长太大,就会导致在一定周围来回波动。

  • 什么是比较: 比较为预测的 “误差”提供度量。
  • 学习:“学习” 告诉权重应该如何改变以降低误差。

2.2.2 梯度下降

image-20221109172845067
梯度下降是向着导数的方向进行修正,使得成本函数逐步减少,直到为0.

2.3 反向传播

  • 关联抽象:神经网络视图寻找在输入层和输出层之间的直接和间接关联,这种关联由输入和输出数据集决定。
  • 局部关联抽象:任何给定的权重集合通过优化来学习如何关联输入层与输出层的要求。

因为结果是准确的,根据结果也就是最后一层,从后往前逐步调整中间层的权重,这就是反向传播。

  • 全局关联抽象:前一层神经网络所应该得到的值,可以通过后一层神经网络(所应该得到的)的值和它们之间的权重的乘积来确定。这样,后面的层就可以告诉前面的层它们需要什么样的信号,从而最终找到与输出的相关性。这种交叉通信成为反向传播。
    image-20221109172854701
  • 底线: 预测结果是输入数据的加权和。学习算法对与输出相关的输入所对应的权重以向上(向1的方向)压力作为奖励。而对于与输出不相关 的输入所对应的权重以向下的(向0 的方向)压力作为惩罚。输入数据的加权和通过将无关输入所对应的权重项推向0,可以找到输入和输出之间存在完美相关性。
  • 深度学习的最大弱点:过拟合。所有的权值都有误差。如果某个特性的权重配置意外地在预测数据集和输出数据集之间建立了完美的吻合(比如是的error == 0),而此时并没有给真正最重要的输入赋予最大的权重,那么神经网络将停止学习。深度学习所面临的最大挑战是训练你的神经网络去泛化而不仅仅是记忆。
  • 选择性相关的秘密:通过再任何中间节点为负时关闭它,你能够允许神经网络选择性接受来自不同输入的相关性。这对于两层神经网络来说是不可能的,因此,三层网络具有更强的能力。

创建具有相关性的“中间数据” 是深度学习的本质。深度学习就是创建从数据集到预测结果的中间层,中间层中的每个节点表示输入数据中不同类型的组合模式是否存在。

良好的神经网络结构能够引导信号,使相关性易于发现。优秀的神经网络结构还可以过滤噪声以防止过拟合。

2.4 正则化

正则化:正则化是用于机器学习模型中鼓励泛化的方法的一个子集,通常通过提高模型学习训练数据的细粒度细节的难度来实现。
行业标准正则化:dropout
方法:在训练过程中随机关闭神经元(设置为0)。
dropout为什么有效:通过每次随机训练神经网络中的一小部分,dropout能够让一张大网络向小网络一样进行学习 – 较小的神经网络不会发生过拟合。

2.5 激活函数

激活函数式在预测过程中应用于某一层神经元的函数。
image-20221109172903452
约束1:函数必须连续且定义域是无穷的。
约束2:好的激活函数式单调的,不会改变方向。
约束3:好的激活函数是非线性的(扭曲或反转)。
约束4:合适的激活函数(及其导数)应该可以高效计算。

2.5.1 标准输出层激活函数

你的选择取决于你想预测什么。
类型1:预测原始数据值(没有激活函数)
类型2:预测不相关的“是” 或 “否”的概率(sigmoid)
类型3:预测 “哪一个”的概率(softmax)

3. CNN卷积神经网络概论:关于边与角的神经学习

在多个位置复用权重:如果需要在多个位置检查相同的特征,请使用相同的权重!
卷基层:化整为0,将许多小线性神经元层在各处重用。
卷积层背后的核心思想是,它不是一个大的、稠密的线性神经元层,在其中从每个输入到每个输出都有连接,而是由很多非常小的线性层构成,每个线性层通常拥有少于25个输入和一个输出,我们可以在任意输入位置使用它。每个小神经元层被称为卷积核,但它实际上只是一个很小的线性层,接收少量的输入并作为单一输出。
image-20221109172912613
复用权重是深度学习中最重要的创新之一。

网络结构的诀窍:当神经网络需要在多处使用相同的想法时,应试着在这些地方使用相同的权重。这样做会使哪些权重有更多的样本可以学习并提高泛化能力,从而让权重更智能。

在过去5年(或更久远一些),深度学习领域的许多重大发展都是对这一理念的重复。卷积神经网络、递归神经网络(RNN)、词向量,以及最近发表的胶囊网络都可以通过这个概念理解。当你知道一个网络在很多地方都需要用到相同的思想时,可以强迫它在这些地方使用相同的权重。

想想你需要了解什么才能确定图像中是否有一只猫。首先,你需要了解颜色的概念,然后了解线、边、角和简单的形状,还有与猫对应的这些低层次特征的组合。很可能神经网络也需要学习(像线和边)这些较低层次的特征,而检测线和边的智能在权重中学习。

4. NLP自然语言处理 Natural Language Processing

能够理解自然语言中的神经网络:国王 - 男人 + 女人 = ?
image-20221109172920586.png

4.1 NLP 可被划分为一系列任务或挑战的集合

  • 使用文档中的字符,预测单词的开始和结束的位置。
  • 使用文档中的单词,预测句子的开头和结束位置。
  • 使用句子中的单词,预测每个单词的词性。词袋模型:给定电影评论中的词汇,预测其情绪。
  • 在句子中,使用单词,预测短语的开头和结尾。
  • 在句子中,使用单词,预测命名实体(例如人、地点、事务)指代的开始和结束的位置。
  • 在文档中,使用句子,预测哪个代词指代同一个人/地点/事物。
  • 在句子中,使用单词,预测句子的情感色彩: IMDB电影评论数据集预测人们发表的评论是正面还是负面的。

4.2 神经网络研究NLP的基本原理

神经网络并不能真正从数据中学习,它们知识使损失函数最小化。
image-20221109172929841.png

  1. 首先概述了自然语言中的主要问题,
  2. 然后探讨了神经网络如何在单词的层次上,利用单词的嵌入向量来建模语言。还讲解了如何选择损失函数来更改词向量所提取的属性。
  3. 最后,神经网络学到的最神奇现象:单词类比。

4.3 单词嵌入表达的对比、神经元

单词嵌入表达的对比:对于每个输入单词,通过选择 weights_0_1 中对应的行,你可以筛选其输出给隐藏层神经元的权重列表。行中的每个条目表示从其中的单词到每个隐藏层神经元的权重。因此,要找出与目标条目最相似的单词,只需要将每个单词的向量(矩阵的行)与目标条目的向量进行比较。这里选择的比较方法被称为欧氏距离。

神经元:其意义完全基于所预测的目标标签。
如果要找一项能够让神经网络学到更有价值的权重的任务,那么经过处理的“填空”任务可能颇为合适。为什么使用这个任务呢?收现金,它有几乎无线的训练数据(来自于互联网),这意味着神经网络能够使用几乎无限的信号来学习关于单词的更细微信息。此外,要准确地填补语句中的空白,至少需要对真实世界的语义上线文有一定的了解。

4.4 国王 - 男人 + 女人 ≈ 女王

image-20221109204535443.png

单词类比是先前投建的网络的一个有趣结果。
数据中现有属性的线性压缩表达。
当单词类比这一特性首次被发现时,它引起了一系列轰动,研究者们推断出了这种技术在许多领域可能发挥作用的实践。就其本身而言,它是一个令人惊叹的特性,围绕着生成各种各样的词嵌入向量,单词类比技术确实创造了一个名副其实的产业链。但是近年来,单词类比这一特性本身并没有发生颠覆性的发展,自然语言处理当前的大部分工作都几种在循环网络架构上。比如有1750亿个参数的GPT-3。

5. 介绍自动优化:搭建深度学习框架

框架是前向与反向传播逻辑的高效方便的抽象。
优秀的工具能够减少错误、加速开发并提高运行性能。
深度学习框架:PyTorch、TensorFlow、Keras、Lasagne、DyNet。

5.1 张量 Tensor

张量是向量与矩阵的抽象形式:向量是一维张量,矩阵是二维张量,而更高维的被称作 n 为张量。

5.2 如何学习一个框架。

学习新框架的一般流程是先找到尽可能简单的样例代码,微调代码并了解其中 autograd 系统的 API,然后一段一段地修改样例代码直到写出你关心的试验。
简单而言,框架就是 autograd 加上一组预先定义好的神经元层和优化器。

6. 像莎士比亚一样写作的神经网络:变长数据的递归层、长短期记忆网络LSTM

任意长度的挑战:让我们用神经网络建模任意长度的序列!

信息是如何存储在这些向量嵌入中的? 对词嵌入进行平均时,其平均形状能够保持。

神经网络是如何把一堆变长信息放入一个定长盒子里的?事实是,句子向量没有编码句子的所有内容。递归神经网络的主要目的不仅在于这些向量记住了什么,也在于它们忘记了什么。在预测下一个单词的例子中,大多数 RNN 学到了最近的几个单词是必要的,以及学会了忘记更远的单词历史(也可以说,不为其创建单独的模式)。

6.1 长短期记忆(LSTM)元胞

长短期记忆网络(LSTM, Long Short - Term Memory)的神经网络:通过非线性函数和门限函数形成的长短期记忆网络的神经网络。
LSTM是业内处理梯度消失和梯度激增的标准模型。
门限复制技巧:LSTM通过复制前一个隐藏状态并根据需要添加或移除信息来创建一个隐藏状态。LSTM使用的添加或移除信息的机制叫作门限(Gate)。
LSTM门限的语义与内存的读写相近。

LSTM是强大到不可思议的模型。
LSTM学会生成的莎士比亚语言的分布不容小觑。语言是一种复杂到难以置信的统计分布,而LSTM能够达到很好的效果,这件事使大家感到震惊。这种模型的各类变种现在是实现相当数量任务的领先方法。而且,除了词嵌入和卷积层,他无疑会在很长一段时间内作为我们可以依赖的一种工具而存在。

7. 在看不见的数据上做深度学习:联邦学习导论

深度学习的隐私问题:使用深度学习常常意味着你可以访问你的训练数据。
2017年Google发布了激动人心关于联邦学习的论文和文章:如果不把训练数据的语料集中到一个地方训练,而是模型一生成就把它传到数据那边训练,得到反馈后传回训练源头,继续调优。如此反复,模型得到提升,用户隐私也得到保护。

联邦学习是深度学习最重要的突破之一。我坚信联邦学习会在未来几年改变深度学习的图景。它会解锁之前因为过于敏感而不能使用的新数据集,并通过由此产生的新的创业机会,创造巨大的社会效益。这是加密算法与人工智能研究之间广泛融合的一部分,在我看来,这是这十年来最令人振奋的融合。

8. 学习建议

  1. 开始学习 PyTorch。本书的教程搭建的深度学习框架与 PyTorch很相似。
  2. 开始另一个深度学习课程。在YouTube上找擅长深度学习的大学或AI实验室:Stanford、MIT、Oxford、Montreal、NYU,或者选修 fast.ai 或 Udacity的项目。
  3. 找一本偏数学的深度学习材料。推荐 Deep Learning(MIT 出版社 2016),by Ian Goodfellow, Yoshua Bengio, Aaron Courville.
  4. 开设博客讲授深度学习. 写得好的话,会出现在Reddit或Hacker News上。
  5. Twitter 上接触世界各地的是最多的,追踪最新进展。
  6. 实现学术论文: Twitter + 你的博客 = 学术论文教程。
  7. 设法使用GPU。 GPU 可以让训练速度加快 10 ~ 100 倍已经不是秘密,但是这意味着你可以把迭代自己的想法的速度提高100倍。 我在职业生涯中犯过的错误之一就是太晚开始用 GPU。 不妨想 NVIDIA 买一块 GPU,或者用 Google Colab notebooks可以访问免费的 K80s。
  8. 成为从业者:你越有时间做深度学习,你学得越快。
  9. 参与开源项目:在AI领域建立关系网和提升职业发展的方式是成为开源项目的核心开发者。大型的深度学习框架PyTorch, TensorFlow, Keras.
  10. 发展你的本地社区. 我真正学会深度学习是因为我喜欢和其他也在学习的朋友一起玩。

《深度学习图解》读书笔记
https://liegu0317.top/2022/11/09/Deep-Learning-illustrated/
作者
liegu
发布于
2022年11月9日
许可协议