凸函数(Convex functions)-- Part 1

1. 凸函数的定义

给定一个函数 f : R n → R f: \mathbb{R}^n \rightarrow \mathbb{R} f:RnR,如果函数的定义域(即 dom  f \text{dom} \ f dom f)是凸集,并且对于任意的 x , y ∈ dom  f x, y \in \text{dom} \ f x,ydom f以及 0 ≤ θ ≤ 1 0 \leq \theta \leq 1 0θ1​,都满足如下不等式:
f ( θ x + ( 1 − θ ) y ) ≤ θ f ( x ) + ( 1 − θ ) f ( y ) f(\theta x + (1 - \theta) y) \leq \theta f(x) + (1 - \theta) f(y) f(θx+(1θ)y)θf(x)+(1θ)f(y)
那么这个函数 f f f 称为凸函数。

几何上,这个不等式意味着,连接 ( x , f ( x ) ) (x, f(x)) (x,f(x)) ( y , f ( y ) ) (y, f(y)) (y,f(y)) 的线段(称为弦)在函数 f f f 的图像上方。严格凸函数的定义是在上述不等式严格成立的情况下(即 x ≠ y x \neq y x=y 0 < θ < 1 0 < \theta < 1 0<θ<1)。

  • 凹函数:若 − f -f f 是凸的,则称 f f f 为凹函数。

  • 线性函数:如果一个函数是仿射的(即线性加偏移),那么它既是凸函数也是凹函数。

1:一个简单的凸函数例子是二次函数 f ( x ) = x 2 f(x) = x^2 f(x)=x2。它的定义域是实数集 R \mathbb{R} R,并且对于任意的 x , y ∈ R x, y \in \mathbb{R} x,yR 0 ≤ θ ≤ 1 0 \leq \theta \leq 1 0θ1,都满足凸函数定义的不等式:
f ( θ x + ( 1 − θ ) y ) ≤ θ f ( x ) + ( 1 − θ ) f ( y ) f(\theta x + (1 - \theta) y) \leq \theta f(x) + (1 - \theta) f(y) f(θx+(1θ)y)θf(x)+(1θ)f(y)
在这里插入图片描述

下面是使用MATLAB绘制凸函数图像的代码示例,展示 f ( x ) = x 2 f(x) = x^2 f(x)=x2 和其几何意义,即弦的线段位于函数图像上方。

% MATLAB Code for Plotting a Convex Function

% Define the function f(x) = x^2
f = @(x) x.^2;

% Define a range of x values
x = linspace(-2, 2, 100);

% Compute f(x) values
y = f(x);

% Plot the function
figure;
plot(x, y, 'LineWidth', 2);
hold on;

% Choose two points on the curve
x1 = -1;
x2 = 1.5;
y1 = f(x1);
y2 = f(x2);

% Plot the points
plot([x1 x2], [y1 y2], 'ro', 'MarkerSize', 8, 'MarkerFaceColor', 'r');

% Plot the chord connecting the two points
theta = linspace(0, 1, 100);
x_chord = theta * x1 + (1 - theta) * x2;
y_chord = theta * y1 + (1 - theta) * y2;
plot(x_chord, y_chord, '--g', 'LineWidth', 2);

% Add labels and title
xlabel('x');
ylabel('f(x)');
title('Convex Function: f(x) = x^2');
legend('f(x)', 'Points on curve', 'Chord between points');
grid on;

hold off;

2: f ( x ) = e x f(x) = e^x f(x)=ex 指数函数也是凸函数。

在这里插入图片描述

2. 凸函数的性质

函数 f f f 是凸的,当且仅当对于定义域内的任意直线,其在直线上的限制也是凸函数。也就是说,如果我们定义函数 g ( t ) = f ( x + t v ) g(t) = f(x + t v) g(t)=f(x+tv)(其中 t ∈ R t \in \mathbb{R} tR,且 x + t v ∈ dom  f x + t v \in \text{dom} \ f x+tvdom f),那么如果 g ( t ) g(t) g(t) 是凸的,说明 f f f 也是凸的。

