本文是吳恩達《機器學習》視頻筆記第16篇,對應第1周第16個視頻。
“LinearAlgebrareview(optional)——Matrix-matrixmultiplication”
上一視頻講的是矩陣和向量相乘,我們在上上上個視頻“矩陣和向量”那一節已經知道向量也是一種特殊的矩陣,那這一節我們把后面的這個向量給一般化為矩陣,即矩陣和矩陣的乘法。
引入前面講過梯度下降用于線性回歸模型的參數確定,如果有矩陣的乘法的加持,我們就可以不用梯度下降法也能求解這個問題。
先來看一個例子,求下面圖中兩個矩陣的乘。
那怎么做呢?上圖中兩個矩陣,左邊的這個是2×3的矩陣、右邊這個是3×2的矩陣,我們可以把右邊這個矩陣的第一列抽出來,就變成了2×3的矩陣和一個3×1的列向量的乘法,這就和上一視頻講到的一樣了。如下圖,我們就可以得到一個2×1的列向量:
類似的,把右邊矩陣的第二列抽出來相乘又得到一個2×1的列向量,然后把這兩步得到的列向量拼在一起就得到兩個矩陣的乘的結果了。
一般情況那上面那個特例中,左邊是2×3的矩陣、右邊是3×2的矩陣。右邊這個矩陣的行數、列數分別和左邊矩陣的列數、行數相等,是不是說一般情況也有這種要求呢?我們一起看一下。
對于一般的情況,矩陣和矩陣的乘法的形式如下圖:
從上面的圖中可知,矩陣A×B,只要求A的列數要等于B的行數,而不一定要求A的行數等于B的列數;得到的結果矩陣C呢,C的行數和A的行數相等、C的列數和B的列數相等。
從前面的示例我們可知,矩陣A和矩陣B的乘,可以簡化為矩陣A和矩陣B的列向量的乘,然后再把結果拼成C。就完成了矩陣與矩陣的乘法。
矩陣和矩陣相乘,化簡為矩陣和列向量相乘的過程中,右邊的矩陣A會被用o次(即矩陣B的列數)、而矩陣B呢是被拆分成o個列向量來用的。想想這個事挺有意思的。
再來一個例子兩個2×2的矩陣相乘,運算過程如下圖:
繼續賣房子我們來看一下,矩陣和矩陣的乘法這種運算規則的制定怎樣讓我們實際問題更容易被表述。
還是假設我有四套房子,面積(單位是平方英尺)不同,如下圖:
這里呢,面積和售價之間關系的預測函數不再是一個了,假設我們有3個可能的公式用來計算房屋的售價,如果有矩陣乘法,就可以很方便的把這個事情給描述出來。
我們把第一個模型的參數拿出來構成矩陣B的第一列、第二個模型的參數做第二列、第三個模型的參數做第三列,就得到下圖這樣的一個矩陣乘法的式子。
對上面的這個式子進行運算,就可以得到一個4×3的結果矩陣。而結果矩陣的每一列就對應于相應模型對4套不同房子的售價的預測。如下圖:
一次矩陣運算就可以讓我們完成三個模型分別對4套房子的售價預測,即12次房屋售價預測的運算用一個矩陣乘法的式子就可以表示了,想想就讓人激動。
更好的是,幾乎每一種主流的編程語言都有很好的線性代數庫實現矩陣與矩陣的乘法;更進一步的,如果我們想比較不同模型的好壞的話,我們只需要比較結果矩陣就行了。
我們小時候學乘法的時候知道有很多的運算法則可以使用,那么,矩陣和矩陣的乘法有沒有這樣的一些法則供我們使用呢?且聽下回。