RLHF 的启示:微调 LSTM 能更好预测股票?

作者:老余捞鱼

原创不易,转载请标明出处及原作者。

写在前面的话:
       
在财务预测领域,准确预测股票价格是一项具有挑战性但至关重要的任务。传统方法通常难以应对股票市场固有的波动性和复杂性。这篇文章介绍了一种创新方法,该方法将长短期记忆 (LSTM) 网络与基于评分的微调机制相结合,以增强股票价格预测。我们将以 Reliance Industries Limited 的股票作为我们的案例研究,展示这种方法如何潜在地提高预测准确性。

一、核心理念

       受 RLHF 的启发,我们尝试在时间序列预测中应用相同的概念,RLHF的概念因为ChatGPT的出现,可能第一次出现在大多数人的眼里,RLHF 是 "Reinforcement Learning from Human Feedback" 的缩写,这是一种结合了强化学习和人类反馈的机器学习方法。在这种方法中,人工智能(AI)系统通过执行任务并接收人类评估者对其行为的反馈来学习。这种方法特别适用于那些难以用传统奖励函数明确定义任务成功与否的情况。回到正题,我们的方法围绕三个关键组成部分:

1. 用于初始股票价格预测的LSTM模型
2.评估这些预测质量的评分模型
3.使用评分模型的输出来优化 LSTM 性能的微调过程

       通过集成这些组件,我们的目标是创建一个更具适应性和准确性的预测系统,从而更好地捕捉股价变动的细微差别。

二、架构概述

1. LSTM 模型:
       我们系统的核心是 LSTM 神经网络。LSTM 特别适合于股票价格等时间序列数据,因为它们能够捕获数据中的长期依赖关系。我们的 LSTM 模型将一系列历史股票价格作为输入,并预测序列中的下一个价格。

2. 评分模型:
       评分模型是一个单独的神经网络,旨在评估 LSTM 预测的质量。它采用原始价格序列和 LSTM 的预测作为输入,输出一个表示 LSTM 预测预测准确性的分数。

3. 微调机制:
       该组件使用评分模型生成的分数来调整 LSTM 的训练过程。在微调过程中,从评分模型获得较高分数的预测会得到更大的权重,从而鼓励 LSTM 学习模式,从而获得更准确的预测。

三、工作流程

1. 数据准备:
       我们首先使用 yfinance 库获取 Reliance Industries Limited 的历史股票价格数据。然后,这些数据被预处理并拆分为适合 LSTM 训练的序列。

2. 初始 LSTM 训练:
       LSTM 模型在部分历史数据上进行训练。这为我们提供了一个能够做出合理股票价格预测的基准模型。

3. 评分模型训练:
       我们使用另一部分数据来训练评分模型。该模型通过将 LSTM 的预测与实际股票价格进行比较来学习评估 LSTM 预测的质量。

4. 微调过程:
       使用数据的第三部分,我们对 LSTM 模型进行微调。在此过程中,我们使用评分模型来评估每个预测。LSTM 的学习率会根据这些分数进行调整,使其能够更专注于改进评分模型认为不太准确的预测。

5. 评估:
       最后,我们在测试集上评估原始 LSTM 和微调后的 LSTM 的性能,比较它们的预测以评估微调方法的有效性。

四、代码实现

       让我们将代码分解为多个部分并详细解释每个部分。

1. 导入库并设置环境

import yfinance as yf
import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
import torch.nn
import torch.nn import
torch.optim
as optim from torch.utils.data import TensorDataset, DataLoader
import matplotlib.pyplot as plt
device = torch.device(“cuda” if torch.cuda.is_available() else “cpu”)
print(f“Using device:{device}”)

       此部分导入所有必要的库。我们使用 yfinance 来获取股票数据,使用 numpy 和 pandas 进行数据操作,使用 sklearn 进行数据预处理,使用 torch 构建和训练神经网络,使用 matplotlib 进行可视化。我们还设置了 PyTorch 将用于计算的设备(CPU 或 GPU)。

2. 数据获取和预处理

