整理斯坦福cs231n:CNN for CV的Assignment过程中遇到的一些问题。
Assignment1
Q4: 2 layer NN
在第二个todo的时候,需要反向传播的时候计算dw、dx、db,这里给出一些推导。
设X:(N, d_1, d_2,…,d_k), W (D, M),B(M, )
则有
$$
out = X.reshape((N,-1)) \times W + B
$$
本质上想求最终的损失函数L对x、w和b的导数(以更新每一个位置的参数),记作dx、dw、db,设该层神经元的输出为out,反向传播过程中,已经求出dout(即L对out的导数,实际上就是下一层的dx),现在求dx、dw、db
$$
dx = \derivative{l}{out}\cdot \derivative{out}{x}\
dw = \derivative{l}{out}\cdot \derivative{out}{w}\
db = \derivative{l}{out} \cdot \derivative{out}{b}\
$$
而第一项实际上就是我们的输入dout,问题是后面的怎么算。
这里看似是矩阵求导,但是其实用不到,因为我们要求的其实是每一位要更新多少,这只需要确定每个位置的值参与了哪些位置的计算,然后根据链式求导法则算出来即可,以W为例
$$
out = X_{reshaped} \times W +B\
out_{5\times 3}=
\left[
\begin{matrix}
X_{11} & X_{12} & X_{13} & X_{14} \
X_{21} & X_{22} & X_{23} & X_{24} \
X_{31} & X_{32} & X_{33} & X_{34} \
X_{41} & X_{42} & X_{43} & X_{44} \
X_{51} & X_{52} & X_{53} & X_{54} \
\end{matrix}
\right]
\left[
\begin{matrix}
W_{11} & W_{12} & W_{13} \
W_{21} & W_{22} & W_{23} \
W_{31} & W_{32} & W_{33} \
W_{41} & W_{42} & W_{43} \
\end{matrix}
\right]
+
\left[
\begin{matrix}
B_{1} & B_{2} & B_{3} \
\end{matrix}
\right]
$$
可以看出来,$W_{11}$参与了所有out中第一列的乘法计算,所以有加法
$$
dW_{11} = \frac{\part L}{\part out}\cdot \frac{\part out}{\part W_{11}} = \sum_{i=1}^5\frac{\part L}{\part out_{i1}}\cdot \frac{\part out_{i1}}{\part W_{11}}
\而\frac{\part L}{\part out_{i1}} = dout_{i1}\
\frac{\part out_{i1}}{\part W_{11}}=X_{i1}
$$
所以$dW_{11}$就是X的第一列 和 dout 的第一列的内积,X (N, D) ,dout(N,M),结合这里dW是(D, M),不难猜到结论$dW = X.T \times dout$
同理dB,每一个Bi都参与了i列中的1倍加和,所以$dB_1 = \sum_{i=1}^5 \frac{\part L}{\part out_{i1}}\cdot 1$
所以dB就是 dout按行加和一下。
Q5: Feature
整个训练过程没什么好说的,就是注意一下reg别太大,learning_rate别太小,不然loss降不下去、效果极差。
这里补充一下HOG(Histogram of Oriented Gradients)和color histogram
HOG:方向梯度直方图
保存图片中对象边缘、轮廓和其他形状信息,在对象检测和识别任务中非常有用。
在一个单元格内(8*8 or 16*16像素),统计出直方图(各个点的梯度方向和大小),再相邻格组成块(比如2*2),然后块内归一化。
最后将所有归一化直方图连起来形成HOG的特征向量。
颜色直方图
只考虑某色彩占全图的比例,而不关心色彩在图片中的位置。
如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !