优化算法中的零次优化详解
零次优化公式算法收敛
无梯度优化
minf(x)minf(x)minf(x)
无梯度方法适用于梯度难以得到、获得昂贵
传统无梯度方法:
- 基于直接搜索的方法:坐标搜索,广义模式搜索和网格自适应直接搜索
- 基于模型的方法:隐式过滤,信任区域方法
- 贝叶斯方法
通过随机梯度估计的零次优化:
- 模仿一阶方法,但使用函数值的有限差分来估计梯度
- 优点:易与操作、收敛保证、函数查询效率
黑箱攻击的基本问题:
- 收敛
- 查询无效
ZOO方法综述:
Unconstrained ZOO
梯度估计(ZOO):
- One-point gradient estimate
∇^f(x)=(d/μ)[f(x+μu)−f(x)]u\hat{\nabla} f(\mathbf{x})=(d / \mu)[f(\mathbf{x}+\mu \mathbf{u})-f(\mathbf{x})] \mathbf{u}∇^f(x)=(d/μ)[f(x+μu)−f(x)]u
其中uuu是从单位球的球面均匀绘制的随机向量,有些地方uuu来着标准高斯分布,在这里,使用均匀分布可确保在有界空间而不是高斯所需的整个实际空间中定义ZO梯度估计,并且µ>0µ> 0µ>0是一个小的步长,称为平滑参数 - Two-point gradient estimate
gμ(x)=f(x+μu)−f(x)μ⋅Bug^μ(x)=f(x+μu)−f(x−μu)2μ⋅Bu\begin{aligned} &g_{\mu}(x)=\frac{f(x+\mu u)-f(x)}{\mu} \cdot B u\\ &\hat{g}_{\mu}(x)=\frac{f(x+\mu u)-f(x-\mu u)}{2 \mu} \cdot B u \end{aligned}gμ(x)=μf(x+μu)−f(x)⋅Bug^μ(x)=2μf(x+μu)−f(x−μu)⋅Bu
上式第一项称为Forward difference,第二项称为Central difference - Gradient sign estimate
sign(f(x+μu)−f(x)μu)(use sign as descent direction) \operatorname{sign}\left(\frac{f(x+\mu u)-f(x)}{\mu} u\right) \quad \text { (use sign as descent direction) }sign(μf(x+μu)−f(x)u) (use sign as descent direction)
梯度符号的估计对梯度估计噪声更鲁棒。例如g=[5,−0.5]T,g^=[0.5,−5],but sign(g)=[1,−1]=sign(g^)g=[5,-0.5]^{T}, \hat{g}=[0.5,-5], \text { but } \operatorname{sign}(g)=[1,-1]=\operatorname{sign}(\hat{g})g=[5,−0.5]T,g^=[0.5,−5], but sign(g)=[1,−1]=sign(g^)
Unconstrained ZOO: Optimality Measures
在ML应用中,最大程度地减少经验平均损失
minimizex∈Rdf(x)=1n∑i=1fi(x),fi(x):=f(x;wi)\underset{x \in R^{d}}{\operatorname{minimize}} f(x)=\frac{1}{n} \sum_{i=1} f_{i}(x), \quad f_{i}(x):=f\left(x ; w_{i}\right)x∈Rdminimizef(x)=n1i=1∑fi(x),fi(x):=f(x;wi)
x∈Rdx \in R^{d}x∈Rd 指优化变量 ,wiw_{i}wi第i个数据样本,fi(x)f_{i}(x)fi(x)是cost函数单数非凸
- 对于凸问题,将追踪
hT:=E[f(xT)]−f∗≤ϵh_{T}:=\mathbb{E}\left[f\left(x_{T}\right)\right]-f^{*} \leq \epsilonhT:=E[f(xT)]−f∗≤ϵ - 对于非凸问题,将追踪
h~T:=E[∥∇f(xT)∥2]≤6\tilde{h}_{T}:=\mathbb{E}\left[\left\|\nabla f\left(x_{T}\right)\right\|^{2}\right] \leq 6h~T:=E[∥∇f(xT)∥2]≤6
讨论收敛速度
Sign-Based Methods能更快收敛,而为什么?
xk+1=xk−δksign(g^k),where sign(x)takes element-wise signs of x\mathbf{x}_{k+1}=\mathbf{x}_{k}-\delta_{k} \operatorname{sign}\left(\hat{\mathbf{g}}_{k}\right), \quad \text { where } \operatorname{sign}(\mathbf{x}) \text { takes element-wise signs of }\mathbf{x}xk+1=xk−δksign(g^k), where sign(x) takes element-wise signs of x
- 符号算子导致了自适应学习率,δksign(g^k)=δkg^k⋅/∣g^k∣,δk/∣g^k∣\delta_{k} \operatorname{sign}\left(\widehat{\boldsymbol{g}}_{k}\right)=\delta_{k} \widehat{\boldsymbol{g}}_{k} \cdot /\left|\widehat{\boldsymbol{g}}_{k}\right|, \delta_{k} /\left|\widehat{\boldsymbol{g}}_{k}\right|δksign(gk)=δkgk⋅/∣gk∣,δk/∣gk∣指自适应率,其中g^k=∇x=xkfi(x)\widehat{\boldsymbol{g}}_{k}=\nabla_{\boldsymbol{x}=\boldsymbol{x}_{\mathbf{k}}} f_{i}(\boldsymbol{x})gk=∇x=xkfi(x)
- 梯度算子对nosie有更大的容错性
总结:
- ZO-SGD相比于ZO-signSGD收敛有更好的准确性(loss更小),但ZO-signSGD能更快收敛。
- 而后面提到ZO-AdaMM能包含ZO-SGD和ZO-signSGD两种情况(这两种为ZO-AdaMM的特殊情况)
Constrained ZOO
(上图中Unconstrained改为constrained)
Constrained ZOO:
- Alternating direction method of multipliers (ADMM): A general optimization solver
- ZO Stochastic Projected Gradient Descent (ZO-SPGD)
- ZO Adaptive Momentum Method (ZO-AdaMM)类似于Adam方法(结合了Momentum和自适应学习率)
总结:
Min-max ZOO
总结
ZOO 优化总结:
- 使用客观评估估算梯度信息
- 收敛到解决方案的可能邻域(消除在随机环境设置的随机小批量所产生的偏差)
Zeroth Order for Adversary ML
零次攻击(Zeroth Order Optimization (ZOO) Attack)
ZO by Natural Evolution Strategy (NES)
ZO-AdaMM:
- ZO-AdaMM作为一种特殊情况涵盖了ZO-signSGD
- ZO-AdaMM具有自适应学习率和梯度平均的优势
Data poisoning attacks:
- injecting poisoned data (eg, with designed backdoor trigger) into training phase
零次优化方法对于梯度为以下的问题很有用: - 不可用:黑匣子攻击(主要是这一点)
- 不可计算:封闭形式不可计算的梯度,例如AutoML中的超参数优化
- 不方便:梯度可计算,但其形式评估成本很高,例如,涉及梯度计算中矩阵求逆,通过梯度或曲率正则化进行对抗防御的资源管理
- 隐私权要求:隐私权保护条件,例如,隐私权保护的分布式计算
总结
- 当没有梯度时,ZO方法是一阶方法的通用替代方法
- 收敛速度受尺寸依赖的减慢效应的影响,但是如果具有适当的最小批处理大小,则它对一阶方法具有竞争力
- ZO优化在数据挖掘,机器学习,计算机视觉尤其是对抗性鲁棒性中的新兴应用
传统的derivative-free optimization(DFO)方法可以分为
- 基于直接搜索的方法和基于模型的方法。两种方法都都是迭代方法区别在于,基于直接搜索的方法直接基于查询的函数值来优化其搜索方向,而基于模型的方法则建立一个模型,该模型逼近要优化的函数并基于该模型更新搜索方向
优化算法中的零次优化详解相关推荐
- mysql order by 语句_Mysql优化order by语句的方法详解
本篇文章我们将了解ORDER BY语句的优化,在此之前,你需要对索引有基本的了解,不了解的老少爷们可以先看一下我之前写过的索引相关文章.现在让我们开始吧. MySQL中的两种排序方式 1.通过有序索引 ...
- matlab中gad,10大经典算法matlab代码以及代码详解【数学建模、信号处理】
[实例简介] 10大算法程序以及详细解释,包括模拟退火,禁忌搜索,遗传算法,神经网络.搜索算法. 图论. 遗传退火法.组合算法.免疫算法. 蒙特卡洛.灰色预测.动态规划等常用经典算法.是数学建模.信号 ...
- Android系统性能优化(60)---LeakCanary使用详解
Android内存优化(六)LeakCanary使用详解 1.概述 如果使用MAT来分析内存问题,会有一些难度,并且效率也不是很高,对于一个内存泄漏问题,可能要进行多次排查和对比. 为了能够简单迅速 ...
- 为什么在优化算法中使用指数加权平均
本文知识点: 什么是指数加权平均? 为什么在优化算法中使用指数加权平均? β 如何选择? 1. 什么是指数加权平均 指数加权平均(exponentially weighted averges),也叫指 ...
- matlab meas 函数_L1_homotopy_v2.0 这厮压缩感知恢复算法中L1同伦优化的 matlab 238万源代码下载- www.pudn.com...
文件名称: L1_homotopy_v2.0下载 收藏√ [ 5 4 3 2 1 ] 开发工具: matlab 文件大小: 975 KB 上传时间: 2015-04-17 下载次数: 4 提 ...
- c语言将AOE网络的数据写入TXT文档中,数据结构与算法学习辅导及习题详解.张乃孝版-C/C++文档类资源...
数据结构与算法学习辅导及习题详解.张乃孝版.04年10月 经过几年的努力,我深深体会到,编写这种辅导书要比编写一本湝通教材困难得多. 但愿我的上述理想,在本书中能够得以体现. 本书的组织 本书继承了& ...
- Ehcache 中ehcache.xml 配置详解和示例
EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. Ehcache是一种广泛使用的开源Java分布式缓存.主要面向通用缓存 ...
- Python中的高级数据结构详解
这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考 ...
- Java多线程编程中Future模式的详解
转载自 https://www.cnblogs.com/winkey4986/p/6203225.html Java多线程编程中,常用的多线程设计模式包括:Future模式.Master-Worker ...
最新文章
- java 建造者实际中的用法_java中j建造者模式详解和使用方法
- spark源码分析之Executor启动与任务提交篇
- web应用非法访问linux路径,Web安全对策研究.doc
- Python、Java、C#、Perl 创始人聚首,编程语言要变天?
- MySQL服务无法正常启动的解决方法(1053错误)
- 实用贴丨正确的「递归」打开方式:让计算机像计算机一样去计算
- 【渝粤教育】国家开放大学2018年秋季 0700-22T中级会计实务(一) 参考试题
- 一分钟了解阿里云产品:绿网
- Tableau实战 楼市降温分析(七)现期房销售额及累计增长
- stm8s103k3 周期 捕获_STM8S 输入捕获学习
- 二进制码和格雷码转换问题
- 分割线与边框嵌入文字
- CHM格式 打开后不显示内容的解决办法
- Vue Bootstrap 结合学习笔记(一)
- Excel表格如何设置下拉选项并应用到整列
- linux 缩小硬盘镜像,缩小qcow2格式kvm虚拟镜像磁盘大小[转]
- 3D全景+展馆,带来不一样的参观体验_华锐互动
- db2实例和数据库关系
- Cannot add property xxx, object is not extensible
- 技术人就得“软硬兼施”