学习周报2.26

news/2024/4/25 14:13:11/文章来源:https://blog.csdn.net/qq_45612705/article/details/129225491

文章目录

  • 前言
  • 文献阅读
    • 摘要
    • 方法
    • 结果
  • 深度学习
    • Encoder-Decoder(编码-解码)
    • 信息丢失的问题
    • Attention机制
  • 总结


前言

This week,I read an article about daily streamflow prediction.This study shows the results of an in-depth comparison between two different daily streamflow prediction models: a novel simpler model based on the stacking of the Random Forest and Multilayer Perceptron algorithms, and a more complex model based on bi-directional Long Short Term Memory (LSTM) networks.The two models show comparable forecasting capabilities.In addition,I learn the attention mechanism and the calculation process through some examples.
本周阅读文献,文献主要研究对比了两种河流日流量预测模型,基于随机森林和多层感知机算法叠加的简单模型以及基于双向长短时记忆网络的复杂模型,通过研究发现两种模型预测能力基本相当。另外,学习了attention机制,通过例子了解attention的计算过程。


文献阅读

题目:Stacked machine learning algorithms and bidirectional long short-term memory networks for multi-step ahead streamflow forecasting: A comparative study

作者:Francesco Granata, Fabio Di Nunno, Giovanni de Marinis

摘要

河流流量的预测是防洪和优化水资源管理的一项基本任务。但由于流域特征,水文过程和气候因素的高不确定性,导致预测过程很困难。本研究对比了两种不同的日流量预测模型:基于随机森林和多层感知机算法叠加的简单模型以及基于双向长短时记忆网络的复杂模型。结果表明两种模型预测能力相当,堆叠模型在预测峰值流速方面优于双向LSTM网络模型,但在预测低流速方面不太准确。

随着模型日益复杂,依赖大量的参数和输入数据,而这些参数和输入数据往往不容易获得,导致模型计算成本大。因此,建立基于少量输入变量和少量参数的简单模型将非常有用,其特点是具有与最近开发的复杂模型相当的预测能力。因此,建立基于少量输入变量和少量参数的简单模型将非常有用,其特点是具有与最近开发的复杂模型相当的预测能力,并试图回答以下问题:
1.这种新颖的集成模型能否提供与更复杂的深度学习算法(如双向LSTM)在日常流量预测中相当的结果?
2.随着预测范围的增加,模型的性能如何变化?

堆叠是一种集成机器学习技术,通过元分类器组合多个分类或回归模型。基于整个训练数据集开发单个分类或回归模型,然后根据融合中各个模型的输出(元特征)拟合元分类器。通过堆叠随机森林(RF)和多层感知器(MLP)算法获得集成模型。弹性网络(EN)算法被用作元学习器。

方法

随机森林和多层感知器的堆叠

随机森林(RF)和多层感知器(MLP)被用作基础学习器,而弹性网络(EN)算法则被选为元分类器来开发堆叠预测模型。

RF 是一种集成预测算法,通过组合一组单独的回归树来提供目标变量的单个值。每个单独的回归树的特征是根节点,其中包括训练数据集,内部节点指定输入变量的条件,叶子表示分配给目标变量的实际值。回归树模型是通过将输入数据集递归细分为子集来开发的。多变量线性回归模型在每个子集中提供预测。在树的生长过程中,每个分支被划分为较小的分区,评估每个字段上所有可能的细分,并在每个阶段找到拆分为两个不同的分区,从而最小化最小二乘偏差:
在这里插入图片描述N(t) 是节点 t 中的单元数,ym是第 i 个单位中目标变量的值,并且ym是节点 t 中目标变量的平均值。
R(t)给出了每个节点中“不纯度”的估计值。

MLP是前馈人工神经网络.MLP 至少由三层节点组成:输入层、隐藏层和输出层。输入层包括接收输入数据的节点。隐藏层中的每个节点使用加权线性和处理前一层的值,然后是非线性激活函数。最后一个隐藏层将值传递给输出层,输出层将它们转换为最终计算值。算法训练使用反向传播技术。
本研究中使用的神经网络有 1 个隐藏层。选择sigmoid作为激活函数,选择平方误差作为损失函数。

