论文阅读 - TIME-LLM: TIME SERIES FORECASTING BY REPROGRAMMING LARGE LANGUAGE MODELS

news2024/11/25 17:23:20

论文链接: https://arxiv.org/abs/2310.01728

目录

摘要

1 INTRODUCTION

2 RELATED WORK

3 METHODOLOGY

3.1 MODEL STRUCTURE

4 MAIN RESULTS

4.1 长期预测

 4.2 短期预测

 4.3 FEW-SHOT FORECASTING

 5 CONCLUSION AND FUTURE WORK


摘要

动机:

        时间序列预测在许多真实世界的动态系统中具有重要意义,并已得到广泛研究。

        与自然语言处理(NLP)和计算机视觉(CV)不同,在自然语言处理和计算机视觉中,一个大型模型可以处理多个任务,而时间序列预测模型往往是专门的,需要针对不同的任务和应用进行不同的去符号化。虽然预训练基础模型在 NLP 和 CV 领域取得了令人瞩目的进展,但它们在时间序列领域的发展却受到了数据稀缺性的限制。

        最近的研究表明,大型语言模型(LLM)对复杂的标记序列具有强大的模态识别和推理能力。然而,如何有效地调整时间序列数据和自然语言的模式以利用这些能力仍然是一个挑战

        

方法:

        在这项工作中,提出了 TIME-LLM,这是一个重新编程的框架,在保持骨干语言模型不变的情况下,将 LLM 重新用于一般时间序列预测。

                首先用文本原型对输入的时间序列进行重新编程,然后将其输入到冻结的 LLM 中,使两种模式保持一致。

                为了增强 LLM 对时间序列数据进行推理的能力,作者提出了 "提示即前缀"(Prompt-as-Prefix,PaP),它可以丰富输入上下文,并指导对重新编程的输入片段进行转换。

                LLM 最后对转换后的时间序列片段进行预测,从而获得预测结果。

        综合评估表明,TIME-LLM 是一种功能强大的时间序列学习器,其性能优于最先进的专业预测模型。更重要的是,TIME-LLM 在少数几次学习和零次学习的情况下都表现出色。

1 INTRODUCTION

背景:

        时间序列预测是许多真实世界动态系统的关键能力(Jin 等人,2023a),应用范围从需求规划(Leonard,2001 年)和库存优化(Li 等人,2022 年)到能源负荷预测(Liu 等人,2023a)和气候建模(Schneider & Dickinson,1974 年)。

        每项时间序列预测任务通常都需要广泛的领域专业知识和特定任务的模型设计。这与 GPT-3(Brown 等人,2020 年)、GPT-4(OpenAI,2023 年)、Llama(Touvron 等人,2023 年)等基础语言模型形成了鲜明对比。

LLM模型优势:

        预先训练的基础模型,如大型语言模型(LLM),推动了计算机视觉(CV)和自然语言处理(NLP)的快速发展。虽然时间序列建模没有获得同样的重大突破,但 LLMs 令人印象深刻的能力激发了它们在时间序列预测中的应用(Jin 等人,2023b)。利用 LLMs 推动预测技术的发展,有几个方面需要考虑: 通用性。LLMs 已经证明了其在少数几次和零次迁移学习方面的卓越能力(Brown 等人,2020 年)。它具有跨领域通用预测的潜力,而无需根据任务从头开始重新训练。与此相反,目前的预测方法往往是按领域僵化地专门化:

                数据效率。通过利用预先训练的知识,LLMs 已显示出只需少量示例就能执行新任务的能力。这种数据效率可以在历史数据有限的情况下进行预测。相比之下,目前的方法通常需要大量的领域内数据。

                推理。LLMs 具有复杂的推理和模式识别能力(Mirchandani 等人,2023 年;Wang 等人,2023 年;Chu 等人,2023 年)。利用这些技能,可以通过学习到的高层次概念进行高精度预测。现有的非 LLM 方法主要是统计方法,没有太多的先天推理能力。

                多模态知识。随着 LLM 架构和训练技术的改进,它们会获得更多不同模式的知识,如视觉、语音和文本(Ma 等人,2023 年)。利用这些知识可以实现融合不同数据类型的协同预测。传统工具缺乏联合利用多个知识库的方法。

                易于优化。LLM 只需在大规模计算中训练一次,然后就可以应用于预测任务,而无需从头开始学习。优化现有预测模型往往需要大量的架构搜索和超参数调整(Zhou 等人,2023b)。

                总之,与当前的专业建模范式相比,LLM 为时间序列预测提供了一条更通用、更高效、更协同和更易用的途径。因此,将这些功能强大的模型用于时间序列数据,可以释放尚未开发的巨大潜力。

