包括RNN、LSTM、Self-attention、Transformer

一. 算法介绍

1. RNN & LSTM

1.1 原理简介

隐含层的输出 stored in mem,下一次的输入同时也会考虑mem中储存的信息(这里mem可以初      始化为0)

if deeper, it can be like this:

1.2 Elam NetWork & Jordan NetWork

Jordan 将最终输出存入mem作为输入,Perfomance会优于Elam,因为输出层有target,输

出的效果会比较有保障

1.3 双向RNN

同时进行正向输入和反向输入,将隐含层都丢给output layer

1.3.1优点:看的范围比较广

2. LSTM (比较长的shorterm memory,记的memory比较长)

2.1 原理 :对Memory Cell 设置Input Gate, Forget Gate, Ourtput Gate, gate =1 则打开,=0关闭

参数计算过程:

1> 激活函数f 一般用sigmoid

2> 当f(Zi)=0时,g(Z)无法传入mem,=1时,g(Z)可以传入

f(Zf)=0时,forget gate被关闭,过去的mem被消掉;f(Zf)=1时,forget gate开启,过去的                 mem还是会传入, Output gate 同原理

例子:

vetor操控所有LSTM

ct-1 到 ct 的传递过程:

xt操控所有LSTM,其中xt经过linear transform得到zf,zi,z,z0,zf,zi,z,z0分别操控LSTM不同端口

ct-1即t-1阶段的 Cell值

ht:hiddle layer的输出,作为下一个时间点的input

peehole:把存在mem cell中的值也拉到下一次的输入,与ht, xt+1一起作为输入

2.2 GRU (只有两个gate 但是效果差不多)

Keras 支持 LSTM / GRU / Simple RNN

3. Self-Attention

3.1 应用场景:

输入:不只是单一向量,而是序列,而且序列(sequence)中向量的长度不相同时

尤其应用于:文本、语音处理、关系网、生物研究

输出:1 /n / n'

其中翻译问题就是sequence2sequence, 输出的长度是不确定的

3.2 原理

获得序列之间的相互关联性

(1)a的计算:

计算方法有两种,第一种较为常用

Dot-product:

domain 输入· Wq 矩阵=q

其他输入 · Wk矩阵 =k

a=q · k

步骤:

step1 :q, k

step2:  v

这里不一定要用Soft-max,可以采取其他的 (比如关系抽取问题(?)中用的是sigmoid)

整体计算过程用矩阵表示如下:

3.3 Multi-head Self-attention

语音辨识等,用多头效果会更好

如下以2头为例,将q,k,v各分两种

3.4 Positional Encoding 位置编码

词性分析时等实例时,位置信息是有用的,即输入向量的次序先后也是信息。

Positional Encoding要怎么做,这部分可参考论文: https://arxiv.org/abs/2003.09229

3.5 应用

1. 在NLP领域广泛应用

transformer

BERT

应用举例:Self-attention for speech

语音传入的向量维数较大,计算attention矩阵A'时计算量也会较大。

采用Truncated Self-attention, 只考虑与输入ak相邻的输入a' (有点类滑窗思想)

2. 图像领域

3.6 Self-attention VS CNN

(1) 处理域上的区别

(2) 性能区别

data量小适用CNN,data量大Self-attention

(3) 详见论文

3.7 Self-attention VS RNN

(1)双向RNN也可以认为是考虑了整个input的sequence

(2)RNN若要考虑序列的第1个向量,要记很久

(3)RNN的输出不能平行处理,SA可以;运算速度上Sa更胜一筹

3.8 Self- attention的变形

4. GNN (Graph Neutural Network)

5. Transfomer

5.1 应用:sequence2sequence问题,输出seqence的长度由机器自己决定

NLP的很多任务都可转化成QA问题,QA问题可归属为sequence2sequence问题

比如,句法分析/目标检测

5.2 原理:

transfomer 包括encode和decoder两部分

(1)Encoder:Encoder可以采用CNN/RNN,但是transfomer用的是self-Attention

Self-Attention的结构

1>positoinal encoding 位置信息

2>Muti-head Attention 多头

3>Add & Norm,Add表示Residual, Layer norm表示Layer标准化 (优于batch标准化)

Add & Norm 过程如下所示:

step1: 原始输入b+输出a作为residual,对residual进行正则化,作为输出1

step2:输出1 进入全连接层得到输出c,输出1+输出c作为residual,正则化residual,作为1个bloc的输出

(2)Decoder ———Autoregressive

1>Autoregressive 自回归

max 表示输出概率最大的值

2>BEGIN & END embedding

BEGIN和END用来决定输出的长度

3> Decoder的内部结构

Mask Self-attention

计算attention时,只考虑次序在前面的输入(比如,计算attention b2,只考虑a1 & a2)

(3) Decoder——Nonautoregressive (NAT)

1.NAT 是同时读入 ——优点:parallel

2.NAT如何确定输出的长度?

(1)再用另外一个模型训练得到输出长度———优点:NATD的输出长度会较好控制

(2)先输出,把END后的结果忽略掉

3.NAT的表现差于AT ,但是由于selfattention(parellel )的出现,NAT的研究成为热门

 5.3 Encoder和Decoder的衔接

通过Cross attention 衔接

decoder层的输入进行如下操作,以BEGIN为例,w1,w2...同理

很多层的encoder和decoder,可以交叉作cross attention

5.4 训练

输出值与真实值做 minimize cross entrophy (最小交叉熵)

再Teacher Forcing模式中, decoder的输入是真实值

5.5 Exposure Bias

