1. 程式人生 > >4 向量與矩陣(線性代數複習)

4 向量與矩陣(線性代數複習)

4 矩陣和向量(線性代數複習)

4.1 什麼是矩陣?什麼是向量?

這一小節我們將介紹舉證和向量的相關知識。

    矩陣是指由數字組成的矩形陣列,並寫在方括號中間。我們還需要知道的另一件事情是矩陣的維度應該是矩陣的行數乘以矩陣的列數。例如圖中的第一個矩陣是一個4 X 2矩陣,第二個矩陣是2 X 3矩陣,有時候寫法會有些不同,例如寫成了R4 X 2,如果你看到R4 X 2或者R2 X 3,一般都是指一個特定維度的矩陣。

    接下來我們看看如何表達矩陣的某個特定元素,這裡是說的矩陣元素,而不是矩陣,標準的表示式,如下圖所示,如果A是這個矩陣,A的下標i,j,Ai,j表示的是第i行第j列的元素。矩陣提供了一種很好的方式,讓你快速整理索引和訪問大量的資料。

    接下來談談什麼是向量???一個向量是一個特殊的矩陣,向量是隻有一列的矩陣,一個n X 1的矩陣,n代表矩陣行數,1代表只有1列。如下圖所示。

   我們將其稱為一個4維向量,是一個含有四個元素的向量。可以使用R4表示西面這個四維向量。使用yi表示向量y的第i個元素。

有兩種方法來表達某個向量中的某個索引,如下圖所示。以1開始或者以0開始。在以後的線性代數問題中,使用1為索引,機器學習的問題使用0位索引。通常使用大寫字母表示矩陣,小寫字母表示元素。

4.2 矩陣的加法、減法、乘法

這一小節我們將討論矩陣的加法與減法,並且討論數與矩陣的乘法,也就是標量(標量就是一個數字)乘法。

    矩陣加法就是矩陣相互對應的各個位置分別相加,可以發現,只有兩個相同維度的矩陣才可以相加。

    矩陣乘法,矩陣與標量的乘法就是,標量與矩陣中的每一個數都相乘。

我們可以把這些運算結合起來。

      下面我們將介紹矩陣與矩陣的乘法。兩個矩陣相乘,前一個矩陣的列數必須要與後一個矩陣的行數相同。關於矩陣的乘法,請自己尋找線性代數的相關書籍進行學習,這裡就不在贅述了。記住一點,一個m X n維的矩陣乘上一個n X k維的矩陣,結果將是一個m x k維的矩陣。矩陣的乘法其實就是將矩陣的第一個舉矩陣的每一行與第二個矩陣對應的每一列對應位置的元素相乘然後加在一起。

      最後,我們給出一個技巧,假設我有四間房子,這些房子大小如下圖所示。我有一個假設函式,用於預測房子的價格,我們需要計算每一個房子大小對應的h(x)的值,即預測的房價,有一種簡單的方法可以幫助我們同時計算時間房子的預測價格,我們可以利用矩陣相乘的思想來進行計算。如下圖所示,構造兩個矩陣,第一個矩陣的第一列全是1,第二個矩陣是兩個係數構成的向量。

    這個例子的一個小技巧是,當你在程式中實現這個的時候,你有了假設函式,你想要使用假設函式來預測你的房子的價格,完成這些工作,你只需要一行程式碼就搞定了(prediction=matrix * parameters),使用矩陣向量相乘庫就可以了。事實表明,當你不只有四間房子需要進行預測時,使用矩陣相乘的方法會方便很多,像下圖左邊這樣寫程式碼,你不需要編寫太多的程式碼,只需要一行程式碼就夠了,這樣做,效率也會高很多。我們後面討論向量化問題的時候,將更加詳細的討論這個問題。

4.3 矩陣與矩陣的乘法

    下面介紹一個小的trick,現在有多個假設函式1,2,3,可以構造如下圖所示的矩陣的乘法,計算每一個房子在不同的假設函式上的預測值。

    矩陣乘法運算非常的實用,你可以通過矩陣乘法運算,將大量的運算打包到一次矩陣乘法運算中去,在使用這個方法的時候你要注意。

    下面介紹一些矩陣乘法的特性,在矩陣乘法中,如果使用數(標量),矩陣乘法是可以交換的。但是如果是兩個矩陣相乘,是不滿足交換律的。不能隨隨便便進行交換。

  矩陣的乘法滿足結合律,如下圖所示。

4.4 矩陣的逆運算、轉置運算

這一節我們將介紹一些特殊的矩陣運算,也就是矩陣的逆運算以及轉置運算。矩陣的逆的概念如下,參考下圖。

    如果A是一個m x m的矩陣,如果它有逆矩陣,那麼A乘A的逆等於A的逆乘以A等於單位陣。只有m x m的矩陣才有逆矩陣,我們將m x m的矩陣稱為方陣,稱之為方陣是因為它的行數和列數相等。實際上,只有方陣才有逆矩陣。逆矩陣可以自己用筆計算出來,但是現在沒有人這麼做了,現在有許多的軟體能夠很容易的求出矩陣的逆矩陣。Octave軟體就可以,pinv(A)就可以求出A的逆矩陣。一個矩陣中的所有元素都是0,它是沒有逆矩陣的。

    對於某種機器學習演算法來講,可能碰到逆矩陣的意義的討論,這裡不會深入介紹,後面遇到了會進行介紹。

    矩陣的轉置參考下圖。其實就是將對應的行變為對應的列。例如第一行變為第一列,第二行變為第二列。

    現在,我相信你已經瞭解了矩陣的加法、矩陣的減法、矩陣的乘法以及矩陣的逆運算、轉置運算了,這也是我們機器學習中需要用到的線性代數的相關知識。接下來我們將介紹非常重要的線性迴歸,你將看到更多的特徵、更多的資料以及訓練樣本。在學習了線性迴歸之後,還將運用這些工具推導更加強大的演算法。