概述

序列化标注是NLP领域非常常见的问题,很多问题都可以归结为序列化标注问题,例如分类可以看做多对一的标注;词性标注属于一对一的标注;机器翻译属于多对多的标注。
深度学习在NLP上取得不错的效果,常用的模型有前向神经网络(FNN)、卷积神经网络(CNN)、循环神经网络(RNN、BIRNN)、LSTM、关注度模型(AM)等,对于特定任务还有相关变形
本文主要科普下各个模型的结构,方便在后续NLP任务中应用。

RNN技术演化

常见激活函数

在多层神经网络中,一般先进行线性变换,然后进行非线性变换。如果多层神经网络只进行线性变换可以证明和一层网络一致。常见的非线性变换函数,也叫激活函数,如下:

常用的以sigmoid和tanh为主,他们都是将实数区间转换为固定区间(0,1)或者(-1,1)

前向神经网络(FNN)

FNN也称之为多层神经网络,主要结构如下:

  1. FNN 整体分为三层,输入层、隐含层和输出层,可以理解为输入层为原始特征层常常表示为向量结构;隐含层为特征非线性变换层;输出层为特征变换后的结果。
  2. 输入层表示为:x
  3. 隐藏层表示为
    ah=∑i=1Iwihxibh=θh(ah)

    a_h=\sum_{i=1}^I w_{ih}x_i \\ b_h=\theta_h(a_h)

  4. 输出层表示为
    ao=∑i=1HLwiobi

    a_o=\sum_{i=1}^{H_L} w_{io}b_i

  5. 模型层:一般会根据不同的问题选择不同的模型或者损失函数,对于回归问题均方差;二分类问题采用sigmoid变换采用对数损失;多分类问题采用softmax;以二分类为例
    y=sigmoid(ao)−l(zi,xi)=ziln(y)+(1−zi)ln(1−y)

    y=sigmoid(a_o) \\ -l(z_i,x_i)=z_i ln(y) + (1-z_i)ln(1-y)

  6. 模型计算,可以采用标准的BP算法进行求解,即采用链式规则求解,这里不再赘述。

循环神经网络(RNN)

简单的FNN不太适用于NLP,主要原因是没有考虑上下文特征,如果仅仅考虑前一个词特征,可以考虑使用RNN,结构如下:

1. 该图看上去比较复杂,可以简单的理解为计算某个神经元时,除了考虑当前输入外,还要考虑上一时间点隐藏状态值,从公式看一目了然

ath=∑i=1Iwihxti+∑h′=1Hwh′hbt−1h′bth=θ(ath)

a_h^t=\sum_{i=1}^I w_{ih}x_i^t + \sum_{h'=1}^H w_{h'h}b_{h'}^{t-1} \\ b_h^t=\theta(a_h^t)
2. 输出层保持不变,将RNN按照时间序列展开如下所示
3. 相当于共享参数,每次均是输入不同,参数都是相同的。
4. 模型训练可以采用BPTT算法,即按照时间序列从后向前、从输出到输入进行梯度传递。

双向循环神经网络(Bi_RNN)

单向的RNN只考虑了上文特征,有些问题还会用到下文特征,一个简单的变换就是进行双向神经网络,每次得到隐藏神经元值,需要先前向遍历,在后向遍历,将结果只累加,在进行线性变换。
BI_RNN结构图展开如下:

  1. 前向过程可以表示为

    前向计算:apth=∑i=1Iwihxti+∑h′=1Hwh′hbt−1h′后向计算:abth=∑i=1Iwihxti+∑h′=1Hwh′hbt+1h′bth=θ(apth+abth)

    前向计算:ap_h^t=\sum_{i=1}^I w_{ih}x_i^t + \sum_{h'=1}^H w_{h'h}b_{h'}^{t-1} \\ 后向计算:ab_h^t=\sum_{i=1}^I w_{ih}x_i^t + \sum_{h'=1}^H w_{h'h}b_{h'}^{t+1} \\ b_h^t=\theta(ap_h^t+ab_h^t)其中前向计算过程和后向计算过程中,参数矩阵式不同的。

  2. 模型求解也需要通过BPTT计算两遍。

LSTM(Long Short-Term Memory)

双向的RNN已经可以解决很多NLP问题,但是RNN有一个问题,随着输入序列变长,靠前的上下文对后面的影响越来越小,如下图所示

因此LSTM提出通过逻辑门进行输入、输出控制,每一个神经元表示为一个内存块,每一个块都有一个输入门控制输入选择;遗忘门控制上下文特征;输出门控制该神经元对结果的影响。

一个内存块表示如下

  1. 一个神经元相当于普通神经网络中的一个隐藏节点,其中包括一个或者多个cell(一个为主)、输入(和普通类似)、输出(相当于非线性变换后结果)、三个逻辑门(相当于三个非线性变换,值域在0-1之间)
  2. 三个逻辑门的功能简单理解为,如果输入门为0,则屏蔽此特征对输出的影响;如果遗忘门为0则屏蔽上下文特征对输出影响;如果输出门为0表屏蔽该内存块对输出影响
  3. 输入门(input Gates)
    atτ=∑i=1Iwiτxti+∑h=1Hwhτbt−1h′+∑c=1Cwcτst−1cbtτ=f(atτ)

    a_\tau^t=\sum_{i=1}^I w_{i\tau}x_i^t + \sum_{h=1}^H w_{h\tau}b_{h'}^{t-1}+\sum_{c=1}^Cw_{c\tau}s_c^{t-1} \\ b_\tau^t=f(a_\tau^t)线性变换主要包括三块,一是基础特征输入;二是上下文隐藏层影响;三是上下文中间状态影响(上图中虚线箭头参数);

  4. 遗忘门(Forget Gates)
    atϕ=∑i=1Iwiϕxti+∑h=1Hwhϕbt−1h′+∑c=1Cwcϕst−1cbtϕ=f(atϕ)

    a_\phi^t=\sum_{i=1}^I w_{i\phi}x_i^t + \sum_{h=1}^H w_{h\phi}b_{h'}^{t-1}+\sum_{c=1}^Cw_{c\phi}s_c^{t-1} \\ b_\phi^t=f(a_\phi^t)和输入门类似;

  5. 神经元(Cell):
    atc=∑i=1Iwicxti+∑h=1Hwhcbt−1h′stc=btϕst−1c+btτg(atc)

    a_c^t=\sum_{i=1}^I w_{ic}x_i^t + \sum_{h=1}^H w_{hc}b_{h'}^{t-1} \\ s_c^t=b_\phi^t s_c^{t-1}+b_\tau^tg(a_c^t)神经元输入线性变换和RNN计算类似,不同的是其状态有两部分构成,输入门控制本次特征;遗忘门控制上下文的状态值

  6. 输出门(output Gates)
    atω=∑i=1Iwiωxti+∑h=1Hwhωbt−1h′+∑c=1Cwcωstcbtω=f(atω)

    a_\omega^t=\sum_{i=1}^I w_{i\omega}x_i^t + \sum_{h=1}^H w_{h\omega}b_{h'}^{t-1}+\sum_{c=1}^Cw_{c\omega}s_c^{t} \\ b_\omega^t=f(a_\omega^t)

  7. 内存块输出
    btc=btωh(stc)

    b_c^t=b_\omega^th(s_c^t)

  8. 模型计算依然采用BP算法,可能会更复杂一下,通过LSTM能够达到的效果如下即通过门的打开和关闭控制影响程度。
  9. LSTM也可以扩展到Bi_LSTM

其他模型

CTC

CTC是一种输出控制,他解决的问题是输入和输出是多对多的情况,但是输入和输出的对应关系不确定,需要枚举输入到输出的所有路径得到预测结果。

多维RNN

将1-D的输入向量,展开成多维。相当于对RNN进行扩展,需要在每一个维度都进行一次RNN,然后累加得到线性变换结果,累加时可能需要注意上下文的选取,不是简单的上一个词。例如

层次RNN

解决的主要问题是如果输入序列很长,采用RNN或者LSTM时计算复杂度比较大,层次RNN采用分组概念,展开如下图所示

关注度模型(AM)

在计算每一个特征对应的输出时,考虑上下文的词分布概率,进行加权求和得到线性变换结果,示例如下

总结

本文概述NLP领域常用的几种深度学习模型,如何应用需要根据具体问题应用,后续会逐渐展开。

【每周一文】Supervised Sequence Labelling with Recurrent Neural Networks相关推荐

  1. A Critical Review of Recurrent Neural Networks for Sequence Learning-论文(综述)阅读笔记

    A Critical Review of Recurrent Neural Networks for Sequence Learning 阅读笔记 //2022.3.31 下午15:00开始 论文地址 ...

  2. LSTM对比GRU:Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling

    先说结论:不论是machine translation还是music datasets.speech signal modeling,GRU和LSTM的performance差别不大,但GRU往往比L ...

  3. Teacher Forcing for Recurrent Neural Networks

    Teacher Forcing是一种用来快速而有效地训练循环神经网络模型的方法,这种方法以上一时刻的输出作为下一时刻的输入. 它是一种网络训练方法,对于开发用于机器翻译,文本摘要和图像字幕的深度学习语 ...

  4. Paper:《Generating Sequences With Recurrent Neural Networks》的翻译和解读

    Paper:<Generating Sequences With Recurrent Neural Networks>的翻译和解读 目录 Generating Sequences With ...

  5. Paper:RNN之《Generating Sequences With Recurrent Neural Networks用循环神经网络生成序列》的翻译和解读

    Paper:<Generating Sequences With Recurrent Neural Networks>的翻译和解读 目录 Generating Sequences With ...

  6. Sequence Classification with LSTM Recurrent Neural Networks in Python with Keras-学习笔记

    Sequence Classification with LSTM Recurrent Neural Networks in Python with Keras 序列分类是一种预测建模问题,其中在空间 ...

  7. 【论文研读】【医学图像分割】【FCN+RNN】Recurrent Neural Networks for Aortic Image Sequence Segmentation with ...

    [FCN+RNN]Recurrent Neural Networks for Aortic Image Sequence Segmentation with Sparse Annotations Ab ...

  8. 第五门课 序列模型(Sequence Models) 第一周 循环序列模型(Recurrent Neural Networks)

    第五门课 序列模型(Sequence Models) 第一周 循环序列模型(Recurrent Neural Networks) 文章目录 第五门课 序列模型(Sequence Models) 第一周 ...

  9. [C5W1] Sequence Models - Recurrent Neural Networks

    第一周 循环序列模型(Recurrent Neural Networks) 为什么选择序列模型?(Why Sequence Models?) 在本课程中你将学会序列模型,它是深度学习中最令人激动的内容 ...

  10. 吴恩达deeplearning.ai系列课程笔记+编程作业(13)序列模型(Sequence Models)-第一周 循环序列模型(Recurrent Neural Networks)

    第五门课 序列模型(Sequence Models) 第一周 循环序列模型(Recurrent Neural Networks) 文章目录 第五门课 序列模型(Sequence Models) 第一周 ...

最新文章

  1. ubuntu12.04下NFS链接开发板并测试交叉编译的第一个应用
  2. Jenkins 笔记
  3. 基于webpack的react脚手架
  4. loadrunner11完整卸载
  5. mysql设置用户权限
  6. 神龙 X-Dragon,这技术“范儿”如何?| 问底中国 IT 技术演进
  7. 泰山JDK8升级u302,找到了更好的整合mips办法
  8. 老司机带你用python爬取妹子图,接稳这波福利
  9. 有限差分法的基本思想
  10. C# Udp测试工具开发
  11. envi查看灰度直方图_ENVI实习直方图匹配校正分类.doc
  12. 计算机视觉将打造中国技术的“胜利者效应”
  13. 巴比特 | 元宇宙每日必读:微博动漫将招募全球各类虚拟偶像并为其提供扶持...
  14. 个人免签码支付源码|服务监控模块强大后台功能全面
  15. 【用Python学习Caffe】7. 网络结构的修剪
  16. mysql 怎么同时删除两张表的数据库,mysql怎样删除多个表格数据库数据_数据库
  17. 抖音内容选题怎么做?有哪些找选题的办法?
  18. Linux部署springboot项目(从安装java开始)
  19. Linux 下 screenfetch 安装
  20. word中MathType公式不能 二次编辑解决方案

热门文章

  1. 最小二乘法线性拟合介绍以及matlab实现
  2. SPSS进行问卷量表信度检验【SPSS 082期】
  3. RGB与CMYK这两大色彩模式的区别
  4. 这世界没有能够预测未来的魔法水晶球
  5. 基于lvs实现的高并发负载的实战
  6. linux第一周作业
  7. linux与pe到移动硬盘,几步把WinPE安装到移动硬盘上
  8. java order()_Java Comparator naturalOrder()用法及代码示例
  9. 一种轻量化多尺度的遥感跨模态图文检索方法
  10. 带云的计算机词语,关于写带有云字的词语