n階矩陣乘法最優(yōu)解的時(shí)間復(fù)雜度再次被突破,達(dá)到了
。
按定義直接算的話,時(shí)間復(fù)雜度是O(n3)。
光這么說(shuō)可能不太直觀,從圖上可以看出,n足夠大時(shí)優(yōu)化后的算法就開(kāi)始表現(xiàn)出明顯優(yōu)勢(shì)。
矩陣乘法在深度學(xué)習(xí)中有著廣泛的應(yīng)用,像卷積神經(jīng)網(wǎng)絡(luò)(CNN)中最耗時(shí)間的卷積計(jì)算,就經(jīng)常被映射成矩陣乘法。
雖然在具體實(shí)現(xiàn)上還有很多障礙,但矩陣相乘底層算法的優(yōu)化,至少在理論上為深度學(xué)習(xí)節(jié)省時(shí)間提供了可能性。
而科學(xué)家們努力的目標(biāo),是使n階矩陣乘法的時(shí)間復(fù)雜度盡可能接近理論上的最快速度O(n2)。
本次研究共同作者是一對(duì)師徒。
Josh Alman目前是哈佛大學(xué)的博士后研究員,主要研究方向是算法設(shè)計(jì)和復(fù)雜度理論。
Virginia Vassilevska Williams是他在MIT讀博士期間的導(dǎo)師,研究方向是組合數(shù)學(xué)和圖論在計(jì)算領(lǐng)域的應(yīng)用。
Strassen:用加法替代乘法
矩陣乘法的時(shí)間復(fù)雜度直到1969年才第一次被Volker Strassen降至O(n3)以下。
看過(guò)《算法導(dǎo)論》的同學(xué)應(yīng)該很熟悉Strassen算法。
以2階矩陣相乘為例,總共需要進(jìn)行23=8次乘法,而2?的高階矩陣相乘可以用分塊法不斷迭代細(xì)分解成若干個(gè)2階子矩陣相乘。
Strassen巧妙的通過(guò)構(gòu)造7個(gè)中間變量,用增加14次加法為代價(jià)省去了一次乘法。
對(duì)于
定義
則有
像這樣,在M?-M?的計(jì)算中只有7次乘法操作。
由于矩陣乘法計(jì)算中乘法的復(fù)雜度是O(n3),而加法的復(fù)雜度只有O(n2),n越大時(shí)此方法的收益就越大。
且分塊后每個(gè)子矩陣相乘都可以省去一次乘法操作,最終把時(shí)間復(fù)雜度降低到
。
這么繞的算法到底怎么想出來(lái)的?可惜Strassen在論文中并沒(méi)有說(shuō)明這一點(diǎn)。
Strassen算法在實(shí)際應(yīng)用時(shí)受到很大限制,如運(yùn)行時(shí)會(huì)創(chuàng)建大量的臨時(shí)變量,在n不夠大時(shí)反倒更耗費(fèi)時(shí)間。
還有只適用于稠密矩陣,針對(duì)稀疏矩陣有更快的專門算法。
但最重要的是,Strassen的辦法讓學(xué)界意識(shí)到,原來(lái)矩陣乘法問(wèn)題還有優(yōu)化空間??!
激光法:用張量替代矩陣
20世紀(jì)70年代末期,科學(xué)家們找到了解決問(wèn)題的新思路,將矩陣計(jì)算轉(zhuǎn)換為張量計(jì)算。
1981年,Schonhage將此方法優(yōu)化到
后,Strassen把這個(gè)方法命名為“激光法(Laser Method)”,因?yàn)楹驼黄窦す庥邢嗨浦帯?/p>
在后來(lái)的幾十年中,矩陣乘法的每次優(yōu)化都來(lái)自激光法的優(yōu)化,即如何更有效的把矩陣問(wèn)題轉(zhuǎn)換成張量問(wèn)題。
Alman和Williams的優(yōu)化算法只比14年LeGall的
減少了
。
從歷次優(yōu)化的幅度來(lái)看,似乎已逼近激光法的極限。
能算得更快了嗎?
激光法很少在實(shí)際中應(yīng)用,因?yàn)樗辉趎足夠大,大到現(xiàn)代計(jì)算機(jī)硬件幾乎無(wú)法處理的時(shí)候才能提供優(yōu)勢(shì)。
這樣的算法被稱作“銀河算法(Galatic Algorithm)”。
在業(yè)界使用最多的還是通過(guò)分塊法和并行處理控制矩陣的規(guī)模。當(dāng)n不大時(shí),再通過(guò)循環(huán)展開(kāi),內(nèi)存布局優(yōu)化等辦法針對(duì)直覺(jué)算法的優(yōu)化。
還有一點(diǎn),現(xiàn)實(shí)中由于浮點(diǎn)數(shù)精度的限制,Strassen法和激光法在計(jì)算大規(guī)模矩陣時(shí)都會(huì)產(chǎn)生不小的誤差。
矩陣乘法的加速,看來(lái)還沒(méi)那么容易。
責(zé)任編輯:haq
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4749瀏覽量
100434 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5471瀏覽量
120904
原文標(biāo)題:矩陣乘法計(jì)算速度再次突破極限,我煉丹能更快了嗎?| 哈佛、MIT
文章出處:【微信號(hào):TheAlgorithm,微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論