Large-Precision Sign using PBS

参考文献:

  1. [CLOT21] Chillotti I, Ligier D, Orfila J B, et al. Improved programmable bootstrapping with larger precision and efficient arithmetic circuits for TFHE[C]//Advances in Cryptology–ASIACRYPT 2021: 27th International Conference on the Theory and Application of Cryptology and Information Security, Singapore, December 6–10, 2021, Proceedings, Part III 27. Springer International Publishing, 2021: 670-699.
  2. [LMP22] Liu Z, Micciancio D, Polyakov Y. Large-precision homomorphic sign evaluation using FHEW/TFHE bootstrapping[C]//International Conference on the Theory and Application of Cryptology and Information Security. Cham: Springer Nature Switzerland, 2022: 130-160.

文章目录

  • Homomorphic Floor Function
    • Using 2 PBS
    • Using 3 PBS
  • PBS of Arbitrary Function
  • Homomorphic Digit Decomposition
  • Parameter Selection

[CLOT21] 提出了 WoP-PBS,它基于事实 ( − 1 ) ⋅ ( − m ) = m (-1) \cdot (-m)=m (1)(m)=m,先将 m m m 扩展为 β ∥ m \beta\|m βm,然后使用 GenPBS 分别计算出 ( − 1 ) β ⋅ f ( m ) (-1)^\beta \cdot f(m) (1)βf(m) ( − 1 ) β (-1)^\beta (1)β,最后使用 FV-like 同态乘法,将它们组合成 f ( m ) f(m) f(m)。这需要底层的 LWE 同时支持加法和乘法,并且同态乘法导致了噪声增长。因此,模数(正确性)和维度(安全性)都会相应的变大,导致它比一般的 FHEW/TFHE 的效率更至少一倍。

[LMP22] 也是将 m m m 扩展到 β ∥ m \beta\|m βm,单它首先将 β \beta β 消除掉使之成为 0 ∥ m 0\|m 0∥m,接着使用原始的 PBS 就可以计算出正确的 f ( m ) f(m) f(m)。在这个过程中,并不需要使用同态乘法,因此它的噪声就是 PBS 本身的噪声,常规的参数就足够使用。

Homomorphic Floor Function

首先,[LMP22] 研究了如何对于高精度 LWE 密文执行自举。这里的 “精度” 指的是 MSD 编码的消息的比特长度。我们先给出一些参数定义:

  • LWE:
    • 维度 n n n,不需要是二的幂
    • 模数 Q Q Q,是二的幂,用于 LWE 同态运算
    • 模数 q q q,是二的幂,用于 PBS 自举
    • 缩放因子 α \alpha α,是二的幂,用于纠错
    • 噪声界 β \beta β,是二的幂
  • ACC:
    • 多项式长度 N N N,是二的幂
    • RLWE 密文模数 Q ′ Q' Q,是满足 2 N ∣ Q ′ − 1 2N \mid Q'-1 2NQ1 的素数
    • 输入 LWE 密文模数 q ∣ 2 N q \mid 2N q2N
    • 输出 LWE 密文模数 Q Q Q

FHEW/TFHE 要求 LWE 的密文模数满足 Q ∣ 2 N Q \mid 2N Q2N,随着明文精度的增加( k k k 比特),多项式长度 N N N 指数级增加( 2 k 2^k 2k 倍)。对于通常的参数集 N = 1024 / 2048 N=1024/2048 N=1024/2048,只能支持至多 3 , 4 3,4 3,4 比特的明文精度。[LMP22] 为了计算高精度的 Sign 函数,通过不断移除 LSD(保持 MSB 不变),直到密文模数 Q Q Q 倍缩减到 q q q 规模,从而可以使用常规参数集执行 PBS。

这个过程中,一个关键步骤是同态 Floor 函数。假设 LWE 密文 ( c , d ) ∈ Z Q n + 1 (c,d) \in \mathbb Z_Q^{n+1} (c,d)ZQn+1 的相位是:
ψ = α ⋅ m + e ( m o d Q ) \psi = \alpha \cdot m + e \pmod Q ψ=αm+e(modQ)
其中 ∣ e ∣ ≤ β ≪ q |e| \le \beta \ll q eβq m ∈ Z Q / α m \in \mathbb Z_{Q/\alpha} mZQ/α,根据不同的场景 α \alpha α 选取不同的值。

