曉查 發(fā)自 凹非寺
量子位 報道 | 公眾號 QbitAI
鉆研機器學(xué)習(xí)離不開線性代數(shù),對于初學(xué)者來說,矩陣、向量還容易理解,到了 張量這個概念就變得復(fù)雜了起來。
只因張量的乘法腳標(biāo)太多,讓人頭大。而張量又是NumPy、TensorFlow等工具中必不可少的一種變量。如何理解它呢?
有一位來自紐約市立大學(xué)的小姐姐Tai-Danae,用手繪的方式介紹了一種表示張量乘法的直觀方法,博客文章在初學(xué)者中廣受好評。
之后,又有一位來自印度理工學(xué)院的小哥,用3blue1brown的數(shù)學(xué)動畫工具 manim,把張量乘法做成了動畫,通俗演示了 張量乘法的運算過程,淺顯易懂。
下面就讓我們來看看他們是如何圖解張量運算的。
愛因斯坦求和約定
在了解張量運算前,先解釋一下愛因斯坦求和約定。
愛因斯坦求和約定是愛因斯坦在研究相對論時提出的。由于相對論中經(jīng)常用到張量乘積運算,愛因斯坦發(fā)明了一種簡化寫法,后來經(jīng)常被人們所使用。
比如兩個矩陣的乘積,定義為:
仔細(xì)觀察,你可以發(fā)現(xiàn)矩陣A的第二個腳標(biāo)和矩陣B第一個腳標(biāo)相同,都是k。
即A的第k行乘以B的第k列對應(yīng)元素。最后再把乘積相加,最后的結(jié)果里k消失了,所以對k求和的符號是完全多余的。
所以愛因斯坦規(guī)定,凡是遇到腳標(biāo)相同的情況,就表示對這個腳標(biāo)求和,把求和符號拿掉:
張量運算的公式因此得到了大大的簡化。
Rajat發(fā)現(xiàn)如果把矩陣的兩個維度變成兩個“觸角”,把相同腳標(biāo)的“觸角”連接起來就是矩陣乘法:
用圖表示張量
Rajat的張量乘積動畫是自己領(lǐng)悟的,其實早在他之前,就已經(jīng)有人引入了“張量網(wǎng)絡(luò)”,它用一個節(jié)點和伸出去的幾條線來表示張量。
線的條數(shù)等于張量的階數(shù),矩陣是二階張量,所以有兩條線:
這是來自Tai-Danae手繪圖。另外,標(biāo)量可以看做零階張量,向量可以看做一階張量,矩陣是二階張量,以此類推:
上面的矩陣乘法里,對于相同的腳標(biāo),就等于是一條線,于是兩個矩陣M和N連接了起來:
經(jīng)過乘法運算后,得到的張量只有兩個向外的邊,可以把中間兩個節(jié)點壓縮成一個節(jié)點:
所以矩陣乘以矩陣仍然是一個矩陣(二階張量)。
張量乘積的圖表示
Rajat在“張量網(wǎng)絡(luò)”概念的基礎(chǔ)上,加入了一組視頻,更生動地表示了幾種常見的張量運算。
矩陣×向量:
矩陣×矩陣:
阿達(dá)瑪乘積:
外積:
One More Thing
最后還有一種特殊情況,那就是矩陣的“跡”(trace):
就是對M中行數(shù)與列數(shù)相等的元素求和,相當(dāng)于把自己的兩個“觸角”連在一起,形成一個閉環(huán)。
矩陣的跡滿足如下的循環(huán)規(guī)律:
tr(ABC)=tr(CAB)=tr(BCA)
如果用圖示法,就能更好地理解它:
參考鏈接:
https://rajatvd.github.io/Factor-Graphs/
https://math3ma/blog/matrices-as-tensor-network-diagrams
— 完—
大咖齊聚!量子位MEET大會精彩回放
量子位 MEET 2020 智能未來大會精彩回放來襲!李開復(fù)、倪光南、景鯤、周伯文、吳明輝、曹旭東、葉杰平、唐文斌、王硯峰、黃剛、馬原等AI大咖與你一起讀懂人工智能。掃碼觀看回放吧~ ~
跟大咖交流 | 進入AI社群
量子位 QbitAI · 頭條號簽約作者
?'?' ? 追蹤AI技術(shù)和產(chǎn)品新動態(tài)
喜歡就點「在看」吧 !


