最优化求导常用公式技巧
2016-06-16 12:55
507 查看
要用到的几个符号与结论
∇θJ=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢∂J∂θ0..∂J∂θn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥....(1)\nabla _\theta J=\left[ {\begin{array}{*{20}{c}}
{\frac{{\partial J}}{{\partial {\theta _0}}}}\\
.\\
.\\
{\frac{{\partial J}}{{\partial {\theta _n}}}}
\end{array}} \right]....(1)
若存在一个映射f(A)=af(A)=a 让m*n的矩阵A映射到1个数a,我们定义:
∇Af(A)=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢∂f∂A11..∂f∂Am1....∂f∂A1n..∂f∂Amn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥....(2)\nabla _A f(A)=
\left[ {\begin{array}{*{20}{c}}
{\frac{{\partial f}}{{\partial {A_{11}}}}}&.&.&{\frac{{\partial f}}{{\partial {A_{1n}}}}}\\
.&{}&{}&.\\
.&{}&{}&.\\
{\frac{{\partial f}}{{\partial {A_{m1}}}}}&.&.&{\frac{{\partial f}}{{\partial {A_{mn}}}}}
\end{array}} \right]
....(2)
其中A为m*n的矩阵。
trAB=trBA....(3)trAB=trBA....(3)
trABC=trCAB=trBCA....(4)trABC=trCAB=trBCA....(4)
trA=trAT....(5)trA=trA^T....(5)
tr(a)=a....(6)tr(a)=a....(6)
∇AtrAB=BT....(7)\nabla _A trAB=B^T....(7)
∇AtrABATC=CAB+CTABT....(8)\nabla _A trABA^TC=CAB+C^TAB^T....(8)
J(u)=uTSu+λ1(1−uTu)J(u)=u^TSu+\lambda _1(1-u^Tu)
∂J∂u=∇uJ=∇utr(J)(公式6)=∇utr(uTSu+λ1(1−uTu))=∇utr(uTSu)−λ1∇utr(uTu)\eqalign{
& \frac{{\partial J}}{{\partial u}} = {\nabla _u}J \cr
& = {\nabla _u}tr(J)(公式6) \cr
& = {\nabla _u}tr({u^T}Su + {\lambda _1}(1 - {u^T}u)) \cr
& = {\nabla _u}tr({u^T}Su) - \lambda _1{\nabla _u}tr({u^T}u) \cr}
其中:
∇utr(uTSu)=∇utr(uuTS)(公式4)=∇utr(uEuTS)=Su+STu(公式8)=2Su\eqalign{
& {\nabla _u}tr({u^T}Su) \cr
& = {\nabla _u}tr(u{u^T}S)(公式4) \cr
& = {\nabla _u}tr(uE{u^T}S) \cr
& = Su + {S^T}u(公式8) \cr
& = 2Su \cr}
由于在这例子里S=STS=S^T所以合并为一项,其中E是单位矩阵。
∇utr(uTu)=∇utr(uuT)(公式3)=∇utr(uEuTE)=u+u(公式8)=2u\eqalign{
& {\nabla _u}tr({u^T}u) \cr
& = {\nabla _u}tr(u{u^T})(公式3) \cr
& = {\nabla _u}tr(uE{u^T}E) \cr
& = u + u(公式8) \cr
& = 2u \cr}
所以
∂J∂u=2Su−2λ1u\frac{{\partial J}}{{\partial u}} = 2S{\text{u}} - 2{\lambda _1}u
作为分享主义者(sharism),本人所有互联网发布的图文均遵从CC版权,转载请保留作者信息并注明作者a358463121专栏:http://blog.csdn.net/a358463121,如果涉及源代码请注明GitHub地址:https://github.com/358463121/。商业使用请联系作者。
∇θJ=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢∂J∂θ0..∂J∂θn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥....(1)\nabla _\theta J=\left[ {\begin{array}{*{20}{c}}
{\frac{{\partial J}}{{\partial {\theta _0}}}}\\
.\\
.\\
{\frac{{\partial J}}{{\partial {\theta _n}}}}
\end{array}} \right]....(1)
若存在一个映射f(A)=af(A)=a 让m*n的矩阵A映射到1个数a,我们定义:
∇Af(A)=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢∂f∂A11..∂f∂Am1....∂f∂A1n..∂f∂Amn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥....(2)\nabla _A f(A)=
\left[ {\begin{array}{*{20}{c}}
{\frac{{\partial f}}{{\partial {A_{11}}}}}&.&.&{\frac{{\partial f}}{{\partial {A_{1n}}}}}\\
.&{}&{}&.\\
.&{}&{}&.\\
{\frac{{\partial f}}{{\partial {A_{m1}}}}}&.&.&{\frac{{\partial f}}{{\partial {A_{mn}}}}}
\end{array}} \right]
....(2)
其中A为m*n的矩阵。
trAB=trBA....(3)trAB=trBA....(3)
trABC=trCAB=trBCA....(4)trABC=trCAB=trBCA....(4)
trA=trAT....(5)trA=trA^T....(5)
tr(a)=a....(6)tr(a)=a....(6)
∇AtrAB=BT....(7)\nabla _A trAB=B^T....(7)
∇AtrABATC=CAB+CTABT....(8)\nabla _A trABA^TC=CAB+C^TAB^T....(8)
梯度下降法
θ=θ−α∇θJ\theta =\theta -\alpha \nabla _\theta J例子
我们考虑对以下函数求偏导:J(u)=uTSu+λ1(1−uTu)J(u)=u^TSu+\lambda _1(1-u^Tu)
∂J∂u=∇uJ=∇utr(J)(公式6)=∇utr(uTSu+λ1(1−uTu))=∇utr(uTSu)−λ1∇utr(uTu)\eqalign{
& \frac{{\partial J}}{{\partial u}} = {\nabla _u}J \cr
& = {\nabla _u}tr(J)(公式6) \cr
& = {\nabla _u}tr({u^T}Su + {\lambda _1}(1 - {u^T}u)) \cr
& = {\nabla _u}tr({u^T}Su) - \lambda _1{\nabla _u}tr({u^T}u) \cr}
其中:
∇utr(uTSu)=∇utr(uuTS)(公式4)=∇utr(uEuTS)=Su+STu(公式8)=2Su\eqalign{
& {\nabla _u}tr({u^T}Su) \cr
& = {\nabla _u}tr(u{u^T}S)(公式4) \cr
& = {\nabla _u}tr(uE{u^T}S) \cr
& = Su + {S^T}u(公式8) \cr
& = 2Su \cr}
由于在这例子里S=STS=S^T所以合并为一项,其中E是单位矩阵。
∇utr(uTu)=∇utr(uuT)(公式3)=∇utr(uEuTE)=u+u(公式8)=2u\eqalign{
& {\nabla _u}tr({u^T}u) \cr
& = {\nabla _u}tr(u{u^T})(公式3) \cr
& = {\nabla _u}tr(uE{u^T}E) \cr
& = u + u(公式8) \cr
& = 2u \cr}
所以
∂J∂u=2Su−2λ1u\frac{{\partial J}}{{\partial u}} = 2S{\text{u}} - 2{\lambda _1}u
作为分享主义者(sharism),本人所有互联网发布的图文均遵从CC版权,转载请保留作者信息并注明作者a358463121专栏:http://blog.csdn.net/a358463121,如果涉及源代码请注明GitHub地址:https://github.com/358463121/。商业使用请联系作者。
相关文章推荐
- 美团Android DEX自动拆包及动态加载简介
- clip:rect()
- 在职场中混,"讲演稿"的重要性
- Linux下安装启动多个Tomcat的配置
- 关于开通博客的一些感想
- 工作实用
- Activity的总结
- mingw编译x264 出错undefined reference to `__sync_add_and_fetch_4
- HDU 3488 最小费用流
- android 国内工具站
- android中如何使用隐藏的api和internal包
- python(二)
- android应用程序如何调用支付宝接口
- 华为OJ平台——杨辉三角的变形
- Java的HTTP通信
- Eclipse开发Android程序在手机上运行
- 从软件导入数据功能, 看人员沟通问题
- java的4个核心技术
- 工厂模式的理解
- 文章标题