谷歌的Expander團隊了一種常數運行時的圖流算法,用于支持Allo應用程序中的推薦圖像回復功能。谷歌描述說,他們使用未標記的節點彼此之間的相似性來推斷它們可能屬于同一類,或者有相同的屬性,在這個案例中,就是指那些輸入的圖像、文本或者其它包含了異構圖形的數據。有監督的學習方法一直都以代價過大而著稱,尤其是當這種圖形算法需要處理并學習百萬級或十億級別的圖形時。半監督式學習方法與之相比,則大大減少了所需要的訓練數據集的大小。
各種大小各種形狀,包括圖形那樣的異構的、多模型的數據,包括文本、圖像和視頻輸入,或者這些數據的各種各樣的“數據表現”,比如圖像象素和聊天等,都可能在Allo中用于圖像回復。數據可能是從原始數據中抽取出來的關系型或結構化的數據,也可能是非結構化的、稀疏或密集型表示。
谷歌提到了示例圖表的多種屬性,但也提到這種方法并不能擴展到百萬級,或有時候十億級的圖形處理。在圖表中預測任意節點是“紅”還是“藍”的示例中,谷歌提到:
數據節點之間的關系都是通過邊來表示,并且通過每條邊的寬度來表示連接的強度……邊的強度是通過嵌入矩陣的相似性計算的——低相似性的邊就直接被忽略了……灰色表示沒有標簽的數據,而有顏色的節點就表示有標簽的數據。數據節點之間的關系都是通過邊來表示,以及通過每條邊的寬度來表示連接的強度。注意具體的圖形結構和顏色的選擇要根據具體的任務來,這種方法并不適用于大型圖形。
谷歌提供的一個與平常生活更貼近的例子是從存儲在相似性圖形中的若干個已打標簽的單詞中辨別幽默詞。
常數運行時算法是由分布式的相鄰節點算法中派生而來的,目的是在大型圖形上應用半監督式學習算法進行計算,發現單詞的感情類別,從而算出某個詞是否是幽默詞。谷歌提到了系統的復雜度空間和內存要求,但沒有提任務的復雜度、預測標簽的數量,以及做算法設計決定時的可能輸出空間因子的大小。目前谷歌沒有提供示例代碼、數據集及它們的屬性。
“在實踐中,我們會使用在圖形結構上定義的復雜優化功能,這包含了更多的對半監督式圖像學習的信息和約束,因此也導致了復雜的非凸性問題。然而,真正的挑戰在于將這種算法有效地擴展到更大的系統之上,包含幾十億個圖形節點、幾十億條邊以及幾十億種不同的標簽類型等。”
查看英文原文:Google Details Allo Recommendation Graph Processing Algorithm