AI人工智能进阶-BERT/Transformer/LSTM/RNN原理与代码

所有的分享都来自于我个人笔记,经过我自己的思考总结实践积累下来的东西,希望能帮助到入门的朋友们。
RNN   传统神经网络(DNN)无法对时间序列建模,上一层神经元的输出只能传递给下一层神经元。而在循环神经网络(RNN)中,神经元的输出在下一时刻是可以传递给自身的,同时还输出一个藏隐层状态,给当前层在处理下一个样本时使用, 它可以看作是带自循环反馈的全连接神经网络。 很多任务的时序信息很重要,即一个样本中前后输入的信息是有关联的。样本出现时间顺序信息对语音识别、自然语言处理、视频识别等问题很重要,所以对于这类问题,可以使用 RNN 建模。分为< 单层RNN >,< 多隐层RNN >,< 双向循环神经网络 (bidirectional recurrent neural network, Bi-RNN )由两层循环神经网络组成,它们的输入相同,只是信息传递的方向不同>。
LSTM   是一种改进之后的RNN循环神经网络,可以解决 RNN 无法处理长距离的依赖的问题。 LSTM等门机制的结构一定程度上缓解了长期依赖的问题,但是对于特别 长期的依赖现象,LSTM依旧无能为力
Bidirectional RNN或 Bidirectional LSTM:双向RNN或LSTM,可以同时使用前后序列( 考虑整个句子的信息),能更好地理解上下文环境并消除歧义。对于很多NLP的应用,可以获取完整的整个句子,那这个标准的双向RNN算法就很高效。
缺点: 需要完整数据的序列,你才能预测任意位置。比如语音识别系统中,这就要求你必须等待一个人说完整句话,才能做出识别,这样就有一个比较长的等待时间。
Transformer 这个模型主要有Google mind团队提出来的一种模型,可以说这边模型出来之后,NLP领域实现了大一统的趋势,这个模型是2017年发表的 attention all you need 中所提到的seq2seq模型。
BERT(Bidirectional Encoder Representations from Transformers)  就是 transformer衍生出来的预训练语言模型(无监督模型),是transformer的编码encode部分 ,输入一句话模型能输出字的embedding。在过去我们使用word2vec,lstm等技术也逐渐被BERT模型所替代,其成为NLP主流框架,基本很多NLP很多任务都可以用BERT去解决。
BERT训练方法:一、使用MLM( Masked Language Model)方法。二、 NSP(Next Sentence Prediction)方法。
Transformer的提出解决了上面两个问题:
 (1) 首先它使用了 Attention机制,将序列中的任意两个位置之间的距离是缩小为一个常量;
 (2) 其次它不是类似RNN的顺序结构,因此具有 更好的并行性,符合现有的GPU框架
主要区别与优势:
word2vec与transformer 的区别:word2vec需要训练得到词embedding,但是每一个词(或字)在不同的上下文是拥有不同的含义的,不同语境下的词含有不同的意思,因此如果基于固定的词的embedding进行语言模型构建是有很大缺陷的,而transformer可以利用上下文的关系来得到我们每一个词的向量。
LSTM transformer 的区别 而说到LSTM等时序性的网络不能只能做到串行训练,即下一个词的训练需要等到上一个词训练完成才可以进行,同时也影响训练速度,相对而言BERT的预言模型则可以做到并行计算,这往往是因为其 自注意力机制以及 位置嵌入机制发挥的功能,在后面我们也会讲到。
RNN 与transformer 的区别:RNN 会将它已经处理过的前面的所有单词/向量的表示与它正在处理的当前单词/向量结合起来。而自注意力机制会将所有相关单词的理解融入到我们正在处理的单词中。
一阶段:基础入门概念(无基础可懂)
【入门概念】 Encoder-Decoder 和 Seq2Seq
【入门概念】 Attention 机制
【入门概念】 Transformer
【入门概念】 解密 BERT (什么是BERT)
二阶段:理论和源码/论文和资源/应用
Bert的Transformer低层学了表层特征,中间层学了句法特征,高层学了语义特征
【视频】 李宏毅 Bert教程
【视频】 唐宇迪 Bert教程
【*RNN/LSTM和TF代码】 时间序列分析(4) RNN/LSTM
【英文资料】 The Illustrated Transformer
【发展与衍变】 从Transformer到BERT模型
【$原理和Torch代码】  聊聊 Transformer
【$原理和Torch代码】 深入理解Transformer及其源码
【$BERT代码】 一文彻底搞懂BERT实现
【$?】 BERT相关 问答
【*BERT github Google BERT源码及模型
【*WWM中文模型 github】 Whole Word Masking (wwm)
【*Huggingface-transformers github】 Huggingface-transformers
应用 BERT-BiLSTM-CRF-NER
应用 bert-as-service
应用 bert4keras
  • input的初始化向量是什么? 每个词的词向量最初都是随机生成的,在神经网络训练的过程中,这些词向量会不断优化
  • 解码过程是怎样的?encode的输出K,V与 decode的Q(decode的输入得到mask attention)进行context attention计算。
  • 反向传播是怎么做的?预测结果和实际结果进行交叉熵损失函数计算,反向传播调整参数。
  • 最终训练到底得到了什么?  模型,词向量参数(embedding),multi-heads参数(Multi-Heads Attention),全连接层(FeedForward)参数,layernorm层的参数.....
  • BERT和transformer实现流程的区别是什么?BERT只用到了encode编码层和Pooler全连接层(最终获得词向量或fintune结果)。
  • fintune到底做了什么?固定住前面的参数,增加最后一层logit层,根据任务类型不一致
辅助阅读
【TF】 BERT代码阅读
  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值