以压缩感知问题为例介绍利用神经网络的Learning to learn方法
参考:David Wipf, Microsoft Research, Beijing, 2018
摘要:利用近端梯度下降算法,给出求解压缩感知问题的迭代软阈值和迭代硬阈值算法,并将迭代硬阈值算法通过Learning to learn方法进行改进,利用深度神经网络的模型进行学习.
目录
- 问题提出
- 迭代软阈值算法(Iterative Soft Thresholding)
- 迭代硬阈值算法(Iterative Hard Thresholding)
- IHT算法的Learning to learn提升
- Learning to learn 方法
- IHT方法的Learning to learn 提升
1. 问题提出
先给出一个较复杂又直观的例子:
复杂的例子:声源定位问题
声源空间位置为
x
,传感器空间位置为
y
,从声源空间到传感器空间的映射为
y=Φx+ϵ
希望由传感器空间的数据估计声源空间的位置
x
.
在
Φ
矩阵很大时,对
x
的估计很困难,但是当假定
x
的大部分元素为
0
时,声源估计问题可以表示为如下形式
x^=argminx||y−Φx||22+λ||x||0
由此引出我们的问题是:
minx||x||0s.t.y=Φx
这是一个NP-hard问题,放松约束以后的形式为如下四种
minx||y−Φx||22+λ||x||1minx||y−Φx||22+λ||x||0minx||y−Φx||22s.t.||x||0≤rminx||y−Φx||22+I∞[||x||0>r]
其中,第一种为凸约束,后三种为非凸约束,后面两种形式是等价的,限制其非零元素的个数.
上述形式都是标准的
minxfs(x)+fn(x)
的问题,利用近端梯度下降,对不同的形式可以得到不同的迭代算法:
- 凸约束下,得到迭代软阈值(IST)算法;
- 非凸约束下,得到迭代硬阈值(IHT)算法.
2. 迭代软阈值算法
优化问题
x^=argminx||y−Φx||22+λ||x||1
为标准的
fs(x)+fn(x)
的形式,求解的基本思路如下:
- 对光滑部分,计算其梯度
▽fs(x)
,得到标准梯度下降算法的迭代公式;
- 对非光滑部分,求解近端问题
proxμfn(x)(z)
,得到非线性变换公式;
- 联立两项得到单步迭代,即迭代软阈值算法.
下面开始进行求解.
首先计算
fs(x)
的梯度
▽fs(x)=ΦTΦx(k)+ΦTy
带入梯度下降更新公式,得到
x(k+1)=x(k)−1L▽f(x(k))=(I−1LΦTΦ)x(k)+1LΦTy=W1x(k)+W2y
其次,求解近端问题
proxμfn(x)(z)=argminx12||x−z||2+μfn(x)
其中,
fn(x)=||x||1
. 带入得到
proxμfn(x)(z)=argminx12||x−z||2+μ||x||1=sign(z)max{|z|−μ,0}=Sμ(z)
最后,将梯度下降更新公式带入近端问题,得到最终的迭代软阈值算法
x(k+1)=Sμ[(I−1LΦTΦ)x(k)+1LΦTy]=Sμ[W1x(k)+W2y]
可以看出,形式上基本由线性变化与非线性激活组成,这就为后续利用神经网络模型提供基础.
3. 迭代硬阈值算法
优化问题
x^=argminx||y−Φx||22+I∞[||x||0>r]
同样为标准的
fs(x)+fn(x)
的形式,求解的基本思路如下:
- 对光滑部分,计算其梯度
▽fs(x)
,得到标准梯度下降算法的迭代公式;
- 对非光滑部分,求解近端问题
proxμfn(x)(z)
,得到非线性变换公式;
- 联立两项得到单步迭代,即迭代硬阈值算法.
下面开始进行求解.
首先计算
fs(x)
的梯度
▽fs(x)=ΦTΦx(k)+ΦTy
带入梯度下降更新公式,得到
x(k+1)=x(k)−1L▽f(x(k))=(I−1LΦTΦ)x(k)+1LΦTy=W1x(k)+W2y
其次,求解近端问题
proxμfn(x)(z)=argminx12||x−z||2+μfn(x)
其中,
fn(x)=I∞[||x||0>r]
. 带入得到
proxμfn(x)(z)=argminx12||x−z||2+μI∞[||x||0>r]≐H¯r[z]
其中,
H¯r[zi]={zi0:|zi|为z的最大r个元素之一:otherwise
最后,将梯度下降更新公式带入近端问题,得到最终的迭代硬阈值算法
x(k+1)=H¯r[(I−1LΦTΦ)x(k)+1LΦTy]=H¯r[W1x(k)+W2y]
4. IHT算法的Learning to learn提升
4.1 Learning to learn
假设我们的目标函数为
fθ(x),θ∈Ω
并假设已有训练集,这里采用有监督的训练对
x∗i
由别的优化算法得到. 若难以得到,则可用生成模型:随机生成
x∗
,计算
y=Φx∗+ϵ
{θi,x∗i|θi∈Θ,x∗i=argminxfθi(x),i=1,2,...,N}
我们的核心目标是:
- 利用上述信息,学习一些参数化的函数
g(θ;ω)
,使其满足
g(θ;ω^)≈x∗=argminxfθ(x)
通过
θ
到
g
是一种新的学习算法. 而
g
也是一个优化算法,即Learning to learn.
4.2 IHT算法的Learning to learn提升
回顾一下IHT算法的基本思路:
- 对光滑部分,计算其梯度
▽fs(x)
,得到标准梯度下降算法的迭代公式,记为
h^(x,θ;ω)
;
- 对非光滑部分,求解近端问题
proxμfn(x)(z)
,得到非线性变换公式;
- 联立两项得到单步迭代,即迭代硬阈值算法.
在第一步中,我们得到梯度下降的更新公式
x(k+1)=h^(x(k),θ;ω)=W1x(k)+W2y
其中,
θ=y
,
W1=I−1LΦTΦ
,
W2=1LΦT
,
ω={W1,W2}
在第三步以后,我们得到IHT算法
x(k+1)=H¯r[W1x(k)+W2y]
若将迭代硬阈值算法进行
K
次,则可以得到我们的学习算法
x^=x(K)=g(θ;ω)=proxμfn(x)[h^(⋯proxμfn(x)[h^(x(1),θ;ω)]⋯,θ;ω)]
通常的深层神经网络为
而LIHT模型的深度神经网络模型为
取
K=2
,则很明显这如下的网络结构,网络需要学习的可调参数为
ω
.
通过已知的信息,可以给出网络的训练过程为对目标函数
minω∑i=1Nℓ[g(θi;ω),x∗i]
的优化. 也可看作是非监督学习,其中
ℓ
为任意的损失函数或距离度量. 可以利用随机梯度下降等方式,得到
ω
.
给出新的函数
fθ′
,即给出新的数据
θ′
,由训练得到的参数
ω^
计算
g(θ′;ω^)≈argminxfθ′(x)
g
就是新学习到的算法,也就是Learning to learn.
因此,我们的IHT算法变为一个Learning to learn方法,原始算法直接求出
x
的稀疏最优解,而Learning to learn方法通过学习
ω
建立起从
θ
到
x
映射. 即学习得到的不是某一个特定的解,而是一个从
θ
中学到的新的学习算法.
两者的区别:
原始方法是利用测量矩阵
Φ
计算
x^
,Learning to learn方法中的
ω
是通过训练数据对
{θi,x∗i|θi∈Θ,x∗i=argminxfθi(x),i=1,2,...,N}
学习得到的.
有限等距性质对
Φ
的相关性提出一定要求,而利用Learning to learn方法可以很好的减轻
Φ
相关性对估计的影响.