reliance = yf.Ticker(“RELIANCE.NS”)
data = reliance.history(period=”max”)[‘Close’].values.reshape(-1, 1)scaler = MinMaxScaler(feature_range=(0, 1))
data_normalized = scaler.fit_transform(data)def create_sequences(data, seq_length):
sequences = []
targets = []
for i in range(len(data) — seq_length):
seq = data[i:i+seq_length]
target = data[i+seq_length]
sequences.append(seq)
targets.append(target)
return np.array(sequences), np.array(targets)seq_length = 60 # 60 days of historical data
X, y = create_sequences(data_normalized, seq_length)

       在这里,我们获取 Reliance Industries Limited 股票的历史收盘价。我们使用 MinMaxScaler 对数据进行归一化,以确保所有值都在 0 到 1 之间,这有助于训练神经网络。

       “create_sequences”功能至关重要。它将我们的时间序列数据转换为适合 LSTM 训练的格式。对于每个数据点,它会创建一个前 60 天 (seq_length) 的序列作为输入,并以第二天的价格为目标。

3. 数据切分

lstm_split = int(0.5 * len(X))
scoring_split = int(0.75 * len(X))X_lstm, y_lstm = X[:lstm_split], y[:lstm_split]
X_scoring, y_scoring = X[lstm_split:scoring_split], y[lstm_split:scoring_split]
X_finetuning, y_finetuning = X[scoring_split:], y[scoring_split:]lstm_train_split = int(0.8 * len(X_lstm))
X_lstm_train, y_lstm_train = X_lstm[:lstm_train_split], y_lstm[:lstm_train_split]
X_lstm_test, y_lstm_test = X_lstm[lstm_train_split:], y_lstm[lstm_train_split:]

       我们将数据分为三个主要部分:

1. LSTM 训练和测试
2.评分模型训练
3.微调

       这确保了我们流程的每个阶段都使用单独的数据,防止数据泄露,并对我们的方法进行公平评估。

4. LSTM 模型定义

class LSTMModel(nn.Module):def __init__(self, input_size=1, hidden_size=50, num_layers=2, output_s

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1547972.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式、系统设计 record part01

技术路线: 工程师》设计师》分析师》架构师 管理路线: 项目经理》技术经理 工程师: 编程技术、测试技术 设计师: 工程师设计技术 分析师: 设计师分析技术 架构师: 分析师架构技术 项目经理: 时间…

数据结构 ——— 编写函数,删除有序数组中的重复项

目录 题目要求 代码实现 题目要求 一个升序排列的数组 nums ,要求原地删除重复出现的元素,使每个元素只出现一次,并返回删除后数组的新长度,元素的相对顺序应该保持一致 代码实现 代码演示: int removeDuplicate…

两步飞跃办公室,2024年常备远程控制神器,居家办公真轻松

现在科技发展得可快了,咱们的生活和工作都跟以前不一样了。2024 年,在家上班一点都不新鲜,好多人都这么干。在这个数字化的时代呀,有很多方便的工具出现。向日葵远程控制软件就是个好东西,能帮咱们高效地远程办公。想试…

探索 Midjourney 中文版:开启人工智能绘画新征程

Midjourney 中文版是专门为中国创作者精心打造的人工智能绘画神器。它打破了语言的壁垒,以熟悉的中文界面和指令输入方式,让每一个怀揣创意梦想的人都能轻松驾驭。无需再为复杂的英文指令而苦恼,在这里,你只需用中文表达心中的想象…

SOLIDWORKS 2025新版本揭秘 | 设计、协作和数据管理篇

除非另有说明,否则所有增强功能均适用于 3DEXPERIENCE SOLIDWORKS 和 SOLIDWORKS Cloud Services。 1|更髙效的协作和数据管理 直接从 SOLIDWORKS 访问社区,轻松与业界同行建立联系并开展协作。 利用实时通知时刻关注蕞新动态,…

【Mysql】Mysql常用图形管理工具

该图片是在Dos窗口中使用Mysql数据库管理系统。 1、简介 如果日常的开发和维护均在类似dos窗口中进行,对于编程者来书,上手就略微困难,增加了学习成本。我们一般使用MySQL图形管理工具来连接MySQL,然后在图形化界面上操作MySQL。…

电脑怎么安装打印机驱动_电脑安装打印机驱动多种方法

电脑怎么安装打印机驱动?许多人在购买新打印机或更换电脑时,常常会遇到安装打印机驱动的问题。正确安装打印机驱动程序不仅能确保打印机正常工作,还能提高打印效率,下面小编就教大家电脑安装打印机驱动多种方法。 电脑怎么安装打印…

三步教会你制作自己的Coze插件,不懂代码也玩得转 !

大家好,我是凡人。 是一个不黑、不吹、不跟风、有知识、有骨气的五好小号主。 最近有一位粉丝朋友和我抱怨,Coze商城里的插件用起来确实方便,但对于特殊情况想要做一些定向的数据获取却是比较麻烦,需要自己设计插件,…

证件照制作小程序源码

预览: 证件照制作小程序官方有推出对应的api接口,也有demo示例,大家有需要的可以直接拿 证件照规格列表 接口地址:https://api.zheyings.cn/item/list 请求方式:POST(application/x-www-form-urlencoded) 返回格式&…

千元护眼台灯测评:书客、明基、柏曼护眼台灯怎么样?

近年来,近视一直是全球范围内广泛存在的视力问题,特别是在中小学生群体中,佩戴眼镜的比例已经超过了50%。而青少年近视率不断攀升的原因之一是学习压力的增加,此外,不良的阅读姿势以及不适宜的照明条件等也是导致近视的…

一文读懂Ingress-Nginx以及实践攻略

一文读懂Ingress-Nginx以及实践攻略 目录 1 概念 1.1 什么是Ingress? 1.1.1 主要功能: 1.2 Ingress的组件1.3 什么是ingress-nginx1.4 ingress-nginx优点和限制1.5 版本兼容性矩阵 2 实践: Ingress nginx部署 2.1 使用helm部署ingress-ngin…

数字人直播违规原因究竟是什么?哪些技术可以解决?

随着人工智能时代的来临,以数字人直播为代表的技术应用逐渐被各大中小型企业引进,并成为了它们在直播板块降本增效的利器。不过,从目前的应用情况来看,不少企业都在使用数字人无人直播的过程中遭遇了违规封号的问题。在此背景下&a…

django开发流程3(轮播图)

1.在models中创建一个模板 class Ads(models.Model):title models.CharField(verbose_name"标题", max_length30)image models.ImageField(verbose_name"广告图", upload_to"ads")url models.URLField(verbose_name"链接网址", de…

10分钟制作一个简易的word模版

简易word模板制作。 简言 自用的一个word模版,平常套用其他格式的模板,常常将注意力转移到寻找word模版上,这里提供一个简易的word模版制作教程。 格式要求 (1)正文格式字体小四,中文宋体,西…

uniapp微信小程序,获取上一页面路由

在进入当前页面的时候,判断是不是从某个页面跳转过来的(一般是当前页面为公共页面是出现的),比如 A-->B C-->B ,那么 要在 C跳转到B页面的时候多个提示语什么的 而在A跳转到B时不需要,那么就要判断 上一页面的…

【C++】STL标准模板库容器set

🦄个人主页:修修修也 🎏所属专栏:C ⚙️操作环境:Visual Studio 2022 目录 📌关联式容器set(集合)简介 📌set(集合)的使用 🎏set(集合)的模板参数列表 🎏set(集合)的构造函数 🎏set(集合)的迭代…

s5pv210开发板刷机,分区,SD卡,emmc,nand,fastboot刷机命令,刷uboot,kernel,system(二)

一、x210开发板的启动机制 SD/inand启动步骤: 第一层启动从通道0,SD0(inand/emmc)启动, 当(inand/emmc)启动做校验和时失败才会转为启动通道2,SD2(外接插入sd卡)。而我们做裸机实验时是通过SD2来提供裸机程序镜像的,因…

SQL - 函数

1. 操作类函数 这一类函数针对数据结构,表格进行筛选操作 1.1 GROUP BY 根据某个单一列中属性或者多个列对结果集进行分组 SELECT column1, SUM(column2) FROM table GROUP BY column1; 上述代码将所选择列进行column1中的属性分组,作为每一行的索引…

“WanFangAi论文写作:智能论文助手,让研究更高效,论文写作技巧

点击查看本科毕业论文怎么搞!【保姆级论文写作教程】 手把手教你从找文献到写作全流程 撰写论文是一个系统性的过程,需要一定的技巧和方法。即使没有经过正式的论文写作训练,大学生也可以通过以下步骤来学习如何写论文: ‌确定主题…

INTO:Web3世界的“价值引力场”

在Web3的宇宙中,一股强大的引力正在重塑整个数字世界的格局。这股引力,来自一个名为INTO的“超级连接器”。作为Web3社交领域的先锋,INTO正在用一种前所未有的方式重构整个产业链的价值体系。它不再满足于单一领域的创新,而是大胆…