企业网站建设备案需要哪些资料,中国建筑设计研究院,网站移动端是什么情况,网站规划与设计h5前言
在有些博客推导神经网络的BP时#xff0c;涉及到多次矩阵求导运算#xff0c;尤其是反向传播时候#xff0c;求的梯度结果被转置了#xff0c;比如假设最后一层的输出为 yσ(w⋅xb)y=\sigma\left(w\cdot x+b \right)\\那么 ∂y∂w∂y∂xσ′(w⋅xb)⋅xTσ′(w⋅xb)⋅…前言
在有些博客推导神经网络的BP时涉及到多次矩阵求导运算尤其是反向传播时候求的梯度结果被转置了比如假设最后一层的输出为
yσ(w⋅xb)y=\sigma\left(w\cdot x+b \right)\\那么 ∂y∂w∂y∂xσ′(w⋅xb)⋅xTσ′(w⋅xb)⋅wT\begin{aligned}
\frac{\partial y}{\partial w}这个就涉及到矩阵求导了转没转置这个对推导细节也是蛮重要的接下来就看看我个人认为比较重要的矩阵求导式子不定期更新。最后再证明这两个式子的正确性。其实先说一下结论如果你强抠矩阵求导法则来证明这两个式子它们是完全错误的。【PS】我现在怀疑这个与CNN中的卷积核翻转有关系但是一个是转置一个是翻转貌似运算结果也不一样下一篇博客更新为什么CNN正传和反传的时候卷积核必须有一个翻转另一个没翻转。
部分关键结论列举
行向量对列向量求导
设YY是nn维行向量XX是pp维列向量则
∂Y∂X⎡⎣⎢⎢⎢⎢⎢⎢⎢∂y1∂x1⋮∂y1∂xp⋯⋱⋯∂yn∂x1⋮∂yn∂xp⎤⎦⎥⎥⎥⎥⎥⎥⎥\frac{\partial Y}{\partial X}=\begin{bmatrix}
\frac{\partial y_1}{\partial x_1}X是qq维行向量,则
∂Y∂X=⎡⎣⎢⎢⎢⎢⎢⎢⎢∂y1∂x1⋮∂ym∂x1⋯⋱⋯∂y1∂xq⋮∂ym∂xq⎤⎦⎥⎥⎥⎥⎥⎥⎥
\frac{\partial Y}{\partial X}=\begin{bmatrix}
\frac{\partial y_1}{\partial x_1} XX是qq维的行向量则
∂Y∂X[∂Y∂x1⋯∂Y∂xq]\frac{\partial Y}{\partial X}=\begin{bmatrix}
\frac{\partial Y}{\partial x_1} XX是qq维的列向量则
∂Y∂X⎡⎣⎢⎢⎢⎢⎢⎢∂y1∂X⋮∂ym∂X⎤⎦⎥⎥⎥⎥⎥⎥\frac{\partial Y}{\partial X}=\begin{bmatrix}
\frac{\partial y_1}{\partial X}\\
\vdots\\
\frac{\partial y_m}{\partial X}
\end{bmatrix}元素对矩阵的求导
设yy是一个元素,X的一个p×qp\times q的矩阵那么
∂y∂X⎡⎣⎢⎢⎢⎢⎢⎢⎢∂y∂x11⋮∂y∂xp1⋯⋱⋯∂y∂x1q⋮∂y∂xpq⎤⎦⎥⎥⎥⎥⎥⎥⎥\frac{\partial y}{\partial X}=
\begin{bmatrix}
\frac{\partial y}{\partial x_{11}} XX是qq维行向量那么
∂Y∂X[∂Y∂xi∂Y∂x2⋯∂Y∂xq]\frac{\partial Y}{\partial X}=
\begin{bmatrix}
\frac{\partial Y}{\partial x_i} 涉及矩阵对元素的求导矩阵对列向量求导
设YY是m×nm\times n的矩阵XX是qq维列向量那么
∂Y∂X⎡⎣⎢⎢⎢⎢⎢⎢∂y11∂X⋮∂ym1∂X⋯⋱⋯∂y1n∂X⋮∂ymn∂X⎤⎦⎥⎥⎥⎥⎥⎥\frac{\partial Y}{\partial X}=
\begin{bmatrix}
\frac{\partial y_{11}}{\partial X} XX是p×qp\times q的矩阵那么
∂Y∂X⎡⎣⎢⎢⎢⎢⎢⎢⎢∂Y∂x11⋮∂Y∂xp1⋯⋱⋯∂Y∂x1q⋮∂Y∂xpq⎤⎦⎥⎥⎥⎥⎥⎥⎥\frac{\partial Y}{\partial X}=
\begin{bmatrix}
\frac{\partial Y}{\partial x_{11}} XX是p×qp\times q的矩阵那么
∂Y∂X⎡⎣⎢⎢⎢⎢⎢⎢∂y1∂X⋮∂ym∂X⎤⎦⎥⎥⎥⎥⎥⎥\frac{\partial Y}{\partial X}=
\begin{bmatrix}
\frac{\partial y_1}{\partial X}\\
\vdots\\
\frac{\partial y_m}{\partial X}
\end{bmatrix}矩阵对矩阵求导
设YY是m×nm\times n的矩阵XX是p×qp\times q的矩阵那么
∂Y∂X[∂Y∂x⋅1⋯∂Y∂x⋅q]⎡⎣⎢⎢⎢⎢⎢⎢∂y1⋅∂X⋮∂ym⋅∂X⎤⎦⎥⎥⎥⎥⎥⎥⎡⎣⎢⎢⎢⎢⎢⎢⎢∂y1⋅∂x⋅1⋮∂ym⋅∂x⋅1⋯⋱⋯∂y1⋅∂x⋅q⋮∂ym⋅∂x⋅q⎤⎦⎥⎥⎥⎥⎥⎥⎥\begin{aligned}
\frac{\partial Y}{\partial X}[adbecf]Y=\begin{bmatrix}a X⎡⎣⎢uvwxyz⎤⎦⎥X=\begin{bmatrix}u根据求导法则得到
∂Y∂X⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂[abc]∂⎡⎣⎢uvw⎤⎦⎥∂[def]∂⎡⎣⎢uvw⎤⎦⎥∂[abc]∂⎡⎣⎢xyz⎤⎦⎥∂[def]∂⎡⎣⎢xyz⎤⎦⎥⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂a∂u∂a∂v∂a∂w∂d∂u∂d∂v∂d∂w∂b∂u∂b∂v∂b∂w∂e∂u∂e∂v∂e∂w∂c∂u∂c∂v∂c∂w∂f∂u∂f∂v∂f∂w∂a∂x∂a∂y∂a∂z∂d∂x∂d∂y∂d∂z∂b∂x∂b∂y∂b∂z∂e∂x∂e∂y∂e∂z∂c∂x∂c∂y∂c∂z∂f∂x∂f∂y∂f∂z⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥\begin{aligned}
\frac{\partial Y}{\partial X}⎡⎣⎢x1x2x3⎤⎦⎥X=\begin{bmatrix}x_1 \\x_2 \\x_3 \end{bmatrix}的nn维列向量,W=[w11x21w12x22w13x23]W=\begin{bmatrix} w_{11}假设F(W⋅X)TF=(W\cdot X)^T求∂F∂X\frac{\partial F}{\partial X}
F∂F∂X(W⋅X)T[w11⋅x1w12⋅x2w13⋅x3w21⋅x1w22⋅x2w23⋅x3][f1f2][∂f1∂X∂f2∂X]⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢∂f1∂x1∂f1∂x2∂f1∂x3∂f2∂x1∂f2∂x2∂f2∂x3⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎡⎣⎢w11w12w13w21w22w23⎤⎦⎥WT\begin{aligned}
F关于结果是转置的原因我们开证先设置几个条件
ww是权重矩阵,xx是列向量表示输入样本。
W[w11w21w12w22w13w23]X⎡⎣⎢x1x2x3⎤⎦⎥W=\begin{bmatrix}
w_{11} ∂(W⋅X)∂XWT;∂(W⋅X)∂WXT;\frac{\partial (W\cdot X)}{\partial X}=W^T;\quad\frac{\partial (W\cdot X)}{\partial W}=X^T;第一个证明
设
CW⋅X[w11x1w12x2w13x3w21x1w22x2w23x3][c1c2]C=W\cdot X=\begin{bmatrix}
w_{11} x_1+w_{12}x_2+w_{13}x_3\\
w_{21} x_1+w_{22}x_2+w_{23}x_3\\
\end{bmatrix}=\begin{bmatrix}
c_1\\ c_2
\end{bmatrix}利用列向量对列向量的求导法则可以得到 ∂C∂X⎡⎣⎢⎢∂c1∂X∂c2∂X⎤⎦⎥⎥⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂c1∂x1∂c1∂x2∂c1∂x3∂c2∂x1∂c2∂x2∂c2∂x3⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢w11w12w13w21w22w23⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥\begin{aligned}
\frac{\partial C}{\partial X}=\begin{bmatrix}
\frac{\partial c_1}{\partial X}\\
\frac{\partial c_2}{\partial X}
\end{bmatrix}
=\begin{bmatrix}
\frac{\partial c_1}{\partial x_1}\\
\frac{\partial c_1}{\partial x_2} \\
\frac{\partial c_1}{\partial x_3}\\
\frac{\partial c_2}{\partial x_1} \\
\frac{\partial c_2}{\partial x_2}\\
\frac{\partial c_2}{\partial x_3}
\end{bmatrix}
=\begin{bmatrix}
w_{11} \\ w_{12}\\
w_{13} \\ w_{21}\\
w_{22} \\ w_{23}
\end{bmatrix}
\end{aligned}所以说第一个式子如果直接按照矩阵求导法则证明是完全错误的。除非是
∂((W⋅X)T)∂XWT\frac{\partial ((W\cdot X)^T)}{\partial X}=W^T第二个证明
不用证明了如果W⋅XW\cdot X结果是向量的话∂(W⋅X)∂WXT\frac{\partial (W\cdot X)}{\partial W}=X^T 这个结论必定是错的不论是依据行向量对矩阵求导还是列向量对矩阵求导其结果矩阵不可能是XX的维度大小,肯定大很多,不信你按照上面的矩阵运算法则自己推导。然后我解释一下为什么y=σ(w⋅x+b)y=\sigma\left(w\cdot x+b \right)\\能推到∂y∂wσ′(w⋅xb)⋅xT\frac{\partial y}{\partial w}={\sigma}'\left(w\cdot x+b\right)\cdot x^T 以下纯属个人见解
其实这一部分推导时候不能用矩阵求导方法而是直接拆分。
注意权重大小是 j×ij\times i 而非i×ji\times j 表示的是输出到输入的连接权重而非输入到输出的连接权重这个从W×xbW \times x+b而非x×Wbx\times W+b很容易理解到
随后证明流程如下
yj∂yj∂wjiσ(∑iwji⋅xibj)σ′(∑iwji⋅xibj)⋅xiσ′j⋅xi\begin{aligned}
y_j所以最好的方法是拆分开按下标证明即证∂E∂Wji\frac{\partial E}{\partial W_{ji}}而非直接证明∂E∂W\frac{\partial E}{\partial W}