LSTM的输入输出是怎样的?

最近在知乎看到一个问题,LSTM的输入输出是怎样的?没想到这个问题有好多回答,我读了一下,不少解答都很好,只是似乎还是有一点点冗长。multilayer perceptron(MLP)的结构大家都比较清楚了,为什么RNN会带来困惑呢?我的一个猜测是大家在学习LSTM时会不由自主的代入MLP结构,大多数的文章解答没有针对性的比较MLP和LSTM来解决这些困惑。

MLP

为了方便比较,还是先简单说下MLP:

MLP是前馈神经网络(feedforward),这是和RNN本质上的不同。典型的MLP长下面这个样子

可以看到MLP的结构非常简单:输入层 ——> 隐藏层(可以有多个隐藏层) ——> 输出层。上图中非常重要的一点就是上一层中每一个神经元(每一层中的圆圈)都和下一层的每一个神经元连接(fully connected)。在上面的MLP结构中,并没有涉及到任何时序的概念。MLP通常可以用来对非时序的数据进行建模。比如在银行贷款问题上,输入层可以包括申请贷款人的个人信息——职业,信用分数,年收入,过往贷款情况等等,输出层表示违约不还款的事件。我们可以用这样一个MLP模型来预测申请贷款人违约的概率,用来支持贷款发放业务。

LSTM

LSTM是RNN的一种。RNN并不是前馈神经网络,通常RNN长下面这样样子:

如果这是你第一次看到上图,肯定会觉得很奇怪,为什么只有一个输入Xt,一个输出ht,还有中间那个A到A的箭头又是什么意思?MLP中可以有多个隐藏层,一个隐藏层中有多个神经元,上图为什么只有一个A?下面就来回答一下这些问题。

要回答上面这些问题,我们得把RNN的结构展开(也就是上面A到A的箭头):

理解上图,我们先从RNN的输入Xt入手。银行贷款问题中MLP的输入X1,X2,X3代表不同的特征,比如收入,信用分数,职业。这些特征并没有时间戳(timestamp)的概念。但是如果我们想建立一个模型预测股市的大盘指数呢?

假设我们可以获得过去十年每一个交易日的大盘指数,怎么来建立一个神经网络模型来根据过去10个交易日的指数预测下一个交易日的指数?

  • 思路1:

我们可以建立一个MLP模型,输入层X0到X9代表过去10天的股指,输入层是第十一天的股指,从统计模型的角度来看,这样做似乎大有问题,但是记住

All models are wrong, but some are useful。

实际中这个模型的效果可能并不太坏。

  • 思路2:

使用RNN,可以说RNN天生就是为了处理这种问题发明的,因为RNN里面有时间戳的概念。在股指预测问题中,如果用RNN模型,X0到X9依然代表过去十天的股指,那么h0到h9代表什么呢?很简单,hj代表模型对第j天股指的预测。所以在这个RNN模型中为了预测时间t的股指,我们的输入用到了时间t-1的股指,以及基于历史数据对时间t-1的预测值。要注意的是,这个RNN模型中只有一个A,不同的时间戳下对应的A的参数是一样的,只是不同时间戳下A的输入和输出可能不同。

多层RNN

在上面的股指预测例子里,我们有输入Xt和输出ht。这其实是一个最简单的RNN结构。通常ht并不一定是输出,换句话说,ht未必是对时间t的股指的预测。比如说在多层的RNN中。多层的RNN一般长下面这个样子:

上面的结构中有两个RNN(A1和A2)层叠加(stack)到一起,这里我们要注意这个RNN的叠加和MLP中不同层的叠加是不同的。在MLP的介绍中我们已经指出MLP的叠加是完全连接的,但是RNN的叠加是相同时间戳对应单元的叠加,所以我们看到A1出来的h0只进入了A2第一个时间戳单元,并没有进入后面的单元。上面的两层RNN的输出是Yt,而不是ht,Yt的含义是时间t时的股指预测值。

ht的维度

这是另一个容易误解的地方。看完上面的介绍,也许你会觉得ht,比如h0就是一个数值,但是这并不是必须的,比如在tensorflow中ht可以是一个向量,我们可以指定ht的长度。

LSTM和RNN

如果理解了RNN的结构,那对LSTM的理解是几乎一样的。LSTM和普通RNN的不同在于A里面的结构,网上很多资料可以查找,这里就不赘述了。

这篇文章我们介绍了RNN的大致结构,我们会在以后的文章中给出一些具体的例子,比如使用tensorflow进行LSTM的建模。我们也有计划介绍一下attention model。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xifenglie123321

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

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

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

打赏作者

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

抵扣说明:

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

余额充值