注意到 Q > q > α Q>q>\alpha Q>q>α 都是二的幂次。如果我们将 LWE 密文模掉 q q q,获得的 ( a , b ) ∈ Z q n + 1 (a,b) \in \mathbb Z_q^{n+1} (a,b)Zqn+1
[ m ′ ] q = α ⋅ [ m ] q / α + e ( m o d q ) [m']_q = \alpha \cdot [m]_{q/\alpha} + e \pmod q [m]q=α[m]q/α+e(modq)
使用 PBS 将它提升回 ( a ′ , b ′ ) ∈ Z Q n + 1 (a',b') \in \mathbb Z_Q^{n+1} (a,b)ZQn+1,并从原始密文中把它减掉,就清除了 m m m 的最低 log ⁡ q / α \log{q/\alpha} logq/α 比特。密文 ( c ′ , d ′ ) (c',d') (c,d) 的相位是:
ψ ′ = α ⋅ ( ⌊ α q m ⌋ ⋅ q α ) + e ′ ( m o d Q ) \psi' = \alpha \cdot \left(\left\lfloor \frac{\alpha}{q} m \right\rfloor \cdot \frac{q}{\alpha} \right) + e' \pmod Q ψ=α(qαmαq)+e(modQ)
现在,我们可以把 α , Q \alpha,Q α,Q 同时缩小 q / α q/\alpha q/α 倍,得到的密文 ( c ′ ′ , d ′ ′ ) ∈ Z ( α / q ) ⋅ Q n + 1 (c'',d'') \in \mathbb Z_{(\alpha/q) \cdot Q}^{n+1} (c′′,d′′)Z(α/q)Qn+1 相位的 MSB 保持和 ( c , d ) ∈ Z Q n + 1 (c,d) \in \mathbb Z_Q^{n+1} (c,d)ZQn+1 的一样。

我们将这个长度 log ⁡ ( q / α ) \log(q/\alpha) log(q/α) 的小块明文称为 LSD,我们的目标是将它清零。然而,函数 f : m ∈ Z q / α ↦ m ∈ Z Q / α f:m \in \mathbb Z_{q/\alpha} \mapsto m \in \mathbb Z_{Q/\alpha} f:mZq/αmZQ/α 并非反循环的,导致了原始的 PBS 无法实现从 ( a , b ) (a,b) (a,b) ( a ′ , b ′ ) (a',b') (a,b) 的自举过程。[LMP22] 给出了两种实现,通过 2 , 3 2,3 2,3 次 PBS 来实现它。用到的三个函数为:

在这里插入图片描述

为了构造 LUT 的方便,下面的推导中总是使得 PBS 输入的密文噪声是正整数,范围是 [ 0 , 2 β ) [0,2\beta) [0,2β)。这可通过 ( c , d ) → ( c , d + β ) (c,d) \to (c,d+\beta) (c,d)(c,d+β) 来实现。只要满足 α ≥ 2 β \alpha \ge 2\beta α2β,就可以准确解密。FHEW/TFHE 中的 LWE 私钥 s ∈ { 0 , ± 1 } n s \in \{0,\pm1\}^n s{0,±1}n 服从三元分布

Using 2 PBS

[LMP22] 的第一个方法:使用两次 PBS,但是对于噪声的约束较强, α ≥ 4 β \alpha \ge 4\beta α4β

基本思路:分别提取 ( [ c ] q , [ d ] q ) ([c]_q,[d]_q) ([c]q,[d]q) 相位(加密了 LSD)的 MSB 和其他位置,

  1. 先提取 ( [ c ] q , [ d ] q ) ([c]_q,[d]_q) ([c]q,[d]q) 的 MSB,将它从 ( c , d ) ∈ Z Q n + 1 (c,d) \in \mathbb Z_Q^{n+1} (c,d)ZQn+1 中移除。现在 ( [ c ′ ] q , [ d ′ ] q ) ([c']_q,[d']_q) ([c]q,[d]q) 的相位只位于半个环面上。
  2. 再提取 ( [ c ′ ] q , [ d ′ ] q ) ([c']_q,[d']_q) ([c]q,[d]q) 的消息,将它从 ( c ′ , d ′ ) ∈ Z Q n + 1 (c',d') \in \mathbb Z_Q^{n+1} (c,d)ZQn+1 中移除。现在 ( [ c ′ ′ ] q , [ d ′ ′ ] q ) ([c'']_q,[d'']_q) ([c′′]q,[d′′]q) 的相位是零。
  3. ( c ′ ′ , d ′ ′ ) (c'',d'') (c′′,d′′) 缩放 q / α q/\alpha q/α,降低密文模数。

在这里插入图片描述

假定 PBS 输出的噪声界是 β \beta β,初始输入 ( c , d ) c,d) c,d) 的噪声上界也是 β \beta β

  • HomFloor:
    • 输入噪声范围 ( − β , β ) (-\beta,\beta) (β,β),执行 step 2 噪声范围 ( 0 , 2 β ) (0,2\beta) (0,2β)
    • 执行 step 4,5,噪声范围是 ( 0 , 4 β ) (0,4\beta) (0,4β)这里需要 α ≥ 4 β \alpha \ge 4 \beta α4β,使得这个噪声不会影响到我们刚刚消除掉的 MSB,从而此时的 ( c , d ) (c,d) (c,d) 相位是 m ~ q + x \tilde mq+x m~q+x,其中 x ∈ [ 0 , q / 2 ) x \in [0,q/2) x[0,q/2) 包含了 LSD 以及噪声
    • 执行 step 6 和 step 7,获得相位 x + e x+e x+e 的密文,从 ( c , d ) (c,d) (c,d) 中减掉后,返回的相位是 m ~ q + e \tilde mq+e m~q+e(注意函数 f 1 : x ∈ Z q / 2 ↦ x ∈ Z q / 2 f_1:x\in \mathbb Z_{q/2} \mapsto x \in \mathbb Z_{q/2} f1:xZq/2xZq/2,整个 x x x 都被清零,包括本来的噪声),满足 ∣ e ∣ < β |e| < \beta e<β
  • HomSign:
    • 输入噪声范围 ( − β , β ) (-\beta,\beta) (β,β),执行 HomFloor 输出的噪声范围也是 ( − β , β ) (-\beta,\beta) (β,β)
    • 执行 step 13 的模切换,噪声规模是 α / q ⋅ β + ( ∥ s ∥ 1 + 1 ) / 2 \alpha/q \cdot \beta + (\|s\|_1+1)/2 α/qβ+(s1+1)/2
    • 假如满足 ∥ s ∥ 1 = O ( n ) ≤ β \|s\|_1=O(n)\le \beta s1=O(n)β,并且假设 q ≥ 4 α q\ge4\alpha q4α 以及 β ≥ 2 \beta\ge 2 β2,那么就有 α / q ⋅ β + ( ∥ s ∥ 1 + 1 ) / 2 < β \alpha/q \cdot \beta + (\|s\|_1+1)/2 < \beta α/qβ+(s1+1)/2<β,因此可以正确地执行 HomFloor
    • 执行 step 17 虽然噪声规模可能超过 α \alpha α,但是并不会影响 MSB 的值,因此可以正确地执行 Boot,最终的噪声范围是 ( − β , β ) (-\beta,\beta) (β,β)

