大家好啊,我是董董燦。 很多與深度學(xué)習(xí)算法相關(guān)的面試,面試官可能都會問一類問題,那就是你是如何理解矩陣乘算法的。 更有甚者,會讓你當(dāng)場手寫矩陣乘算法,然后問細(xì)節(jié),問如何優(yōu)化,面試現(xiàn)場,殘忍至極。 那矩陣乘法的本質(zhì)到底是什么呢?為什么在神經(jīng)網(wǎng)絡(luò)中,甚至如今大火的大模型中,有那么多矩陣乘法出現(xiàn)呢? 1、矩陣乘法的本質(zhì) 我查了很多資料,得出一個(gè)結(jié)論:矩陣乘法的本質(zhì),是資源的整合和再創(chuàng)。 舉個(gè)例子。 你是一個(gè)雞尾酒調(diào)酒師,家里儲存了很多雞尾酒的原料,有金酒、利口酒、檸檬汁和可樂等等。 今天家里來了 3 位客人,他們分別喜歡喝“自由古巴”、“長島冰茶”以及“龍舌蘭日出”這 3 款雞尾酒,并向你下了單。 希望你給他們調(diào)配出來各自喜歡的雞尾酒。 巧的是,這 3 款雞尾酒的原料都是金酒、利口酒、檸檬汁和可樂。 你作為一個(gè)調(diào)酒師,分分鐘就把客人的愛好的雞尾酒給調(diào)出來了。 怎么做的呢?你知道配方:
你在調(diào)配雞尾酒的過程中,是按照這個(gè)配方來調(diào)配的。 這里的原料,比如利口酒和可樂,就是輸入資源,配比(比如可樂的 25% )就是賦予該資源的權(quán)重。 將相同的原料按照不同的配比混合起來,就得到了不同口味的雞尾酒。 這種做法,可以抽象一下,寫成一個(gè)公式:
我們知道矩陣乘法的規(guī)則是,左矩陣的第一行乘以右矩陣的第一列,得到第一個(gè)值,第一行乘以第二列得到第二個(gè)值,...,以此類推 上面這種連乘的操作,就可以用矩陣乘法來表示。 左矩陣是一行四列,代表原料。 右矩陣是四行三列,每一列代表對應(yīng)原料的配比。 按照矩陣乘法的規(guī)則,他們的結(jié)果應(yīng)該是一個(gè)一行三列的矩陣,分別代表調(diào)配出來的三種雞尾酒。 看到這是不是有點(diǎn)熟悉了。 矩陣乘法,通過相乘累加的操作,實(shí)際上是對資源(雞尾酒的原料)的整合和再創(chuàng)(創(chuàng)造出了新的口味,如自由古巴)。 2、深度學(xué)習(xí)中的矩陣乘法 回到深度學(xué)習(xí)算法中,矩陣乘法的右矩陣通常是權(quán)值矩陣,是作為模型的參數(shù)被訓(xùn)練出來的。 一個(gè)模型,在對多種數(shù)據(jù)集訓(xùn)練之后,模型就學(xué)習(xí)到了一個(gè)權(quán)值矩陣,實(shí)際上一個(gè)模型中會學(xué)到很多個(gè)權(quán)值矩陣,這里用一個(gè)舉例子說明。 這個(gè)權(quán)值矩陣可以很好的匹配多種輸入數(shù)據(jù),并對輸入數(shù)據(jù)進(jìn)行整合和再創(chuàng)。 卷積和全連接算法,或多或少都是一種矩陣乘法,將其轉(zhuǎn)換為矩陣乘法之后,那么和權(quán)值矩陣對應(yīng)的另一個(gè)矩陣,就是輸入數(shù)據(jù)。 假設(shè)輸入的數(shù)據(jù)是一張圖片,那么圖片中一個(gè)通道維度代表圖片的一個(gè)特征,通過矩陣乘法對通道進(jìn)行乘累加操作,便可以實(shí)現(xiàn)特征之間的整合和再創(chuàng)。 也就是所謂的特征融合,跟調(diào)酒是不是很像? 更顯而易見的例子體現(xiàn)在全連接層上,全連接層通過矩陣乘法的運(yùn)算,把所有的特征全部進(jìn)行了融合,最終可能就會得到某一個(gè)類別。10分鐘了解全連接層 |
|