ناوبری ابتدا
بسم الله الرحمن الرحیم

ماتریس‌ها و مشتق: توابع خودمانی

توسط بهروز در هشتم بهمن ماه ۱۳۹۷ (ریاضیات)

حالا که مباحث اولیه‌ی مشتق ماتریسی را با هم مرور کرده‌ایم، می‌توانیم در مورد مشتق توابع عمومی که در مورد ماتریس‌ها تعریف می‌شوند – مثل معکوس ماتریس و دترمینان – صحبت کنیم.

بیایید از مشتق معکوس ماتریس شروع کنیم. وقتی معکوس یک ماتریس در خودش ضرب شود، مقدار حاصل یک ماتریس همانی با ابعاد مشابه ماتریس اولیه است. از همین نقطه هم می‌شود شروع کرد: $$\begin{aligned} &\frac{\partial A^{-1}A}{\partial A}=\frac{\partial I}{\partial A}=0\\ \end{aligned}$$ از طرفی رابطه‌ای هم برای مشتق گرفتن از حاصل ضرب دو تابع ماتریسی داشتیم: $$\frac{\partial f(A)g(A)}{\partial A}=(I\otimes f(A))\frac{\partial g(A)}{\partial A}+(g(A)^T\otimes I)\frac{\partial f(A)}{\partial A}$$ با جایگذاری در رابطه‌ی اولی داریم: $$\frac{\partial A^{-1}A}{\partial A}=(I\otimes A^{-1})+(A^T\otimes I)\frac{\partial A^{-1}}{\partial A}=0$$ اند وولا! $$\frac{\partial A^{-1}}{\partial A}=-(A^{-T}\otimes I)(I\otimes A^{-1})=-(A^{-T}\otimes A^{-1})$$ برای محاسبه‌ی این آخری از دو رابطه‌ی در میان ضرب‌های کرونکر استفاده کردم: $$\begin{aligned} &(A\otimes B)^{-1}=(A^{-1}\otimes B^{-1})\\ &(A\otimes B)(C\otimes D)=(AC\otimes BD) \end{aligned}$$ صد البته وقتی که شرایط محیا باشد. یعنی در رابطه‌ی اول، هر دو ماتریس $A$ و $B$ معکوس‌پذیر باشند، که اگر نباشند، اصولاً ضرب کرونکر هم معکوس‌پذیر نخواهد بود و در رابطه‌ی دوم، ماتریس‌های $A$ و $C$ را بشود در هم ضرب کرد و همچنین $B$ و $D$ را. در مورد دوم ممکن است این ضرب‌ها امکان‌پذیر نباشند ولی کماکان بشود خروجی دو ضرب کرونکر را بصورت معمول ماتریسی در هم ضرب کرد.

تابع بعدی تابع دترمینان است. محاسبه‌ی این یکی مقداری پیچیده‌تر از اولی است. برای بدست آوردن مشتق دترمینان باید به ماتریس الحاقی توجه کنیم. رابطه‌ی دترمینان و ماتریس الحاقی خیلی جالب است. کافیست هر کدام از سطرهای ماتریس الحاقی را انتخاب کنید و در ستون متناظرش در ماتریس اصلی ضرب کنید. نتیجه می‌شود دترمینان ماتریس اولیه. این یعنی $i$ هر چه که باشد (در بازه‌ی ۱ و تعداد ستون‌های ماتریس اصلی): $$|A|=A^*_{i,.}A_{.,i}$$ از طرفی، معکوس ماتریس را هم با استفاده از ماتریس الحاقی می‌شود محاسبه کرد: $$A^{-1} = \frac{1}{|A|}A^*$$ با همین‌ها می‌شود کار را تمام کرد: $$\begin{aligned} &\frac{\partial |A|}{\partial A_{.,i}}=A^*_{i,.}\\ &\frac{\partial |A|}{\partial A}=\left[A^*_{1,.}, A^*_{2,.},\ldots A^*_{1,.}\right]=\text{vec}^T\left((A^*)^T\right) \end{aligned}$$ در نهایت هم بجای $A^*$ مقدار $|A|A^{-1}$ را می‌گذاریم و تمام: $$\frac{\partial |A|}{\partial A}=\text{vec}^T\left((|A|A^-1)^T\right)=|A|\text{vec}^T(A^{-T})$$ اگر $\text{ln}|A|$ را در نظر بگیریم، نتیجه زیباتر هم میشود: $$\frac{\partial \text{ln}|A|}{\partial A}=\text{vec}^T(A^{-T})$$ می‌توانید بگویید چرا؟

آخرین تابعی که در این بخش به آن می‌پردازیم ضرب داخلی دو ماتریس است. ضرب داخلی دو ماتریس می‌شود حاصل ضرب وکتورایز شده‌ی آن‌ها: $$<A,B>=\text{vec}^T(A)\text{vec}(B)=\text{trace}(A^TB)$$ که در اغلب متون این آخری را می‌بینیم به عنوان ضرب داخلی معرفی شده است. دلیلش را به راحتی می‌توان مشاهده کرد. $$\begin{aligned} &\text{trace}(A^TB)=\sum _i (A^TB)_{i,i}=\sum_i A_{.,i}^TB_{.,i}\\ &\text{vec}(A)=\left[\begin{array}{c} A_{.,1}\\ A_{.,2}\\ \vdots\\ A_{.,m} \end{array}\right],\ \text{vec}(B)=\left[\begin{array}{c} B_{.,1}\\ B_{.,2}\\ \vdots\\ B_{.,m} \end{array}\right]\\ &\text{vec}^T(A)\text{vec}(B)=\sum_i A_{.,i}^TB_{.,i} \end{aligned}$$ اگر دقت کرده باشید، تعداد سطرهای ماتریس $A$ و ستون‌های $B$ برابر است. علت اینست که این ضرب داخلی برای چنین ماتریس‌هایی تعریف می‌شود. اصولاً $\text{trace}$ روی ماتریس‌های مربعی تعریف می‌شود و خروجی $A^TB$ باید مربعی باشد که بشود $\text{trace}$ را در مورد آن بکار برد.

مشتق ضرب داخلی دو ماتریس نسبت به یکی از آن‌ها، همانطور که انتظار می‌رود، ترانهاده‌ی وکتورایز شده‌ی دومی است: $$\begin{aligned} &\frac{\partial \text{trace}(A^TB)}{\partial B}=\text{vec}^T(A)\\ &\frac{\partial \text{trace}(A^TB)}{\partial A}=\text{vec}^T(B)\\ \end{aligned}$$

این همان چیزی است که در ریاضیات ۲ در دانشگاه در مورد وکتورها دیده بودیم: $$\begin{aligned} &\frac{\partial a^Tb}{\partial b}=a^T\\ &\frac{\partial a^Tb}{\partial a}=b^T\\ \end{aligned}$$

بعد از سه پُست در مورد مشتق نسبت به ماتریس‌ها، به جایی رسیده‌ایم که می‌توانیم مسأله‌ای مانند تخمین ماتریس کورلیشن یک توزیع گوسی از روی نمونه‌ها را حل کنیم. یک دو نمونه از این مسایل را در پُست بعدی حل می‌کنیم که حسن ختامی بر مبحث مشتق‌گیری نسبت به ماتریس‌ها باشد.