線性代數:“矩陣”到底怎麼用?

如果你問一個大學老師,什麼是高等數學的基礎課?他可能會和你說,微積分和線性代數。對於一個非理工專業的大學生來講,如果在大學裡只學兩門數學課,恐怕就是這兩門了。微積分主要是訓練我們的思維方式,而線性代數,大家在工作和生活中真的用得上。

關於線性代數,我們其實已經講了兩講了,只是我沒有用這個名詞罷了。我們講的都是向量代數,它其實就是線性代數中最基本的內容。在線性代數中,用到的最多的概念是矩陣。矩陣是怎樣一回事,它有什麼用途呢?讓我們先來看一個具體的矩陣:

線性代數:“矩陣”到底怎麼用?

從這個矩陣中你可以看出,它無非就是把數字按照橫豎排起來,每一行、每一列數字的數量都相等。比如上面一個矩陣有3行,每行有4個數,我們稱這種矩陣為3x4的矩陣。

瞭解了矩陣的形態,你可能緊接著就有一個問題:把數字這麼橫平豎直地排列起來有什麼用?事實上,把數字這麼橫平豎直地排列不是原因,而是結果,矩陣產生的原因是向量的擴展。

我們在前面講了,向量是橫著的一排數字,每一個數字代表一個維度的分量。比如一個企業在招聘員工時把所有考核的項目總結為N個維度。每一個崗位對各種能力的側重點就是一個N維向量,比如辦公室部門對人的要求是能力、溝通、協作、健康四個維度,寫成V1=(3,2,5,0)。

我們上一講講了,可以用它來算算和某個候選人的相似性。當然公司不僅僅有辦公室一個部門,還有比如銷售部門、研發部門,等等。每一個部門可能又有不同的崗位,每一個崗位的要求就是一個向量。於是,我們就會有V2,V3,V4,……,VM。

這麼多向量如果把它們放在一起,怎麼表示比較好呢?顯然最直觀的方式,就是把它們一行行排起來,這形成了一個有M行N列的矩陣。這就是矩陣的由來。

今天“矩陣”這個詞無論是在數學上還是生活中都經常用,但是它在數學史上出現的時間非常晚,直到1850年才由英國數學家西爾維斯特(James Joseph Sylvester)發明,而構成它的向量其實出現的時間也很晚,是1835年才被提出來的。

當然,你如果讀一些文章會提到早在3世紀的時候,中國數學家就發明了矩陣的原型,類似的話日本人、意大利人和阿拉伯人也都這麼說,但是那些所謂的發明和今天的數學發展沒有半點關係。

因為對於一個矩陣,不僅僅是把數字一行一列地排起來,更重要的是每一行、每一列需要能夠被賦予特殊的含義,而且需要發明出一系列相應的計算,讓這個工具能夠解決很多問題。西爾維斯特所提出的矩陣則滿足了這些要求。關於矩陣的運算有很多,我們接下來就介紹兩種最簡單的,即加法和乘法。

首先講講矩陣的加法。

我們可以把一個M行N列,或者說MxN的矩陣想象成一個公司的M個崗位,每個崗位有N種技能。我們假設這個公司是一家跨國公司,它會對人員有一個總體上的要求,但是對於不同國家的員工在要求上也會有不同的調整,比如對英語水平的要求。

我們把總體要求用矩陣A來表示,某個國家相應的調整用矩陣B來表示。那麼矩陣A+B,就是在某個國傢俱體的要求。為了直觀起見,我們就假設矩陣A是上面那個3x4的。矩陣B也需要是一個3x4的矩陣。我們隨便寫一個B矩陣,比如像下圖這樣:

線性代數:“矩陣”到底怎麼用?

當我們進行A+B時,只要把兩個矩陣中相應位置的元素逐一相加即可,也就是說矩陣A加矩陣B,會得到下面的結果。

線性代數:“矩陣”到底怎麼用?

今天在生活和工作中,經常需要有相對固定的大的原則,以及針對各種情況的小的變動,這時候就需要有一個相對固定的核心,再加上一個增量,而不是複製一大堆,拷貝以後逐一修改。

相比矩陣加法,用途更大的可能是矩陣乘法。我們先來說說一個矩陣和一個向量是如何相乘,然後再擴展到矩陣和矩陣的乘法。

我們來看一個實際的例子,假如第一家投資銀行的股票基金、債券基金和高風險基金的回報分別是:7%、3%和10%,第二家投資銀行三類金融產品的回報分別是8%、2%、9%。當然,這些都是歷史數據,只能作參考。

你現在有1萬元要投資,你是找第一家投行,還是第二家投行給你管錢呢?我們不妨把這兩組數放到下面這個矩陣中:

線性代數:“矩陣”到底怎麼用?

然後我們根據自己對各種投資的喜愛和對風險的承受能力,分別測算在不同情況下的回報是多少。

比如在第一種情況下,1萬元按照上述投資類型的分配方式如下:7000、2000、1000。因為這1萬元分到了三個維度中,我們把它寫成一個向量,不過為了等會兒方便做乘法,我們將向量豎著寫:

線性代數:“矩陣”到底怎麼用?

這時,如果把錢交給這兩家公司,總的回報就是矩陣R和P1相乘的結果,我先把結果給大家看看,然後再說說是如何計算的。

線性代數:“矩陣”到底怎麼用?

我們可以看到,第二家投行帶來的投資回報更高。那麼這兩個數是怎麼計算的呢?拋開矩陣和向量,這個問題其實也能算清楚。

就以第一家投行為例,7000元7%的回報是490元,2000元3%的回報是60元,1000元10%的回報是100元,加起來是650元。我們把這個式子列一下:

7%x7000+3%x2000+10%x1000=650

你如果注意一下上面的矩陣和向量,你會發現這就是矩陣第一行每一個數字,分別和向量的每一個數字相乘之後再相加。為了清楚起見,我把矩陣和向量中參與運算的數字用紅顏色標了出來:

線性代數:“矩陣”到底怎麼用?

類似的,第二個結果690,就是矩陣第二行和向量各個元素相乘後再相加的結果。

當然,可能有朋友會說,這不就是算術中加權相乘後的連加嗎,為什麼要搞出矩陣這樣一個工具?如果只有三個維度,可能不需要用矩陣,但是如果是1萬維、1百萬維,人通常就想不清楚了,矩陣就非常直觀,使用它既方便又不容易出錯。

我們可以這樣理解矩陣和向量相乘,它是批處理解決問題的思路,而過去我們學的乘法和連加是單個解決問題的思路。

接下來我們再看另一種情況,假如你這時對風險的承受力比較強,願意將更多的錢放在高風險、高回報的基金中。比如你按照3000、2000、5000來分配投資,我們把這個向量稱為P2,這時哪家的回報更高呢?

我們再用矩陣和向量的乘法做一次,得到下面的結果。

線性代數:“矩陣”到底怎麼用?

你可以看出,這時第一家投行給的回報更高了。當然,你還可以嘗試其它的投資方式,對應的向量就是P3,P4,P5……

今天,你如果帶著一大筆錢找到高盛或者摩根士丹利,問它們會打算怎麼幫你投資,它們為你做的第一件事情就是根據歷史數據,幫你推算出在不同的投資配比情況下,回報是多少,也就是做我們剛才做的事情。因此,如果你想在投行找工作,用到最多的數學工具就是線性代數中的矩陣運算。

下面,我們把P1,P2, P3……這些向量一字排開,其實就得到一個矩陣P。我們可以寫成下面的形式。

線性代數:“矩陣”到底怎麼用?

注意,矩陣P的每一列,就是一個個向量P1,P2, P3……

接下來,我們就可以定義矩陣R和矩陣P的乘法了。我們把矩陣R和P中的第一列,也就是向量P1相乘的結果,放在結果矩陣的第一列,把矩陣R和P中第二列向量P2相乘的結果放在結果矩陣的第二列,以此類推。

我們就得到了兩個矩陣相乘的結果,它也是一個矩陣:

線性代數:“矩陣”到底怎麼用?

在圖中,我特意標紅了第一個矩陣的第二行,和第二個矩陣的第二列,以及結果矩陣第二行、第二列的數值,因為紅色的行和紅色的列,元素兩兩相乘再相加後,就是結果矩陣中的那個結果。對於一般的情況,第一個矩陣中的第i行,和第二個矩陣的第j列,相乘相加,結果就是結果矩陣中第i行、第j列位置的數值。

那麼從矩陣和向量相乘,到矩陣相乘有什麼好處呢?前一種情形我們可以理解為小批量處理,後一種則是大批量處理。

要點總結:

我們講了矩陣這個人們虛構出來的一種工具,利用這種工具,我們能夠讓計算從單個的,變成批處理的。矩陣有很多用途,我們只講了一點點,從它的加法,我們可以理解核心矩陣和增量的關係;從它的乘法,我們看到了它在金融中的應用。

要再次強調的是,將單個計算變成大批量處理,這是我們今天在信息時代要有的思維方式。

在結束本模塊之前,我們要回答最後一個問題。為什麼討論矩陣運算這樣問題的數學分支被稱為線性代數?我們回顧一下矩陣和向量的乘法就知道答案了。

在運算時,左邊的那個矩陣裡的數字可以被看成是一組常數係數,右邊豎著的向量中的數字則是未知數變量,這樣矩陣和向量的乘法就變成了一組線性方程。如果把它們畫在空間中,就是直線、平面或者立方體,都是線性的,不會有任何曲線。因此涉及到這一類的代數運算被稱為線性代數。

當然,自然界中很多數學問題並非線性的,但是我們在解決它們的時候經常將問題近似為線性的問題,這樣可以利用很多線性代數的工具來解決。

有了解析幾何以及代數的基礎,我們就可以正式開始講高等數學中最為重要的微積分的問題了。也希望你把這一講分享給你的朋友,幫助他們提高批處理問題的能力。我們下一講再見。——吳軍《數學通識五十講》


分享到:


相關文章: