内涵:文本识别论文之基础构件LSTM学习


  文本识别论文中经常会涉及到lstm、rnn、attention等名词,本篇文章是对这些基础构件的总结和介绍。

1. lstm

  lstm构件主要从3部分进行介绍:

  • 最小单元:lstm cell
  • 实际使用样式一:多层多时序lstm
  • 实际使用样式二:(双向)多层多时序lstm

1.1 lstm cell

  pytorch官网关于lstm的注释,将lstm cell的过程描述为如下6个公式:

在这里插入图片描述

Fig1 LSTM cell 公式

  参考网上的资源,可以绘制出对应该公式的lstm cell简图。

在这里插入图片描述

Fig2 LSTM cell 简图

  这里稍做阐述:每一个lstm cell的输入有3个: x t x_t xt c t − 1 c_{t-1} ct1 h t − 1 h_{t-1} ht1,输出有两个 c t c_{t} ct h t h_{t} ht
   x t x_t xt表示的是时刻 t t t时的数据embedding输入, c t − 1 c_{t-1} ct1表示上一个时刻 t − 1 t-1 t1lstm cell的state, h t − 1 h_{t-1} ht1表示上一个时刻 t − 1 t-1 t1 lstm cell的hidden。显然,对于 t = 0 t=0 t=0时刻, 需要"凭空"存在一个 h − 1 h_{-1} h1 c − 1 c_{-1} c1,这两个值是通过赋予一个可学习的variable来做到。

1.2 multi-layer long short-term memory

在这里插入图片描述

Fig3 MultiLayer LSTM简图(2层5时序)

>>> rnn = nn.LSTM(10, 20, 2)
>>> input = torch.randn(5, 3, 10)
>>> h0 = torch.randn(2, 3, 20)
>>> c0 = torch.randn(2, 3, 20)
>>> output, (hn, cn) = rnn(input, (h0, c0))

  上述代码是pytorch官网提供的。这里阐明以下几点:

  • 在构建lstm的时候,初始参数为输入维度10, 输出维度20和lstm层数2,而时序数并没有在lstm构建的时候传递进去。
  • h 0 h0 h0 c 0 c0 c0如上所述是随机构造的一个可学习的state和hidden初始值。
  • 当前层的 h t 0 h_t^0 ht0作为下一层 h t 1 h_t^1 ht1的输入的时候,并非直接透传,而是通过乘以了一个Bernoulli random variable的 δ t 0 \delta_t^0 δt0

1.3 (bidirection) multi-layer long short-term memory

  在实际使用中大家会使用bidirection的lstm比较多一点。例如CRNNAster这两篇识别网络中,均使用的BLSTM。
在这里插入图片描述

Fig4 采用bidirectional LSTM的CRNN算法

在这里插入图片描述

Fig5 采用bidirectional LSTM的Aster算法

  在构造lstm模块的时候,有一个bidirectional参数,如果设置为True则变成了blstm,默认为False。如果是blstm,则output为正向和反向hidden states的concatenation。

1.4 总结

   lstm作为文本识别算法中经常用到的一个基础构件,对于更好的理解和学习文本识别论文,具有重要的意义。本位参考了网上的资源pytorch官网对lstm进行了一定的总结和学习,包括了lstm cell、MultiLayer Lstm和 Bidirectioanl MultiLayer Lstm。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学弟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值