Documentation

Convex.Algorithm.ProximalGradient

ProximalGradient #

Main results #

This file mainly concentrates on the proximal gradient algorithm for composite optimization problems.

We prove the O(1 / k) rate for this algorithm.

class proximal_gradient_method {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] (f : E) (h : E) (f' : EE) (x₀ : E) :
Type u_1
Instances
    theorem proximal_gradient_method.fconv {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] {f : E} (h : E) (f' : EE) (x₀ : E) [self : proximal_gradient_method f h f' x₀] :
    ConvexOn Set.univ f
    theorem proximal_gradient_method.hconv {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] (f : E) {h : E} (f' : EE) (x₀ : E) [self : proximal_gradient_method f h f' x₀] :
    ConvexOn Set.univ h
    theorem proximal_gradient_method.h₁ {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] {f : E} (h : E) {f' : EE} (x₀ : E) [self : proximal_gradient_method f h f' x₀] (x₁ : E) :
    HasGradientAt f (f' x₁) x₁
    theorem proximal_gradient_method.h₂ {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] {f : E} {h : E} {f' : EE} {x₀ : E} [self : proximal_gradient_method f h f' x₀] :
    theorem proximal_gradient_method.h₃ {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] (f : E) {h : E} (f' : EE) (x₀ : E) [self : proximal_gradient_method f h f' x₀] :
    ContinuousOn h Set.univ
    theorem proximal_gradient_method.minphi {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] {f : E} {h : E} {f' : EE} {x₀ : E} [self : proximal_gradient_method f h f' x₀] :
    IsMinOn (f + h) Set.univ (proximal_gradient_method.xm f h f' x₀)
    theorem proximal_gradient_method.tpos {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] {f : E} {h : E} {f' : EE} {x₀ : E} [self : proximal_gradient_method f h f' x₀] :
    theorem proximal_gradient_method.step {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] {f : E} {h : E} {f' : EE} {x₀ : E} [self : proximal_gradient_method f h f' x₀] :
    theorem proximal_gradient_method.ori {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] {f : E} {h : E} {f' : EE} {x₀ : E} [self : proximal_gradient_method f h f' x₀] :
    proximal_gradient_method.x f h f' x₀ 0 = x₀
    theorem proximal_gradient_method.hL {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] {f : E} {h : E} {f' : EE} {x₀ : E} [self : proximal_gradient_method f h f' x₀] :
    (proximal_gradient_method.L f h f' x₀) > 0
    theorem proximal_gradient_method.update {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] {f : E} {h : E} {f' : EE} {x₀ : E} [self : proximal_gradient_method f h f' x₀] (k : ) :
    theorem proximal_gradient_method_converge {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] [ProperSpace E] {x₀ : E} {f : E} {f' : EE} {h : E} {alg : proximal_gradient_method f h f' x₀} (k : ℕ+) :
    f (proximal_gradient_method.x f h f' x₀ k) + h (proximal_gradient_method.x f h f' x₀ k) - f (proximal_gradient_method.xm f h f' x₀) - h (proximal_gradient_method.xm f h f' x₀) 1 / (2 * k * proximal_gradient_method.t f h f' x₀) * x₀ - proximal_gradient_method.xm f h f' x₀ ^ 2