基于CKKS同态加密的神经网络推理:隐私保护与性能优化的平衡之道

1次阅读
没有评论

共计 1388 个字符,预计需要花费 4 分钟才能阅读完成。

image.webp

引言:隐私计算的刚性需求

在医疗影像分析和金融风控等场景中,数据隐私与模型效用的矛盾日益突出。例如医院希望使用第三方 AI 服务分析患者 CT 扫描时,传统方法需上传原始数据,这直接违反 GDPR 等隐私法规。Paillier 加密虽支持加法同态,但无法处理神经网络中的非线性激活;TFHE 可实现任意计算,但单次推理耗时高达数小时。CKKS 方案凭借以下优势成为折中选择:

基于 CKKS 同态加密的神经网络推理:隐私保护与性能优化的平衡之道

  • 支持浮点数近似计算,误差可控($\left| \Delta \right| < 2^{-10}$)
  • 利用 SIMD 特性批量处理数据,吞吐量提升 $10^3$ 倍
  • 实现乘加运算同态,满足神经网络核心操作需求

CKKS 与神经网络的计算图适配

矩阵乘法的 SIMD 编码

CKKS 的向量化特性要求将权重矩阵 $W \in \mathbb{R}^{m\times n}$ 和输入向量 $\vec{x}$ 按特定规则打包。实践中采用对角线编码(Diagonal Encoding)优化矩阵乘法:

  1. 将 $W$ 的每行循环移位生成 $m$ 个对角矩阵 $D_i$
  2. 用 SIMD 并行计算 $\vec{y}_i = D_i \cdot \vec{x}$
  3. 通过旋转求和得到最终结果 $\vec{y} = \sum_{i=1}^m \vec{y}_i$

此方法将计算复杂度从 $O(mn)$ 降至 $O(m)$ 次旋转操作。

激活函数的多项式逼近

由于 CKKS 不支持比较运算,需用多项式 $P(x)$ 近似 ReLU 等非线性函数。实验表明:

  • 3 次多项式在 $[-5,5]$ 区间实现 $R^2>0.99$ 的拟合度
  • 分段多项式(如 $S_1(x)=0.01x, S_2(x)=0.5x+0.25$)可降低最高次数

SEAL 库实现示例

// SEAL 3.7.2 卷积层密文计算
void encrypted_conv(Ciphertext &input, const vector<Plaintext> &filters,
                    Evaluator &eval, GaloisKeys &gal_keys) {
  Ciphertext result;
  for (const auto &filter : filters) {
    Ciphertext tmp;
    eval.multiply(input, filter, tmp); // 密文 - 明文乘法
    eval.relinearize(tmp, gal_keys);   // 重线性化降噪
    eval.rescale_to_next(tmp);         // 模切换保持精度
    eval.add_inplace(result, tmp);     // 累加结果
  }
  // 噪声预算检查(建议保持在 30bit 以上)cout << "Noise budget:" << decryptor.invariant_noise_budget(result) << "bits";
}

精度 - 速度权衡实验

在 Intel Xeon 6248R(2.5GHz)测试 ResNet-18 的加密推理:

多项式次数 模型精度 推理耗时 (倍)
1 72.3% 3.1x
3 89.7% 4.8x
5 91.2% 6.7x

避坑指南

密文 slot 利用率优化

  • 对 FC 层输入补零至 $2^n$ 长度
  • 卷积层采用通道交织打包策略

模切换时机选择

  • 在乘法后立即执行 rescale
  • 避免连续乘法超过 3 次不降模

国产化芯片适配

  • 海光 Hygon 需关闭 AVX-512 指令集
  • 昇腾 NPU 需定制 CKKS 内核

开放性问题

当前加密推理开销仍比明文高 1 - 2 个数量级,未来可探索:
1. 模型蒸馏降低参数规模
2. 混合精度加密(关键层用 TFHE)
3. 专用硬件加速器设计

正文完
 0
评论(没有评论)