2021 MIT || 麻省理工机器学习导论(二)

YOUTube:MIT 6.S191: Introduction to Deep Learning(要梯子,可以去B站上找找,好像也有)

这些是我在学习一点机器学习后,回过头来重新学习相关的基础,内容主要包含了上课的笔记,以及一些见解。关于各个模块更详细的内容请另寻它处,这篇笔记主要是对机器学习框架的构建。

上一节课,我们介绍了感知机,以及一些神经网络的架构。

这节课,我们开始一步一步的介绍如何利网络来处理序列数据。

序列的意义(The significance of sequence)

给你一个球,让你预测这个球接下来的运动轨迹

由于我们对球的不了解,所以我们显然只能随意的猜测。

但是,如果我们给出球之前的运动轨迹,那么我们可以有根据的预测出球接下的轨迹。

而对于序列的预测,就跟这个球的预测相似。

生活中的序列

  • 音频:一段完整的音频可以被切割成一个序列

⟶\longrightarrow⟶

文本:一个句子可以被拆成一个个单词或字母。

时间步(time step)

每一个独立的字母或者单词,可以被看做序列中的时间步。

用处

我们可以通过序列预测生活中的很多东西:

动作预测,基因序列预测,气候预测等等

序列网络模型

这个是我们上节课中介绍的预测模型:

用于预测一个学生是否可以通过考试,这种模型并没有与序列相关。

以下三种是三种常见的序列模型

多对一

输入一段话(多个输入),得到这个句子的情绪(一个输出)

一对多

输入一张图片(一个输入),得到用一段话来描述(多个输出)

多对多

文本翻译

那么为了得到序列间的关系,网络架构应该发生怎么样的变化呢?

架构

这个是上节课我们介绍的多层感知机,它的输入x代表一个时间步

我们在接下来的介绍中将它简化为下图(我们暂且叫它细胞块)

其中xtx_txt​​​代表时间步为t的输入。

我们的输入为xtx_txt​

输出为向量yt^\hat{y_t}yt​^​​

递归的神经元

