$l_1$ 正则化问题的近端映射--软阈值函数(soft-thresholding function)

1.问题

给定一个闭凸函数 g ( u ) = ∥ u ∥ 1 g(\mathbf{u}) = \|\mathbf{u}\|_1 g(u)=u1(即 l 1 l_1 l1 范数),近端映射的定义为:

prox t ( ∥ ⋅ ∥ 1 ) ( x ) = arg ⁡ min ⁡ u { ∥ u ∥ 1 + 1 2 t ∥ u − x ∥ 2 } . \text{prox}_t(\|\cdot\|_1)(\mathbf{x}) = \arg\min_{\mathbf{u}} \left\{ \|\mathbf{u}\|_1 + \frac{1}{2t} \|\mathbf{u} - \mathbf{x}\|^2 \right\}. proxt(1)(x)=argumin{u1+2t1ux2}.

我们的目标是找到一个点 u \mathbf{u} u,使得上述表达式达到最小值。

为了简化分析,我们可以将优化问题分量化,即对每个分量 x i x_i xi 单独考虑。优化问题可以被分解为:

min ⁡ u i { ∣ u i ∣ + 1 2 t ( u i − x i ) 2 } . \min_{u_i} \left\{ |u_i| + \frac{1}{2t} (u_i - x_i)^2 \right\}. uimin{ui+2t1(uixi)2}.

2.求解

我们将对不同的情况进行讨论,根据 u i u_i ui 的符号,我们可以将绝对值函数 ∣ u i ∣ |u_i| ui 分解为不同的形式:

  1. u i > 0 u_i > 0 ui>0 时, ∣ u i ∣ = u i |u_i| = u_i ui=ui,优化问题变为:

    min ⁡ u i > 0 { u i + 1 2 t ( u i − x i ) 2 } . \min_{u_i > 0} \left\{ u_i + \frac{1}{2t} (u_i - x_i)^2 \right\}. ui>0min{ui+2t1(uixi)2}.

  2. u i < 0 u_i < 0 ui<0 时, ∣ u i ∣ = − u i |u_i| = -u_i ui=ui,优化问题变为:

    min ⁡ u i < 0 { − u i + 1 2 t ( u i − x i ) 2 } . \min_{u_i < 0} \left\{ -u_i + \frac{1}{2t} (u_i - x_i)^2 \right\}. ui<0min{ui+2t1(uixi)2}.

  3. u i = 0 u_i = 0 ui=0时,表达式的值为 1 2 t x i 2 \frac{1}{2t} x_i^2 2t1xi2

我们可以通过对这些情况下的函数求导来找到最优值。

u i > 0 u_i > 0 ui>0时:

d d u i ( u i + 1 2 t ( u i − x i ) 2 ) = 1 + 1 t ( u i − x i ) . \frac{d}{du_i} \left( u_i + \frac{1}{2t} (u_i - x_i)^2 \right) = 1 + \frac{1}{t} (u_i - x_i). duid(ui+2t1(uixi)2)=1+t1(uixi).

令导数等于 0,得到:

1 + 1 t ( u i − x i ) = 0    ⟹    u i = x i − t . 1 + \frac{1}{t} (u_i - x_i) = 0 \implies u_i = x_i - t. 1+t1(uixi)=0ui=xit.

u i < 0 u_i < 0 ui<0 时:

d d u i ( − u i + 1 2 t ( u i − x i ) 2 ) = − 1 + 1 t ( u i − x i ) . \frac{d}{du_i} \left( -u_i + \frac{1}{2t} (u_i - x_i)^2 \right) = -1 + \frac{1}{t} (u_i - x_i). duid(ui+2t1(uixi)2)=1+t1(uixi).

令导数等于 0,得到:

− 1 + 1 t ( u i − x i ) = 0    ⟹    u i = x i + t . -1 + \frac{1}{t} (u_i - x_i) = 0 \implies u_i = x_i + t. 1+t1(uixi)=0ui=xi+t.

根据上面的求导结果,我们需要结合以下条件来得到最优解:

  • x i > t x_i > t xi>t 时,最优解为 u i = x i − t u_i = x_i - t ui=xit
  • x i < − t x_i < -t xi<t时,最优解为 u i = x i + t u_i = x_i + t ui=xi+t
  • ∣ x i ∣ ≤ t |x_i| \leq t xit 时,最优解为 u i = 0 u_i = 0 ui=0

这三种情况可以统一写成软阈值函数的形式:

prox t ( ∥ ⋅ ∥ 1 ) ( x i ) = sign ( x i ) ⋅ max ⁡ ( ∣ x i ∣ − t , 0 ) . \text{prox}_t(\|\cdot\|_1)(x_i) = \text{sign}(x_i) \cdot \max(|x_i| - t, 0). proxt(1)(xi)=sign(xi)max(xit,0).

3.直观理解

软阈值函数的作用是对每个分量进行“收缩”:

  • 如果 x i x_i xi 的绝对值大于阈值 t t t,那么它被缩小 t t t 的量;
  • 如果 x i x_i xi 的绝对值小于或等于 t t t,那么它被直接置为 0。

4.例子

假设 x = ( 3 , − 1 , 0.5 ) \mathbf{x} = (3, -1, 0.5) x=(3,1,0.5) t = 1 t = 1 t=1,那么通过近端映射计算得到:

  • 对于 x 1 = 3 x_1 = 3 x1=3 prox 1 ( ∥ ⋅ ∥ 1 ) ( 3 ) = sign ( 3 ) ⋅ ( 3 − 1 ) = 2 \text{prox}_1(\|\cdot\|_1)(3) = \text{sign}(3) \cdot (3 - 1) = 2 prox1(1)(3)=sign(3)(31)=2
  • 对于 x 2 = − 1 x_2 = -1 x2=1 prox 1 ( ∥ ⋅ ∥ 1 ) ( − 1 ) = sign ( − 1 ) ⋅ ( 1 − 1 ) = 0 \text{prox}_1(\|\cdot\|_1)(-1) = \text{sign}(-1) \cdot (1 - 1) = 0 prox1(1)(1)=sign(1)(11)=0
  • 对于 x 3 = 0.5 x_3 = 0.5 x3=0.5 prox 1 ( ∥ ⋅ ∥ 1 ) ( 0.5 ) = sign ( 0.5 ) ⋅ max ⁡ ( 0.5 − 1 , 0 ) = 0 \text{prox}_1(\|\cdot\|_1)(0.5) = \text{sign}(0.5) \cdot \max(0.5 - 1, 0) = 0 prox1(1)(0.5)=sign(0.5)max(0.51,0)=0

因此,近端映射的结果是 prox 1 ( ∥ ⋅ ∥ 1 ) ( x ) = ( 2 , 0 , 0 ) \text{prox}_1(\|\cdot\|_1)(\mathbf{x}) = (2, 0, 0) prox1(1)(x)=(2,0,0)

在这个例子中,我们可以看到,对于给定的输入 x = ( 3 , − 1 , 0.5 ) \mathbf{x} = (3, -1, 0.5) x=(3,1,0.5),近端映射给出了唯一的输出 ( 2 , 0 , 0 ) (2, 0, 0) (2,0,0)。无论我们如何重复计算,给定相同的 x \mathbf{x} x 和参数 t t t,结果总是相同的。这就是所谓的单值映射,即每一个输入只对应一个唯一的输出。

5.总结

近端映射是从空间 E E E 到自身的单值映射,这意味着它对每个输入点 x \mathbf{x} x 总是返回唯一的、确定的输出点 u \mathbf{u} u。这种特性在优化问题中非常有用,因为它确保了算法在每一步都有明确的更新方向,不会产生多义性。

### QPSK 调制方式的理论误差率推导 QPSK(Quadrature Phase Shift Keying)是一种常见的数字调制技术,在无线通信领域广泛应用。其理论误码率(BER, Bit Error Rate)可以通过概率分析方法得出。 #### 1. 基本假设 在理想条件下,AWGN(Additive White Gaussian Noise)信道中的信号传输可以被建模为加性高斯白噪声干扰下的正交相移键控信号。对于 QPSK,每个符号携带两个比特的信息,因此误码率计算涉及符号错误的概率以及单个比特发生错误的可能性[^1]。 #### 2. 符号错误概率 在一个 AWGN 信道中,接收端接收到的信号 \( r \) 可表示为: \[ r = s + n, \] 其中 \( s \) 是发送的信号矢量,\( n \) 表示零均值复高斯噪声。为了简化分析,通常将 QPSK 的星座图映射到二维笛卡尔坐标系上,四个可能的状态分别为: \[ s_0 = (A, A), \quad s_1 = (-A, A), \quad s_2 = (-A, -A), \quad s_3 = (A, -A), \] 这里 \( A = \sqrt{E_s/2} \),而 \( E_s \) 是每符号的能量。 当存在噪声时,接收机可能会把一个符号误解成另一个符号。由于 QPSK 中相邻符号之间的欧几里得距离最小,最可能出现的是邻近符号间的混淆。这种情况下,符号错误概率可由以下公式给出: \[ P_{sym} = P(\text{决策边界跨越}) = erfc\left( \frac{\sqrt{E_s}}{\sigma_n \sqrt{2}} \right). \] 这里的 \( \sigma_n^2 \) 是噪声功率谱密度的一半,即 \( N_0 / 2 \)。 #### 3. 单位能量下误码率关系 考虑到 QPSK 每个符号代表两位数据,理论上如果某个符号发生了错误,则至少有一个比特会出错。然而,并不是每次符号错误都会导致所有的比特都出错。具体来说,平均而言只有半个比特会发生错误。因此,基于上述符号错误概率,我们可以得到总的比特误码率为: \[ P_b = \frac{1}{2} P_{sym}. \] 进一步代入符号错误概率表达式并整理后,最终获得 QPSK 的理论误码率公式如下: \[ P_b = \frac{1}{2} erfc\left( \sqrt{\frac{E_b}{N_0}} \right), \] 此处 \( E_b/N_0 \) 称作单位比特能量与噪声功率谱密度之比。 #### 4. 实际应用中的实现 实际工程实践中,通过数值模拟验证该理论模型是非常重要的一步。例如 Python 编程环境下利用 NumPy 库完成 BER 计算的一种典型做法如下所示: ```python import numpy as np def qpsk_ber(ebno_db): ebno_linear = 10**(ebno_db / 10) ber = 0.5 * np.erfc(np.sqrt(ebno_linear)) return ber # 测试函数 print(qpsk_ber(7)) # 输出对应 Eb/N0=7dB 下的理论误码率 ``` 此代码片段定义了一个接受输入参数 `Eb/N0` (以分贝形式给定),返回相应条件下的预测误码率值[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xy_optics

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

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

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

打赏作者

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

抵扣说明:

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

余额充值