Homomorphic CNNs

news2024/11/20 13:38:30

参考文献:

  1. [GDL+16] Gilad-Bachrach R, Dowlin N, Laine K, et al. Cryptonets: Applying neural networks to encrypted data with high throughput and accuracy[C]//International conference on machine learning. PMLR, 2016: 201-210.
  2. [HTG17] Hesamifard E, Takabi H, Ghasemi M. Cryptodl: Deep neural networks over encrypted data[J]. arxiv preprint arxiv:1711.05189, 2017.
  3. [LKL+22] Lee J W, Kang H C, Lee Y, et al. Privacy-preserving machine learning with fully homomorphic encryption for deep neural network[J]. IEEE Access, 2022, 10: 30039-30054.
  4. 安全多方计算与同态加密初探 - 知乎 (zhihu.com)
  5. 激活函数其实并不简单:最新的激活函数如何选择? - 知乎 (zhihu.com)

文章目录

  • CNNs
  • CryptoNets
    • 编码方式
    • 网络结构
  • CryptoDL
    • 多项式近似
    • 网络结构
  • Others

Privacy-Preserving Machine Learning( PPML)的任务是安全的实现模型的训练和预测。可以采用的隐私计算技术包括:

  • 全同态加密(FHE),
    • 场景:单个客户拥有数据,云服务器提供已训练好的模型,做预测
    • 优点:通信开销较小,客户可以离线,IND-CPA 安全
    • 缺点:计算复杂度较高
  • 多方安全计算(MPC),
    • 场景:多个客户拥有数据,云服务器和它们执行 MPC 协议,做训练和预测
    • 优点:计算速度较快,被动安全/主动安全
    • 缺点:通信开销很大,客户必须在线,模型泄露攻击,信任问题
  • 差分隐私(DP),
    • 场景:云服务器拥有数据,利用 DP 自行训练出带噪的模型,发送给客户
    • 缺点:只能用于训练,安全性较弱
  • 联邦学习(FL),
    • 场景:多个客户拥有数据,云服务器根据它们发送的预处理数据,做训练
    • 缺点:只能用于训练,安全性较弱

CNNs

Convolutional Neural Networks 是一种特殊的前馈网络,包含若干层有序的神经元,

  1. input layer
  2. hidden layer
  3. Convolutional Layer:卷积核 + 步幅,整合邻域的信息
  4. Activation Layer:激活函数,包括 Sigmoid, Tanh, ReLU 及其变体,获得非线性回归能力
  5. Pooling Layer:下采样,主要包括 max pool 和 mean pool,减小数据/模型的规模
  6. Fully Connected Layer:关于权重的矩阵乘,将神经元的输出线性组合
  7. Dropout Layer:随机将某些神经元的输出置为零,防止过拟合
  8. output layer

如图所示,

在这里插入图片描述

CryptoNets

[GDL+16] 提出了 CryptoNets 模型,他们仅关注推理,模型是明文训练的。他们使用 SEAL 库中的 YASHE 方案(有实现么?)。在 MNIST 数据集上,预测精度为 99 % 99\% 99%,吞吐率是每小时 58982 次预测,单次预测的延迟是 250 秒。

编码方式

由于 YASHE 是基于 NTRU 假设的 Level FHE,明文空间是 R t = Z t [ X ] / ( X N + 1 ) R_t = \mathbb Z_t[X]/(X^N+1) Rt=Zt[X]/(XN+1),但是神经网络中的数据都是浮点数。[GDL+16] 提出可以组合使用 SIMD 打包以及 CRT 技术:选取若干个 NTT-friendly 的不同素数 t 1 , t 2 , ⋯   , t k t_1,t_2,\cdots,t_k t1,t2,,tk,那么就有 R ∏ i t I ≅ ∏ i R t i R_{\prod_i t_I} \cong \prod_i R_{t_i} RitIiRti,只要让 t ∗ = ∏ i t i t^*=\prod_i t_i t=iti 充分大,那么就可以将指定精度的定点数转化为整数,且计算过程中不会出现取模 t ∗ t^* t 而导致错误。

网络结构