将LLM用于时间序列推理的难点:

        上述优势的实现取决于时间序列数据和自然语言模式的有效协调。然而,这是一项具有挑战性的任务,因为 LLM 是在离散的token上运行的,而时间序列数据本质上是连续的。此外,解释时间序列模式的知识和推理能力并不自然地存在于 LLM 的预训练中。因此,如何释放 LLM 内的知识,以准确、数据高效和与任务无关的方式激活其进行一般时间序列预测的能力,仍然是一个有待解决的难题。

方法:

        在这项工作中,作者提出了 TIME-LLM,这是一个重新编程框架,可在保持骨干模型不变的情况下,将大型语言模型用于时间序列预测。

        其核心思想是将输入的时间序列重新编程为更适合语言模型能力的文本原型表示

        为了进一步增强模型对时间序列概念的推理能力,作者引入了 "提示即前缀"(Prompt-as-Prefix,PaP)这一新思路,利用额外的上下文来丰富输入时间序列,并以自然语言的方式提供任务指示。这为应用于重新编程输入的所需转换提供了声明性指导。

        然后对语言模型的输出进行预测,生成时间序列预测。

实验结果:

        综合评估结果表明,通过这种重新编程方法,大型语言模型可以作为有效的少量和零少量时间序列学习器,其性能优于专门的预测模型。通过利用 LLM 的推理能力,同时保持模型的完整性,作者的工作为多模态基础模型指明了方向,这些模型可以在语言和序列数据任务中表现出色。提出的重编程框架提供了一种可扩展的范式,可为大型模型赋予超出其原始预训练的新能力。在这项工作中的主要贡献可归纳如下:

                引入了一个新概念,即在不改变预先训练好的骨干模型的情况下,为时间序列预测重新编程大型语言模型。在此过程中,证明了预测可以被视为另一种 "语言 "任务,可以通过现成的 LLM 有效解决。

                提出了一个新框架--TIME- LLM,其中包括将输入时间序列重新编程为对 LLM 来说更自然的文本原型表示,并通过声明性提示(如领域专家知识和任务指示)来增强输入上下文,从而指导 LLM 进行推理。技术表明,多模态基础模型在语言和时间序列方面都很出色。

                在主流预测任务中,TIME-LLM 的性能始终优于最先进的技术,尤其是在少数几次预测和零次预测的情况下。此外,在实现这一卓越性能的同时,还保持了出色的模型重编程效率。因此,作者的研究为释放 LLM 在时间序列和其他序列数据方面尚未开发的潜力迈出了坚实的一步。

2 RELATED WORK

        特定任务学习。大多数时间序列预测模型都是为特定任务和领域(如交通预测)而设计的,并在小规模数据上进行端到端训练。示例如图1:例如,ARIMA 模型是为单变量时间序列预测而设计的(Box 等人,2015 年),LSTM 网络是为序列建模而定制的(Hochreiter & Schmidhuber,1997 年),而时间卷积网络(Bai 等人,2018 年)和变换器(Wen 等人,2023 年)则是为处理较长的时间依赖性而开发的。这些模型虽然在狭窄的任务中取得了良好的性能,但缺乏通用性,无法推广到各种时间序列数据中。

 (图 1:重新编程大型语言模型(LLMs)的示意图,比较(a)特定任务学习和(b)模型微调。(c) 建议研究并演示了如何有效地重新编程开源 LLM,使其成为功能强大的时间序列学习器,而在这种情况下,没有现成的经过精心开发的时间序列预训练模型。)

        模态内适应。CV 和 NLP 领域的相关研究已经证明了预训练模型的有效性,这些模型可以针对各种下游任务进行微调,而无需从头开始进行昂贵的训练(Devlin 等人,2018 年;Brown 等人,2020 年;Touvron 等人,2023 年)。受这些成功经验的启发,近期的研究主要集中在时间序列预训练模型(TSPTMs)的开发上。其中第一步涉及使用不同策略进行时间序列预训练,如监督学习(Fawaz 等人,2018 年)或自我监督学习(Zhang 等人,2022b;Deldari 等人,2022 年;Zhang 等人,2023 年)。这样,模型就能学习代表各种输入时间序列的知识。一旦经过预训练,它就可以在类似领域进行微调,学习如何执行特定任务(Tang 等人,2022 年)。图 1(b) 就是一个例子。TSPTMs 的开发利用了 NLP 和 CV 中预训练和微调的成功经验,但由于数据稀少,在较小规模上仍然受到限制。        

        跨模态适应。在模态内适应的基础上,最近的工作进一步探索了通过多模态微调(Yin 等,2023 年)和模型重编程(Chen,2022 年)等技术,将 NLP 和 CV 中强大的预训练基础模型的知识转移到时间序列建模中。作者的方法与这一类别相符;然而,目前关于时间序列的相关研究还很有限。一个例子是 Voice2Series(Yang 等人,2021 年),它通过将时间序列编辑为适合声学模型的格式,将声学模型(AM)从语音识别调整为时间序列分类。最近,Chang 等人(2023 年)提出了使用 LLM 进行时间序列预测的 LLM4TS。它在 LLM 上设计了一个两阶段的微调过程--首先对时间序列进行有监督的预训练,然后进行特定任务的微调。Zhou 等人(2023a)在不改变自注意层和前馈层的情况下,利用预训练语言模型。该模型在各种时间序列分析任务中进行了微调和评估,并通过转移自然语言预训练的知识,展示了可比的或最先进的性能。与上述方法不同的是,作者既不直接编辑输入时间序列,也不对主干 LLM 进行微调。相反,如图 1(c)所示,建议使用源数据模式对时间序列进行重新编程,同时进行提示,以释放 LLM 作为有效时间序列机器的潜力。

3 METHODOLOGY

        模型架构如图 2 所示。重点是重新编程嵌入式可视语言基础模型,如 Llama(Touvron 等人,2023 年)和 GPT-2(Radford 等人,2019 年),用于一般时间序列预测,而不需要对骨干模型进行任何微调。

        具体来说,考虑以下问题:给定一系列历史观测数据 X \in R^{N\times T},由跨 T 个时间步的 N 个不同一维变量组成,目标是重新编程一个大型语言模型 f (·) 以理解输入时间序列,并准确预测未来 H 个时间步的读数,用 \hat{Y} \in R^{N\times H} 表示,总体目标是最小化地面实况 Y 与预测之间的均方误差,即 \frac{1}{H} \sum_{h=1}^{H} ||\hat{Y}_h - Y_h||_F^2

        方法包括三个主要部分: (1) 输入转换;(2) 预训练和冻结的 LLM;(3) 输出投影。

        最初,一个多变量时间序列被分割成 N单变量时间序列,随后对其进行独立处理(Nie 等人,2023 年)。第 i 个序列表示为 X^{(i)} \in R^{1\times T},在用学习到的文本原型重新编程以调整源模态和目标模态之前,要对其进行归一化、修补和嵌入。

        然后,增强 LLM 的时间序列推理能力,促使它与重新编程的patch一起生成输出表示,并投射到最终预测结果 \hat{Y}^{(i)} \in R^{1\times H}中。

        只有轻量级输入转换和输出投影的参数会被更新,而骨干语言模型则被冻结。视觉语言模型和其他多模态语言模型通常通过配对的跨模态数据进行微调,而 TIME-LLM 模型则是直接优化的,只需一小组时间序列和几个训练历时就能使用,与从头开始建立大型特定领域模型或对其进行微调相比,TIME-LLM 保持了高效率,并减少了资源限制。为进一步减少内存占用,可无缝集成各种现成技术(如量化),以精简 TIME-LLM。

