金融分析-Transformer模型(基础理论)

Transformer模型

1.基本原理

transformer的core是注意力机制,其本质就是编码器-解码器。他可以通过多个编码器进行编码,再把编码完的结果输出给解码器进行解码,然后得到最终的output。

c1f5736b71bc4e2d971dd1558e85d43b.png

1.1·编码器

数据在编码器中会经过一个self-attention的模块进行加权,之后得到一个特征象征Z。

Z的计算公式如下(z=Attention(Q,K,V)):

e5c4340003494746aeaf8040d5a8db88.png

然后接着我们会进入到编码器的下一个模块---一个拥有两层全连接层的前馈神经网络(他的第一层激活函数是ReLU,第二层激活函数是一个线性激活函数,如下

FFN(Z)= max ( 0, ZW1 + b1 ) W2 + b2

)。

81644c9f2e7246fcbe22509e156927a2.png

1.2·解码器

在解码器中它多了一个encoder-decoder Attention,两个Attention分别用于计算输入和输出的权值。

encoder-decoder Attention:我正在测试的股价和特征向量之间的关系。

在encoder-decoder attention中, Q 来自于解码器的上一个输出,K 和 V 则来自于与编码器的输出。如图

dc0255dfe01c4005b1762d7898b3d2c3.png

mask:是指掩码,指把某些值更新使其在参数更新时不产生效果。mask包括padding mask 和 sequence mask。

Padding Mask:(填充加忽略)每个批次输入序列长度是不一样,需要进行对齐。给较短的序列后面填充 0,对于太长的序列,截取左边的内容,把多余的直接舍弃。这些填充的位置加上一个非常大的负数(负无穷),这样的话,经过 softmax,这些位置的概率就会接近0。

Padding mask 通常是一个与输入序列形状相同的张量,其中的每个值都是一个布尔值(Boolean)。具体来说:

  • True:表示该位置是实际的输入数据。

  • False:表示该位置是填充的部分。

  • 为了屏蔽填充部分,padding mask 会被应用到 QK^TQKT 的结果上,具体操作如下:

    masked_attention_scores=attention_scores+padding_mask

    其中,padding mask 是一个与 attention scores 形状相同的张量,填充部分的值为负无穷(如 −∞),而实际输入部分的值为 0。这样,在经过 softmax 操作后,填充部分的权重会接近于零,从而被忽略。

Sequence mask:在序列建模任务中,特别是在自回归模型(如咱们这个Transformer中的解码器)中,模型需要逐个时间步生成输出。为了防止模型在生成当前时间步的输出时“看到”未来的信息,需要使用 sequence mask 来屏蔽未来时间步的信息。

2d5381af9c954e7dbedd41d06ee3b210.png

Decoder的输出是浮点数的向量列表。把得到的向量映射为需要的词,需要线性层和softmax层获取预测为词的概率。

线性层是一个简单的全连接神经网络,它是由Decoder堆栈产生的向量投影到一个更大,更大的向量中,称为对数向量

假设实验中我们的模型从训练数据集上总共学习到十万个股价数据("output")这对应的Logits矢量也有十万个长度(每一段表示了一个唯一股价的得分)。在线性层之后是一个softmax层,softmax将这些分数转换为概率。选取概率最高的索引,然后通过这个索引找到对应的股价作为输出。

1.3·self-Attention

self-Attention :这个在我们的金融分析中可以理解为已经测试过的股价和现在正在测试印证的股价之间的关系。

其核心内容是为输入向量每个内容学习一个权重,比如说我输入了上海电气,三年来的1000多个股价数据作为输入向量。那么我的每一天的这个股价就可以学习到一个权重。而且每个股价的权重是由三个不同的向量组成的,分别是Query向量( Q ),Key向量( K)和Value向量( V ),长度均是64。它们是通过3个不同的权值矩阵由嵌入向量 X 乘以三个不同的权值矩阵 WQ,WK ,WV 得到,其中三个矩阵的尺寸也是相同的,均是 512*64。示例如下:

7088f4f4cb394614971a546a194a4111.png

1.嵌入:首先是把输入转换成嵌入向量的X(带有位置编码)。

2.qkv向量:其次我们计算嵌入向量的 qkv三个向量值。

3.注意力打分(即本元素与全部元素间的关联性):接着计算score,对score进行归一化(除以K的维度平方根,及公式中的√dk)。