训练过程中输入 Ground Truth, 然而测试过程中没有正确答案的输入,测试结果可能会出错。

解决办法是 Scheduled Sampling,也输入一些错误的信息

 5.6 一些训练tips

1. Guided Attention

做一些限定,比如说顺序的限定

2. Dropout

dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。

一般模型,训练时要加dropout,测试的时候不加;但是TTS 语音合成任务中, 测试要加dropout

一些任务中,加入一点随机性反而效果更换。

3.强化学习

来源:

1.台大李宏毅21年机器学习课程 self-attention和transformer

NLP 前置知识2 —— 深度学习算法相关推荐

  1. 深度学习算法(第37期)----如何用强化学习玩游戏?

    上期我们一起学习了强化学习中的时间差分学习和近似Q学习的相关知识, 今天我们一起用毕生所学来训练一个玩游戏的AI智能体. 由于我们将使用 Atari 环境,我们必须首先安装 OpenAI gym 的 ...

  2. 深度学习算法相关岗-校招、社招、实习-面试知识要点及答案分享

    本文主要整理了深度学习相关算法面试中经常问到的一些核心概念,并给出了细致的解答,分享给大家. 内容整理自网络,原文链接:https://github.com/HarleysZhang/2019_alg ...

  3. 从0到1 | 文本挖掘的传统与深度学习算法

    一.什么是文本挖掘? 讨论文本挖掘之前,我们要先说一下数据挖掘的概念,因为文本挖掘是数据挖掘的一个分支.数据挖掘(Data Mining)指从大量的数据中通过算法搜索隐藏在其中信息的过程.而文本挖掘就 ...

  4. 【重磅干货】Python、机器学习、深度学习算法实战和应用必备书籍

    [导读]首先祝大家中秋佳节快乐,乘此良辰美景,今天就给大家发一波福利干货!本文给大家分享机器学习.深度学习算法实战和应用必备的4本"宝藏"书.具体书籍展示如下:(文末提供下载方式! ...

  5. 【杂谈】什么是我心目中深度学习算法工程师的标准

    有三AI平台只专心做原创输出很少扯淡也不蹭热点,不过最近询问的朋友多了,不得不统一写篇文章来回答一下这个大家都很关心的问题,当然,这仅仅是个人观点. 作者&编辑 | 言有三 目前利用深度学习这 ...

  6. 「杂谈」什么是我心目中深度学习算法工程师的标准

    http://blog.sina.com.cn/s/blog_cfa68e330102zoco.html 有三AI平台只专心做原创输出很少扯淡也不蹭热点,不过最近询问的朋友多了,不得不统一写篇文章来回 ...

  7. 华南理工深度学习与神经网络期末考试_深度学习算法地图

    原创声明:本文为 SIGAI 原创文章,仅供个人学习使用,未经允许,不能用于商业目的. 其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习-原理.算法与应用>,清华大学出版社,雷明 ...

  8. 万字长文解读深度学习算法在自动驾驶规控中的应用

    交流群 | 进"传感器群/滑板底盘群"请加微信号:xsh041388 交流群 | 进"汽车基础软件群"请加微信号:ckc1087 备注信息:群名称 + 真实姓名 ...

  9. 机器学习深度学习算法及代码实现

    原文地址:https://blog.csdn.net/qq_31456593/article/details/69340697 最近在学机器学习,学习过程中收获颇多,在此留下学习记录,希望与同道中人相 ...

最新文章

  1. 配置Exchange OWA和Sharepoint网站单点登录
  2. 【每日一算法】平衡二叉树
  3. 求两个datetime之间相差的天数
  4. HBase最佳实践-读性能优化策略
  5. final+static
  6. Flex 学习随笔 ---- 使用WebService 与数据库连接
  7. 服务器无限火力时间,LOL十周年宣布无限火力开启时间 无限火力开启及持续时间详情...
  8. 分享2款XSHELL配色方案及导入配色方案的方法
  9. ASP.NET MVC 3和Razor中的@helper 语法
  10. 第 7 章 Neutron - 068 - Neutron 物理部署方案
  11. C/C++ Linux 异步IO(AIO)
  12. 微信小程序文字语音转换/中英文自动翻译
  13. python实现网页爬虫_python实现页面爬虫(selenium,pyppeteer)
  14. 逻辑学是计算机 创始人,逻辑学的创始人:亚里士多德
  15. 劳易测BCB G40 H47 L030 - 条码带
  16. 浏览器怎么录制网页视频?3种网页视频录制方法
  17. 你的手机广告被偷了!通过重定向广告窃取个人隐私,攻击者还能进行恶意广告攻击...
  18. 他把互联网“存”了起来!
  19. 无法打开登录所请求的数据库 。登录失败。用户*登录失败。解决办法
  20. 【SpringBoot】SpringBoot2.x 配置 笔记

热门文章

  1. 《Android开发艺术探索》图书勘误
  2. Denoising point sets via L0 minimization
  3. Android-悬浮窗功能的实现(附Java、KT实现源码,自学Android
  4. 【概率论】Laplace 分布 / Laplace Distribution
  5. 免费常用快递查询API接口及快递在线下单API分享
  6. This'is wath!
  7. 免费H5页面制作工具大汇总
  8. VUI参数语义,色彩原色图表,高宽比标示符含义图表
  9. 给定一个递增序列,a1 a2 ...an 。定义这个序列的最大间隔为d=max{ai+1 - ai }(1≤in),现在要从a2 ,a3 ..an-1 中删除一个元素。问剩余序列的最大间隔最小...
  10. cocos 3D特效