Subgradient Algorithm
Subgradient是一种可以优化不可微的凸函数的方法.
首先回顾凸函数的定义:
$f(y) \geq f(x) + \nabla f(x)^T(y-x), all \hspace{2 pt} x, y$
凸函数的subgradient的定义为满足以下条件的$g\in \mathcal{R}^n$
$f(y) \geq f(x) + g^T(y-x), all \hspace{2 pt} y$
subgradient具有以下特性:
- 永远存在
- 如果$f$在$x$处可微, 那么$g=\nabla f(x)$
- 对于非凸函数也有类似的定义, 但是非凸函数的subgradient并不需要存在
几个例子:
例1. $f: \mathcal{R} \to \mathcal{R}, f(x) = |x|$

对于$x\neq 0, g=sign(x)$
对于$x=0, g$是$[-1, 1]$中的任一元素
例2. $f: \mathcal{R}^n \to \mathcal{R}, f(x) = \|x\|$

对于$x\neq 0, g=\frac{x}{\|x\|}$
对于$x=0, g$是${z: \|z\|\geq1}$中的任一元素
例3. $f: \mathcal{R}^n \to \mathcal{R}, f(x) = \|x\|_1$

对于$x\neq 0, g_i=sign(x_i)$
对于$x=0, g$是$[-1, 1]$中的任一元素
Subdifferential
凸函数$f$在某一点$x$的所有subgradient称为在该点的subdifferential.
subdifferential的特性:
- $\partial f(x)$是凸的(即使对于非凸函数$f$)
- 非空(低于非凸函数$f$可能是空的)
- 如果$f$在$x$是可微的, 则$\partial f(x)={\nabla f(x)}$
- 如果$\partial f(x)={g}$, 那么f是科委的, 并且$\nabla f(x)=g$
优化条件
对于凸函数$f$,
$f(x^*) = \min_{x \in \mathcal{R}^n} \iff 0 \in \partial f(x^*)$
亦即, $x$是$f$的最小点当且仅当$0$是$f$在$x^*$的subgradient
因为如果$g=0$, 则对于所有的$y$: $f(y) \geq f(x^*) + o^T(y-x^*)=f(x^*)$
Soft-thresholding
考虑如下的lasso问题
$\min_x \frac{1}{2}\|y-Ax\|^2 + \lambda\|x\|_1$, 其中$\lambda \geq 0$
简化一下上述问题, 令$A=I$:
$\min_x \frac{1}{2}\|y-x\|^2 + \lambda\|x\|_1$
上式的subgradient为:
$g=x-y+\lambda s$
其中
令$g=0$, 可以得到$x^*=S_{\lambda}(y)$:
$S_{\lambda}(y)= \begin{cases}y_i-\lambda & if y_i > \lambda \\ 0& if -\lambda\leq y_i \leq \lambda \\ y_i + \lambda & if y_i < -\lambda \end{cases}$
Subgradient method
对于凸函数(不一定可微)$f: \mathcal{R}^n \to \mathcal{R}$, 在优化时将梯度替换为subgradient既是subgradient method:
$x^{(k)}=x^{(k-1)} - t_k \cdot g^{(k-1)}, k=1,2,3,...$
其中$g^{(k-1)}$是$f$在$x^{(k-1)}$的任意subgradient
subgradient method不一定是一个descent method, 所以需要取所有迭代中最小的那个(而不是最后一个)
$f(x_{best}^{(k)})=\min_{i=1,...,k}f(x^{(i)})$
参考文献
[1]. Subgradient method. Geoff Gordon, Ryan Tibshirani
226 total views, 1 views today
Subgradient Algorithm的更多相关文章
- Pegasos: Primal Estimated sub-GrAdient Solver for SVM
Abstract We describe and analyze a simple and effective iterative algorithm for solving the optimiza ...
- 挑子学习笔记:两步聚类算法(TwoStep Cluster Algorithm)——改进的BIRCH算法
转载请标明出处:http://www.cnblogs.com/tiaozistudy/p/twostep_cluster_algorithm.html 两步聚类算法是在SPSS Modeler中使用的 ...
- PE Checksum Algorithm的较简实现
这篇BLOG是我很早以前写的,因为现在搬移到CNBLOGS了,经过整理后重新发出来. 工作之前的几年一直都在搞计算机安全/病毒相关的东西(纯学习,不作恶),其中PE文件格式是必须知识.有些PE文件,比 ...
- [异常解决] windows用SSH和linux同步文件&linux开启SSH&ssh client 报 algorithm negotiation failed的解决方法之一
1.安装.配置与启动 SSH分客户端openssh-client和openssh-server 如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有 ...
- [Algorithm] 使用SimHash进行海量文本去重
在之前的两篇博文分别介绍了常用的hash方法([Data Structure & Algorithm] Hash那点事儿)以及局部敏感hash算法([Algorithm] 局部敏感哈希算法(L ...
- Backtracking algorithm: rat in maze
Sept. 10, 2015 Study again the back tracking algorithm using recursive solution, rat in maze, a clas ...
- [Algorithm & NLP] 文本深度表示模型——word2vec&doc2vec词向量模型
深度学习掀开了机器学习的新篇章,目前深度学习应用于图像和语音已经产生了突破性的研究进展.深度学习一直被人们推崇为一种类似于人脑结构的人工智能算法,那为什么深度学习在语义分析领域仍然没有实质性的进展呢? ...
- [Algorithm] 群体智能优化算法之粒子群优化算法
同进化算法(见博客<[Evolutionary Algorithm] 进化算法简介>,进化算法是受生物进化机制启发而产生的一系列算法)和人工神经网络算法(Neural Networks,简 ...
- [Evolutionary Algorithm] 进化算法简介
进化算法,也被成为是演化算法(evolutionary algorithms,简称EAs),它不是一个具体的算法,而是一个“算法簇”.进化算法的产生的灵感借鉴了大自然中生物的进化操作,它一般包括基因编 ...
随机推荐
- Python变量/运算符/函数/模块/string
Python笔记(一) 1.变量类型 Python 有五个内置的简单类型:bool.int.long.float 和 complex.这些类型是不可变的,就是说整数对象一旦创建,其类型便不可更改. t ...
- [汇编] C语言中嵌入汇编
>_<" 下面是在C语言中嵌入汇编的例子,下面是三点要注意的~ 1.内联式汇编 2._asm关键字 3.并不是所有中断都能被支持 #include<iostream> ...
- 常用linux命令索引
每天一个linux命令(61):wget命令 每天一个linux命令(60):scp命令 每天一个linux命令(59):rcp命令 每天一个linux命令(58):telnet命令 每天一个linu ...
- paip.网页右键复制菜单限制解除解决方案
paip.网页右键复制菜单限制解除解决方案 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net ...
- paip.文件读写api php java python总结.txt
paip.文件读写api php java python总结.txt 一.多种方式读文件内容. 1.按字节读取文件内容 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. ...
- 教你轻松看懂 iOS9 新功能
2015苹果全球开发者大会在6月9日凌晨,美国旧金山举行,fir.im 整理了一部分的资料,帮助了解 iOS9 的新特性与功能,感兴趣的可以看下. 关于iOS9新增功能 在WWDC 2015上苹果介绍 ...
- C# winform的WebBrowser非常规编程(强烈推荐)
本文章被今日头条推荐 1.在WebBrowser中实现抓取301和302协议 在WebBrowser中抓取301和302协议目前官方提供的组件远远不够,需要借助HttpMonitor.dll.这个组件 ...
- apache url rewrite 的RewriteRule参数详解
apache url rewrite 的RewriteRule参数详解 我们经常会在apache那边对一些url进行一些重写操作,那么就会涉及到很多的重写策略的选择,比如重定向的方式,参数的处理,规则 ...
- github host你懂得,如果你是程序员请不要乱传,求求了
可用截止测试时间 2015-01-12 github相关的hosts 207.97.227.239 github.com 65.74.177.129 www.github.com 207.97.227 ...
- SNMP远程监控进程信息的OID
最近有个项目需要用snmp远程监控进程信息.于是我查了一下资料. 一.资料 .1.3.6.1.2.1.25.4.2.1.1.iso.org.dod.internet.mgmt.mib-2.host.h ...