分类目录归档:动手学习深度学习系列

动手学习深度学习系列笔记——导读


前言

《动手学习深度学习》是李沐老师(AWS 资深首席科学家,美国卡内基梅隆大学计算机系博士)主讲的一系列深度学习视频。本笔记记录了该课程的重点知识。

课程简介

通常我们提到深度学习,常常会忘记深度学习只是机器学习的一小部分,而认为它是独立于机器学习的单独模块。这是因为机器学习作为一门历史更悠久的学科,在深度学习没有问世之前,在现实世界的应用范围很窄。在语音识别、计算机视觉、自然语言处理等领域,由于需要大量的领域知识并且现实情况异常复杂,机器学习往往只是解决这些领域问题方案中的一小部分。但是就在过去的几年里,深度学习的问世和应用给世界带来了惊喜,推动了计算机视觉、自然语言处理、自动语音识别、强

Read more

动手学习深度学习系列笔记——优化算法


72.优化算法

目录

2.局部最小 vs 全局最小

3.凸集和凸函数

  • 凸集:形象化来说,就是这个集合上任意两个点连一条线,这个线在集合里面
  • 凸函数:形象上来说函数上任取两个点连线,函数都在该线下面
  • 凸优化问题:局部最小一定是全局最小。严格凸优化问题有唯一的全局最小。
    • 凸:线性回归,softmax回归
    • 非凸:其他(MLP,CNN,RNN,attention)

4.梯度下降

  • 梯度下降——最简单的迭代求解算法
  • 随机梯度下降
    • 求导

Read more

动手学习深度学习系列笔记——BERT微调


70 BERT微调

目录

1.intro

与图片分类不同,BERT预训练时使用的两个任务没有什么实际应用场景,所以使用BERT时多需要进行微调。

BERT对每一个token都返回一个特定长度的特征向量(课堂演示为128,bert-base是768,bert-large是1024),这些特征向量抽取了上下文信息。不同的任务使用不同的特征。

2.具体应用

2.1句子分类

将句首的\<CLS>token对应的向量输入到全连接层分类。对于一对句子也是同理,句子中间用\<SEP

Read more

动手学习深度学习系列笔记——BERT预训练


BERT预训练

1.目录:

2.BERT:

2.1 NLP里的迁移学习

  • 使用预训练好的模型来抽取词,句子的特征

    • 例如word2vec或语言模型
  • 不更新预训练好的

Read more

动手学习深度学习系列笔记——Transformer


68-Transformer

目录

2.多头注意力

  • 对同一key,value,query,希望抽取不同的信息

    • 例如短距离关系和长距离关系
  • 多头注意力使用h个独立的注意力池化

    • 合并各个头(head)输出得到最终输出

  • 数学表

Read more

动手学习深度学习系列笔记——注意力分数


- 65 注意力分数

- 掩蔽softmax操作

- 加性注意力

- 缩放点积注意力

- 小结

65 注意力分数

  • 在上一节中,我们使用高斯核来对查询和键之间的关系建模。我们可以将上一节中的高斯核函数部分视为注意力评分函数,简称评分函数,然后把这个函数的输出结果输入到softmax函数中进行运算。 通过上述步骤,我们将得到与键对应的值的概率分布(即注意力权重)。 最后,注意力汇聚的输出就是基于这些注意力权重的值的加权和。
import math
import torch
from torch import nn
from d2l import torch as d2l

掩蔽softmax操

Read more

动手学习深度学习系列笔记——束搜索


束搜索

在序列生成问题中,常用的方法是一个个词元地进行生成,但是先前步生成的词元会影响之后词元的概率分布,为此,我们需要使用搜索算法来得到一个较好的序列

贪心搜索

贪心搜索即每个时间步都选择具有最高条件概率的词元。 $$ y{t'} = \operatorname*{argmax}{y \in \mathcal{Y}} P(y \mid y1, \ldots, y{t'-1}, \mathbf{c}) $$ 我们的目标是找到一个最有序列,他的联合概率,也就是每步之间的条件概率的乘积,最大。 $$ \prod{t'=1}^{T'} P(y{t'} \mid y1, \ldots, y{t'-1}

Read more

动手学习深度学习系列笔记——序列到序列学习


62-序列到序列学习

1. 应用举例:机器翻译

  • 给定一个源语言的句子,自动翻译成目标语言
  • 这两个句子可以有不同的长度

2. 模型架构:Seq2seq

  • 序列到序列模型由编码器-解码器构成。

  • 编码器RNN可以是双向,由于输入的句子是完整地,可以正着看,也可以反着看;而解码器只能是单向,由于预测时,只能正着去预测。

  • 编码器,解码器采用不同的RNN,此RNN也可以是GRU,LSTM等。

3. 编码器-解码器细节

  • 编码器的RNN没有连接输出层

  • 编码器最后时间步的隐状态用作解码器初始隐状态(图中箭头的传递)

4. 训练和推理

  • 第3节中提到编码器没有输出层,只有解码器有,于是

Read more

动手学习深度学习系列笔记——编码器-解码器架构


编码器-解码器架构

CNN中的解释

考虑一个CNN模型:

整个CNN实际上可以看作一个编码器,解码器两部分。

  • 底层的神经网络,也就是编码器将输入编码成能被模型识别的中间表达形式,也就是特征
  • 解码器将中间结果解码为输出

RNN中的解释

对于RNN而言,同样有着类似的划分

  • 编码器将输入文本表示为向量
  • 解码器将向量表示为输出

抽象的编码器-解码器架构

指一个模型被分为两块:

  • 一块是编码器,也叫encoder,用于将输入处理为一个中间状态
  • 一块是解码器,也叫decoder,用于将中间状态表示为输出
  • 解码器也可以有额外的输入提供信息

Read more

动手学习深度学习系列笔记——深层循环神经网络


58 深层循环神经网络

目录

1.深层循环神经网络

之前讲的RNN都只有一个隐藏层(序列变长不算是深度),而一个隐藏层的RNN一旦做的很宽就容易出现过拟合。因此我们考虑将网络做的更深而非更宽,每层都只做一点非线性,靠层数叠加得到更加非线性的模型。

浅RNN:输入-隐层-输出

深RNN:输入-隐层-隐层-...-输出

(课程视频中的图片有错误,最后输出层后一时间步是不受前一步影响的,即没有箭头)

2.公式

![](http://latex.codecogs.com/svg.latex?\mathbf{H}_t^1=f_1(\mathb

Read more