动手学深度学习 | 序列模型 | 51

序列模型

我们这个是第四部分的一开始,叫做序列模型的东西,也就是 Sequence Model。其实就是整个RNN,整个NLP都是在处理一个序列。我们之前看到的图片是一个空间信息,而我们现在要考虑一个时间信息的模型,这个就是很不一样的地方。

之前我们都是假设有t个独立的随机变量,也就是这张图片和上一张图片是没有关系的。但是序列模型这里,这t个是不独立的随机变量。这也是时序序列和之前序列的一个主要区别。

那么不独立的随机变量,可以用上图的条件概率来进行表示。

根据上面的条件概率,可以讲(p(x))写出来,先按照正方向进行书写,那么意思就是(x_2)要以来于(x_1),同理,(x_3)要依赖于(x_1,x_2),以此类推。这个其实很好理解,如果是一个时序序列,那么对当前建模,是要知道过去发生了什么事情的。

当然这个过程可以是可以反过来的,就是先计算后面的,然后反过去推导。反序在某些时候是有意义的,就是我已经知道未来的事情,然后反过来推前面的事情。

这是正反方向后面在RNN都可以看到,可以正着来,也可以反着回去。

现在我们来看进行前向计算的这种情况。

(p(x_t|x_1,...,x_{t-1})=p(x_t|f(x_1,...,x_{t-1}))),现在是给定了(x_1,...,x_{t-1}),然后要计算(x_t),那么做法就是先将(x_1,...,x_{t-1})进行建模,表示为(f(x_1,...,x_{t-1})),(f())可以认为是用前面的数据训练了一个模型,然后来预测下一个模型。这个会跟之前不一样,之前是给定一个图片去预测一个标号,标号和图片不是一个东西,标号是标号,图片是图片。但是现在是根据前面的数据,去预测下一个数据,就是标号和真实的样本是一个东西,这样的模型叫做自回归模型。所谓的自回归,就是给定一些数据,我去预测数据的时候,不是用另外的数据,而是用了前面的样本,所以叫做自回归(用见过的数据自己建模,叫做自回归)。

核心思想是怎么计算(f(x_1,...,x_{t-1})),还有就是给定这个(f())后怎么去计算这个(P(x_t))

马尔可夫假设:假设当前数据只跟过去( au)个过去数据相关。

原始的模型是当前的数据,是和过去所有的数据都相关的,这会导致很多问题,当时间特别长的时候,需要往回看很多东西,会导致计算不容易。

现在利用马尔可夫假设,预测当前的数据只需要看前面( au)个,( au)取小一点,那么模型就简单点,( au)取大一点,那么模型就复杂点。好处就是( au)固定住了,那么( au)就不会随着时间的增大而增大,这多多少少也是符合现实中的逻辑,比如股票预测,会和一个月前相关,一年前相关,但是时间再久,相关性就不再那么强了。还有就是预测文本的文字,可能跟邻近的句子相关性会强,但是跟在前面的句子,基本也就不那么相关了。

如果是( au)个数据,我们对其建模,也就是(f(x_{t- au},...,x_{t-1})),这个看上去就比较容易做了,我们就在上面训练一个MLP就行了。假设(x)是一个标量的话,就是每次给(f())一个( au)长的向量,然后去预测一个标量,这个就是最简单的回归问题。意思就是给定这个( au),让变长的数据变成定长的数据,那么之前的所有技术都是可以使用的。

这里这么理解,如果是计算(x')的话,除了和前一个时间的(x)是相关的,当然也和隐变量(h')相关。这里核心的是说,一旦我们引入了潜变量的话,我们可以不断的去更新(h)

(h')的计算也是看前一个时间的(h)还有(x)计算出来的。

所以其实上面是建立了两个模型,也就是紫色圈出来的部分。

模型1:如果根据前一个时间的(h)(x)来计算当前时间(h')

模型2:给定新的(h)和前一个时间(x)来计算当前时间(x')

代码

这里是代码展示使用MLP来实现马尔可夫假设,进行时序模型的预测。其实最难的点是预测很远的未来,就算是正弦函数,使用MLP预测一个很远的未来也是一个非常困难的事情。

QA

  1. 在常规范围内,tau是不是越大越好?

tau大一些,当然预测的效果越好一些。但是tau越大,那么模型就要越复杂,同时样本的数量也会变少,那么这个是一个比较大的问题,所以tau的数值需要自己进行一个权衡。

  1. 潜变量模型和隐马尔可夫模型有什么区别?

它们之间是没有太多联系的,是不同的观点,但是它们可以相互借鉴,就是潜变量模型是可以使用马尔可夫假设的,之后的RNN都是用了马尔可夫假设,潜变量就是说我在更新的时候如何使用马尔可夫假设。马尔可夫假设说的是这个数据和前面多少个数据有关,而潜变量更多是说怎么进行建模。

  1. 可以认为mlp基础了过去数据的模式?然后去用这个模式去画出未来的趋势吗?

可以的,mlp是可以记住数据的。RNN也是可以记住数据的。

但是要说一句,只能记住数据的模型并不行,因为这样模型的泛化能力会很差。

  1. 有个想法,对时序数据分类,可以看作一幅图,然后使用cnn去做图像分类吗?

其实文本可以看作是时序序列,也可以看作是一个一维空间信息。

后面会讲如何使用conv-1d 来对文本进行分类。

原文地址:https://www.cnblogs.com/Rowry/p/15336406.html