关于序列模型的学习笔记(持续更新中)

本人是跟随王树森老师的课程来学习,大部分的图片也是直接截取的老师的ppt

Transformer

变形金刚:每个encoder又拆解成立self-Attention和前馈神经网络两个模块

模型确实很复杂

  • SeqtoSeq模型,有一个Encoder和一个Decoder
  • 不是RNN
  • 没有循环的结构,只有attention和全连接层
  • 实现效果非常好!

基于attention的神经网络  剥离RNN 保留attention

每计算出一个C,就要重新计算一遍权重a:

权重是h_i与s_j的函数

W_k,W_v和W_q是参数,参数需要从数据中学习

先将当前状态s_j映射到query向量

RNN:

数据预处理基础

Categorical Feature 转化为 机器学习可以理解的数值特征

Word embedding(词嵌入)

Tex to Sequence  文本处理(其实很重要,这直接影响机器学习的学习率)

Step1 Tokenization

  • 两种类型 char word
  • 是否要关心数据的大小写
  • 是否要删掉一些stop word 例如 “a”, "of" 等
  • 是否要进行纠错 goood to good

Step2 Build Dictionary

token_index = {"the":1,"cat":2,.......}

Step3 One-Hot Encoding 

两个句子可能得到不同长度的tokens

Step4 Align Sequences 

如何将序列对齐

  • 将序列的长度固定为w,如果序列的长度超过了w,那就砍掉前面的,或者砍掉后面的
  • 如果序列的长度较短,那就zero_pedding,就是用零来进行填充

所有序列的长度都是w,就都可以存在一个矩阵中

从训练数据中提取出一个参数矩阵

Simple RNN

双曲正切函数 tanh(x)  作为激活函数 用在

h_{t}依赖于h_{t-1},x_{t},A

GRU:

基于RNN

讲明要特别关心一些地方,特别不关心一些地方

能关注的机制:更新门

能遗忘的机制:遗忘门

SeqtoSeq模型:

Encoder RNN 

Decoder RNN

若是输入的模型很长,输入的模型会记不住完整的句子,Encoder的最后一个状态会漏掉一些信息

BLEU:是评价机器翻译好坏的标准

。。。。。(这一块的内容待补充和更新中)

Attention模型:

为了解决遗忘的问题,引入Attention机制(2015年提出)

计算h_i 与 s_0 的相关性

第一种(用在attention机制的第一篇论文中)

第二种(更常用的一种,与transformer的方法是一样的)

  • 出现了两个参数矩阵W_{K} 与W_{Q},这两个参数矩阵要从训练数据中学习
  •  这里得到权重的方式与transformer是一样的

从而可以得到a1,a2,a3.....an个值 这些被称为权重

C_0 = a_1h_1 + a_2h_2 +...+a_mh_m 包含了Encoder输入从x1,x2,x3,,,,,xm的所有的完整的信息,这样Encoder可以知道decoder完整的输入,从而可以解决遗忘的问题

 S_0是decoder最终得到的状态

 

SimRNN更新状态的方式,只需要知道新的输入与旧的状态,他并不会去看Encoder的状态

使用了Attention处理机制之后的更新公式

Weight:a_i = align(h_i,s_1)

 更新完S1之后,重新计算这些权重

如此循环下去即可以连续地计算下去

权重的可视化效果

attention的缺点:数据量太大了

Self-Attention模型:

 

 用c_0取代h_0

计算权重

新的h这样计算

然后计算c_3,

,再得到c_3,然后循环下去即可

RNN都有遗忘的问题,

......To be continued

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值