4.归一化:对score施以softmax激活函数,使得最后的列表和为1(softmax1+softmax2+...+softmaxn=1)

softmax的值表示其在整个向量中的表示程度。

5.加权求和:softmax点乘Value值 v ,得到加权的每个输入向量的评分v,最终求和,生成self-attention层的输出。

计算流程:

47fbeed25f044ac8b33ac9a1ea1c8a68.png

b7a2ef02298e444c982c6bfdacf1f1a7.png

但是对于我们金融分析来说,我们并不需要十分了解self-Attention的底层逻辑,那么我把它的底层逻辑换算成简单的原理来解释一下。就是来计算每个数据和其他所有数据之间的关系。比如说我要分析360的股市,那么它有很多概念,网络游戏,AI语料,虚拟数字人,软件服务,信息安全等。(这里我们把360本身去除,为了方便例子理解)那么它的处理流程就可以简化为下图(其中的数字占比表示为自注意机制所得出的两者关系):

ab5ced9e627743b48bf4b4dbb9d6d9b9.png

与上同理我们这里面所有的输入数据都会进行这一样的计算。

1.4.Multi-Head Attention(h个self-Attention的集合)

1.先把输入数据x输入到h个self-Attention中

得到特征矩阵Zi,i∈{1,2,..,h}

2.把h个特征矩阵Zi,i∈{1,2,..,h}按列向量拼成

一个大的特征矩阵(也可以通过前馈神经网络把

所有特征矩阵降为一个特征矩阵Z)

3.最后进行一层全链接得到z

5078d04f9f534824831fd6f732ee19a4.png

1.5.Positional Encoding

在介绍Positional Encoding前必须先介绍Embedding,这是在输入的序列被送入编码器前发生,会在每个元素原始数据中嵌入一个数字,使所有元素的嵌入数组组成数字序列,最后嵌入层再把数字序列映射成嵌入向量。

e24835b1a92747558b29d364206ea087.png

由于模型没有Recurrence/Convolution,因此是无法捕捉到序列顺序信息的,为了使用序列的顺序信息,需要将tokens的相对以及绝对位置信息注入到模型中去。

transformer给encoder层和decoder层的输入添加了一个额外的向量Positional Encoding,维度和embedding(embedding是将这些离散的符号转换为连续的向量表示,从而使得模型能够处理这些符号,并捕捉它们之间的语义关系。)的维度一样,这个向量能决定当前元素的位置,或者说在一个输入矩阵中不同的元素之间的距离。这样,模型可以区分序列中不同位置的元素,从而更好地捕捉序列的顺序信息,计算方法如下

a19c800629d6451c8a8a653ef6e86954.png

其中pos是指当前元素在输入数据中的位置,i是指向量中每个值的index,偶数位置,使用正弦编码,奇数位置,使用余弦编码dmodel 是词嵌入的维度。最后把这个Positional Encoding与embedding的值加,作为输入送到下一层。

1.6.残差模块与normalization

在transformer中,每一个子层(self-attetion,ffnn)之后都会接一个残差模块,并且有一个Layer normalization;

2个编码器与解码器的例子如下:

1025eed43fdf43e89c42b519205f6ee2.png

那为什么要引入残差呢?因为随着网络深度的增加,训练变得愈加困难,在基于随机梯度下降的网络训练过程中,误差信号的多层反向传播非常容易引发“梯度弥散”(梯度过小会使回传的训练误差信号极其微弱)或者“梯度爆炸”(梯度过大导致模型出现NaN)的现象。而残差的引入就能极大改善这个问题。

残差模块:y=F(x,w)+x 高速公路网络的“变换门”和“携带门”都为恒等映射时(即令T=1,C=1T=1,C=1),就得到了残差网络

  • x 是输入。

  • F(x, w)F(x,w) 是网络中的一部分,通常是一个或多个卷积层。

  • y 是输出。

F(x,w) 表示的是网络的“变换”部分,而 x 则是“携带”部分。当“变换门”和“携带门”都为恒等映射时(即 T = 1 和 C = 1),公式简化为:

y = x + F(x, w)