弹性网络是两种最常用的线性回归正则化变体的组合:LASSO(最小绝对收缩和选择运算符)和Ridge方法。LASSO,也称为 L1 正则化,通过对普通最小二乘 (OLS) 回归引入绝对惩罚来追求选择最解释变量的目标。Ridge正则化,称为 L2 正则化,也在 OLS 公式中引入了惩罚,惩罚平方权重而不是绝对权重。通过这种方式,大权重会受到相当大的惩罚,而许多小权重分布在特征谱中。
双向长短期记忆网络
LSTM网络已被证明在解决涉及水文量时间序列的复杂问题方面特别有效。LSTM 层由一组以循环方式连接的内存块组成。它们中的每一个都包含一个或多个反复连接的存储单元和三个乘法单元:输入、输出和遗忘门,允许对单元进行读取、写入和重置操作。
LSTM网络中的每个存储单元通过隐藏状态(ht),称为短期记忆和细胞状态(Ct),称为长期记忆。LSTM单元的代表性方程可以采用以下形式提出:
在这里插入图片描述
与标准LSTM相比,双向LSTM具有数据在正向和反向方向上同时处理。时间步长 t 的双向 LSTM 网络的输出由两个单独的隐藏级别的组合提供,其中每个隐藏级别代表一个训练序列,对应于正向和反向。因此,双向 LSTM 可以比标准 LSTM 更好地学习输入序列的未来和过去信息。

评估指标
使用四种不同的估值指标来估计预测模型的准确性:决定系数、均方根误差、平均方向精度和平均绝对百分比误差。
决定系数(R2) 是回归模型中的统计度量,它通过范围 [0, 1] 中的数字评估模型与数据的拟合优度。

在这里插入图片描述

均方根误差 (RMSE) 是绝对误差的度量,其中偏差被平方以防止正值和负值相互抵消。此外,该度量值放大了更大价值的误差,这一特征会惩罚具有最显着误差的模型。

在这里插入图片描述
其中 N 是时间序列中预测数据的总量。
平均方向精度 (MDA) 将预测方向(向上或向下)与实际实现的方向进行比较,提供预测模型可以检测到时间序列正确方向的概率。
在这里插入图片描述
其中 sgn(·) 是符号函数,而 1 是指标函数。

平均绝对百分比误差 (MAPE) 是预测模型的绝对百分比误差的平均值,其中误差定义为实际值减去预测值。
在这里插入图片描述

结果

在这里插入图片描述
本研究发现,基于RF和MLP算法堆叠的溪流预测模型可以产生与基于Bi-LSTM的更复杂的模型相当的结果。堆叠模型的最大优势在于计算时间,大约是Bi-LSTM模型所需计算时间的10%。

深度学习

Encoder-Decoder(编码-解码)

Encoder-Decoder是一个模型构架,是一类算法统称,并不是特指某一个具体的算法,在这个框架下可以使用不同的算法来解决不同的任务。首先,编码(encode)由一个编码器将输入序列转化成一个固定维度的稠密向量,解码(decode)阶段将这个激活状态生成目标译文。
在这里插入图片描述
说明:
不论输入和输出的长度是什么,中间的“向量c”长度都是固定的(这是它的缺陷所在)。根据不同的任务可以选择不同的编码器和解码器(例如,CNN、RNN、LSTM、GRU等)
Encoder
对于输入序列x=(x1,…,xT),其会将输入序列如图所示编码成一个context vector c ,encoder一般使用RNN,在RNN中,当前时间的隐藏状态是由上一时间的状态和当前时间输入决定的,也就是
在这里插入图片描述
Decoder
一般其作用为在给定context vector c和所有已预测的词 {y1,…,yt−1}去预测 yt,t时刻隐藏状态st为:
在这里插入图片描述

信息丢失的问题

通过上文可以知道编码器和解码器之间有一个共享的向量(上图中的向量c),来传递信息,而且它的长度是固定的。这会产生一个信息丢失的问题,编码器要将整个序列的信息压缩进一个固定长度的向量中去。但是这样做有两个弊端,一是语义向量无法完全表示整个序列的信息,还有就是先输入的内容携带的信息会被后输入的信息稀释掉,或者说,被覆盖了。使得在解码的时候一开始就没有获得输入序列足够的信息,那么解码的准确度也会低。为了解决这些缺陷,又引入了Attention机制,Attention模型的特点是Encoder不再将整个输入序列编码为固定长度的中间向量,而是编码成一个向量序列。Encoder 将句子编码成一个向量序列,而不是一个向量,然后再预测翻译单词的每一步选择这些向量的子集作为注意力向量输入到 Decoder 中。

Attention与传统的Seq2Seq模型主要有以下两点不同:
1.encoder提供了更多的数据给到decoder,encoder会把所有的节点的hidden state提供给decoder,而不仅仅只是encoder最后一个节点的hidden state。
2.decoder并不是直接把所有encoder提供的hidden state作为输入,而是采取一种选择机制,把最符合当前位置的hidden state选出来。

确定哪一个hidden state与当前节点关系最为密切,计算每一个hidden state的分数值,对每个分数值做一个softmax的计算,这能让相关性高的hidden state的分数值更大,相关性低的hidden state的分数值更低。
在这里插入图片描述
把每一个encoder节点的hidden states的值与decoder当前节点的上一个节点的hidden state相乘,如上图,h1、h2、h3分别与当前节点的上一节点的hidden state进行相乘(如果是第一个decoder节点,需要随机初始化一个hidden state),也就是计算每一个输入位置j的hidden vector与当前输出位置的关联性similarity(st-1,hj),相似度的计算方式有很多,最后会获得三个值,这三个值就是上文提到的hidden state的分数,这个数值对于每一个encoder的节点来说是不一样的,把该分数值进行softmax计算,得到attention的分布,计算之后的值就是每一个encoder节点的hidden states对于当前节点的权重,把权重与原hidden states相乘并相加,得到的结果即是当前节点的hidden state。Atttention的关键就是计算这个分值。

Attention机制

Attention机制从上文讲述例子中的Encoder-Decoder框架中剥离,Attention函数的本质可以被描述为一个查询(query)到一系列(键key-值value)对的映射。在计算attention时主要分为三步:
第一步是将query和每个key进行相似度计算得到权重,常用的相似度函数有点积,拼接,感知机等;
第二步一般是使用一个softmax函数对这些权重进行归一化,我们将 αi 称之为注意力分布(概率分布);
最后将权重和相应的键值value进行加权求和得到最后的attention。目前在NLP研究中,key和value常常都是同一个,即key=value。
在这里插入图片描述


总结

带有Attention的Encoder-Decoder网络的迭代过程:
1.Encoder网络按照原来的方法计算出 h1,h2…ht;
2.计算Decoder网络,对于第 K个输出词语,先计算出得到Ck所需要的h1,h2…ht的权重ak,ak的计算如上述公式所示,再计算Ck=ak1h1+ak2h2…;
3.将Hk-1,yk-1,Ck带入f(Hk-1,yk-1,Ck)计算Hk,再把Hk带入网络计算yk。

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

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

相关文章

Lambda表达式的本质

一直想写一篇文章,来总结lambda表达式,但是之前感觉总结的不是特别到位,现在看了几篇文章和视频后,感觉对lambda表达式有了比较深刻的认识,现在进行记录总结如下: lambda表达式又叫做匿名函数,…

网络应用之HTTP响应报文

HTTP响应报文学习目标能够知道HTTP响应报文的结构1. HTTP响应报文分析HTTP 响应报文效果图:响应报文说明:--- 响应行/状态行 --- HTTP/1.1 200 OK # HTTP协议版本 状态码 状态描述 --- 响应头 --- Server: Tengine # 服务器名称 Content-Type: text/html; charsetUTF-8 # 内容类…

【教程】Notion笔记多平台设置中文显示

这个笔记软件界面挺好看,惊艳到了。 目录 网页版 桌面端 Windows版 Mac端 安卓端 网页版 直接安装这个插件即可,Chrome/Edge适用:Notion中文版 桌面端 都要去这个github下载语言包,用于替换文件:https://github.c…

xxjob分布式任务调度

前言 在工作中使用到了定时任务,通过查找资料选择了xxjob,以下是xxjob的介绍以及基本的使用. xxjob介绍 XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 将调度行为抽象形成“调度中心”公共平台,而平台自身…

OpenCV-Python系列(二)—— 图像处理(灰度图、二值化、边缘检测、高斯模糊、轮廓检测)

一、【灰度图、二值化】 import cv2 img cv2.imread("lz2.png") gray_img cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 灰度图 # 二值化,(127,255)为阈值 retval,bit_img cv2.threshold(gray_img, 127, 255, cv2.THRESH_BINARY) cv2.imshow(photo1,im…

Laravel框架03:DB类操作数据库

Laravel框架03:DB类操作数据库一、概述二、数据表的创建与配置三、增删改操作1. 增加信息2. 修改数据3. 删除数据四、查询操作1. 取出基本数据2. 取出单行数据3. 获取一个字段的值4. 获取多个字段的值5. 排序6. 分页五、执行任意的SQL语句一、概述 按照MVC的架构&a…

【R统计】R语言相关性分析及其可视化

💂 个人信息:酷在前行👍 版权: 博文由【酷在前行】原创、需要转载请联系博主👀 如果博文对您有帮助,欢迎点赞、关注、收藏 订阅专栏🔖 本文收录于【R统计】,该专栏主要介绍R语言实现统计分析的…

浅谈QWebChannel、QWebChannelAbstractTransport、QWebSocketServer、QWebSocket用法及之间关系

1.前言在现实业务中,经常遇到这样的需求:一端采用web形式开发的,如:客户端采用html、javascript、nodejs开发;而另一端采用C开发,如:Qt开发的服务端。web页面端需和Qt开发的服务端进行通信、数据…

房屋出租管理系统

1. 铺垫 1.1 项目真实开发的过程 上来要做什么???? 有电脑—》配环境(JDK、IDEA、MAVEN……) 这个项目:房屋管理系统 从什么角度出发,第一步做什么?? 架构 …

IoT项目系统架构案例2

项目背景 1.这个项目是对之前的案例的升级改造参考:IoT项目系统架构案例_iot案例_wxgnolux的博客-CSDN博客2.基于方案1的项目实施过程中碰到的问题,对硬件设备标准化的理念及新的功能需求(如根据天气预报温度调水温,APP界面可操作性优化等)•采用目前IoT主流厂商的架…

vue中render函数的作用和参数(vue2中render函数用法)

render 函数是 Vue2.x 新增的一个函数、主要用来提升节点的性能,它是基于 JavaScript 计算。使用 Render 函数将 Template 里面的节点解析成虚拟的 Dom 。Vue 推荐在绝大多数情况下使用模板来创建 HTML。然而在一些场景中,需要 JavaScript 的完全编程能力…

gitlab部署使用,jenkins部署使用

gitlab部署使用,jenkins部署使用gitlab下载gitlab安装gitlab使用gitlab设置中文修改管理员密码创建组,创建项目,创建用户jenkins下载jenkins安装jenkin使用jenkins更改管理员密码配置拉取代码配置登录gitlab拉取代码的账号密码配置项目配置gitlab仓库配置构建构建构…

CTFer成长之路之Python中的安全问题

Python中的安全问题CTF 1.Python里的SSRF 题目提示 尝试访问到容器内部的 8000 端口和 url path /api/internal/secret 即可获取 flag 访问url: http://f5704bb3-5869-4ecb-9bdc-58b022589224.node3.buuoj.cn/ 回显如下: 通过提示构造payload&…

Android 基础知识4-3.2 EditText(输入框)详解

一、EditText(输入框)介绍 EditText在开发中也是经常使用的控件,比如,要实现一个登录页面,需要用户输入账号、密码等信息,然后我们或得用户输入的内容,把它交给服务器来判断。因此,这…

远程使用服务器上的Jupyter notebook

记录下如何远程使用服务器上的jupyter notebook。 主要是在服务器端执行以下操作: 激活需要使用的环境使用pip list 或conda list检查是否已经安装notebook。如果没有安装,则使用pip install jupyter notebook进行安装;反之忽略这一步&…

一些硬件学习的注意事项与快捷方法

xilinx系列软件 系统适用版本 要安装在Ubuntu系统的话,要注意提前看好软件适用的版本,不要随便安好了Ubuntu系统又发现对应版本的xilinx软件不支持。 如下图,发行说明中会说明这个版本的软件所适配的系统版本。 下载 vivado vitis这些都可以…

从编年史角度看大数据兴起

开源大数据编年史大数据发展的各阶段大数据诞生初期大数据百花齐放的发展之路追求性能的大数据成熟期大数据发展的各阶段 开源大数据的编年史的话,实际上分为三个阶段。一般来说它分为初期、发展期、成熟期。 初期就是大数据刚开始萌芽的一个阶段,它从…

selenium模块(自动化)

文章目录一、环境配置二、使用selenium解析源码三、基本函数四、子页面(ifFrame)(动作链,拖拽)五、实现无可视化界面,规避被检测的风险(反反爬)六、等待七、异常处理Selenium是自动化…

kafka使用入门案例与踩坑记录

每次用到kafka时都会出现各种奇怪的问题,综合实践,下面汇总下主要操作步骤: Docker镜像形式启动 zookeeper启动 docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeperkafka启动 docker run --name kafka01 -p 9092:909…

YOLOV5s+Shufflenetv2+VOC数据集+迁移学习

前言:更改YOLOV5的backbone网络为 Shufflenetv2,便于达到轻量化的目的 1. 试运行YOLOv5 b站推土机 2. VOC数据集处理 3. 更改轻量级网络 参考魔改yolov5 3.1 在common.py末尾加入以下代码 #添加轻量化模块Shufflenetv2 # ------------------------…