Fleeting Day(VOL.13)

每日总结190505

Linear Algebra

分块矩阵

使用逆矩阵对分块矩阵消元:$$\begin{bmatrix} I & 0 \\ -CA^{-1} & I \end{bmatrix} \begin{bmatrix} A & B \\ C & D \end{bmatrix} = \begin{bmatrix} A & B \\ 0 & D - CA^{-1}B \end{bmatrix}$$

其中$$ D - CA^{-1}B$$称为舒尔补(Schur complement)

可逆矩阵(Inverse)

有以下两个消元矩阵(Elimination):$$E = \begin{bmatrix} 1 & 0 & 0 \\ -5 & 1 & 0 \\ 0 & 0 & 1\end{bmatrix} , F = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & -4 & 1\end{bmatrix} $$

则:$$E^{-1} = \begin{bmatrix} 1 & 0 & 0 \\ 5 & 1 & 0 \\ 0 & 0 & 1\end{bmatrix} , F^{-1} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 4 & 1\end{bmatrix} $$

可知:$$FE = \begin{bmatrix} 1 & 0 & 0 \\ -5 & 1 & 0 \\ 20 & -4 & 1\end{bmatrix} , E^{-1}F^{-1} = \begin{bmatrix} 1 & 0 & 0 \\ 5 & 1 & 0 \\ 0 & 4 & 1\end{bmatrix} $$

$FE$的结果中,第三行受到第一行的影响,从而有了$20$;而$E^{-1}F^{-1}$则不受第一行的影响。

Fast R-CNN Paper

训练过程中,随机小批量梯度下降时进行分层次采样(hierarchical sampling),每个SGD小批量采样自$N = 2$张图片,小批量大小$R=128$,即从每张图片中采样$R/N = 64$个RoIs。其中关键是,来自同一张图片上的RoIs在前向、反向传播过程中共享计算和内存.

此外,还使用一个精细的训练过程———微调阶段联合优化Softmax分类器和bounding boxes回归器,而非分三个的阶段训练softmax分类器,SVM和回归器。Softmax分类器输出$K+1$类的离散概率分布$P = (p_0, \cdots , p_k)$,bounding boxes回归器则输出$K$类目标的bouning-box回归偏移$t^k = (t^k_x, t^k_y, t^k_w, t^k_h)$,其中$t^k$指的是相对于候选区域的尺度不变转换和对数空间高度/宽度移位(specifies a scale-invariant translation and log-space height/width shift relative to an object proposal)。由此有多任务损失函数:$$\mathcal{L}(p, u, t^u, v) = \mathcal{L}\text{cls}(p, u) + \lambda [u \ge ] \mathcal{L}\text{loc}(t^u, v) \tag{1}$$

其中:$$\mathcal{L}_\text{cls}(p, u) = -\log p_u$$

而:
$$ \mathcal{L}\text{loc}(t^u, v) = \sum{i \in \lbrace x, y, w, h \rbrace}\text{smooth}_{\mathcal{L}_1}(t^u_i - v_i) \tag{2} $$
$$ \text{smooth}_{L_1}(x)=\begin{cases}0.5x^2, &|x|< 1 \\ |x|-0.5,& \text{otherwise} \end{cases}$$

$u$是各RoI的真实类型标签,$v = (v_x, v_y, v_w, v_h)$则是bounding-box回归实值,$[u \ge 1]$表示$u \ge 1$时才计算该式;smooth函数是一种强健的$L1$损失,更不易受异常值的影响;超参数$\lambda$用来平衡两个任务产生的损失。

VGG16 Paper

结构

  • 两个$3\times3$大小的卷积层堆叠起来相当于有$5\times5$大小的有效感受野:卷积核堆叠

    而三个$3\times3$大小的卷积层堆叠起来相当于有$7\times7$大小的有效感受野。由此,就用多个小的卷积层堆叠来代替大的卷积层,这样做有几个好处:

    1. 结合了多个ReLU激活单元,增强决策函数的判别能力
    2. 减少了参数数量

神经网络中卷积层的堆叠

SVM

二分类

上图中,中间的黑色实线称为决策面,这样的线性分类器可以找到多个,但其中的最优解是中间那个具有最大间隔的决策面,它对应着两侧穿过样本点的两条虚线,这些被穿过的样本点被称为“支持向量”, 它们是SVM的支持样本点。

设线性分类器的表达式为:$$y = ax + b$$