残差网络的核心思想是通过引入“跳跃连接”(skip connection)(跳跃连接允许输入x直接传递到输出,而不经过中间的变换层。这种设计使得网络可以学习到输入和输出之间的残差,而不是整个映射。),使得网络可以直接学习输入和输出之间的残差(即 F(x, w)),而不是直接学习输出。

在引入残差网络后,还需要对网络层输出的数据进行再归一化,来减小反向传播的偏差,这里我们使用layer normalization(归一化数据的一种方式,不过 LN 是在每一个样本上计算均值和方差,而每一个特征维度上进行归一化)。

参考文献:

https://blog.csdn.net/weixin_44695969/article/details/102997574 

https://blog.csdn.net/jiaowoshouzi/article/details/89073944 

https://blog.csdn.net/qq_41664845/article/details/84969266 

https://zhuanlan.zhihu.com/p/139595546 

http://jalammar.github.io/illustrated-transformer

https://zhuanlan.zhihu.com/p/48508221 

https://zhuanlan.zhihu.com/p/60821628 

https://blog.csdn.net/u013069552/article/details/108074349

https://blog.csdn.net/chen_yiwei/article/details/88671959

https://blog.csdn.net/li15006474642/article/details/104391202

https://blog.csdn.net/weixin_42035282/article/details/138375831

 

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

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

相关文章

【一本通】两个数的最小公倍数

【一本通】两个数的最小公倍数 C语言代码C 代码Java代码Python代码 💐The Begin💐点点关注,收藏不迷路💐 输入两个正整数,编程计算两个数的最小公倍数。 输入 两个整数 输出 最小公倍数 样例输入 12 18样例输出 …

D 咖智能饮品机器人:开启商业新篇

在科技迅猛发展的当下,智能机器人正逐步渗透到各个商业领域,D 咖智能饮品机器人便是其中的佼佼者,它的出现为饮品行业带来全新的发展契机,有望开启商业新篇。 从大环境来看,消费者对于饮品的需求日益多元化和个性化。他…

35. Three.js案例-创建带阴影的球体与平面

35. Three.js案例-创建带阴影的球体与平面 实现效果 知识点 WebGLRenderer WebGLRenderer 是Three.js中用于渲染场景的主要类之一,它负责将场景中的对象渲染到画布上。 构造器 new THREE.WebGLRenderer(parameters : Object) 参数类型描述parametersObject可选…

leetcode212. 单词搜索 II

给定一个 m x n 二维字符网格 board 和一个单词(字符串)列表 words, 返回所有二维网格上的单词 。 单词必须按照字母顺序,通过 相邻的单元格 内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一…

容器化技术

文章目录 虚拟化容器容器隔离实现隔离文件 chroot隔离访问 namespace隔离资源 cgroups Dockerkubernetes 虚拟化容器 容器的首要目标是让软件分发部署过程从传统的发布安装包、靠人工部署转变为直接发布已经部署好的、包含整套运行环境的虚拟计划镜像。 一个计算机软件能够给正…

【潜意识Java】javaee中的SpringBoot在Java 开发中的应用与详细分析

目录 一、前言 二、Spring Boot 简介 三、Spring Boot 核心模块 四、Spring Boot 项目实战:构建一个简单的 RESTful API 1. 创建 Spring Boot 项目 2. 配置数据库 3. 创建实体类 4. 创建 JPA 仓库接口 5. 创建服务层 6. 创建控制器层 7. 测试 API 8. 运…

土地档案管理关系[源码+文档]

目录 摘 要 Abstract 1 绪论 1.1 可行性研究编写目的 1.2 项目背景 1.3 土地管理现状 1.4 土地档案管理研究方向 1.5 项目目标 1.6 项目设计原则 1.6.1 实用性原则 1.6.2 经济性原则 1.6.3 合法性原则 2 相关技术介绍 2.1 三层架构的选择 2.2 编程…

使用C语言编写UDP循环接收并打印消息的程序

使用C语言编写UDP循环接收并打印消息的程序 前提条件程序概述伪代码C语言实现编译和运行C改进之自由设定端口注意事项在本文中,我们将展示如何使用C语言编写一个简单的UDP服务器程序,该程序将循环接收来自指定端口的UDP消息,并将接收到的消息打印到控制台。我们将使用POSIX套…

Audiocraft智能音频和音乐生成工具部署及使用