经元一个时间步的向量输入后,都会得到一个对应的输出向量。而每一个细胞块之间是不存在联系。为了获取前后时间步之间的联系,我们便把这个细胞块得到的信息传递(

每一个时间步的向量输入后,都会得到一个对应的输出向量。而每一个细胞块之间是不存在联系。为了获取前后时间步之间的联系,我们便把这个细胞块得到的信息传递(hth_tht​)给下一个细胞块,以便于下一个细胞块在做判断的时候可以结合过去的信息。
y^=f(xt,ht−1)\hat{y}=f(x_t,h_{t-1}) y^​=f(xt​,ht−1​)
这个图片可以很好的体现出递归的思想:

记忆块的获取

ht=fW(xt,ht−1)h_t=f_W{(x_t,h_{t-1})} ht​=fW​(xt​,ht−1​)

fWf_WfW​是带有参数的的函数(即可以通过训练改变参数)。可以理解为一些卷积+激活函数的操作。

更新隐藏状态

ht=tanh(WhhTht−1+WxhTxt)h_t=tanh(W^T_{hh}h_{t-1}+W^T_{xh}x_t) ht​=tanh(WhhT​ht−1​+WxhT​xt​)

得到输出

y^=WhyTht\hat y=W^T_{hy}h_t y^​=WhyT​ht​

PS

注意,其中的参数矩阵Whh,Why,WxhW_{hh},W_{hy},W_{xh}Whh​,Why​,Wxh​在不同时间步中是共用的,这样可以降低模型的大小。

优点

  • 解决长变量序列
  • 建立长范围的依赖
  • 包含顺序信息
  • 共享参数

我们把这种网络叫做Recurrent Neural Network (RNN)

RNN

我们要搭建一个预测单词循环神经网络

input

网络肯定不能直接理解单词的含义,所以我们应该把单词转化为用数字代表的向量,把数字输入网络。

我们要把每个单词转化为固定长度的向量。

one-hot

下面介绍one-hot:

  • 词库中有N个词,则存在一个长的N向量
  • 对于这个向量的每个下标都代表一个单词
  • 如果这个要表示cat这个单词,并且cat所处的下标为2
  • 那么cat这个单词就可以转化为一列长为N,除了下标为2的值为1,其他值都为0的向量(存在为1,不存在为0)

我们将词向量输入到网络中,这样我们就可以将词库中的词下标索引映射到一个低纬的空间(上图最右边),这样就可以把相关联的词汇划分在一起

当然,还有一些其他的转化方式,请自行搜索

需求

作为预测句子,它肯定要满足一下许多条件:

可以输入一定范围内任意长度的句子

可以获得长距离的信息

可以在考虑句子中词的顺序

我们看到,RNN几乎满足所以需求。

Backpropagation Through Time(BPTT)随时间的反向传播

所有的loss按照时间步的顺序,从最近的时间步到最开始的序列进行回流

在反向传播的过程中计算梯度,涉及到梯度与权重矩阵的相乘。

如果我们要计算梯度h0h_0h0​​,那么其中涉及到WhhW_{hh}Whh​的多次相乘。这就可能会造成一些问题。

  • 梯度爆炸:许多相乘的值都>1,那么势必会导致最后的梯度变的特别大

  • 梯度消失:许多值都<1则会造成,梯度变小趋近于0

    在较短序列中,由于乘的权重个数较少,不易出现问题。但是RNN很明显对长序列的处理,心有余,而力不足。

解决方法

激活函数

选用ReLU为激活函数

其在x<0时梯度为0,在x>0时,梯度不变,恒为1。

所以使用ReLU函数可以防止在x>0时,f’的梯度收缩。

初始化权重

把权重初始化为单位矩阵,这样就能防止权重收缩为0

门控模块

引入一个机制,用来筛选,什么信息能通过,什么不能通过。

其现在作为循环神经网络中最常用的。

Long Short Term Memory networks(LSTMs)长短时记忆网络就是依赖这个门控机制进行搭建的。下面我们便来介绍一下LSTMs。

LSTMs

LSTMs是大多数顺序网络中主力。

这个是RNN中的结构

下面是STMLs的结构

  • :点乘
  • :sigmoid

注意:

门控

该模块主要是添加了一个控制信息的能力,我们来看看这个是怎么实现的。

sigmoid 是把输入转化为0到1之间。

我们可以把其看作为调制以及捕获信息,在判断信息的重要性。特别重要就为1,全部保留。无用的信息,就为0。

过程

一个LSTMs模块一共包括4步:

  1. Forget

忘记之前的不相关的状态

  1. store

得到当前与过去有关的信息

  1. update

更新得到ctc_{t}ct​

  1. Output

根据ct−1ht−1xtc_{t-1} h_{t-1} x_tct−1​ht−1​xt​得到输出

通过这样的结构,网络可以更好的捕捉长距离,并且克服了梯度消失的问题

思想

  • 依靠输出维护细胞状态。(Maintain a separate cell state from what is outputted)

  • 使用“门控”来控制信息的流动

  • 通过不间断梯度流的时间反向传播

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fJbzo2h2-1628753086407)(https://gitee.com/Black_Friday/blog/raw/master/image/G$%60(DID%5D)]%5DU%5DSEMTN65O4%7B4.png)

缺陷

  1. Encoding bottleneck

用于翻译的网络可能会得到一大段的输入,那么这些输入会将会是很大的向量,而将单词转化为向量的过程就会损失很多重要的信息(个人理解)

  1. slow,no parallelization

网络采用迭代的思想,所以运行的时间长。并且网络无法并行的在GPU上训练。

  1. not long memory

虽然LTMs相比于RNN在获取长文本的能力上有提升,但是对于大段的文本翻译,能力依旧欠缺。

为了克服这些困难,一种叫注意力的方法诞生了

注意力(这部分内容请自行扩展)

这是一个非常牛的思想,也是现在流行的方法,其对于大规模的序列建模问题非常有效。

它不是以往的只能通过Encoder到Decoder来访问状态向量,而是Decoder可以访问原始序列中每个时间步之后的状态 和 网络在训练过程中实践学习到的这些向量的权重(这里你可以查阅相关的Encoder-Decoder知识)。

注意力模块直接从输入中学习哪些点和哪些状态是需要注意,就能轻松的捕获长期依赖。这是因为,训练这样的网络,只需要一次通过这个注意力模块,没有时间反向传播。并且这些注意力提供的机制,是种可以学习的记忆访问。

这个模块之所以被称作注意力,是因为它在学习权重,将注意力放在输入序列的不同部分,以有效的捕捉整个原始序列中的一种可访问的记忆。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eoqlBTCY-1628753086408)(https://gitee.com/Black_Friday/blog/raw/master/image/image-20210812144539013.png)]

总结

  • RNN非常适合于序列建模任务模型序列

  • 模块序列存在递归关系

  • 通过时间反向传播训练RNN

  • 像LSTMs这样的门控细胞让我们可以对长期依赖进行建模

  • 这些模型可以用于音乐生成、分类、机器翻译等的模型

下篇2021 MIT || 麻省理工机器学习导论(三)Convolutional Neural Networks(CNN卷积神经网络)

2021年8月12日15:28:56

持续更新……

2021 MIT || 麻省理工机器学习导论(二)RNN LSTMs循环神经网络相关推荐

  1. 全球名校AI课程库(25)| MIT麻省理工 · 机器学习导论课程『Introduction to Machine Learning』

  2. 【李宏毅机器学习笔记】 23、循环神经网络(Recurrent Neural Network,RNN)

    [李宏毅机器学习笔记]1.回归问题(Regression) [李宏毅机器学习笔记]2.error产生自哪里? [李宏毅机器学习笔记]3.gradient descent [李宏毅机器学习笔记]4.Cl ...

  3. 理论——RNN(循环神经网络)与LSTM(长短期记忆神经网络)

    这里写目录标题 RNN 背景 结构 应用 梯度消失.爆炸 LSTM 长期依赖问题 LSTM网络 结构 RNN 背景 人类的思考具有连续性,我们常联系过去的经验来理解现在.比如阅读时我们常提及的&quo ...

  4. DL之RNN:循环神经网络RNN的简介、应用、经典案例之详细攻略

    DL之RNN:循环神经网络RNN的简介.应用.经典案例之详细攻略 目录 循环神经网络RNN的简介 1.RNN的分类 1.RNN的常见算法分类 2.RNN的三种分类

  5. 【直观理解】一文搞懂RNN(循环神经网络)基础篇

    推荐阅读时间8min~15min 主要内容简介:神经网络基础.为什么需要RNN.RNN的具体结构.以及RNN应用和一些结论 1神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子,只要训练数据足够 ...

  6. (pytorch-深度学习)使用pytorch框架nn.RNN实现循环神经网络

    使用pytorch框架nn.RNN实现循环神经网络 首先,读取周杰伦专辑歌词数据集. import time import math import numpy as np import torch f ...

  7. 循环取矩阵的某行_一文搞懂RNN(循环神经网络)基础篇

    神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子,只要训练数据足够,给定特定的x,就能得到希望的y,结构图如下: 将神经网络模型训练好之后,在输入层给定一个x,通过网络之后就能够在输出层得到特 ...

  8. Keras——用Keras搭建RNN回归循环神经网络

    文章目录 1.前言 2.用Keras搭建RNN回归循环神经网络 2.1.导入必要模块 2.2.超参数设置 2.3.构造数据 2.4.搭建模型 2.5.激活模型 2.6.训练+测试 1.前言 这次我们用 ...

  9. 自然语言菜鸟学习笔记(七):RNN(循环神经网络)及变体(LSTM、GRU)理解与实现(TensorFlow)

    目录 前言 RNN(循环神经网络) 为什么要用循环神经网络(RNN)? 循环神经网络(RNN)可以处理什么类型的任务? 多对一问题 一对多问题 多对多问题 循环神经网络结构 单层网络情况 正向传播 反 ...

最新文章

  1. vim+快捷键+常用+命令
  2. pat 1060. Are They Equal (25)
  3. Win7中aero peek的关闭与开启
  4. 享元模式 FlyWeight 结构型 设计模式(十五)
  5. 正则表达式的匹配模式
  6. 中国中文信息学会:第一届自然语言生成与智能写作大会讲习班正式发布
  7. 继续完善掼蛋游戏 其次说说朋友的情况
  8. 统计测序数据reads数和碱基数的几种方法
  9. linux如何敲打中文,vim敲字如弹琴 - linux-tao的个人空间 - OSCHINA - 中文开源技术交流社区...
  10. Java集合系列总结
  11. Linux 高性能服务器编程——多进程编程
  12. deepin linux mac主题,deepin,安装GNOME桌面环境,类mac界面美化
  13. 计算机的五笔咋么学,电脑五笔输入法怎么学
  14. NAND和NOR Flash的区别
  15. OCCT培训笔记(刘星讲)--第2天
  16. SMS短信通API——(3)SMS短信通资费标准
  17. 注册IMDB的API KEY
  18. 面对境外网络攻击,作为安全技术人员该如何有效防御?
  19. 依赖包存在,但是仍依然报找不到包的问题
  20. 基于GEE的制作全球任意地方时间序列数据动画的方法

热门文章

  1. html嵌入在线word编辑器
  2. 【进阶技术】一篇文章搞掂:Spring Cloud Stream
  3. 音频 图像 视频等数据的压缩与存储格式
  4. 前端:医院挂号平台(html+css+jquery)
  5. 思维导图 XMind 8 Update 8 Pro for Mac 中文破解版
  6. JS批量取消抖音关注脚本
  7. 基于51单片机的自动售货机Proteus仿真
  8. Springboot项目中com.mysql.cj.jdbc.Driver在yml文件中爆红的原因
  9. 荣耀战魂冥界回归服务器维护,荣耀战魂万圣节活动冥界的回归玩法及奖励介绍...
  10. java与移动智能设备开发_移动时,您应该如何处理所有智能家居设备?