CS231n课后作业小结

参考资料:

https://www.jianshu.com/p/004c99623104

Assignment 1:

主要是实现softmax、hinge等损失函数以及两层神经网络。

最大的收获是捋清楚了softmax函数的导数。下面是过程。

首先,几个公式说明,第k个类别的预测概率为:

p_k=e^{f_k}/\sum _j{e^{f_j}}

其中,f_k=(X\cdot W)_kX\in[N,D]W\in[D,C]N为样本数,DX的维度,C为样本的类别数。

i个样本对应的损失函数为:

L_i=-\log p_{y_i}

其中,y_i为第i个样本对应的类别。

计算softmax函数导数的过程如下。

\frac{\partial L_{i}}{\partial f_{j}}=\frac{\partial L_{i}}{\partial p_{y_i}} \cdot \frac{\partial p_{y_i}}{\partial f_{j}} = - \frac{1}{p_{y_i}} \cdot \frac{\partial p_{y_i}}{\partial f_{j}}

\frac{\partial p_{y_i}}{\partial f_{j}}=\left\{\begin{matrix} p_{y_i}-{p_{y_i}}^{2},&j=y_i\\ -p_{y_i}{p_{f_j}},& j\neq y_i \end{matrix}\right.

不同的f_{j}值对应不同导数,则

\frac{\partial L_{i}}{\partial f_{j}}=\frac{\partial L_{i}}{\partial p_{y_i}} \cdot \frac{\partial p_{y_i}}{\partial f_{j}} = - \frac{1}{p_{y_i}} \cdot \frac{\partial p_{y_i}}{\partial f_{j}}

\frac{\partial L_{i}}{\partial f_{j}}=\left\{\begin{matrix} p_{y_i}-1,&j=y_i\\ p_{f_j},& j\neq y_i \end{matrix}\right.=p_{f_j}-p_{i,j}

其中,p_{i,j}为第i个样本的类别为j​​​​​​​的概率,

p_{i,j}=\left\{\begin{matrix} 1,&j=y_i\\ 0,& j\neq y_i \end{matrix}\right.

\frac{\partial L_{i}}{\partial W_{j}}=\frac{\partial L_{i}}{\partial f_{j}} \cdot \frac{\partial f_{j}}{\partial W_{j}} = X{_i^T}\left ( p_{f_{j}}-p_{i,j} \right )

其中,W_{j}为矩阵W的第j列列向量,f_{j}此处特指第i个样本的预测向量中的第j个值,即第第i个样本为第j​​​​​​​个类别的分数,X_{i}X中第i个样本的特征向量。

最后,总损失函数的导数为

\frac{\partial L}{\partial W_{j}}=\frac{1}{N}\sum_{i}\frac{\partial L_i}{\partial W_j}=\frac{1}{N}\sum_{i}X{_i^T}\left ( p_{f_{j}}-p_{i,j} \right )

Assignment 2:

关于卷积神经网络的一些解释和注意事项(摘抄)

-卷积神经网络为何起作用?

-自然图像有其固有特性,即图像上一部分的统计特征与其他部分一样。这意味着在某一部分学习的特征也可以用在其他部分。所以,对该图像上的所有位置都能够使用相同的卷积核学习特征。

注意:

-使用CNN时,倾向选择多层小尺寸的卷积核而非大尺寸的卷积核;

-实际工程中,需要预估内存后根据内存设定合理的卷积核大小。因为,GPU的内存很小,而CNN反向传播需要保存很多中间梯度,可能内存不够。

Assignment 3:

RNN的前向传播和反向传播。

通常RNN每个节点包含一个隐藏状态(h^{(t)})一个输出向量(o^{(t)}),此处假设每个节点都会预测,预测值表示为\hat{y}^{(t)},前向传播过程为:

h^{(t)}=\sigma \left ( z^{(t)} \right )=\sigma\left ( Ux^{(t)}+Wh^{(t-1)}+b \right )

其中,\sigma\tanh函数,x^{(t)}为该单元的输入向量。

o^{(t)}=Vh^{(t)}+c

\hat{y}^{(t)}=\sigma \left ( o^{(t)} \right )

RNN的反向传播:

损失函数:L=\sum_{t=1}^{T}L^{(t)}

\frac{\partial L}{\partial V}=\sum_{t=1}^T\frac{\partial L^{(t)}}{\partial V}=\sum_{t=1}^T\frac{\partial L^{(t)}}{\partial \hat{y}^{(t)}} \frac{\partial \hat{y}^{(t)}}{\partial V}

\frac{\partial L}{\partial c}=\sum_{t=1}^T\frac{\partial L^{(t)}}{\partial c}=\sum_{t=1}^T\frac{\partial L^{(t)}}{\partial \hat{y}^{(t)}} \frac{\partial \hat{y}^{(t)}}{\partial c}

\delta ^{(t)}=\frac{\partial L}{\partial h^{(t)}}=\frac{\partial L}{\partial o^{(t)}} \frac{\partial o^{(t)}}{\partial {h}^{(t)}} + \frac{\partial L}{\partial {h}^{(t+1)}} \frac{\partial {h}^{(t+1)}}{\partial {h}^{(t)}}=\frac{\partial L}{\partial o^{(t)}} \frac{\partial o^{(t)}}{\partial {h}^{(t)}}+\delta ^{(t+1)}\frac{\partial {h}^{(t+1)}}{\partial {h}^{(t)}}

其中,

\frac{\partial {h}^{(t+1)}}{\partial {h}^{(t)}}=W^T {diag}(1-(h^{(t+1)})^2)

注意,\frac{\partial {\tanh (x)}}{\partial x}=(1-(\tanh (x))^2)

则,T时刻的导数为\delta ^{(T)}=\frac{\partial L}{\partial o^{(t)}} \frac{\partial o^{(t)}}{\partial {h}^{(t)}},无{h}^{(T+1)}

其余的导数求导公式为:

\frac{\partial L}{\partial W}=\sum_{t=1}^T \delta ^{(t)} \frac{\partial h^{(t)}}{\partial W}

\frac{\partial L}{\partial U}=\sum_{t=1}^T \delta ^{(t)} \frac{\partial h^{(t)}}{\partial U}

\frac{\partial L}{\partial b}=\sum_{t=1}^T \delta ^{(t)} \frac{\partial h^{(t)}}{\partial b}

         

 

 

你可能感兴趣的:(不起波澜,深度学习,深度学习)