当然,上述的分析是最坏情况的。如果使用平均情况,那么 ∥ s ∥ 2 = O ( n ) \|s\|_2 = O(\sqrt{n}) s2=O(n ),独立密文的加和噪声界 2 β \sqrt{2}\beta 2 β,可以将 β \beta β α \alpha α 都降低一些。

Using 3 PBS

为了给出通用的算法(尤其是 CKKS 的噪声和明文混合在一起),[LMP22] 给出了第二个方法:使用三次 PBS,支持任意的噪声, α ≥ 2 β \alpha \ge 2\beta α2β

基本思路:

  1. 首先消除 ( [ c ] q , [ d ] q ) ([c]_q,[d]_q) ([c]q,[d]q) 相位的第二高比特。现在(正的)噪声向上传播时,遇到被清零的第二高比特后,不再继续向 MSB 传递影响。
  2. 利用上一小节的算法,清理掉 LSD,然后模切换。

在这里插入图片描述

假定 PBS 输出的噪声界是 β \beta β,初始输入 ( c , d ) c,d) c,d) 的噪声上界也是 β \beta β

  • HomFloorAlt:
    • 输入噪声范围 ( − β , β ) (-\beta,\beta) (β,β),相位是 m ~ q + b q / 4 + x \tilde mq+bq/4+x m~q+bq/4+x,其中 b ∈ { 0 , 1 , 2 , 3 } , x ∈ [ 0 , q / 4 ) b \in \{0,1,2,3\},x \in [0,q/4) b{0,1,2,3},x[0,q/4),这里的 x x x 包含了噪声项
    • 执行 step 3,4 将 LSD 的第二高比特置为零,相位形如 m ~ q + b ~ q / 2 + x + e \tilde mq+\tilde bq/2+x+e m~q+b~q/2+x+e,其中 b ~ ∈ { 0 , 1 } \tilde b \in \{0,1\} b~{0,1},噪声为 e ∈ [ 0 , 2 β ) e \in [0,2\beta) e[0,2β)
    • 假设满足 q ≥ 8 β q \ge 8\beta q8β,那么 x + e < q / 4 + 2 β ≤ q / 2 x+e<q/4+2\beta\le q/2 x+e<q/4+2βq/2,它们不会改变 b b b 的值,因此并不会继续向更高的 m ~ \tilde m m~ 传播影响
    • 执行 step 6,7 清理掉 b b b 的值,现在的相位是 m ~ q + x + e + e ′ \tilde mq+x+e+e' m~q+x+e+e,它的 LSD 是 x + e + e ′ x+e+e' x+e+e,其中 e ′ ∈ [ 0 , 2 β ) e' \in [0,2\beta) e[0,2β)
    • 进一步假设 q ≥ 16 β q \ge 16\beta q16β,那么满足 x + e + e ′ < q / 4 + 4 β ≤ q / 2 x+e+e' < q/4+4\beta \le q/2 x+e+e<q/4+4βq/2,它落在了半环内
    • 执行 step 9 清理掉它们,新的噪声是 e ′ ′ ∈ ( − β , β ) e'' \in (-\beta,\beta) e′′(β,β)
  • HomSign:
    • 简单使用 HomFloorAlt 作为子例程,分析是一样的

PBS of Arbitrary Function

利用上述 HomFloor 的计算思路,为了利用 PBS 计算任意函数,我们可以将 m ∈ Z q / α m\in \mathbb Z_{q/\alpha} mZq/α 扩展到 b ∥ m ∈ { m , m + q / α } ⊆ Z 2 q / α b\|m\in\{m,m+q/\alpha\} \subseteq \mathbb Z_{2q/\alpha} bm{m,m+q/α}Z2q/α(随机的 b ∈ { 0 , 1 } b\in \{0,1\} b{0,1}),然后提取 sign 消除为 ( 0 ∥ m ) 2 = m (0\|m)_2=m (0∥m)2=m,接着使用半环上的函数执行 PBS 即可。

现在我们假定输入的 LWE 密文模数是 q q q,满足 2 q ∣ 2 N 2q \mid 2N 2q2N 可以被原始 PBS 支持。这导致相较于 HomFloor 中的 PBS,这里的 q q q 更小,明文精度丢失了 1 1 1 比特。

在这里插入图片描述

Homomorphic Digit Decomposition

为了执行 [GBA21] 的 Tree-based PBS(包括高精度 LWE 密文的自举),我们需要同态数字分解算法。因为 HomFloor 事实上就是在计算各个 Digit,并将它们从高精度 LWE 密文中减去的过程,因此仅需追踪此过程中产生的 ( [ c ] q , [ d ] q ) ([c]_q,[d]_q) ([c]q,[d]q) 即可。

在这里插入图片描述

输入 LWE 密文的相位 α ⋅ m + e \alpha \cdot m+e αm+e,输出 k = log ⁡ ( Q / α ) / log ⁡ ( q / α ) k=\log(Q/\alpha)/\log(q/\alpha) k=log(Q/α)/log(q/α) 个密文,它们的相位是 α ⋅ m i + e i \alpha \cdot m_i+e_i αmi+ei,满足 m = ∑ i = 0 k − 1 m i ⋅ ( q / α ) i m=\sum_{i=0}^{k-1} m_i \cdot (q/\alpha)^i m=i=0k1mi(q/α)i