“如果一个函数在任意一条直线上的限制是凸的,那么这个函数就是凸函数”这一性质的体现是通过将函数在某一方向上限制为一维,然后检查该限制函数是否也是凸的。

:假设我们在某个方向 v v v 上对一个多维函数 f ( x ) f(x) f(x) 进行限制,定义一个新函数 g ( t ) g(t) g(t),其中 t t t 是沿着方向 v v v​ 的参数:
g ( t ) = f ( x + t v ) g(t) = f(x + t v) g(t)=f(x+tv)
其中 x ∈ R n x \in \mathbb{R}^n xRn v v v 是一个固定方向向量, t t t 是标量。这个新函数 g ( t ) g(t) g(t) 是一维函数。我们只需要检查这个限制后的函数 g ( t ) g(t) g(t) 是否是凸函数。

考虑一个二维函数 f ( x 1 , x 2 ) = x 1 2 + x 2 2 f(x_1, x_2) = x_1^2 + x_2^2 f(x1,x2)=x12+x22,这是一个典型的凸函数。

在这里插入图片描述

% MATLAB Code for Plotting a 3D Convex Function f(x1, x2) = x1^2 + x2^2

% Define the function f(x1, x2) = x1^2 + x2^2
f = @(x1, x2) x1.^2 + x2.^2;

% Create a grid of x1 and x2 values
[x1, x2] = meshgrid(linspace(-2, 2, 100), linspace(-2, 2, 100));

% Compute the function values for f(x1, x2)
z = f(x1, x2);

% Create a 3D plot of the surface
figure;
surf(x1, x2, z, 'EdgeColor', 'none');

% Add labels and title
xlabel('x1');
ylabel('x2');
zlabel('f(x1, x2)');
title('3D Plot of f(x1, x2) = x1^2 + x2^2');
grid on;

% Adjust view angle for better visualization
view(45, 30);

我们可以选择方向向量 v = [ 1 ; 1 ] v = [1; 1] v=[1;1],这表示我们沿着 45 度的直线方向进行限制。可以选择其他方向 v v v,并验证其结果是否仍然是凸函数。

在这里插入图片描述

% MATLAB Code for Testing Convexity of a Function Along a Line

% Define a convex function f(x1, x2) = x1^2 + x2^2
f = @(x1, x2) x1.^2 + x2.^2;

% Define a direction vector v = [1, 1] (along the 45-degree line)
v = [1; 1];

% Define a range of t values (the parameter along the direction)
t = linspace(-2, 2, 100);

% Define an initial point x0 = [0, 0] for the line restriction
x0 = [0; 0];

% Compute the function values along the line x = x0 + t * v
g = @(t) f(x0(1) + t*v(1), x0(2) + t*v(2));

% Compute g(t) values
g_values = g(t);

% Plot the restricted function g(t)
figure;
plot(t, g_values, 'LineWidth', 2);
xlabel('t');
ylabel('g(t)');
title('Restricted Convex Function g(t) Along the Line');
grid on;

% Check convexity by plotting the chord between two points
t1 = -1;
t2 = 1.5;
g1 = g(t1);
g2 = g(t2);

% Plot the points
hold on;
plot([t1 t2], [g1 g2], 'ro', 'MarkerSize', 8, 'MarkerFaceColor', 'r');

% Plot the chord connecting the two points
theta = linspace(0, 1, 100);
t_chord = theta * t1 + (1 - theta) * t2;
g_chord = theta * g1 + (1 - theta) * g2;
plot(t_chord, g_chord, '--g', 'LineWidth', 2);

legend('g(t)', 'Points on curve', 'Chord between points');
hold off;

3. 凸函数的扩展值定义

