DeepLearning之LSTM模型输入数据:白话降维解说

《 Dianchen666’s Deep Learning 学习笔记系列 ---- 小白角度看深度学习》

有导航,不迷路。

(1). DeepLearning之LSTM模型输入参数:time_step, input_size, batch_size的理解

(2). DeepLearning之LSTM模型输入数据:白话降维解说


本文摘要:

  1. 对于LSTM的输入参数的理解的应用。

  2. LSTM模型真正的输入数据是什么样的?

  3. 通过LSTM的输入数据实例的讲解,更好的理解循环神经网络的输入数据。


1. LSTM的基本介绍

  1. 上次讲到了LSTM模型的输入参数的理解,这一篇讲讲我对LSTM以及循环网络模型的输入数据的理解。
  2. LSTM是循环神经网络的一个变种,加入了多个门来控制每个神经细胞的状态
  3. 细胞的状态对于整个模型是非常重要的,训练模型主要是更新每个细胞的输入参数,转态参数,输入的参数,让每个细胞处于一个稳定的状态
  4. 输入的数据的一般是time_step, input_size, batch_size,这三个输入参数的定义我已经在上一篇博文中谈了谈我的理解
  5. 受一位博友启发,但是我发现好像没有博文对输入数据到底是什么样的,讲的非常的清晰透彻、清楚。
  6. 本文尝试从非常白话的角度,来谈谈我对输入数据模样的理解。
  7. 如有不对,还请多批评指正。

2. 基础参数理解

  1. 输入数据主要是三个参数,time_step, input_size, batch_size
  2. 借某位博友的启发,引用一下它的话:“batch_size是指有多少组序列数据,而time_step是指每组序列数据中有多少个时刻”
  3. input_size 最好理解,就是输入的数据有几个自变量,就是有几个X
  4. iteration与batchsize是有乘法关系的,3000条数据,100iteration,那么batchsize就是30。也就是Total sample = iteration(n)*batchsize
  5. batch_size就是我们常说的批处理的数据量
  6. epoch=10就是进行10*100个iteration来对模型进行训练

3. 各参数确定的次序

  1. 首先应该确定的是由几个自变量,就是有几个X,由几个变量来预测另外一个y
  2. 第2个应该确定的是time_step,就是确定你进行训练其中一次的有多少个时刻,这个time_step就应该是多少,换句话说就是你预测的这个y和之前的多少个时刻有关系,这样来确定。
  3. 第3个就是batch_size, 原理上将batch_size可能会影响你的训练速度,因为它的定义是批大小,是一次训练所选取的样本数,为了在内存效率与内存容量之间寻找平衡,白话就是提高你的训练效率。
  4. batch_size和time_step本身没有关系,但是time_step的长短和input_size的多少会影响每一个iteration训练的速度。

3. 示意图

1.还是用一个excel的数据表来进行举例
在这里插入图片描述

2.时间是从2020年6月1日-6月30日,x1,x2,x3,x4,x5说明是有5个自变量,也就是Inputsize=5,y为要预测的值。

3.此时确定timestep的值,就是你预测的这个Y值是之前的几个时刻有关系,比如上图要预测的y值使用前5天的数据来进行预测,那么time_step=5,此时将上述的数据按照time_step的大小进行重构。

4.通过time_step参数对数据进行重构后,会产生新的数据组,组数=total_sample - time_step + 1,如下图:26组=total(30) - time_step(5) +1,每组数据都有5个时刻t
在这里插入图片描述
4.其中包含5个时刻数据的这一组数据称为输入数据的一个batch,而batch_size就是每一次feed数据有多少组这样的数据。batch(26) = total(30) - time_step(5) +1
在这里插入图片描述
5.再把每一个batch的数据剖开,看看每一个batch的数据是什么样的。

6.下图为一个粗糙的示意图。讲述了在一个Batch中数据是如何进行运转的。

7.在batch1 中,T1时刻的数据分为X变量与Y变量,在T1时刻X与Y数据被同时输入到LSTM中,通过各种门的计算,输出了一个细胞状态Ct1与Ht1,这个两个变量会作为输入变量到下一个时刻的计算当中。

8.到T2时,T1时刻输出的Ct1与Ht1与T2时刻的X变量(x1x2x3x4x5)输入到LSTM模型中,通过各种门的计算,最后得到Ct2与Ht2,在输入到下一时刻,直到整个batch结束。

  1. 一个batch中会循环计算time_step次。
    在这里插入图片描述
    10.上图中,红色直线代表是的细胞状态变量的转移
    红色曲线代表的是目标值也就是Ht变量的转移。

11.在执行一个batch结束后,再执行下一个batch,batchsize=30就是1个iteration中执行了30个这样的batch,在一次feed数据中。

12.重构后的batch的个数,自己定义size的大小。上图中的所有数据重构后,变成了26个batch,你可以将batchsize设置为5,设置为10,设置为20。

13.无论batchsize设置为多少,每一组数据都是按照顺序进入到模型中进行训练。

4. 总结

  1. 那么batchsize主要影响模型的什么?主要是影响模型的泛化性能,就是模型在训练之后对于test数据预测的准确性。
  2. 一般来说:越大大的batchsize,会减少模型训练所需要的时间,提高模型的稳定性
  3. 在合适的范围内,增大batchsize,有助于收敛的稳定性,但是再随着batchsize的增加,模型的性能会下降(泛化性能)
  4. 总结来说:batchsize在变得很大(超过一个临界点)时,会降低模型的泛化能力。

下一篇说说学习率与batchsiz对模型性能的影响。

————————————————
参考链接,尊重原创,支持原创!

  1. 作者:ch206265, 文章:LSTM中的batch到底是什么, https://blog.csdn.net/ch206265/article/details/107088040
  2. 作者:言有三,学习率和batchsize如何影响模型的性能?

猜你喜欢

转载自blog.csdn.net/weixin_42101836/article/details/107133793