【徹底解説】スカラーのベクトルによる微分の公式

本記事は数学の徹底解説シリーズに含まれます。

初学者の分かりやすさを優先するため,多少正確でない表現が混在することがあります。もし致命的な間違いがあればご指摘いただけると助かります。

スカラーのベクトルによる微分の公式

n次元縦ベクトルa=(a1,,an)Tx=(x1,,xn)Tn次元正方行列ABに対し,以下が成り立つ。

(1)xaTx=a(2)xxTa=a(3)xxTx=2x(4)xxTAx=(A+AT)x(5)x(xa)T(xa)=2(xa)(6)x(Axb)T(Axb)=2AT(Axb)(7)x(Axb)TB(Axb)=AT(B+BT)(Axb)

機械学習を勉強すると必ず出現する公式です。微分操作の具体的なイメージを湧かせられるように,一度は証明を手で追ってみましょう。

証明

式(1)から式(7)までを,スカラーのベクトルによる微分の定義に基づいて証明していきます。

式(1)

aTxを展開して,スカラーのベクトルによる微分の定義を利用します。

(8)xaTx=x(a1x1+a2x2++anxn)(9)=(a1,a2,,an)T(10)=a

式(2)

スカラーxTaは転置しても変わらないため,式(1)より以下が成り立ちます。

(11)xxTa=x(xTa)T(12)=xaTx(13)=a

式(3)

式(4)において,An次元単位行列Iを代入すると得られます。もしくは,xTxを展開してスカラーのベクトルによる微分の定義を利用しても示すことができます。

(14)xxTx=x(x12+x22++xn2)(15)=(2x1,2x2,,2xn)T(16)=2x

式(4)

A(i,j)要素をAi,jと書くと,二次形式は以下のように表されます。

(17)xTAx=i=1nj=1nAi,jxixj

まずは,二次形式をxk番目の要素xkで微分することを考えます。

(18)xkxTAx=xki=1nj=1nAi,jxixj(19)=i=1nj=1nAi,jxk(xixj)

ここで,表記を簡潔にするために以下のクロネッカーのデルタを導入します。

(20)δi,j={1(i=j)0(ij)

すると,式(19)は以下のように表されます。

(21)xkxTAx=i=1nj=1nAi,j(δkixi+xiδkj)(22)=i=1nj=1nAi,jδkixi+i=1nj=1nAi,jxiδkj(23)=j=1nAk,jxk+i=1nAi,kxi(24)=j=1nAk,jxk+i=1nAk,iTxi(25)=[Ax]k+[ATx]k(26)=[(A+AT)x]k

ただし,[]kはベクトルのk番目の要素を表しています。以上より,スカラーのベクトルによる微分の定義に基づくと式(4)が示されました。

式(5)

式(3)において,xの代わりにxaを考えると示すことができます。

式(6)

式(4)において,Bn次元単位行列Iを代入すると得られます。もしくは,今まで示してきた公式を利用して証明することもできます。

(27)x(Axb)T(Axb)=x(xTATbT)(Axb)(28)=x(xTATAxxTATbbTAx+bTb)(29)=2ATAxATbATb+0(30)=2AT(Axb)

式(7)

y=Axbと置くと,式(7)は以下のように表されます。

(31)x(Axb)TB(Axb)=xyTBy

スカラーの合成関数のベクトルによる微分と上で示してきた公式を利用すると,式(31)は以下のように変形できます。

(32)xyTBy=yxyyTBy(33)=AT(B+BT)y(34)=AT(B+BT)(Axb)

以上より,式(7)が示されました。

 

シェアはこちらからお願いします!

コメント

コメントする

※ Please enter your comments in Japanese to distinguish from spam.