将$x$变成$x_1$轴,$y$变成$x_2$轴,得到:$$x_2 = ax_1 + b$$ $$ax_1 + (-1)x_2 + b = 0$$

即:$$[a, -1] \begin{bmatrix}x_1 \\ x_2 \end{bmatrix} + b = 0$$
将上式更一般地表示为:$$W^Tx + b = 0$$

其中:$$W = \begin{bmatrix}a \\ -1 \end{bmatrix}$$

它与原来的直线垂直,如此$W$就控制了直线的方向,截距$b$则控制了直线的位置!

分类间隔

分类间隔大小=支持向量对应样本点到决策面的距离的两倍,而点到直线的距离公式可表示为:$$d = \frac{\vert Ax + By + C \vert}{\sqrt{A^2 + B^2}} = \frac{\vert W^Tx + b \vert}{\vert \vert W \vert \vert} $$

这样,我们的目标就是找到一组参数$W$、$b$,使分类间隔$2d$最大化。

设红点的标签$y_i$为$-1$,蓝点则为$+1$,那么当决策面对点$x_i$分类正确时,将满足下式:$$\begin{cases} W^Tx_i + b \gt 0, & y_i = 1 \\ W^Tx_i + b \lt 0, & y_i = -1 \end{cases}$$

进一步,希望决策面在两类间隔的中轴线上,且此时支持向量到决策面距离为$d$,则有:$$\begin{cases} \frac{\vert W^Tx + b \vert}{\vert \vert W \vert \vert} \ge d, & y_i = 1 \\ \frac{\vert W^Tx + b \vert}{\vert \vert W \vert \vert} \le -d, & y_i = -1 \end{cases}$$

令:$$W_d = \frac{W}{\vert \vert W \vert \vert d}, b_d = \frac{b}{\vert \vert W \vert \vert d}$$

则上式可简单表示为:$$\begin{cases} W^T_dx_i + b_d \ge 1, & y_i = 1 \\ W^T_dx_i + b_d \le -1, & y_i = -1 \end{cases}$$

$W_d$和$b_d$就可以看作是一条直线的方向矢量和截距,而直线$W^T_dx_i + b_d = 0$和$W^Tx_i + b = 0$其实就是同一条直线,所以SVM优化问题的约束条件就为:$$\begin{cases} W^Tx_i + b \ge 1, & y_i = 1 \\ W^Tx_i + b \le -1, & y_i = -1 \end{cases}$$

其中,当且仅当$x_i$为支持向量时,上面的式子将取$=$号。则对支持向量,有:$$d = \frac{\vert Ax + By + C \vert}{\sqrt{A^2 + B^2}} = \frac{\vert W^Tx + b \vert}{\vert \vert W \vert \vert} = \frac{1}{\vert \vert W \vert \vert}$$

到这里,$2d$最大化的问题就转换成了$\vert \vert W \vert \vert$最小化问题。

为方便之后的求解,将它等效为$\frac12\vert \vert W \vert \vert^2$最小化问题,同时将约束条件进一步简化为:
$$y_i(W^Tx_i + b) \ge 1,\forall x_i$$

如此,线性SVM最优问题的完整数学描述为:$$min_{W,b}\frac12 \vert \vert W \vert \vert^2$$ $$ \text{s.t.} \ \ \ y_i(W^Tx_i + b) \ge 1, i = 1, \cdots, m$$

描述

Summary

每天的精力也就那么点,效率又是一言难尽,想做的事情实在太多,割舍不下,最后造成了这样一种想得太多做得太少的死循环,眼看着每天忙个不停,结束了一天又感觉一事无成,把各种计划改了又该,各种事情心血来潮时就信誓旦旦想着要每天坚持做一点把它给完成,某一天断了兴头过了又把一切推倒重来,如此反复无常。

厌烦了如此,把计划重新梳理一遍,暂时不打紧且进行的时候一直效率过低、漫无目的的各种事情,都放下罢。放进了计划表,要么不经意间把它们剔除了,要么以后某次心血来潮就把它们实现了。

现在,每天只想读读论文然后写代码把它们一一实现,补充些数学知识,掌握机器学习里的SVM等原理,整理一些笔记分享出去,可以的话再把算法好好学习一下。每天能踏踏实实做好这些,顺便把毕设完成,足矣。

文章作者: Hugsy
文章链接: http://binweber.top/2019/05/05/daily_190505/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Sky Inside the Eyewall
支付宝打赏~
微信打赏~