因为第二代 FHE 适合计算大批量的整数算术,因此 [GDL+16] 修改了 CNNs,

  1. 标准的激活函数都是非算术的,他们修改为使用 x 2 x^2 x2 作为激活函数
  2. 最大池化难以表示为低次多项式,因此采用**(缩放的)均值池化**,只计算加和,并不计算除法,额外的因子在下一层中处理
  3. 卷积层、全连接层、均值池化都是线性变换,因此连续层可以折叠合并
  4. 训练阶段的末尾需要一层 Sigmoid 激活函数以获得合理的误差,推理阶段可以删除这一层,因为 Sigmoid 是单调增的,同时 CNN 的输出值是向量的最大值索引

在这里插入图片描述

CryptoDL

[HTG17] 提出了 CryptoDL 模型,他们仅关注推理,模型是明文训练的。他们使用 HElib 库中的 BGV 方案。在 MNIST 数据集上,预测精度为 99.52 % 99.52\% 99.52%,吞吐率是每小时 164000 次预测,单次预测的延迟是 320 秒。

多项式近似

在 CNN 的所有运算中,最关键的就是激活函数,同时激活函数在 FHE 下的计算也是最复杂的。[HTG17] 使用低次多项式去近似 Sigmoid/Tanh/ReLU 激活函数。

Stone–Weierstrass 定理:令 X X X 是一个非空的紧空间,简记 C ( X ) C(X) C(X) 是其上的所有连续实值函数的族。令 A A A 是由一些多项式组成的集合,它在加法、乘法、数乘下封闭,且包含所有的常数函数。我们说某个 f ∈ C ( X ) f \in C(X) fC(X) 可以被 A A A 近似,如果对于任意的 ϵ > 0 \epsilon>0 ϵ>0 总存在 p ∈ A p \in A pA 使得 ∣ f ( x ) − p ( x ) ∣ < ϵ , ∀ x ∈ X |f(x)-p(x)|<\epsilon,\forall x \in X f(x)p(x)<ϵ,xX。那么, C ( X ) C(X) C(X) 中的任意元素都可以被 A A A 近似    ⟺    \iff 对于任意的 x ≠ y ∈ X x \neq y \in X x=yX 总存在 p ∈ A p \in A pA 使得 p ( x ) ≠ p ( y ) p(x) \neq p(y) p(x)=p(y)

只不过这个定理是非构造性的。我们令 μ \mu μ 是集合 X X X 上的度量,那么可以定义函数空间 C ( f ) C(f) C(f) 的内积 ⟨ f , g ⟩ : = ∫ X f g  d μ \langle f,g \rangle := \int_X fg \text{ d}\mu f,g:=Xfg dμ。使用  d μ =  d x \text{ d}\mu=\text{ d}x  dμ= dx 以及 [ − 1 , 1 ] [-1,1] [1,1],利用 GSO 可以获得空间的一组生成多项式,称为 Legendre 多项式。使用  d μ =  d x 1 − x 2 \text{ d}\mu=\frac{\text{ d}x}{\sqrt{1-x^2}}  dμ=1x2  dx 以及 [ − 1 , 1 ] [-1,1] [1,1],利用 GSO 可以获得空间的一组生成多项式,称为 Chebyshev 多项式。前者用于泰勒级数,后者用于多项式插值。

由于 Sigmoid 函数 σ ( x ) = 1 1 + e − x \sigma(x)=\frac{1}{1+e^{-x}} σ(x)=1+ex1 以及 Tanh 函数 2 σ ( x ) − 1 2\sigma(x)-1 2σ(x)1 都是无限可导的(infinitely derivative),因此可以直接用 Chebyshev 插值算法去近似。

而 ReLU 函数 max ⁡ ( 0 , x ) \max(0,x) max(0,x) 的导数是阶跃函数,原点附近不存在二阶导数,因此近似效率不好。[HTG17] 尝试了数值分析、泰勒级数、标准切比雪夫插值及其变体,表现的都不好。他们认为在 CNN 中的激活函数的导数是十分重要的,这影响错误的评估以及权重的更新。因此,他们使用低次多项式去拟合阶跃函数,然后把积分结果作为对 ReLU 的近似。

网络结构