Parameter Selection

略。。。

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

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

相关文章

使用云渲染节省成本与提升渲染速度的秘诀

我们在提交效果图到云渲染平台时&#xff0c;有时会因为各种原因&#xff0c;如不小心设置错了参数&#xff0c;导致渲染时间变长&#xff0c;渲染费用增加。这不仅增加了项目的成本&#xff0c;还可能影响到整个项目的进度。面对这一问题&#xff0c;炫云提供了小光子、保守优…

Linux第一个小程序-进度条(c语言版)

目录 行缓冲区概念&#xff1a; 行缓冲区代码演示&#xff1a; ​编辑进度条代码 1&#xff1a;memset函数&#xff1a; 2&#xff1a;const char* lable"|/-\\"; 3&#xff1a;usleep C语言 usleep 函数的功能和用法&#xff1a; 4&#xff1a;进度条代码的实…

vue3 组件之间传值

vue3 组件之间传值 非常好&#xff0c;为啥突然开这样一篇博文&#xff0c;首先是因为 vue3 是未来发展的趋势。其次&#xff0c;vue 官方已经确认&#xff0c;将于2023年最后一天停止对 vue2 项目的维护&#xff0c;这个是官方发出的通知&#xff0c;并且呢&#xff0c;尤雨溪…

基于Java网上点餐系统设计与实现

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…

静物摄影在UE5里运用几点记要

被摄体&#xff0c;相机与光源的关系&#xff0c;要增强立体感&#xff0c;摄像机与光源的位置关系要错开&#xff1b;b的立体感要更强 漫反射与点光源&#xff0c;UE5太阳光属于漫反射&#xff0c;整体比较柔和&#xff0c;但是阴影处比较黑&#xff1b;摄影棚会用反光板来增亮…

vscode 支持c,c++编译调试方法

概述&#xff1a;tasks.jason launch.json settings.json一定要有&#xff0c;没有就别想跑。还有就是c 和c配置有区别&#xff0c;切记&#xff0c;下文有说 1.安装扩展插件。 2.安装编译器&#xff0c;gcc.我用的是x86_64-8.1.0-release-win32-seh-rt_v6-rev0.7z &#xf…

【SpringCloud】-OpenFeign实战及源码解析、与Ribbon结合

一、背景介绍 二、正文 OpenFeign是什么&#xff1f; OpenFeign&#xff08;简称Feign&#xff09;是一个声明式的Web服务客户端&#xff0c;用于简化服务之间的HTTP通信。与Nacos和Ribbon等组件协同&#xff0c;以支持在微服务体系结构中方便地进行服务间的通信&#xff1b…

STM32CubeMX教程8 TIM 通用定时器 - 输出比较

目录 1、准备材料 2、实验目标 3、实验流程 3.0、前提知识 3.1、CubeMX相关配置 3.1.1、时钟树配置 3.1.2、外设参数配置 3.1.3、外设中断配置 3.2、生成代码 3.2.1、外设初始化函数调用流程 3.2.2、外设中断函数调用流程 3.2.3、添加其他必要代码 4、常用函数 5…

ssm基于JavaEE的智能实时疫情监管服务平台的设计与实现+jsp论文

摘 要 社会发展日新月异&#xff0c;用计算机应用实现数据管理功能已经算是很完善的了&#xff0c;但是随着移动互联网的到来&#xff0c;处理信息不再受制于地理位置的限制&#xff0c;处理信息及时高效&#xff0c;备受人们的喜爱。本次开发一套智能实时疫情监管服务平台有管…

vue 项目/备案网页/ip网页打包成 apk 安装到平板/手机(含vue项目跨域代理打包成apk后无法访问接口的解决方案)

下载安装HBuilder X编辑器 https://www.dcloud.io/hbuilderx.html 新建 5APP 项目 打开 HBuilder X&#xff0c;新建项目 此处项目名以 ‘test’ 为例 含跨域代理的vue项目改造 若 vue 项目中含跨域代理&#xff0c;如 vue.config.js module.exports {publicPath: "./&…

