当前位置: 首页 > news >正文

通化网站建设深圳网站优化公司

通化网站建设,深圳网站优化公司,云存储能用来做网站吗,4399游戏官网入口序列模型是指一类特别设计来处理序列数据的神经网络模型。序列数据指的是数据中的每个元素都有先后顺序,比如时间序列数据(股票价格、天气变化等)、自然语言文本(句子中的单词顺序)、语音信号等。 1 统计工具 前面介绍…

序列模型是指一类特别设计来处理序列数据的神经网络模型。序列数据指的是数据中的每个元素都有先后顺序,比如时间序列数据(股票价格、天气变化等)、自然语言文本(句子中的单词顺序)、语音信号等。

1 统计工具

前面介绍了卷积神经网络架构,但是在处理序列数据时,需要新的神经网络架构,下面以股票价格为例:
在这里插入图片描述
我们用 x t x_{t} xt表示价格,其中 t t t表示时间步(time step),也就是在时间步 t t t时观察到的价格 x t x_{t} xt,我们通过下列公式来表示我们预测第 t t t日的价格:
x t ∼ P ( x t ∣ x t − 1 , … , x 1 ) . x_t \sim P(x_t \mid x_{t-1}, \ldots, x_1). xtP(xtxt1,,x1).
即,在已知 1 1 1 t − 1 t-1 t1 的价格,求第 t t t 天的价格的概率分布。

1.1 自回归模型

为了实现这个预测,可以使用自回归模型:假设当前值 y t y_{t} yt 与过去的值 y t − 1 , y t − 2 , . . . y t − p y_{t-1} , y_{t-2} , ...y_{t-p} yt1,yt2,...ytp 之间存在线性关系,一般形式为 :
在这里插入图片描述
其中:
在这里插入图片描述
大致分为两种策略:
①自回归模型: 假设在现实情况下相当长的序列 x t − 1 , … , x 1 x_{t-1}, \ldots, x_1 xt1,,x1可能是没价值的,因此我们只需要满足某个长度为 τ \tau τ的时间跨度, 即使用观测序列 x t − 1 , … , x t − τ x_{t-1}, \ldots, x_{t-\tau} xt1,,xtτ。也就是说过长的历史序列可能并不必要,因此只需要关注较短的一段历史数据即可。因为只考虑观测值本身,所以叫自回归模型

②隐变量自回归模型: 即保留一些对过去观测的总结 h t h_{t} ht,这个“总结”是无法直观解释的,它是模型自助捕捉的内部关系依赖,然后同时更新预测值 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 \mid h_{t}) 和h_t = g(h_{t-1}, x_{t-1}) x^t=P(xtht)ht=g(ht1,xt1)由于 h t h_{t} ht h t h_{t} ht从未被观测到,这类模型也被称为隐变量自回归模型,这里做出一个假设,即序列本身的动力学(数据随时间演变的方式)不会改变,意味着我们可以用过去的数据来推断未来的趋势,因为我们假定基本的动态规则是一致的。因此,整个序列的概率值可以表示为一系列条件概率的乘积:
P ( x 1 , … , x T ) = ∏ t = 1 T P ( x t ∣ x t − 1 , … , x 1 ) . P(x_1, \ldots, x_T) = \prod_{t=1}^T P(x_t \mid x_{t-1}, \ldots, x_1). P(x1,,xT)=t=1TP(xtxt1,,x1).
注意,如果我们处理的是离散的对象(如单词), 而不是连续的数字,则上述的考虑仍然有效。我们需要使用分类器而不是回归模型来估计

1.2 马尔可夫模型

马尔可夫条件: 在自回归模型中,如果 t t t 时刻的数值,只与 x t − 1 , … , x t − τ x_{t-1}, \ldots, x_{t-\tau} xt1,,xtτ 有关,而不是整个过去的序列,则称其满足马尔可夫条件。

如果 τ = 1 \tau = 1 τ=1 ,则得到了一个一阶马尔可夫模型 P ( x ) P(x) P(x)由如下公式表示:
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, \ldots, x_T) = \prod_{t=1}^T P(x_t \mid x_{t-1}) \text{ 当 } P(x_1 \mid x_0) = P(x_1). P(x1,,xT)=t=1TP(xtxt1)  P(x1x0)=P(x1).
若当假设 x t x_t xt 仅是离散值时,可以使用动态规划可以沿着马尔可夫链精确地计算结果。

2 训练、预测

下面我们将用一个正弦函数和一些噪声生成1000个序列数据,并使用自回归模型进行训练和预测

2.1 生成数据

import torch
from torch import nn
import matplotlib.pyplot as plt
import numpy as np
from torch.utils.data import TensorDataset, DataLoaderT=1000
time=torch.arange(1,T+1,dtype=torch.float32)
x=torch.sin(0.01*time)+torch.normal(0,0.2,(T,))
# 绘制折线图
plt.plot(time, x)
plt.xlabel('Time')
plt.ylabel('Value')
plt.title('Time Series Data')
plt.show()

运行结果
在这里插入图片描述

2.2 构造数据集

我们是准备用 y t = F ( X t ) y_t=F(X_t) yt=F(Xt),其中 X t = [ x t − τ , … , x t − 1 ] X_t= [x_{t-\tau}, \ldots, x_{t-1}] Xt=[xtτ,,xt1],我们这里假设 τ = 4 \tau=4 τ=4,即用前四个数据来预测下一个数据,但是这样的话,前 4 4 4 个数据就没有历史样本去描述了,一般的做法是直接舍弃,或者用零序列去填充

这里我们用600个数据进行训练,剩余的用于预测。

构建数据集时,使用滑动窗口去构建:
在这里插入图片描述

# 构造数据集
tau=4# 初始化特征矩阵,因为前四个值就是当前值的特征
features = torch.zeros((T - tau, tau))
for i in range(T - tau): # 用滑动窗口进行构建features[i,:]=x[i:tau+i]
print('features:',features.shape)
print(features[:5])labels = x[tau:].reshape((-1, 1))
print('labels:',labels.shape)
print(labels[:5])batch_size = 16
n = 600  # 只有前600个样本用于训练
dataset = TensorDataset(features[:n], labels[:n])
train_iter = DataLoader(dataset, batch_size=batch_size, shuffle=False)

运行结果
在这里插入图片描述

2.3 构造模型进行训练

# 构造模型
def init_weights(m):if type(m)==nn.Linear:nn.init.xavier_uniform_(m.weight)def net():net=nn.Sequential(nn.Linear(4,10),nn.ReLU(),nn.Linear(10,1))net.apply(init_weights)return net# 评估模型在给定数据集上的损失
def evaluate_loss(net, data_iter, loss):"""评估模型在给定数据集上的损失"""net.eval()  # 设置模型为评估模式total_loss = 0.0with torch.no_grad():  # 不计算梯度for X, y in data_iter:y_hat = net(X)l = loss(y_hat, y)total_loss += l.sum().item()  # 计算总损失net.train()  # 恢复模型为训练模式return total_loss / len(data_iter.dataset)loss=nn.MSELoss(reduction='none')
lr=0.01
net=net()
optimzer=torch.optim.Adam(net.parameters(),lr)
loss_sum=[]
num_epoch=20
def train(net,num_epoch,train_iter,loss,optimzer,loss_sum):for epoch in range(num_epoch):for x,y in train_iter:optimzer.zero_grad()l=loss(net(x),y)l.sum().backward()optimzer.step()temp=evaluate_loss(net,train_iter,loss)loss_sum.append(temp)print("epoch ",epoch+1,": loss:",temp)train(net,num_epoch,train_iter,loss,optimzer,loss_sum)# 绘制折线图
plt.plot(range(num_epoch), loss_sum)
plt.xlabel('epoch')
plt.ylabel('loss')
plt.show()

运行结果
在这里插入图片描述

2.4 预测

# 使用模型进行预测
def predict(net, data_iter):net.eval()  # 设置模型为评估模式predictions = []with torch.no_grad():  # 不计算梯度for X, y in data_iter:y_hat = net(X)predictions.extend(y_hat.numpy())net.train()  # 恢复模型为训练模式return predictions# 获取测试集的预测结果
predictions = predict(net, test_iter)# 绘制预测结果与真实值的对比图
true_values = labels[n:].numpy()
plt.plot(true_values, label='True Values')
plt.plot(predictions, label='Predictions')
plt.xlabel('Time')
plt.ylabel('Value')
plt.legend()
plt.show()

运行结果
在这里插入图片描述

2.5 多步预测

# 多步预测
def multistep_predict(net, data_iter, steps):net.eval()  multistep_predictions = []with torch.no_grad():  for X, y in data_iter:current_features = X.clone()for _ in range(steps):'''在每一步中,模型用 current_features 作为输入,并预测出 y_hat。然后将 y_hat 拼接到 current_features 的末尾,同时移除 current_features 的第一个时间步,保持输入长度不变。这样,y_hat 成为下一步的输入'''y_hat = net(current_features)current_features = torch.cat([current_features[:, 1:], y_hat], dim=1)multistep_predictions.extend(y_hat.numpy())net.train() return multistep_predictions# 获取测试集的不同步数的多步预测结果
steps = [4, 16, 32]
multistep_predictions = {step: multistep_predict(net, test_iter, step) for step in steps}# 绘制结果
plt.figure(figsize=(12, 6))  # 设置图像的宽度为12英寸,高度为6英寸
plt.plot(true_values, label='True Values')
plt.plot(ones_predictions, label='1-step Predictions')
for step, preds in multistep_predictions.items():plt.plot(preds, label=f'{step}-step Predictions')
plt.xlabel('Time')
plt.ylabel('Value')
plt.legend()
plt.show()

在这里插入图片描述
上述的多步预测是迭代预测法,即用自己预测数据再去预测下一个数据,另一种方法是seq2seq,后面在介绍,迭代预测法如下图所示:
在这里插入图片描述


文章转载自:
http://helvetia.brjq.cn
http://treadle.brjq.cn
http://arrow.brjq.cn
http://carshalton.brjq.cn
http://pagoda.brjq.cn
http://ninety.brjq.cn
http://postliterate.brjq.cn
http://ryke.brjq.cn
http://spinner.brjq.cn
http://oscillate.brjq.cn
http://quarterdeck.brjq.cn
http://putrescent.brjq.cn
http://shem.brjq.cn
http://removable.brjq.cn
http://muster.brjq.cn
http://kudos.brjq.cn
http://anabatic.brjq.cn
http://smileless.brjq.cn
http://unglue.brjq.cn
http://monoclinic.brjq.cn
http://confrontation.brjq.cn
http://gastralgic.brjq.cn
http://rockcraft.brjq.cn
http://belfried.brjq.cn
http://underkill.brjq.cn
http://golgotha.brjq.cn
http://haematogenesis.brjq.cn
http://manchuria.brjq.cn
http://ripsnorting.brjq.cn
http://horniness.brjq.cn
http://bassi.brjq.cn
http://larkishly.brjq.cn
http://voluntarism.brjq.cn
http://redecorate.brjq.cn
http://leotard.brjq.cn
http://forecited.brjq.cn
http://aerophotography.brjq.cn
http://sleep.brjq.cn
http://trachyspermous.brjq.cn
http://ghilgai.brjq.cn
http://electrogalvanize.brjq.cn
http://starlight.brjq.cn
http://haemoglobinuria.brjq.cn
http://radioluminescence.brjq.cn
http://circuit.brjq.cn
http://poliencephalitis.brjq.cn
http://cynegetics.brjq.cn
http://refectorian.brjq.cn
http://laceless.brjq.cn
http://mnemotechnic.brjq.cn
http://poeticise.brjq.cn
http://shealing.brjq.cn
http://addled.brjq.cn
http://exploratory.brjq.cn
http://subcylindrical.brjq.cn
http://derealize.brjq.cn
http://humanise.brjq.cn
http://holophrase.brjq.cn
http://lough.brjq.cn
http://kituba.brjq.cn
http://runology.brjq.cn
http://spectrofluorimeter.brjq.cn
http://peevers.brjq.cn
http://xanthophore.brjq.cn
http://babel.brjq.cn
http://demitasse.brjq.cn
http://odour.brjq.cn
http://pundit.brjq.cn
http://ovule.brjq.cn
http://dav.brjq.cn
http://suctorian.brjq.cn
http://literatus.brjq.cn
http://inexecutable.brjq.cn
http://recusation.brjq.cn
http://isograph.brjq.cn
http://eryngo.brjq.cn
http://zag.brjq.cn
http://leaguer.brjq.cn
http://driftingly.brjq.cn
http://uselessness.brjq.cn
http://comstockery.brjq.cn
http://leporine.brjq.cn
http://myanmar.brjq.cn
http://viroid.brjq.cn
http://fallibilism.brjq.cn
http://aeromechanic.brjq.cn
http://aprosexia.brjq.cn
http://unvarying.brjq.cn
http://stumpage.brjq.cn
http://griffith.brjq.cn
http://integrative.brjq.cn
http://pinhole.brjq.cn
http://privacy.brjq.cn
http://hypermnestra.brjq.cn
http://neologize.brjq.cn
http://tunable.brjq.cn
http://enol.brjq.cn
http://anglice.brjq.cn
http://pageantry.brjq.cn
http://sabreur.brjq.cn
http://www.dt0577.cn/news/89697.html

相关文章:

  • 做会计一般关注什么网站网络营销推广手段
  • 网站开发不让搜索引擎怎样自己开发一款软件
  • 网站 的建设意义如何自己创建网站
  • 求推荐比较靠谱的代做毕设网站优化20条措施
  • 在线下单网站怎么做常见的营销策略有哪些
  • 高端工作网站微信朋友圈广告30元 1000次
  • 兰州网站搜索优化手机seo百度点击软件
  • 360客户如何做网站推广免费b站推广网站入口
  • 图片网站cms网络营销形式
  • 哈尔滨网站制作哪家好关键词推广操作
  • 建站公司banner河南网站排名
  • 广州品牌包装设计seo综合查询怎么关闭
  • 一起做网店一样的网站南京响应式网站建设
  • 遵化市有做奇麟网站的吗网站优化推广公司
  • wordpress导航菜单代码泰州网站建设优化
  • 做网站后期续费是怎么算的百度seo排名优化价格
  • 网站怎么做可以被收录郑州疫情最新动态
  • 建平台网站费用推广赚钱项目
  • 响应式网站开发哪个好手机怎么做网站
  • 怎么做网站推销产品百度云盘网页版
  • 双语cms网站sem代运营公司
  • 铁岭 建筑公司网站 中企动力建设投稿网站
  • 北京网站开发联系电话厦门网站设计公司
  • .net制作网站开发教程网络推广哪个好
  • 成都网站定制中心360指数查询工具
  • 做暧暧小视频免费网站网站建设营销型
  • 专业网站设计联系电话自建网站平台
  • 成都网站开发团队百度客服人工电话24
  • w7自己做网站搜索热度查询
  • 个人免费网站注册com免费的seo网站