[HTG17] 采用度数为 2 - 3 的低次多项式替换原始的激活函数,分别训练了浅层网络和深层网络,前者精度 98.52 % 98.52\% 98.52%,后者精度 99.52 % 99.52\% 99.52%

在这里插入图片描述

Others

上述的工作都是简单的非标准模型(网络深度很浅,激活函数被替换,数据集简单),[LKL+22] 第一次给出了标准的深度学习模型(ResNet-20)的同态预测。他们使用 RNS-CKKS 方案,并在 SEAL 库中实现了 Bootstrapping 算法。模型是在明文下训练的标准 ResNet-20,在推理的时候对 Softmax 激活函数做高精度的近似

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

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

相关文章

基于java的宠物常规护理知识管理系统

项目源码&#xff1a;https://gitee.com/oklongmm/biye2 在设计一个宠物常规护理知识管理系统时&#xff0c;我们需要考虑系统的可扩展性&#xff0c;易用性和稳定性。以下是系统设计的功能模块&#xff1a; 一、用户模块&#xff1a; 1. 注册与登录&#xff1a;用户可以通过…

Day18:信息打点-小程序应用解包反编译动态调试抓包静态分析源码架构

目录 小程序获取-各大平台&关键字搜索 小程序体验-凡科建站&模版测试上线 小程序抓包-Proxifier&BurpSuite联动 小程序逆向-解包反编译&动态调试&架构 思维导图 章节知识点 Web&#xff1a;语言/CMS/中间件/数据库/系统/WAF等 系统&#xff1a;操作系…

Python成功解决AttributeError: ‘Series‘ object has no attribute ‘set_value‘

Python成功解决AttributeError: ‘Series‘ object has no attribute ‘set_value‘ &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&am…

[机器视觉]halcon应用实例 用户自定义多ROI模板匹配

本示在前面几个halcon ROI示例的基础上继续扩展&#xff0c;更靠进实标情况。为了使ROI匹配更灵活&#xff0c;就要求可以让用户或工程根据实际使用情况自己去画ROI&#xff0c;想画几个是几个。数量不能在代码里写死。 这次升级的主要是增加了一个while循环根据用户的鼠标按键…

入门LLMs开发 — LangChain

像OpenAI的GPT-4这样的大型语言模型&#xff08;LLMs&#xff09;已经风靡全球。它们可以自动执行各种任务&#xff0c;如回答问题、翻译语言、分析文本等。LLMs是第一种真正感觉像“人工智能”的机器学习类型。 然而&#xff0c;在将LLMs应用于实际产品时仍然存在挑战。特别是…

2 月 27 日算法练习-动态规划

思路&#xff1a;没用完全背包优化的动态规划只能O(n^3)只能过 40% #include<bits/stdc.h> using namespace std; const int N 5e37; const int mod 1e97; string s; int len; int num[N],dp[N][N];int solve(int need,int flag){memset(num, 0, sizeof(num));memset(…

C打印内存16进制

下面是一段C代码打印16进制 void print_hex(const char *msg, void *addr, int len) {uint8_t *p (uint8_t *)addr;printf("%s ,stat:%0x8, len:%d\n", msg, addr, len);for (int i 0; i < len / 16; i) {printf("0x%08x: ", p i * 16);for (int j …

微服务:Feign篇

1.什么是Feign Feign是一种声明式、模板化的HTTP客户端&#xff0c;可用于调用HTTP API实现微服务之间的远程服务调用。它的特点是使用少量的配置定义服务客户端接口&#xff0c;可以实现简单和可重用的RPC调用。 先来看我们以前利用RestTemplate发起远程调用的代码&#xff…

30天JS挑战(第十二天)------输入序列验证

第十二天挑战(输入序列验证) 地址&#xff1a;https://javascript30.com/ 所有内容均上传至gitee&#xff0c;答案不唯一&#xff0c;仅代表本人思路 中文详解&#xff1a;https://github.com/soyaine/JavaScript30 该详解是Soyaine及其团队整理编撰的&#xff0c;是对源代…

Golang 开发实战day02 - Print Formatting

Golang 教程02 - Print&#xff0c;Formatting Strings Go语言提供了丰富的格式化字符串功能&#xff0c;用于将数据格式化为特定格式的字符串。本课程将详细介绍Go语言中Print和Formatting Strings的用法&#xff0c;并提供代码示例供大家参考。 Print 类型及使用 1.Print …

ruoyi-vue-plus4.X版本实现内嵌swagger文档(简单解决方法)

1.在common模块中添加pom依赖 <dependency><groupId>org.webjars</groupId><artifactId>swagger-ui</artifactId><version>4.15.5</version></dependency>结果如下&#xff1a; 2.在ResourcesConfig配置类的addResourceHandl…

【前端】Vite打包页面简单部署到GitHub上

创建仓库---->上传代码---->设置 注意点已经打上箭头,代码我传到的是test分支 vite打包的配置如图&#xff0c;base是仓库名称&#xff0c;docs是build后生成的打包目录。 上传到GitHub就自动部署了 访问就是第一张图里的一串地址&#xff0c;这种方式比较方便吧

「项目实践」如何实现导购推荐“千人千面”

前言 在电商背景下&#xff0c;为用户提供精准的导购推荐不仅能极大提升购物体验&#xff0c;也成为推动业务增长的关键驱动力。随着人工智能和数据科学的快速发展&#xff0c;实现“千人千面”的个性化推荐已不再是无法触及的梦想。如何在众多商品中准确捕捉用户的偏好&#…

计算机网络-第3章 数据链路层

主要内容&#xff1a;两个信道及对应的协议&#xff1a;点对点信道和广播信道&#xff0c;扩展以太网和高速以太网 本章的分组转发为局域网内的转发&#xff0c;不经过路由&#xff0c;网络层分组转为为网络与网络之间的转发&#xff0c;经过路由。局域网属于网络链路层的范围…

maven打包失败 Cannot create resource output directory[已解决]

文章目录 前言1.打开资源管理器&#xff08;ctrlAltdelete打开任务管理器&#xff09;2. 选择性能&#xff0c;再选择打开资源监视器3. 搜索“target”4. 我这里示范操作输入的perfmon&#xff0c;显示perfmon.exe占用的&#xff0c;右键结束这个进程 。5.然后重新用package打包…

什么是物联网?物联网如何工作?

物联网到底是什么&#xff1f; 物联网(Internet of Things&#xff0c;IoT)的概念最早于1999年被提出&#xff0c;官方解释为“万物相连的互联网”&#xff0c;是在互联网基础上延伸和扩展&#xff0c;将各种信息传感设备与网络结合起来而形成的一个巨大网络&#xff0c;可以实…

Crossover24新版发布!搭载Wine9提升Mac游戏体验!

2024年2月28日&#xff0c;著名的软件Crossover正式推出了2024年的首个全新版本Crossover24。Crossover 24版本的更新带来了许多功能优化和游戏优化&#xff0c;使用户能够更好地在Mac系统上运行各种软件和游戏&#xff0c;并且支持32位旧版软件的兼容运行。 Crossover24最新版…

【论文笔记】Gemma: Open Models Based on Gemini Research and Technology

Gemma 日期: March 5, 2024 平台: CSDN, 知乎 状态: Writing Gemma: Open Models Based on Gemini Research and Technology 谷歌最近放出的Gemma模型【模型名字来源于拉丁文gemma&#xff0c;意为宝石】采用的是与先前Gemini相同的架构。这次谷歌开源了两个规模的模型&…

python--产品篇--游戏-坦克1

文章目录 准备代码效果 准备 下载 代码 5# coding: utf-8# 游戏运行主程序 import sys import pygame import scene import bullet import food import tanks import home from pygame.locals import *# 开始界面显示 def show_start_interface(screen, width, height):tfo…

leetcode10正则表达式匹配

leetcode10正则表达式匹配 思路python 思路 难点1 如何理解特殊字符 ’ * ’ 的作用&#xff1f; 如何正确的利用特殊字符 ’ . ’ 和 ’ * ’ &#xff1f; * 匹配零个或多个前面的那一个元素 "a*" 可表示的字符为不同数目的 a&#xff0c;包括&#xff1a; "…