3.1 MODEL STRUCTURE

        输入嵌入。首先,通过可逆实例归一化(RevIN)将每个输入通道 X(i) 单独归一化为具有零均值和单位标准差,以减轻时间序列分布偏移(Kim 等人,2021 年)。

        然后,将 X(i) 划分为若干个长度为 Lp 的连续重叠或非重叠斑块(Nie 等人,2023 年);

        因此,输入斑块的总数为 P = ⌊ (T -Lp) /S ⌋ + 1,其中 S 表示水平滑动步长。其基本动机有两个方面:(1)通过将局部信息聚合到每个patch中,更好地保留局部语义信息;(2)作为token化,形成紧凑的输入标记序列,减少计算负担。给定这些patch X_P^{(i)} \in R^{P\times L_p},将其嵌入为 \hat{X}_P^{(i)} \in R^{P \times d_m},采用简单的线性层作为patch嵌入器,创建维度 d_m

        patch重编程。在这里,将patch嵌入重新编程到源数据表示空间,使时间序列和自然语言的模式相一致,从而激活骨干网的时间序列理解和推理能力。一种常见的做法是学习一种 "噪音 "形式,当这种噪音应用于目标输入样本时,可使预先训练好的源模型在无需更新参数的情况下产生所需的目标输出。. 对于数据桥接而言,这在技术上是可行的。

        示例包括重新利用视觉模型以处理跨域图像(Misra 等人,2023)或重新编程声学模型以处理时间序列数据(Yang 等人,2021)。

