每次手推公式就會遇見各種不會的,在網上搜了個總結的還不錯的常用求導公式。。。繼續更新中……
一、基本線性代數
在網上看到有人貼了如下求導公式:
y = a * x --> dy/dx = a'
y = x * a --> dy/dx = a
y = a' * x * b --> dy/dx = a * b'
y = a' * x' * b --> dy/dx = b * a'
1. 矩陣y對標量x求導:
相當於每個元素求導數後轉置一下,注意m×n矩陣求導後變成n×m了
y = [y(ij)] --> dy/dx = [dy(ji)/dx]
2. 標量y對列向量x求導:
注意與上面不同,這次括號內是求偏導,不轉置,對n×1向量求導後還是n×1向量
y = f(x1,x2,..,xn) --> dy/dx = (dy/dx1,dy/dx2,..,dy/dxn)'
3. 行向量y'對列向量x求導:
注意1×m向量對n×1向量求導後是n×m矩陣。
將y的每一列對x求偏導,將各列構成乙個矩陣。
重要結論:
dx'/dx = i
d(ax)'/dx = a'
4. 列向量y對行向量x』求導:
轉化為行向量y』對列向量x的導數,然後轉置。
注意m×1向量對1×n向量求導結果為m×n矩陣。
dy/dx' = (dy'/dx)'
5. 向量積對列向量x求導運算法則:
注意與標量求導有點不同。
d(uv')/dx = (du/dx)v' + u(dv'/dx)
d(u'v)/dx = (du'/dx)v + (dv'/dx)u'
重要結論:
d(x'a)/dx = (dx'/dx)a + (da/dx)x' = ia + 0x' = a
d(ax)/dx' = (d(x'a')/dx)' = (a')' = a
d(x'ax)/dx = (dx'/dx)ax + (d(ax)'/dx)x = ax + a'x
6. 矩陣y對列向量x求導:
將y對x的每乙個分量求偏導,構成乙個超向量。
注意該向量的每乙個元素都是乙個矩陣。
7. 矩陣積對列向量求導法則:
d(uv)/dx = (du/dx)v + u(dv/dx)
d(uv)/dx = (du/dx)v + u(dv/dx)
重要結論:
d(x'a)/dx = (dx'/dx)a + x'(da/dx) = ia + x'0 = a
8. 標量y對矩陣x的導數:
類似標量y對列向量x的導數,
把y對每個x的元素求偏導,不用轉置。
dy/dx = [ dy/dx(ij) ]
重要結論:
y = u'xv = σσu(i)x(ij)v(j) 於是 dy/dx = = uv'
y = u'x'xu 則 dy/dx = 2xuu'
y = (xu-v)'(xu-v) 則 dy/dx = d(u'x'xu - 2v'xu + v'v)/dx = 2xuu' - 2vu' + 0 = 2(xu-v)u'
9. 矩陣y對矩陣x的導數:
將y的每個元素對x求導,然後排在一起形成超級矩陣。
二、具體內容
1. hessian 矩陣,有函式
則其hessian舉證h(f)為
hessian矩陣可以判斷函式的凹凸性,以及函式的極值點問題
當函式二階連續可導時,hessian矩陣h在臨界點
上是乙個
階的對稱矩陣。
2. jensen不等式
如果f是凸函式,x是隨機變數,那麼
特別地,如果f是嚴格凸函式,那麼
當且僅當
,也就是說x是常量。
這裡我們將
簡寫為。如果用圖表示會很清晰:
模式識別與機器學習(2)
參考部落格 隨機梯度下降 clear all x load ex2data ex2x.dat y load ex2data ex2y.dat x 1.15 1.9 3.06 4.66 6.84 7.95 10,14,16 x power x,0.5 y power x,0.5 m length y ...
模式識別與機器學習(4)
講了推理,以及主要收穫為,原來是對損失函式求導。不過公式不是很對,因為 clear x load ex4data ex4x.dat y load ex4data ex4y.dat m,n size x x ones m,1 x figure pos find y neg find y 0 plot ...
模式識別與機器學習(5)
clear x load ex5data ex5linx.dat y load ex5data ex5liny.dat x load linear regression ex2data ex2x.dat y load linear regression ex2data ex2y.dat plot x...