1、概述 Facebook开源了一款名为AudioCraft的AI音频和音乐生成工具。 该工具可以直接从文本描述和参考音乐生成高质量的音频和音乐。AudioCraft包含MusicGen、AudioGen和EnCodec三个模型,分别实现音乐生成、音频生成和自定义音频模型构建。 2、项目地址 https://…

vulnhub靶场【DriftingBlues】之7

前言 靶机:DriftingBlues-6,IP地址192.168.1.65 攻击:kali,IP地址192.168.1.16 都采用虚拟机,网卡为桥接模式 主机发现 使用arp-scan -l或netdiscover -r 192.168.1.1/24 信息收集 使用nmap扫描端口 SSH服务&…

SCAU期末笔记 - Linux系统应用与开发教程样卷解析(2024版)

我真的不理解奥,为什么会有给样卷不自带解析的,对答案都没得对,故整理一篇 样卷1 一、选择题 1、为了遍历shell脚本调用时传入的参数,需要在shell脚本中使用_____。 A.$#表示参数的个数B.S表示所有参数C.$0表示脚本名D.$1表示…

spring\strust\springboot\isp前后端那些事儿

后端 一. 插入\更新一条数据&#xff08;老&#xff09; Map<String, Object> parameterMap MybatisUtil.initParameterSave("Send_ProjectFrozenLog", sendProjectFrozenLog); commonMapper.insert(parameterMap);parameterMap MybatisUtil.initParameter…

对golang的io型进程进行off-cpu分析

背景&#xff1a; 对于不能占满所有cpu核数的进程&#xff0c;进行on-cpu的分析是没有意义的&#xff0c;因为可能程序大部分时间都处在阻塞状态。 实验例子程序&#xff1a; 以centos8和golang1.23.3为例&#xff0c;测试下面的程序&#xff1a; pprof_netio.go package m…

CSS Grid 布局:属性及使用详解

CSS Grid 布局&#xff1a;属性及使用详解 一、CSS Grid 布局的基础概念二、主要的 CSS Grid 属性1、display: grid / display: inline-grid声明 Grid 容器2、grid-template-columns / grid-template-rowsGrid 容器中列和行的尺寸3、 grid-template-areas命名布局区域4、gap/ g…

【数学建模】利用Matlab绘图(2)

一、Matlab中plot函数的基本用法 在matlab中&#xff0c;函数的基本用法主要包括以下几种 第一类&#xff1a; plot(X,Y,LineSpec) 第二类&#xff1a; plot(tbl,xvar,yvar) 1.1 第一类 1.1.1x-y坐标 x和y的选择取决于绘图所需的数据类型以及图像的类型。下表列出了几种…

编写工具模块

文章目录 1.新建模块1.新建模块sun-common-tool2.sun-dependencies指定依赖3.sun-common统一管理sun-common-tool子模块4.sun-common-tool的pom.xml5.清除掉创建模块时默认sun-frame对sun-common-tool进行管理 2.常用工具类1.DateUtils.java2.EncodeUtils.java3.IpUtils.java4.…

构建一个rust生产应用读书笔记四(实战3)

从这一节开始&#xff0c;我们将继续完善邮件订阅生产级应用&#xff0c;根据作者的选型sqlx作为数据库操作的类库&#xff0c;它有如下优点&#xff1a; 它旨在提供高效、安全且易于使用的数据库交互体验。sqlx 支持多种数据库&#xff0c;包括 PostgreSQL、MySQL 和 SQLite&…

视频直播点播平台EasyDSS推拉流技术结合无人机推流在道路交通巡检场景中的应用

随着城市化进程的加速&#xff0c;交通网络日益复杂&#xff0c;交通巡检工作面临着前所未有的挑战。传统的巡检方式往往依赖于人工巡查或地面监控设备&#xff0c;但这些方法存在巡检范围有限、效率低下等缺点。 无人机凭借其高空视野、灵活机动、实时监控等优势&#xff0c;…

VBA技术资料MF238:ADO提取多文件区域指定数据到工作表

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

Mapper代理开发

引入 Mybatis入门方式中&#xff0c;以下代码仍存在硬编码问题 Mapper 代理开发&#xff1a; 目的&#xff1a; 解决原生方式中的硬编码 简化后期执行sql ------下图中&#xff0c;第一段代码是原生硬编码代码块&#xff0c;第二个是引入了Mapper代理开发的代码块。 Mapper代…