难点:

        在这两种情况下,源数据和目标数据之间都存在显式的、可学习的转换,从而允许直接编辑输入样本。然而,时间序列既不能直接编辑,也不能用自然语言无损描述,这对直接引导LLM在不进行资源密集型微调的情况下理解时间序列提出了重大挑战。

        为了缩小这一差距,作者建议在骨干网中使用预先训练好的词嵌入 E \in R^{V \times D}(其中 V 是词汇量大小)对\hat{X}_P^{(i)} 进行重新编程。尽管如此,并没有先验知识表明哪些源token是直接相关的。

        因此,简单地利用 E 将导致巨大且可能密集的重新编程空间。一个简单的解决方案是通过线性探测 E 来维护一小部分文本原型,表示为 E' \in R^{V' \times D},其中 V ′ ≪ V。

        图 3(a) 是一个示例。文本原型学习连接的语言线索,例如 "短上"(红线)和 "稳下"(蓝线),然后将其组合起来,以表示本地patch信息(例如,"短上然后稳下 "表示patch 5 的特征),而无需离开预先训练语言模型的空间。这种方法非常高效,可以自适应地选择相关的源信息。为此,采用了多头交叉注意层。

         具体来说,对于每个头 k = {1, - - - , K},定义查询矩阵 Q_k^{(i)} = \hat{X}_P^{(i)} W_K^Q、键矩阵 K_k^{(i)} = E'W_k^K和值矩阵 V_k^{(i)} = E' W_k^V,其中 W_k^Q \in R^{d_m \times d}W_k^K, W_k^V \in R^{D\times d}。具体来说,D 是骨干模型的隐藏维度,d = ⌊ d_m / K⌋。然后,对每个注意力头中的时间序列patch进行重新编程的操作,定义如下:

         将每个头部的Z^{(i)}_k \in R^{P \times d} 汇总,得到 Z^{(i)} \in R^{P \times d_m} 。然后进行线性投影,使隐藏维度与主干模型保持一致,得到 O^{(i)} \in R^{P \times D}

        提示作为前缀。提示是针对特定任务激活 LLMs 的直接而有效的方法(Yin 等人,2023 年)。然而,将时间序列直接转换为自然语言面临着相当大的挑战,既妨碍了指令数据集的创建,也妨碍了在不影响性能的情况下有效利用即时提示(Xue & Salim,2022 年)。

        最近的进展表明,其他数据模式(如图像)可以作为提示的前缀进行无缝整合,从而促进基于这些输入的有效推理(Tsimpoukelli 等人,2021 年)。受这些发现的启发,作者为了使方法直接适用于真实世界的时间序列,提出了另一个问题:提示可以作为前缀来丰富输入上下文并指导重新编程的时间序列patch的转换吗?它在完成patch重编程的同时,显著增强了 LLM 对下游任务的适应性(见后面的第 4.5 节)。

        图 3(b) 展示了这两种提示方法。在 "patch作为前缀 "方法中,语言模型在自然语言的提示下预测时间序列中的后续值。这种方法会遇到一些限制:

                (1) 语言模型在处理高精度数字时,如果没有外部工具的帮助,通常会表现出灵敏度较低的问题,因此,要准确地处理实际的长期预测任务,会面临巨大的挑战;

                (2) 不同的语言模型需要进行复杂的、个性化的后处理,因为它们是在不同的语料库中进行预训练的,在精确高效地生成高精度数字时,可能会采用不同的token化类型。这就导致预测用不同的自然语言格式表示,如用['0', '.','6','1']和['0', '.','61']表示十进制 0.61

        而 "提示作为前缀 "则巧妙地避免了这些限制。在实践中,确定了构建有效提示的三个关键要素:

                (1) 数据集上下文;

                (2) 任务指令;

                (3) 输入统计数据。

        图 4 是一个prompt示例。数据集的背景为 LLM 提供了有关输入时间序列的重要背景信息,而输入时间序列往往在不同领域表现出不同的特征。

        任务指令是 LLM 为特定任务转换patch嵌入的重要指南。还利用趋势和滞后期等其他重要统计数据来丰富输入时间序列,以促进模式识别和推理。

 

        输出投影。如图 2 所示,在通过冻结 LLM 对提示嵌入和patch嵌入 O^{(i)} 进行打包和前馈后,丢弃前缀部分,得到输出表示。

        然后,对其进行扁平化和线性投影,得出最终预测结果 \hat{Y}^{(i)}

4 MAIN RESULTS

        TIME-LLM 在多种基准和环境下,特别是在少次和零次情况下,始终以较大优势优于最先进的预测方法。作者将方法与大量最新模型进行了比较,包括最近一项对时间序列分析语言模型进行微调的研究(Zhou 等,2023a)。为了确保比较的公平性,在所有基线上都采用了统一的评估管道,并坚持使用(Wu 等,2023 年)中的实验配置。除非另有说明,否则使用 Llama-7B (Touvron 等,2023)作为默认主干。

        基线。与 SOTA 时间序列模型进行了比较,并引用了(Zhou et al. 基准包括一系列基于变换器的方法: PatchTST (2023)、ESTformer (2022)、Non-Stationary Transformer (2022)、FEDformer (2022)、Aut- oformer (2021)、Informer (2021) 和 Reformer (2020)。还选择了一组最新的竞争模型,包括 GPT4TS (2023a)、LLMTime (2023)、DLinear (2023)、TimesNet (2023) 和 LightTS (2022a)。在短期预测方面,进一步将模型与 N-HiTS (2023b) 和 N-BEATS (2020) 进行了比较。

4.1 长期预测

        设置。对 ETTh1、ETTh2、ETTm1、ETTm2、天气、电力(ECL)、交通和 ILI 进行了评估。实施和数据集详情见附录 B。输入时间序列长度 T 设为 512,使用四种不同的预测视距 H∈{96, 192, 336, 720}。评估指标包括均方误差(MSE)和平均绝对误差(MAE)

        结果 简要结果见表 1。在大多数情况下,TIME-LLM 都优于所有基线,而且明显优于大多数基线。与 GPT4TS(Zhou 等,2023a)的比较尤其值得注意。GPT4TS 是一项最新的工作,涉及对骨干语言模型的微调。作者注意到,GPT4TS 和 TimesNet 的平均性能分别提高了 12% 和 20%。与 SOTA 任务专用变换器模型 PatchTST 相比,通过重新编程最小的 Llama,TIME-LLM 实现了平均 MSE 降低 1.4%。与其他模型(如 DLinear)相比,作者的改进也很明显,超过了 12% 。

 4.2 短期预测

        设置。选择 M4 基准(Makridakis 等人,2018 年)作为测试平台,其中包含不同采样频率的营销数据集合。更多详情见附录 B。这种情况下的预测视野相对较小,在 [6, 48] 范围内。输入是预测范围的两倍。评估指标包括对称平均绝对百分比误差 (SMAPE)、平均绝对比例误差 (MSAE) 和总体加权平均值 (OWA)

        结果 表 2 列出了在所有方法中使用统一种子的简要结果。TIME-LLM 始终超越所有基线,比 GPT4TS 高出 8.7%。即使与 SOTA 模型、N-HiTS(Challu 等,2023b)、MASE 和 OWA 相比,TIME-LLM 仍然具有竞争力。

 4.3 FEW-SHOT FORECASTING

        设置。LLM 最近展示了非凡的少量学习能力(Liu 等人,2023b)。在本节中,将评估重新编程的 LLM 在预测任务中是否保留了这种能力。为了进行公平比较,作者沿用了(Zhou 等,2023a)中的设置,并在训练数据有限(即≤前 10%的训练时间步数)的情况下进行评估

        结果 简要的 10% 和 5% 少量学习结果见表 3 和表 4。表 3 和表 4中。TIME- LLM 明显优于所有基线方法,将其归功于重新编程的 LLM 成功激活了知识。有趣的是,作者的方法和 GPT4TS 都持续超越了其他具有竞争力的基线方法,进一步凸显了语言模型作为精通时间序列机器的潜在能力。

         与 GPT4TS 相比,作者的方法在 10% 少量学习的情况下实现了 5% 的 MSE 降低,而无需对 LLM 进行任何微调。与最近的 SOTA 模型相比例如 PatchTST、DLinear 和 TimesNet,作者的模型在 MSE 方面的平均提升率分别超过了 8%、12% 和 33%。在 5% 少量学习场景中,作者也发现了类似的趋势,与 GPT4TS 相比,平均提升超过了 5%。与 PatchTST、DLinear 和 TimesNet 相比,TIME-LLM 的平均改进幅度超过了 20%。

 5 CONCLUSION AND FUTURE WORK

        TIME-LLM 通过将时间序列数据重新编程为对 LLM 更为自然的文本原型,并通过 "提示作为前缀 "提供自然语言指导以增强推理能力,显示了将冷冻大型语言模型改编为时间序列预测模型的前景。评估结果表明,经过调整的 LLM 可以超越专门的专家模型,这表明它们具有作为有效时间序列机器的潜力。研究结果还提供了一种新见解,即时间序列预测可以被视为另一种 "语言 "任务,可以由现成的 LLM 来处理,从而通过我们的 Time-LLM 框架实现最先进的性能。进一步的研究应探索最佳的重编程表征,通过持续的预训练用显式时间序列知识丰富 LLM,并建立跨时间序列、自然语言和其他模式的联合推理的多模式模型。此外,还应该考虑应用重编程框架,使 LLM 具备更广泛的时间序列分析能力或其他新能力。

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

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

相关文章

基于语音识别的智能电子病历(三)之 Soniox

Soniox成立于2020年,目前总部位于美国加州福斯特城,该公司开发了市场上最好的语音识别引擎之一。该公司目前提供市面上领先的云转录引擎之一——这也是audioXpress成功用于采访和一般语音转文本转换的引擎。 专注于语音AI的Soniox在2021年推出了世界上第…

单调栈--

1.每日温度 那么单调栈的原理是什么呢?为什么时间复杂度是O(n)就可以找到每一个元素的右边第一个比它大的元素位置呢? 单调栈的本质是空间换时间,因为在遍历的过程中需要用一个栈来记录右边第一个比当前元素高的元素,优点是整个数…

【JVM底层原理,JVM架构详解】

1. JVM简介 1.1 什么是JVM? JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 主流虚拟机: 虚拟机名称介绍HotSpotOracle/Sun JDK和OpenJDK都使用HotSPo…

Node.js和npm常用命令

一、Node.js简介 Node.js是一个免费、开源、跨平台的JavaScript运行时环境,允许开发人员创建服务器、web应用程序、命令行工具和脚本。 点击查看node.js中文官网 点击查看node.js英文官网 二、npm简介 npm(Node Package Manager)是Node.js的软件包管理器&#xff0…

C++贪心算法(3)

整数区间 #include<bits/stdc.h> using namespace std; int main() {int n;cin>>n;int a[110][10]{0};for(int i0;i<n;i){cin>>a[i][1]>>a[i][2];}int cnt[110]{0};int mi99999;int mii-1;bool f[110]{false,false,false,false,false,false,false,…

2024年5月20日 (周一) 叶子游戏新闻

报告老板&#xff0c;现在就加班&#xff01;《职场浮生记》抢先体验版现已上线今天由LeiYun Games开发&#xff0c;2P Games发行的《职场浮生记》正式在Steam平台推出抢先体验版。玩家将跟随主角的步伐踏入一个最为真实的职场环境之中&#xff0c;在生活与工作之间找寻平衡&am…

Echarts 实现将X轴放在图表顶部并且自动播放展示提示信息内容

文章目录 需求分析效果预览需求 如下图所示,实现柱状图中反转倒着绘制 分析 使用 ECharts 来实现对 Y 轴的倒序排序时,可以通过设置 yAxis 的 inverse 属性为 true 来实现。以下是一个简单的示例,演示了如何使用 ECharts 来创建一个柱状图,并将 Y 轴进行倒序排序:并且…

杭州威雅学校:在学业与生活平衡中找到更好的自己

进入威雅杭州校园&#xff0c; 沿湖边小道步行约5分钟&#xff0c; 四栋寄宿学院与教学区隔湖相望&#xff0c; 威雅人更喜欢叫他们&#xff1a; 「Cavell」&「Dove」 「Elgar」&「Hawking」 提起「寄宿制」&#xff0c;人们本能地会把它和「住校」划等号。 这种…

商品上线搜索服务

文章目录 1.引入检索页面1.确保search目录和list.html都成功引入2.修改list.html&#xff0c;增加命名空间3.后端编写接口 SearchController.java4.测试访问 2.带条件分页检索1.前端要求返回数据的格式2.构建vo&#xff0c;SearchResult.java3.SkuInfoService.java 购买用户根据…

【Python】 删除列表元素的简单方法

基本原理 在Python中&#xff0c;列表&#xff08;list&#xff09;是一种非常灵活的数据结构&#xff0c;它允许我们存储一系列的元素。有时&#xff0c;我们需要根据元素的值来删除列表中的特定元素。虽然Python没有内置的函数直接通过值来删除列表中的元素&#xff0c;但我…

JVM学习-彻底搞懂Java自增++

从字节码角度分析i和i的区别 public void method6() {int i 10;i; //在局部变量表上直接加1}public void method7() {int i 10;i; //字节码同i}public void method8() {int i 10;int a i; //通过下图可以看出先将局部变量表中的值push到操作数栈&#xff0c;然…

线性回归计算举例

使用正规方程计算&#xff08;一元线性回归&#xff09; import numpy as np import matplotlib.pyplot as plt # 转化成矩阵 X np.linspace(0, 10, num 30).reshape(-1, 1) # 斜率和截距&#xff0c;随机生成 w np.random.randint(1, 5, size 1) b np.random.randint(1,…

建立开源人工智能:一种呼吁

建立开源人工智能&#xff1a;一种呼吁 编译 李升伟 人工智能&#xff08;AI&#xff09;推动整个社会、经济和科学的创新。我们认为&#xff0c;必须根据开源原则建立人工智能技术&#xff0c;以促进人工智能技术的可访问性、协作性、责任性和互操作性。 计算机科学界有着接受…

C++算术运算和自增自减运算

一 引言 表示运算的符号称为运算符。 算术运算&#xff1b; 比较运算&#xff1b; 逻辑运算&#xff1b; 位运算&#xff1b; 1 算术运算 算术运算包括加、减、乘、除、乘方、指数、对数、三角函数、求余函数&#xff0c;这些都是算术运算。 C中用、-、*、/、%分别表示加、减…

【项目教程】FFmpeg+SDL2实现视频播放器

一、前言 学习ffmpeg和sdl&#xff0c;并编写一个视频播放器&#xff0c;是一个很好的音视频开发项目。 虽然关于视频播放器的原理已经有很多人在博客中进行了讲解&#xff0c;但是很多人不提供视频和代码&#xff0c;这也是我写这篇博客的主要原因。 二、在视频播放器中&am…

『哈哥赠书 - 53期』-『深入浅出 Spring Boot 3.x』

⭐️ 《深入浅出 Spring Boot 3.x》 ⭐️ 学习Spring Boot的必读之书 在 Java 后端开发领域&#xff0c;功能强大的 Spring 开源框架不仅是首选&#xff0c;也是事实上的标准。但由于 Spring 存在配置烦琐、部署不易、依赖管理困难等问题&#xff0c;因此基于 Spring 的快速开…

进程互斥经典问题(读写者问题、理发店问题)

目录 读写者问题 问题描述 问题分析 进程互斥问题三部曲 读者写者算法实现 一、找进程——确定进程关系 二、找主营业务 三、找同步约束 a.互斥 b.资源 c.配额 理发店问题 问题描述 问题分析 进程互斥问题三部曲 理发店问题算法实现 一、找进程——确定进程…

微信小程序毕业设计-校车购票系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

高中生是否需要上电子阅览室

高中生是否需要上电子阅览室&#xff0c;取决于学生的学习需求和个人喜好。以下是一些考虑因素&#xff1a; 1. 便利性&#xff1a;电子阅览室通常提供电脑设备和网络连接&#xff0c;方便学生在线获取学习资源。对于家中没有电脑或者网络不稳定的学生&#xff0c;上电子阅览室…

“一带一路”六国国际拳王冠军赛特克斯站新闻发布会顺利举行

实习记者&#xff1a;喀兰姆罕 5月24日&#xff0c;“一带一路”六国国际拳王冠军赛特克斯站新闻发布会在特克斯县阿克塔斯姑娘峰景区举行。这次拳王冠军赛事由新疆广播电视台、特克斯镇人民政府&#xff0c;特克斯县文化体育广播电视和旅游局主办&#xff0c;将于6月15日在特…