Erlo

微积分笔记05:矩阵求导在深度学习中的应用

2025-03-14 22:30:17 发布   46 浏览  
页面报错/反馈
收藏 点赞

微积分笔记05:矩阵求导在深度学习中的应用

5.1 算法简述

设存在一张像素大小为(sqrt n times sqrt n)的样本图片,即该图片总像素个数(=n)

现需采用神经网络对其进行识别,过程如下:

(1)生成向量(X_{1times n})

设存在向量(X_{1times n}),则可将图片的(n)个像素存入向量(X),记为:

[tag{1} X_{1times n}= begin {bmatrix} x_1&x_2&x_3&...&x_n end {bmatrix} ]

(2)生成隐层:

生成隐层需将矩阵X变换为512列的矩阵Y,设存在矩阵(W_{ntimes512}),则有:

[tag{2} Y_{1times 512}=X_{1 times n}cdot W_{n times 512} = begin {bmatrix} y_1&y_2&y_3&...&y_{512} end {bmatrix} ]

设存在函数:

[relu(x)= begin{cases} x&xgeq 0\ 0&x

采用(relu())函数对矩阵(Y)进行处理,得到矩阵(Z)

[tag{3} Z_{1times 512}=relu(Y) ]

(3)创建分类

设样本图片共有(r)种可匹配的图片类型,且存在矩阵(O_{1times r})(W'_{512 times r}),则有:

[tag{4} O_{1times r}=Z_{1times 512} cdot W'_{512 times r} = begin{bmatrix} o_1&o_2&o_3&...&o_r end{bmatrix} ]

(4)生成概率分布

为统计样本图片与每一种图片类型匹配的概率,可使用(softmax())函数对矩阵(O_{1times r})进行处理,得到对应的概率分布矩阵(S_{1times r})

[tag{5} O_{1times r}= begin{bmatrix} o_1&o_2&o_3&...&o_r end{bmatrix} stackrel{softmax()} Longrightarrow S_{1times r}= begin{bmatrix} s_1&s_2&s_3&...&s_r end{bmatrix} ]

对于矩阵(S_{1times r})中的任一元素(s_i),有:

[tag{6} 0

[(i=1,2,3,...,r) ]

且由概率分布性质可知:

[tag{7} Sigma_{i=1}^r s_i=100% ]

5.2 矩阵(W、W')的求解

对于5.1中的算法过程,设采用(m)张不同的样本图片进行训练后得到某一概率值(s_k),且(s_k)为矩阵S中的最大概率值,则矩阵O中的图片类型(o_k)即为样本图片的最佳匹配类型。

若要对任意图片进行识别,则需通过训练得到的(s_k)(o_k)进一步对矩阵(W、W')进行求解。

对于5.1 式(2)、式(4)中的矩阵(W_{ntimes 512}、W'_{512times r}),设存在以下函数(J)

[tag{8} J(W,W') ]

则由梯度相关概念可知,可求解函数(J)对矩阵(W、W')的偏导数得到相应梯度,再由梯度进一步对(W、W')进行求解。

而训练得到的(s_k)(o_k)所属的矩阵(向量)S、矩阵(向量)O均由(W、W')变换得到,故需先在S、O中求偏导数。

5.2.1 概率求解阶段1:求偏导数(frac{alpha J}{alpha O})

(softmax())算法及概率的基本概念可得:

[tag{9} s_k=frac{e^{o_k}}{Sigma_{i=1}^r e^{o_i}} ]

设:

[tag{10} J=-ln(s_k) ]

[qquadquad =-ln(frac{e^{o_k}}{Sigma_{i=1}^r e^{o_i}}) ]

[qquadqquadqquad =ln(Sigma_{i=1}^r e^{o_i})-ln(e^{o_k}) ]

则有:

[frac{alpha J}{alpha O} ]

[qquad =frac{alpha [ln(Sigma_{i=1}^r e^{o_i})-ln(e^{o_k})]}{alpha O} ]

[= frac{(Sigma_{i=1}^r e^{o_i})_O'}{Sigma_{i=1}^r e^{o_i}}-(o_k)'_O ]

[qquadqquadqquadqquadqquad = begin{bmatrix} s_1-0&s_2-0&...&s_k-1&...&s_r-0 end{bmatrix} ]

[tag{11} qquadqquadquad = begin{bmatrix} s_1&s_2&...&s_k-1&...&s_r end{bmatrix} ]

登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

手机查看

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认