Softmax求导
其实BP过程在pytorch中可以自动进行,这里进行推导只是强迫症
A
Apart证明softmax求导和softmax的BP过程
本来像手打公式的,想想还是算了,引用部分给出latex公式说明。
A.1
softmax导数

A.2
softmax梯度下降

B
基本上都是拾人牙慧,在此给出引用和参考。
参考:
引用几个定理B.15和B.16
(B.15)
→x∈kM×1,y∈R,→z∈RN×1,则:∂y→z∂→x=y∂→z∂→x+∂y∂→x⋅→z⊤∈RM×N
[证明]:dy→z=dy⋅→z+y⋅d→z=→z⋅dy+y⋅d→z=→z⋅(∂y∂→x)⊤d→x+y⋅(∂→z∂→x)⊤d→x∴∂y→z∂→x=y⋅∂→z∂→x+∂y∂→x⋅→z⊤
(B.26)
→x∈RN,→f(→x)=[f(x1),f(x2)…f(xn)]∈RN,则∂→f(→x)∂→x=diag(→f′(→x))
[证明]: ∂→f(→x)∂→x=⎡⎢
⎢
⎢
⎢⎣∂f1∂x1∂f2∂x1⋯∂fn∂ηn⋮⋮⋮∂f1∂xn∂f1∂xn⋯−∂fn∂xn⎤⎥
⎥
⎥
⎥⎦=⎡⎢
⎢
⎢
⎢
⎢⎣f′(x1)f′(x2)⋱f′(xn)⎤⎥
⎥
⎥
⎥
⎥⎦=diag(→f′(→x))
Apart中必须说明的两个推导:
(1)
→x∈Rn,exp(→x)=⎡⎢
⎢⎣exp(x1)⋮exp(xn)⎤⎥
⎥⎦∈Rn故存在偏导:∂exp(→x)∂→x=⎡⎢
⎢
⎢
⎢⎣∂exp(x1)∂x1⋯∂exp(xn)∂x1⋮∂exp(x1)∂xn⋯∂exp(xn)∂xn⎤⎥
⎥
⎥
⎥⎦=diag(exp(→x))
(2)
d→1⊤exp(→x)=→1⊤dexp(→x)=→1⊤(exp′(→x)⊙d→x)=(→1⊙exp′(→x))⊤d→x 有: ∂→1⊤exp(→x)∂→x=→1⊙exp′(→x)=exp′(→x)=exp(→x)
C
理解可能有偏颇。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验