年初開始,有幸參與了和圖神經網路相關的工作。對於我這個門外漢來說,最好的學習方法就是找本基礎入門的書從頭學。但是在搜了一圈後才發現,居然只找到了一本講GNN的中文書,就是這本《深入淺出圖神經網路》。不得不感慨GNN這個東西還真是夠新的。

從4月份入手一本,開始從頭讀起,前前後後花了2個多月終於把核心內容都學習完成。當然中間伴隨著工作專案的開展,也附帶著看了相關的很多內容,所以開始讀的不懂的東西,後來也能順利地理解。到6月中旬,把最後一章快速瀏覽過,決定還是寫點讀後感,留給現在一些想學習GNN的人做參考。

作為一個曾經出版行業的從業者,先習慣性地看看這本書的基本資訊:

- 2020年1月第一版第一次印刷,無印量(估計這種比較專業的,還是很新的題目的書也不會印幾本,初步猜測大概能印5000本)

- 全書200多頁,14個印張(印張是我們出版專業的術語,用來衡量印一本書要多少紙)

- 原價:89塊,只能感慨通脹夠厲害,當年這本書基本也就是20多一本。我買的這本基本打了7折,心疼一下出版社。

下面開始講講這本書的情況。總體而言,書是一本不錯的書,作者是良心寫作。內容上也對得起“深入淺出”這4個字,相關的概念都有例子做解釋,不是那種堆公式和程式碼的“高深”書。對於GNN的一些相關概念,書裡都比較通俗易懂地給出瞭解釋。同時作者也能給相關的模型和概念進行比較和分析,雖然不算是高屋建瓴,但也看得出是有深入理解的。

但是,這本書的質量被兩個問題給拉低了。一是書裡面編輯錯誤不斷,各種小錯誤;二是這本書的目標讀者不清晰,直接影響了作者的寫作和讀者閱讀體驗。

作為一個曾經的編輯,對編輯質量還是非常敏感的。這本書裡面,從文字到公式,再到圖片內容,至少出現了十幾處明顯的錯誤。有些錯誤,比如公式裡缺少了一部分,可能是編輯對數學內容不理解造成的,這個可以理解。但是有些明顯是文字和圖片內容不一致的錯誤則就是標準的編輯錯誤了。這個責編:張同學 需要好好檢討。

第二個問題就涉及到出版書籍的目標讀者的問題了。在這一點上,作者給出的目標讀者是

1。 想學習並初步實踐圖神經網路技術的;

2。 想較系統且深入理解圖神經網路技術的。

但是對於GNN而言,它是整個基於神經網路的AI的一個研究實踐方向,有點類似本科階段的專業課階段。所以它是需要學生首先學習了神經網路的基礎知識,然後再學習GNN的內容。而這本書花了接近一半的頁面(第2-4章)來講解神經網路的基礎知識,覆蓋了機器學習、神經網路、卷積網路、表徵學習。雖然這些內容和後面章節介紹GNN的內容相關,但是顯然作者既然要寫,就很難寫。太多了,佔篇幅又喧賓奪主;太少了又講不清楚。因此這個部分就變成了雞肋。對於沒有神經網路基礎的讀者,只看這些部分,基本上是看不懂的。而對於已經有了神經網路基礎,只是來學習GNN的讀者,這些內容基本上就可以忽略了。書的第1章介紹了圖相關的內容,但是隻有1章,對於圖神經網路來說,這個內容又太少了。所以全書的前半部分基本沒什麼價值。

這本書真正有價值的部分是從第5章開始到第9章。特別是第5章,從頻域分析的角度詳細講解了圖訊號處理的原理,並進一步引出了圖卷集的概念,然後介紹了GNN最早出名的GCN的內容。

第6章的分析也很好,講解了GCN的性質和優缺點。這些內容對於普通讀者來說非常好。這種總結的內容,能幫助大家建立一個學習的框架,省了大家直接看paper去總結的時間。

第7章講了現在常用的GNN的模型,也是比較好的總結。特別是其中的GNN的三種通用框架的總結,MPNN、LNNN和GN。這確實是一個幫助大家建立系統化知識體系的好內容。

第8章講解了整圖分類的模型,也是體系化的講解,非常好。這個部分的知識是GNN比較特殊的地方,因為涉及到了不少圖分析和圖機器學習的基礎知識,所以不是很容易理解。我也是看了好幾遍,對於一般讀者而言,需要提前看一些圖分析的知識。

第9章介紹了圖表徵的學習方法,這個也是蠻有趣的一個話題。不過由於GAN的流行和NLP裡面這種超大模型(Bert之流)的推廣,圖表徵的內容也倒還是容易理解。

最後的第10章基本沒啥內容,可以直接忽略。

這本書的一個特色是第5到9章裡面,每章都給了基於PyTorch的樣例程式碼。是希望讀者能夠自己上手跑一些程式碼加深理解。但是,這個部分從我個人理解而言價值不大,我自己只看一些資料處理的部分。而對於模型的部分,這些簡單的實現無論是想做實驗發paper,還是準備在公司場景裡用一用,都遠遠不夠的。

現在已經有了專門實現GNN模型的開源框架了,主流的就兩個:DGL[(Deep Graph Library)](dmlc/dgl)和PyG[(PyTorch Geometric)](rusty1s/pytorch_geometric)。國內的大廠的基本都沒啥用處。

所以如果想實際去學習GNN的模型程式碼,並且用在真實工作裡,還是去學習這兩個現成的框架,不要再去重複造輪子。裡面有太多的工程問題(坑)要解決。

總而言之,這本書對於有了一定深度學習基礎,會用PyTorch處理資料寫模型的同學,可以作為一本入門書來學習GNN。但是如果想深入的學習,還是要額外的讀很多的東西。這裡推薦斯坦福大學的CS224W的開源課程來補充圖相關的機器學習的內容,可以很好的幫助理解這本書的內容。