深度学习中的平滑近似
平滑近似函数的理解 #
在读了校友 王峰的一些文章后,发现从优化角度来理解一些常见的Loss,会比较有意思,在此列一下几个有意思的关联。
原函数 | 平滑近似 | 备注 |
---|---|---|
$\max(x)$ | $\frac{1}{\gamma}\log\sum_i \exp(\gamma x_i)$ | $LSE(x;\gamma)$ |
$\min(x)$ | $-\frac{1}{\gamma}\log\sum_i \exp(-\gamma x_i)$ | $NLSE(x;\gamma)$ |
$[x]_+ = \max(x,0)$ | $\log(1+exp({x}))$ | $Softplus(x) = \frac{1}{\beta}\log(1+exp({\beta x}))$, $\beta$为1的特例 |
$\arg\max(x)$ | $\sum_{i=1}^{n}i\times softmax(x)_i$ | $x$为向量 |
平滑近似函数与MFBPR的关联 #
一个比较有意思的东西:MF-BPR的公式是$-\ln\sigma(y_{ui} - y_{uj})$。其中, $$\sigma(x) = \frac{1}{1+e^{-x}}.$$ 展开后可得:
\begin{equation} \begin{aligned} -\ln\sigma(x) &= -\ln\frac{1}{1+e^{-x}} \\ &= \ln(1+e^{-x}). \\ \end{aligned} \end{equation}
与原始softplus相反,这个取的是$\max(-x,0)$。所以BPR本质上也是用了relu的变体作为了目标函数。当正样本大于负样本时,不作改变,当正样本小于负样本时,给予较大的梯度。
{{ :tech:bprloss.png?400 |}}
平滑近似函数与softmax的关联 #
softmax的目标是要让向量的目标位置$j$的预测结果最大化,$\forall i\neq j, z_i < z_j$。或者说, $$\max_{i=1,i\neq j}^{C}{z_i} < z_j.$$ 相关的Loss设置为:
\begin{equation} \begin{aligned} \mathcal{L} &= \max(\max_{i=1,i\neq j}^{C}\{z_i\} - z_j, 0) \\ &= \max((\log\sum_{i=1,i\neq j}^{C}e^{z_i}) - z_j, 0) \\ &= \log(1+exp((\log\sum_{i=1,i\neq j}^{C}e^{z_i}) - z_j)) \\ &= \log(1+\frac{\sum_{i=1,i\neq j}^{C}e^{z_i}}{e^{z_j}}) \\ &= \log(\frac{\sum_{i=1}^{C}e^{z_i}}{e^{z_j}}) \\ &= -\log(\frac{e^{z_j}}{\sum_{i=1}^{C}e^{z_i}}). \end{aligned} \end{equation}