为了便于处理,常常将凸函数 f f f 扩展到整个 R n \mathbb{R}^n Rn,并将定义域外的值设为无穷大。这种扩展值函数 f ^ \hat{f} f^ 定义如下:
f ^ ( x ) = { f ( x ) , 如果  x ∈ dom  f ∞ , 如果  x ∉ dom  f \hat{f}(x) =\begin{cases} f(x), & \text{如果} \ x \in \text{dom} \ f \\ \infty, & \text{如果} \ x \notin \text{dom} \ f \end{cases} f^(x)={ f(x),,如果 xdom f如果 x/dom f
通过这种扩展,我们可以将凸函数 f f f定义在所有 R n \mathbb{R}^n Rn 上,而不需要每次使用函数时去明确其定义域。即,当 x ∉ dom  f x \notin \text{dom} \ f x/dom f 时,函数值自动为无穷大。这使得我们能够简化操作,例如可以在整个空间内应用不等式。

对于凸函数定义的基本不等式:
f ( θ x + ( 1 − θ ) y ) ≤ θ f ( x ) + ( 1 − θ ) f ( y ) , f(\theta x + (1 - \theta) y) \leq \theta f(x) + (1 - \theta) f(y), f(θx+(1θ)y)θf(x)+(1θ)f(y),
我们可以在扩展值函数上应用,即即使 x x x y y y 超出了定义域,该不等式也仍然成立,因为扩展值会自动为无穷大,满足不等式要求。

指示函数 I C ( x ) I_C(x) IC(x)​是凸函数的一个特殊例子,它定义为:
I C ( x ) = { 0 , 如果  x ∈ C ∞ , 如果  x ∉ C I_C(x) = \begin{cases} 0, & \text{如果} \ x \in C \\ \infty, & \text{如果} \ x \notin C \end{cases} IC(x)={ 0,,如果 xC如果 x/C
这里,集合 C C C 是指示函数的定义域。指示函数的作用是限制优化问题的范围。例如,在优化过程中,如果我们希望对某个集合 C C C 上的函数 f f f 进行最小化,我们可以通过最小化函数 f + I C f + I_C f+IC 来实现,即对整个 R n \mathbb{R}^n Rn 上进行优化,但只会在集合 C C C 内有意义。

:假设我们有一个凸函数 f ( x ) = x 2 f(x) = x^2 f(x)=x2,并且我们只希望在区间 C = [ 0 , 1 ] C = [0, 1] C=[0,1] 上最小化该函数。我们可以使用指示函数 I C ( x ) I_C(x) IC(x)​来表示该约束。

我们想要最小化以下目标函数:
min ⁡ x f ( x ) + I C ( x ) \min_{x} f(x) + I_C(x) xminf(x)+IC(x)
其中,
f ( x ) = x 2 f(x) = x^2 f(x)=x2
而指示函数 I C ( x ) I_C(x) IC(x)​ 定义为:
I C ( x ) = { 0 , 如果  x ∈ [ 0 , 1 ] ∞ , 如果  x ∉ [ 0 , 1 ] I_C(x) = \begin{cases} 0, & \text{如果} \ x \in [0, 1] \\ \infty, & \text{如果} \ x \notin [0, 1] \end{cases} IC(x)={ 0,,如果 x[0,1]如果 x/[0,1]

  • 在集合 C C C(即 x ∈ [ 0 , 1 ] x \in [0, 1] x[0,1]),目标函数等于 f ( x ) = x 2 f(x) = x^2 f(x)=x2,这是一个凸函数。
  • 在集合 C C C(即 x ∉ [ 0 , 1 ] x \notin [0, 1] x/[0,1]),由于指示函数 I C ( x ) I_C(x) IC(x) 为无穷大,这意味着在这个区域上该解是不可行的,也就是我们不需要考虑定义域之外的解。

4.凸函数的一阶条件

假设函数 f f f 是可微的,即其梯度 ∇ f \nabla f f 在其定义域 dom  f \text{dom} \ f dom f中的每一点都存在。那么函数 f f f 是凸函数,当且仅当对于所有 x , y ∈ dom  f x, y \in \text{dom} \ f x,ydom f​,都满足不等式:
f ( y ) ≥ f ( x ) + ∇ f ( x ) T ( y − x ) f(y) \geq f(x) + \nabla f(x)^T (y - x) f(y)f(x)+f(x)T(yx)
这个不等式的几何含义是:在任意点 x x x 处,以 f ( x ) f(x) f(x)和梯度 ∇ f ( x ) \nabla f(x) f(x) 构成的线性近似(即函数的泰勒展开的一阶项)是函数 f f f​的一个全局下界.

在这里插入图片描述

% MATLAB Code to Illustrate First-Order Condition of Convexity

% Define the convex function f(x) = x^2
f = @(x) x.^2;

% Define its derivative (gradient) df(x) = 2x
df = @(x) 2*x;

% Define a range of x values
x = linspace(-2, 2, 100);

% Compute f(x) values
y = f(x);

% Choose a point x0 for the tangent line
x0 = 1;
f_x0 = f(x0);
df_x0 = df(x0);

% Compute the tangent line at x0: f(x0) + df(x0)*(x - x0)
tangent_line = f_x0 + df_x0 * (x - x0);

% Plot the function
figure;
plot(x, y, 'b-', 'LineWidth', 2);
hold on;

% Plot the tangent line
plot(x, tangent_line, 'r--', 'LineWidth', 2);

% Plot the point (x0, f(x0))
plot(x0, f_x0, 'ro', 'MarkerSize', 8, 'MarkerFaceColor', 'r');

% Add labels and title
xlabel('x');
ylabel('f(x)');
title('First-Order Condition: Tangent Line as a Global Underestimator');
legend('f(x) = x^2', 'Tangent Line at x_0', 'Point (x_0, f(x_0))');
grid on;

hold off;

不等式 说明,局部信息(函数在某点的值和导数)可以推导出函数的全局信息(即全局下界)。这也是凸函数的一个重要性质。因为对于凸函数,只需要检查它在一点处的局部性质,就能判断它在整个定义域上的行为。

例如,如果对于某个 x ∈ dom  f x \in \text{dom} \ f xdom f,有 ∇ f ( x ) = 0 \nabla f(x) = 0 f(x)=0,那么 f ( y ) ≥ f ( x ) f(y) \geq f(x) f(y)f(x)对于所有 y ∈ dom  f y \in \text{dom} \ f ydom f都成立,表明 x x x 是函数 f f f 的全局最小值。

如果函数 f f f​ 是严格凸的,那么不等式严格成立:
f ( y ) > f ( x ) + ∇ f ( x ) T ( y − x ) f(y) > f(x) + \nabla f(x)^T (y - x) f(y)>f(x)+f(x)T(yx)
对于所有 x ≠ y x \neq y x=y

通过函数的一阶条件,我们可以从局部的梯度信息推导出全局的凸性。这也是凸函数最有用的性质之一,特别是在优化问题中。利用这一条件,我们可以利用局部信息(导数和函数值)来判断全局最优解的存在与否。

5. 凸函数的二阶条件

假设函数 f f f二次可微的,即在定义域 dom  f \text{dom} \ f dom f中,函数的 Hessian 矩阵(或在一维情况下,函数的二阶导数)存在。那么,函数 f f f 是凸的,当且仅当其 Hessian 矩阵是半正定的,对于所有 x ∈ dom  f x \in \text{dom} \ f xdom f​,满足:
∇ 2 f ( x ) ⪰ 0 \nabla^2 f(x) \succeq 0 2f(x)0
这里, ∇ 2 f ( x ) \nabla^2 f(x) 2f(x) 表示 f f f 的 Hessian 矩阵,它给出了函数的二阶导数信息。

对于一维函数 f : R → R f: \mathbb{R} \to \mathbb{R} f:RR,该条件简化为 f ′ ′ ( x ) ≥ 0 f''(x) \geq 0 f′′(x)0,这意味着函数的二阶导数非负,从几何角度看,函数的图像是“开口向上”的。

  • 如果函数 f f f是严格凸的,当且仅当其 Hessian 矩阵严格正定,即 ∇ 2 f ( x ) ≻ 0 \nabla^2 f(x) \succ 0 2f(x)0
  • 类似地,如果 f f f 是凹函数,则 ∇ 2 f ( x ) ⪯ 0 \nabla^2 f(x) \preceq 0 2f(x)0
  • 对于严格凹性,要求 Hessian 矩阵严格负定,即 ∇ 2 f ( x ) ≺ 0 \nabla^2 f(x) \prec 0 2f(x)0

: 一个二次函数:
f ( x ) = 1 2 x T P x + q T x + r f(x) = \frac{1}{2} x^T P x + q^T x + r f(x)=21xTPx+qTx+r

其中,矩阵 P P P 是一个对称矩阵, q ∈ R n q \in \mathbb{R}^n qRn r ∈ R r \in \mathbb{R} rR

由于二次函数的 Hessian 矩阵 ∇ 2 f ( x ) = P \nabla^2 f(x) = P 2f(x)=P,因此,当 P ⪰ 0 P \succeq 0 P0(即 P P P 是半正定矩阵)时,函数 f f f 是凸的;当 P ≻ 0 P \succ 0 P0(即 P P P 是正定矩阵)时,函数 f f f严格凸的。如果 P ⪯ 0 P \preceq 0 P0,函数 f f f 是凹的。

定义域 dom  f \text{dom} \ f dom f的凸性要求不能从二阶条件中省略。例如,函数 f ( x ) = 1 / x 2 f(x) = 1/x^2 f(x)=1/x2,其定义域是 R ∖ { 0 } \mathbb{R} \setminus \{0\} R{ 0},在该定义域内函数的二阶导数 f ′ ′ ( x ) > 0 f''(x) > 0 f′′(x)>0,但该函数并不是凸函数,因为其定义域不是凸集。

二阶条件提供了一种通过函数的二阶导数(或 Hessian 矩阵)来判断函数凸性的方法。对于凸函数来说,Hessian 矩阵需要是半正定的,而对于严格凸函数,它需要是正定的。这个条件对于分析二次可微函数的凸性非常有用,尤其是在二次函数的情形下,Hessian 矩阵的正定性直接决定了函数的凸性或凹性。

6. 如何通过Hessian矩阵判断凸性?

假设函数 f : R n → R f: \mathbb{R}^n \to \mathbb{R} f:RnR 是二次可微的,那么其 Hessian 矩阵 ∇ 2 f ( x ) \nabla^2 f(x) 2f(x) 是一个 n × n n \times n n×n 的对称矩阵,矩阵的每个元素是 f f f​的二阶偏导数:
∇ 2 f ( x ) = [ ∂ 2 f ∂ x 1 2 ∂ 2 f ∂ x 1 ∂ x 2 ⋯ ∂ 2 f ∂ x 1 ∂ x n ∂ 2 f ∂ x 2 ∂ x 1 ∂ 2 f ∂ x 2 2 ⋯ ∂ 2 f ∂ x 2 ∂ x n ⋮ ⋮ ⋱ ⋮ ∂ 2 f ∂ x n ∂ x 1 ∂ 2 f ∂ x n ∂ x 2 ⋯ ∂ 2 f ∂ x n 2 ] \nabla^2 f(x) = \begin{bmatrix} \frac{\partial^2 f}{\partial x_1^2} & \frac{\partial^2 f}{\partial x_1 \partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_1 \partial x_n} \\ \frac{\partial^2 f}{\partial x_2 \partial x_1} & \frac{\partial^2 f}{\partial x_2^2} & \cdots & \frac{\partial^2 f}{\partial x_2 \partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial^2 f}{\partial x_n \partial x_1} & \frac{\partial^2 f}{\partial x_n \partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_n^2} \end{bmatrix} 2f(x)= x122fx2x12fxnx12fx1x22fx222fxnx22f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xy_optics

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值