《分布式事务理论基础:CAP定理 BASE理论》

目录 学习目标 1.分布式事务理论基础 1.1.本地事务 1.2.分布式事务 分布式事务产生的原因&#xff1f; 哪些场景会产生分布式事务&#xff1f; 单体系统会产生分布式事务问题吗&#xff1f; 只有一个库&#xff0c;会产生分布式事务问题吗&#xff1f; 分布式事务举…

跨进程通信 macOS XPC 创建实例

一&#xff1a;简介 XPC 是 macOS 里苹果官方比较推荐和安全的的进程间通信机制。 集成流程简单&#xff0c;但是比较绕。 主要需要集成 XPC Server 这个模块&#xff0c;这个模块最终会被 apple 的根进程 launchd 管理和以独立进程的方法唤起和关闭&#xff0c; 我们主app 进…

DotNet 命令行开发

DotNet 命令行开发 下载安装下载 SDK安装 SDK绿色版下载绿化脚本 常用命令创建 dotnet new运行 dotnet run发布应用 dotnet publish更多命令 VSCode 调试所需插件调试 CS 配置项目.csproj排除依赖关系 launch.jsontasks.json 参考资料 下载安装 下载 SDK 我们就下最新的好&am…

draw.io学习笔记

1、链接 1.1、自动连接图形 鼠标放在图形上&#xff0c;点击出现的箭头&#xff0c;会自动出常用图形 1.2、固定连接 如果拖动其中一个图形的话&#xff0c;固定链接的形状会是曲线连过去。 方法&#xff1a;不要点击左边图形鼠标放在边框上面左边出现绿圆点鼠标左键点击图形的…

LTPI协议的理解——2、LTPI实现的底层架构

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 LTPI协议的理解——2、LTPI实现的底层架构 前言一、体系结构三、实现细节四、物理接口信号传输方法总结 前言 前面讲了LTPI的定义和大概结构&#xff0c;接下来继续理解LTPI…

【Linux系统编程二十五】:线程概念(Linux中的轻量级进程)

【Linux系统编程二十五】&#xff1a;线程概念(Linux中的轻量级进程&#xff09; 一.线程的概念1.地址空间是资源窗口 二.线程初步理解1.进程执行分支(内部运行)2.执行粒度更细3.重构进程概念&#xff1a;系统资源分配的基本实体4.重构线程概念&#xff1a;系统调度的基本单位5…

Kubernetes 学习总结(43)—— Kubernetes 从提交 deployment 到 pod 运行的全过程

当用户向 Kubernetes 提交了一个创建 deployment 的请求后&#xff0c;Kubernetes 从接收请求直至创建对应的 pod 运行这整个过程中都发生了什么呢&#xff1f; kubernetes 架构简述 在搞清楚从 deployment 提交到 pod 运行整个过程之前&#xff0c;我们有先来看看 Kubernete…

4. 云原生之kubesphere基础服务搭建

文章目录 安装kubesphere插件服务暴露NodePort方式LoadBalancer方式安装 OpenELB部署eip资源配置网关启动网关创建路由测试网关路由ingress高级功能在服务中配置LoadBalancer 基础设施部署服务部署建议helm仓库添加helm仓库 运维相关部署gitlab部署nexus3部署harbor 研发相关 安…

【c语言】飞机大战(1)

提前准备好游戏要的素材&#xff0c;可以到爱给网去找&#xff0c;飞机大战我们需要的是一个我方战机图片&#xff0c;一个背景图&#xff0c;三个敌方战机的图&#xff0c;我方战机的图片&#xff0c;敌方战机的图片&#xff0c;并且将图片和.cpp放在同一文件夹下. 这里创建.…

回归预测 | Python实现OOA-LightGBM基于人工鱼鹰优化算法优化LightGBM的多输入单输出数据回归预测模型 (多指标,多图)

回归预测 | Python实现OOA-LightGBM基于人工鱼鹰优化算法优化LightGBM的多输入单输出数据回归预测模型 &#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | Python实现OOA-LightGBM基于人工鱼鹰优化算法优化LightGBM的多输入单输出数据回归预测模型 &#xff08;…