贝叶斯神经网络bnn pyro 包 bayesian-neural-network在人工智能领域应用,预测金融市场价格

news2024/11/13 14:52:17

在人工智能领域,预测金融市场价格一直是一个热门话题。本文将介绍一种新颖的方法——贝叶斯神经网络,用于预测市场动态,以虚拟货币“以太币”为例进行说明。

### 贝叶斯神经网络:一种新视角

对于希望深入了解贝叶斯神经网络的读者,以下是一些推荐的资源:

- [PyMC3](https://github.com/pymc-devs/pymc3):一个Python库,用于贝叶斯统计建模和概率机器学习。
- [Edward](http://edwardlib.org/):一个用于概率建模、推断和深度学习的库。
- [Pyro](http://pyro.ai/):一个灵活的通用概率编程框架。

pypro 镜像

GitCode - 全球开发者的开源社区,开源代码托管平
gitcode.com/gh_mirrors/py/pyro/tree/dev/pyro/contrib/bnn


入门|文档|社区|贡献

Pyro是基于PyTorch构建的一个灵活、可伸缩的深层概率编程库。值得注意的是,它的设计考虑了以下原则:

  • 通用:Pyro是一个通用的PPL-它可以表示任何可计算的概率分布。
  • 可伸缩性:与hand-written代码相比,Pyro可以以很少的开销扩展到大型数据集。
  • 最小:Pyro是敏捷的,可维护的。它是用一个强大的、可组合的抽象的小核心实现的。
  • 灵活:Pyro的目标是在需要时实现自动化,在需要时进行控制。这是通过high-level抽象来表达生成和推理模型的,同时允许专家easy-access定制推理。

Pyro由Uber人工智能实验室和社区贡献者开发和维护。更多信息,请查看我们的博客文章。

Installing

安装稳定的Pyro释放装置

使用pip安装:

Pyro支持python3.4+。

pip install pyro-ppl

从源安装:

git clone git@github.com:pyro-ppl/pyro.git
cd pyro
git checkout master  # master is pinned to the latest release
pip install .

使用额外的软件包安装:

要安装运行examples/tutorials目录中包含的概率模型所需的依赖项,请使用以下命令:

pip install pyro-ppl[extras]

请确保这些模型与您安装的Pyro源代码版本相同。

安装Pyro dev分支

对于最近的特性,您可以从源代码安装Pyro。

使用pip安装:

pip install git+https://github.com/pyro-ppl/pyro.git

或者,使用extras依赖关系来运行examples/tutorials目录中包含的概率模型:

pip install git+https://github.com/pyro-ppl/pyro.git#egg=project[extras]

从源安装:

git clone https://github.com/pyro-ppl/pyro
cd pyro
pip install .  # pip install .[extras] for running models in examples/tutorials

从Docker容器运行Pyro

请参阅此处的说明。

Citation

如果您使用Pyro,请考虑引用:

@article{bingham2019pyro,
  author    = {Eli Bingham and
               Jonathan P. Chen and
               Martin Jankowiak and
               Fritz Obermeyer and
               Neeraj Pradhan and
               Theofanis Karaletsos and
               Rohit Singh and
               Paul A. Szerlip and
               Paul Horsfall and
               Noah D. Goodman},
  title     = {Pyro: Deep Universal Probabilistic Programming},
  journal   = {J. Mach. Learn. Res.},
  volume    = {20},
  pages     = {28:1--28:6},
  year      = {2019},
  url       = {http://jmlr.org/papers/v20/18-403.html}
}


传统的神经网络通过确定性的权重来学习模式,但这种方法在面对金融市场这种高度随机和动态的环境时可能会遇到过拟合的问题。贝叶斯神经网络通过引入概率分布来定义权重,从而为模型提供了一种内在的正则化机制。

#### 概率编程基础

概率编程是一种定义和操作概率模型的方法。它允许我们将模型中的参数视为随机变量,而不是固定的数值。这样,模型的输出就不再是单一的确定性值,而是一个概率分布,我们可以从中抽取样本来估计预测的不确定性。

#### 贝叶斯线性回归:一个简单示例

以太币价格预测的初步尝试是使用贝叶斯线性回归模型。这种模型将权重视为服从正态分布的随机变量,并通过变分推断来估计这些权重的后验分布。

#### 贝叶斯神经网络的构建

进一步,我们构建了一个包含隐藏层的贝叶斯神经网络。这个网络使用PyTorch框架,并通过Pyro库来定义概率模型。网络的每个层都有其对应的先验分布,这些分布定义了权重的初始状态。

#### 训练与预测

训练过程中,我们不仅更新网络的权重,还更新了权重的分布参数。预测时,我们可以从这些分布中抽取多个样本,计算预测结果的均值和标准差,从而得到预测的不确定性估计。

#### 结果分析

与传统的确定性神经网络相比,贝叶斯神经网络在预测以太币价格时显示出了更好的性能。更重要的是,它提供了对预测不确定性的量化,这对于金融决策至关重要。

#### 权重的稀疏性和正则化

贝叶斯方法的一个有趣特性是它能够在训练过程中自然地导致权重的稀疏性,这类似于L1正则化的效果。此外,权重的分布参数(如均值和方差)也为我们提供了对模型复杂度的控制。

#### 结论

贝叶斯神经网络为金融市场预测提供了一种强大的工具。它不仅能够处理数据的不确定性,还能够通过概率分布来自然地实现正则化,从而提高模型的泛化能力。随着人工智能技术的不断进步,这种方法有望在金融领域发挥更大的作用。

### 进一步探索

对于希望深入了解贝叶斯神经网络的读者,以下是一些推荐的资源:

- [PyMC3](https://github.com/pymc-devs/pymc3):一个Python库,用于贝叶斯统计建模和概率机器学习。
- [Edward](http://edwardlib.org/):一个用于概率建模、推断和深度学习的库。
- [Pyro](http://pyro.ai/):一个灵活的通用概率编程框架。

此外,对于想要实践贝叶斯神经网络的读者,可以在[这个GitHub仓库](https://github.com/Rachnog/Deep-Trading/tree/master/bayesian)找到相关的代码示例和教程。通过这些资源,读者可以更深入地理解贝叶斯方法,并将其应用于自己的项目中。

教程

http://pyro.ai/examples/bayesian_regression.html

Bayesian Regression - Introduction (Part 1) — Pyro Tutorials 1.9.1 documentation

入门教程

  • Pyro简介
  • Pyro模型的自动渲染
  • 呈现确定性变量
  • SVI第一部分:Pyro中随机变分推理的介绍
  • SVI第二部分:条件独立、二次抽样和摊销
  • SVI第三部分:ELBO梯度估值器
  • SVI第四部分:提示和技巧

实用烟火和PYTORCH

  • 贝叶斯回归-简介(第一部分)
    • 教程大纲
    • 设置
    • 线性回归
    • 基于Pyro随机变分推理的贝叶斯回归(SVI)
    • 模型评估
    • 通过TorchScript提供模型服务
  • 贝叶斯回归推理算法(下)
  • Pyro中的张量形状
  • Pyro中的模块
  • 高维贝叶斯工作流及其在新型冠状病毒菌株中的应用
  • 交互式后验预测检查
  • 使用PyTorch JIT编译器和Pyro
  • 示例:在SVI使用vanilla PyTorch执行优化
  • 示例:通过Horovod进行分布式培训
  • 示例:通过PyTorch Lightning进行分布式培训
  • 具有标准化流动引导件的SVI

深度生成模型

  • 可变自动编码器
  • 半监督的VAE
  • 条件变分自动编码器
  • 标准化流程-简介
  • 具有归一化流先验的变分自动编码器
  • 深度马尔可夫模型
  • 参加推断复读
  • 例子:因果效应VAE
  • 示例:稀疏伽马深指数族
  • 概率主题建模
  • scANVI:基于Pyro的单细胞数据深度生成建模

离散潜在变量

  • 离散潜变量推理
  • 高斯混合模型
  • Pyro中的Dirichlet过程混合模型
  • 示例:具有离散枚举的玩具混合模型
  • 示例:隐马尔可夫模型
  • 示例:捕获-再捕获模型(CJS模型)
  • 示例:分层混合效果隐马尔可夫模型
  • 示例:使用电镀总和的离散因子图推断
  • 示例:摊销潜在狄利克雷分配

定制推理

  • 最大似然估计和MAP估计
  • 用自动制导做同样的事情
  • 使用EasyGuide编写指南
  • 定制SVI目标和培训循环
  • 推进黑盒变分推理
  • 示例:具有NeuTraReparam的神经MCMC
  • 示例:稀疏贝叶斯线性回归
  • 示例:减少样板文件pyro.contrib.autoname

应用:时间序列

  • 预测I:单变量,重尾
  • 预测II:状态空间模型
  • 预测三:层次模型
  • 动态线性模型预测(DLM)
  • 随机波动的Levy稳定模型
  • 多元预测
  • 示例:高斯过程时间序列模型

应用:高斯过程

  • 高斯过程
  • 高斯过程潜变量模型
  • 贝叶斯优化
  • 示例:深度内核学习

应用:流行病学

  • 流行病学模型:简介
  • 示例:单变量流行病学模型
  • 示例:区域流行病学模型
  • 例如:通过HMC进行流行病学推断
  • 新型冠状病毒血统比例的逻辑增长模型

应用:生物序列

  • 示例:常量+ MuE(配置文件HMM)
  • 示例:概率PCA + MuE (FactorMuE)

应用:实验设计

  • 设计适应性实验研究工作记忆
  • 用贝叶斯最优实验设计预测美国总统选举的结果

应用:对象跟踪

  • 跟踪未知数量的对象
  • 卡尔曼滤波器

其他推理算法

  • 示例:使用MCMC分析棒球统计数据
  • 示例:使用马尔可夫链蒙特卡罗进行推断
  • 例如:协方差上具有LKJ先验的MCMC
  • 编译顺序重要性抽样
  • 示例:顺序蒙特卡罗滤波
  • 示例:重要性抽样
  • 理性言语行为框架
  • 使用RSA理解夸张
  • 示例:将预测性和确定性与MCMC和SVI结合使用

了解PYRO的内部结构

  • 迷你烟火
  • poutine:Pyro中效果处理程序的编程指南
  • pyro.contrib.funsor,Pyro - New原语的新后端(第1部分)
  • pyro.contrib.funsor,一个新的烟火建筑推理算法后端(第2部分)
  • 示例:隐马尔可夫模型pyro.contrib.funsor和pyroapi

反对

  • (不推荐使用)Pyro中的模型介绍
  • (不赞成使用)Pyro中的推理介绍

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

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

相关文章

【递归专题一】Pow(x,n)-快速幂算法

Pow(x,n)-递归及迭代实现 题目链接:Pow(x,n) 解法一:暴力循环 如210则用10个2相乘,但是如果n231-1,难道我们还要用n231-1个2相乘吗?这样显然会超时。 解法二:快速幂算法 递归实现 任意数的指数都可以用二…

骑行耳机怎么选?精选五款权威实测热卖机型

作为一位深耕于运动科技领域多年的博主,可以说在此之间测试评论过各类运动装备,其中对于骑行爱好者而言,不可或缺的就是一款可以提高骑行体验的蓝牙耳机,其中,骨传导耳机凭借佩戴舒适健康等特点,收获了各类…

[星瞳科技]OpenMV如何进行串口通信?

串口通信上 视频教程27 - 串口通信发送数据:OpenMV串口发送数据 | 星瞳科技 视频教程28 - 串口通信接收数据:OpenMV串口接收数据 | 星瞳科技 介绍 为什么要用串口呢?因为要时候需要把信息传给其他MCU,串口简单,通用…

Qt-enable介绍使用(10)

目录 enable() 描述 相关 使用 观察切换过程 enable() 描述 相关 使用 观察切换过程 我们新建一个项目,设置两个按钮,并且把第二个按钮的objectName改一个明显的名字 关于名字这一点补充,显然我们在实际中要注意对象名字要尽量的通俗易…

C语言中函数sizeof和strlen区别

sizeof和strlen是C语言中的两个常用函数,它们的作用和使用方式有所不同。 sizeof sizeof是一个运算符而非函数,用于计算数据类型或变量占用的字节数。它可以计算任意数据类型(包括基本类型、自定义结构体、数组等)的大小。例如&…

如何使用博达网站群管理平台的树状导航

1 介绍 由于网站建设需要,需在首页的左边竖栏部分使用树状导航。我又过了一遍《网站群管理平台用户手册》,没发现如何在网站的首页设置树状导航组件。昨天,我之所以在创建树状导航上不知所措,是因为平台本身有一些误导&#xff0…

捷途山海T2 VS 唐DM-i:谁主沉浮?

自从新能源技术涌入汽车界,国内自主品牌便凭借电力驱动实现了跨越式发展。众多卓越车型如雨后春笋般涌现,在消费者市场中与合资品牌形成了激烈竞争,这无疑也增加了消费者选择车辆的难度。面对琳琅满目的优秀车型,消费者很容易陷入…

页面设计任务 个人简介页面

目录 任务要求 任务讲解 源码: 详细讲解 html部分 CSS部分 任务要求 页面结构: 创建一个基本的 HTML 页面,页面标题为“我的个人简介”。页面内容分为以下四个部分: 顶部导航栏: 包含至少三个导航链接,例如:“主页”、“关于…

计算机毕业设计选题推荐-二手房价分析与预测-Python爬虫可视化-算法

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

YOLOv8添加SE注意力机制有效提升检测精度(已跑通)

SE注意力机制概念 SSqueeze-and-Excitation (SE) 注意力机制是一种专注于增强网络模型对不同特征通道的重要性理解的机制。它通过对通道维度上的特征进行动态调整,增强了网络对重要特征的敏感性。 源码 import numpy as np import torch from torch import nn fro…

Ubuntu 22.04 上更换 Node 版本管理器(nvm)的源

在 Ubuntu 22.04 上更换 Node 版本管理器(nvm)的源,可以通过修改 nvm 的配置文件来实现。以下是更换 nvm 源的步骤: 打开终端。 备份原始配置文件(可选,但推荐): mv ~/.nvm/nvm.sh …

计算病理学中的Vision Transformer应用与挑战综述|顶刊精析·24-08-21

小罗碎碎念 这篇论文题为《Vision Transformers for Computational Histopathology》,综述了视觉变换器(Vision Transformers, ViTs)在计算病理学中的应用,包括图像分类、分割和生存风险回归等任务,并探讨了面临的挑战…

Modbus-TCP——Libmodbus安装和使用(Ubuntu22.04)

1、简介 Modbus是一种通信协议,广泛用于工业自动化和过程控制领域,允许不同设备之间进行数据交换。libmodbus是一个用于 Modbus 协议的开源库,主要用于开发和实现 Modbus 协议的客户端和服务器应用程序。libmodbus 以 C 语言编写&#xff0c…

后端开发刷题 | 合并两个排序的链表

描述 输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。 数据范围: 0≤n≤1000,−1000≤节点值≤1000 如输入{1,3,5},{2,4,6}时,合并后的链表为{1,2,3,4,5,6},…

python入门基础知识! 新手必备,看完技术突飞猛进!

基本的类 python最基础、最常用的类主要有int整形,float浮点型,str字符串,list列表,dict字典,set集合,tuple元组等等。int整形、float浮点型一般用于给变量赋值,tuple元组属于不可变对象&#x…

Nginx源码安装与进阶负载均衡

目录 一 web服务介绍 二 Nginx介绍与源码安装 2.1 nginx源码安装 2.2 平滑升级和回滚 三 配置文件详解 3.1 配置文件说明 3.2 全局配置与http模块 3.3 root与alias 3.4 location的介绍 3.5 账户认证 四 高级配置 4.1 nginx 压缩功能 4.2 变量介绍 五 nginx反向代…

【Android】adb devices 出现devices offline的问题

1 问题 adb devices 出现devices offline 2 解决方法 adb kill-serveradb start-server 然后,adb devices查看。 adb devices 问题解决啦。。。💛 💙 💜 ❤️ 💚 💛 💙 💜 ❤️…

韩顺平Java-第二十四章:MYSQL基础篇

一 数据库 1 数据库简单原理图 2 使用命令行窗口连接MYSQL数据库 (1)mysql -h 主机名 -P 端口 -u 用户名 -p密码; (2)登录前,保证服务启动。 3 MySQL三层结构 (1)所谓安装MySQL数…

第三期书生大模型实战营 第4关 Llamaindex RAG实践

前置知识 正式介绍检索增强生成(Retrieval Augmented Generation,RAG)技术以前,大家不妨想想为什么会出现这样一个技术。 给模型注入新知识的方式,可以简单分为两种方式,一种是内部的,即更新模…

ES6笔记总结(Xmind格式):第一天

Xmind鸟瞰图: 简单文字总结: es6知识总结: 新增语法: 1.let声明变量的特点: ①let 没有变量提升 ②在同一作用域下let的变量不能重复声明 ③let声明的变量存在块级作用域 2.const声明…