【pytorch】循环神经网络

文章目录

  • [1. 序列模型](#1. 序列模型)
  • 序列信息是带顺序的数据。
  • 循环神经网络可以更好地处理序列信息 。它通过引入状态变量存储过去的信息和当前的输入,从而可以确定当前的输出

1. 序列模型

  • 问题模型:根据历史值 x t − 1 , ... , x 1 x_{t-1},\dots,x_1 xt−1,...,x1预测 x t x_t xt的值,即
    x t ∼ P ( x t ∣ x t − 1 , ... , x 1 ) x_t\sim P(x_t|x_{t-1},\dots,x_1) xt∼P(xt∣xt−1,...,x1)
  • 为了实现这个预测,可以使用回归模型。但存在一个主要问题:输入数据( x t − 1 , ... , x 1 x_{t-1},\dots,x_1 xt−1,...,x1)的数量与 t t t有关,即输入数据的数量随着数据量的增加而增加。有以下2种策略可以进行近似处理:
    • 自回归模型 :假设在现实情况下相当长的序列 x t − 1 , ... , x 1 x_{t-1},\dots,x_1 xt−1,...,x1是不必要的,我们只需要满足某个长度为 τ \tau τ的时间跨度, 即使用观测序列 x t − 1 , ... , x t − τ x_{t-1},\dots,x_{t-\tau} xt−1,...,xt−τ。这样获得的最直接的好处就是参数的数量总是不变的
    • 隐变量自回归模型 :保留一些对过去观测的总结 h t − 1 h_{t-1} ht−1,并且同时更新预测 x ^ t \hat{x}t x^t和总结 h t h{t} ht,即
      x ^ t = P ( x t ∣ h t ) , h t = g ( h t − 1 , x t − 1 ) \hat{x}t=P(x_t|h_t),~~~h_t=g(h{t-1},x_{t-1}) x^t=P(xt∣ht), ht=g(ht−1,xt−1)
  • 如何生成训练数据? 经典方法是使用历史观测来预测下一个未来观测 。这种方法基于以下假设:虽然特定值 x t x_t xt可能会改变, 但是序列产生逻辑不变。即
    P ( x 1 , ... , x T ) = ∏ t = 1 T P ( x t ∣ x t − 1 , ... , x 1 ) P(x_1,\dots,x_T)=\prod_{t=1}^T P(x_t|x_{t-1},\dots,x_1) P(x1,...,xT)=t=1∏TP(xt∣xt−1,...,x1)
    这种假设是合理的,因为新的序列产生逻辑一定受新的数据影响, 而我们不可能用目前所掌握的数据来预测新的序列产生逻辑
  • 如果使用 x t − 1 , ... , x t − τ x_{t-1},\dots,x_{t-\tau} xt−1,...,xt−τ来估计 x t x_t xt是近似精确的,则称序列满足马尔可夫条件 。特别地,如果 τ = 1 \tau=1 τ=1,得到一个 一阶马尔可夫模型
    P ( x 1 , ... , x T ) = ∏ t = 1 T P ( x t ∣ x t − 1 ) , P ( x 1 ∣ x 0 ) = P ( x 1 ) P(x_1,\dots,x_T)=\prod_{t=1}^T P(x_t|x_{t-1}),P(x_1|x_0)=P(x_1) P(x1,...,xT)=t=1∏TP(xt∣xt−1),P(x1∣x0)=P(x1)
  • 当假设 x t x_t xt仅是离散值时,可以使用动态规划沿着马尔可夫链精确地计算结果,简而言之,可以利用临近值的概率求解跨距离值的概率 ,由此我们只需要考虑历史临近值。比如
    P ( x t + 1 ∣ x t − 1 ) = ∑ x t P ( x t + 1 , x t , x t − 1 ) P ( x t − 1 ) = ∑ x t P ( x t + 1 ∣ x t , x t − 1 ) P ( x t , x t − 1 ) P ( x t − 1 ) = ∑ x t P ( x t + 1 ∣ x t ) P ( x t , x t − 1 ) P ( x t − 1 ) ( 马尔可夫条件 ) = ∑ x t P ( x t + 1 ∣ x t ) P ( x t ∣ x t − 1 ) \begin{aligned} P(x_{t+1}|x_{t-1})&=\frac{\sum_{x_t}P(x_{t+1},x_t,x_{t-1})}{P(x_{t-1})}\\ &=\frac{\sum_{x_t}P(x_{t+1}|x_t,x_{t-1})P(x_t,x_{t-1})}{P(x_{t-1})}\\ &=\frac{\sum_{x_t}P(x_{t+1}|x_t)P(x_t,x_{t-1})}{P(x_{t-1})}(马尔可夫条件)\\ &=\sum_{x_t}P(x_{t+1}|x_t)P(x_t|x_{t-1}) \end{aligned} P(xt+1∣xt−1)=P(xt−1)∑xtP(xt+1,xt,xt−1)=P(xt−1)∑xtP(xt+1∣xt,xt−1)P(xt,xt−1)=P(xt−1)∑xtP(xt+1∣xt)P(xt,xt−1)(马尔可夫条件)=xt∑P(xt+1∣xt)P(xt∣xt−1)
  • 在许多情况下,序列数据存在一个自然的方向 ,在时间上是前进的,未来的事件不能影响过去,因而序列数据具有因果性
  • 下一时间步的预测称为单步预测 ,下 k k k时间步的预测称为k步预测 。k步预测必须使用我们自己的预测(而不是原始数据)来进行,由于预测错误累积 ,可能会相当快地偏离真实的观测结果。因此当我们试图预测更远的未来时,一旦超过某个跨度,任何预测几乎都是无用的
相关推荐
算AI1 小时前
人工智能+牙科:临床应用中的几个问题
人工智能·算法
凯子坚持 c2 小时前
基于飞桨框架3.0本地DeepSeek-R1蒸馏版部署实战
人工智能·paddlepaddle
你觉得2052 小时前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义下载方法
大数据·人工智能·python·gpt·学习·机器学习·aigc
8K超高清3 小时前
中国8K摄像机:科技赋能文化传承新图景
大数据·人工智能·科技·物联网·智能硬件
hyshhhh3 小时前
【算法岗面试题】深度学习中如何防止过拟合?
网络·人工智能·深度学习·神经网络·算法·计算机视觉
薛定谔的猫-菜鸟程序员3 小时前
零基础玩转深度神经网络大模型:从Hello World到AI炼金术-详解版(含:Conda 全面使用指南)
人工智能·神经网络·dnn
币之互联万物3 小时前
2025 AI智能数字农业研讨会在苏州启幕,科技助农与数据兴业成焦点
人工智能·科技
云卓SKYDROID3 小时前
科技赋能消防:无人机“挂弹灭火“构筑森林防火墙!
人工智能·科技·无人机·科普·云卓科技
gaoshengdainzi4 小时前
镜片防雾性能测试仪在自动驾驶与无人机领域的创新应用
人工智能·自动驾驶·无人机·镜片防雾性能测试仪
Listennnn4 小时前
优雅的理解神经网络中的“分段线性单元”,解剖前向和反向传播
人工智能·深度学习·神经网络