深度學習擅長處理結構規則的多維資料(歐氏空間),但現實生活中,很多不規則的資料如:社群、電子商務、交通領域,多是之間的關聯資料。彼此間以龐大的節點基礎與複雜的互動關係形成了特有的圖結構(或稱拓撲結構資料),這些資料稱為「非歐氏空間資料」,並不適合用深度學習的模型去分析。
圖神經網路(Graph Neural Networks, GNN)是為了處理結構不規則資料而產生的,主要利用圖結構的資料,透過機器學習的方法進行擬合、預測等。
〇 在結構化場景中,GNN 被廣泛應用在社群網站、推薦系統、物理系統、化學分子預測、知識圖譜等領域。
〇 在非結構化領域,GNN 可以用在圖型和文字等領域。
〇 在其他領域,還有圖生成模型和使用 GNN 來解決組合最佳化問題的場景。
市面上充滿 NN 的書,但卻沒有一本完整說明 GNN,倘若不快點學這個新一代的神經網路,你會用的普通神經網路馬上就會落伍了!非歐氏空間才是最貼近人類生活的世界,而要真正掌握非歐氏空間的問題解決,GNN 是你一定要學的技術,就由本書一步步帶領你完全攻略!
〇 使用 Graph 概念取代傳統的歐氏空間神經元
〇 最好用的 PyTorch + Anaconda + Jupyter
〇 從基礎的 CNN、RNN、GAN 開始上手神經網路
〇 了解基礎的啟動函數、損失函數、L1/L2、交叉熵、Softmax 等概念
〇 NLP 使用神經網路處理 + 多頭注意力機制
〇 Few-shot/Zero-shot 的神經網路設計
〇 空間域的使用,使用 DGL、Networkx
〇 利用 GNN 進行論文分類
本書特色
~GNN 最強入門參考書~
● 以初學者角度從零開始講解,消除讀者學習過程跳躍感
● 理論和程式結合,便於讀者學以致用
● 知識系統,逐層遞進
● 內容貼近技術趨勢
● 圖文結合,化繁為簡
● 在基礎原理之上,注重通用規律
作者簡介:
李金洪
精通 C、Python、Java 語言,擅長神經網路、演算、協定分析、移動互聯網安全架構等技術,先後擔任過 CAD 演算工程師、架構師、專案經理、部門經理等職位。參與過深度學習領域某移動互聯網後臺的 OCR 項目,某娛樂節目機器人的語音辨識、聲紋識別專案,金融領域的若干分類專案。
作者序
在深度神經網路技術剛剛興起的那幾年,圖型、語音、文字等形式的資料已經可以在深度學習中被極佳地應用,並獲得了很好的效果,這促使大量的相關應用進入實用階段,如人臉辨識、語音幫手和機器翻譯等。儘管如此,深度學習一直無法極佳地對其他形式的資料 (如圖資料) 進行有效處理。圖資料在業界有更多的應用場景,如社群網站場景中,可以找到圖資料的應用。圖神經網路的出現極佳地填補了上述技術空白,實現了圖資料與深度學習技術的有效結合。圖神經網路是一類基於深度學習處理圖域資訊的方法。它是圖型分析方法與深度神經網路的融合,涉及神經網路和圖型分析的知識。
本書特色
(1) 知識系統,逐層遞進
(2) 內容貼近技術趨勢
本書介紹的知識與近年來發表的圖神經網路論文中涉及的技術同步。為了拓寬讀者的視野,本書在介紹原理和應用的同時,還附上相關的論文編號。
(3) 圖文結合,化繁為簡
本書在介紹模型結構、技術原理的同時,配有大量插圖。這些圖將模型中的資料流程向視覺化,展示模型擬合能力,細化某種技術的內部原理,直觀反映模型的內部結構,方便讀者簡單、方便地了解和掌握相關知識。
(4) 理論和實踐相結合,便於讀者學以致用
本書在撰寫時採用了兩種介紹知識的方式:
〇 先介紹基礎知識,再對該基礎知識進行程式實現;
〇 直接從實例入手,在實現過程中,對對應基礎知識進行詳解。
為了不讓讀者閱讀時感到枯燥,本書將上述兩種方式穿插使用。
在重要的基礎知識後面,本書用特殊格式的文字列出提示,這些提示是作者多年的經驗累積,希望可以幫助讀者在學習過程中掃除障礙,消除困惑,抓住重點。
(5) 在基礎原理之上,注重通用規律
從原理的角度介紹深度學習與圖神經網路是本書的一大亮點。本書說明的原理不是晦澀的數學公式,而是通俗易懂、化繁為簡的知識。本書從單一神經元的原理開始,說明了神經網路的作用;接著從生物視覺的角度介紹了卷積神經網路 (用容易了解的語言說明了卷積分、離散積分、Sobel演算法等的原理);隨後從人類記憶規律的角度解釋了 RNN;然後從熵的角度系統地介紹了非監督模型的統一規律和相互資訊等前端技術;最後從深度學習的角度介紹了圖卷積的實現過程,並將該過程延伸到空間域的圖神經網路實現方法,同時沿著空間域的方向進行深入,並結合深度學習中的殘差結構、注意力、相互資訊等基礎理論,介紹了更多的圖神經網路模型。
(6) 站在初學者的角度講解,內容系統,更易學習
考慮到初學者的知識儲備不足,因此,從 PyTorch 框架的安裝、使用,到向量、矩陣、張量的基礎變換,再到熵論,本書均從零開始系統介紹,力爭消除讀者學習過程中的跳躍感。只要讀者掌握了 Python,就可以閱讀本書。
由於撰寫過程倉促,書中難免存在不足之處,希望讀者們閱讀後給予回饋,以便我們對本書進行修訂和完善。本書編輯的聯繫電子郵件為 zhangtao@ptpress.com.cn。本書由大蛇智慧網站提供有關內容的技術支援。在閱讀過程中,如有不了解之處,可到討論區 https://bbs.aianaconda.com 提問。
作者
在深度神經網路技術剛剛興起的那幾年,圖型、語音、文字等形式的資料已經可以在深度學習中被極佳地應用,並獲得了很好的效果,這促使大量的相關應用進入實用階段,如人臉辨識、語音幫手和機器翻譯等。儘管如此,深度學習一直無法極佳地對其他形式的資料 (如圖資料) 進行有效處理。圖資料在業界有更多的應用場景,如社群網站場景中,可以找到圖資料的應用。圖神經網路的出現極佳地填補了上述技術空白,實現了圖資料與深度學習技術的有效結合。圖神經網路是一類基於深度學習處理圖域資訊的方法。它是圖型分析方法與深度神經網路的融合,涉及...
目錄
【第一篇 入門 – PyTorch 基礎】
第 1 章 快速了解人工智慧與 PyTorch
1.1 圖神經網路與深度學習
1.2 PyTorch 是做什麼的
1.3 PyTorch 的特點
1.4 PyTorch 與 TensorFlow 各有所長
1.5 如何使用本書學好深度學習
第 2 章 架設開發環境
2.1 下載及安裝 Anaconda
2.2 安裝 PyTorch
2.3 熟悉 Anaconda 3 的開發工具
2.4 測試開發環境
第 3 章 PyTorch 基本開發步驟 -- 用邏輯回歸擬合二維資料
3.1 實例 1:從一組看似混亂的資料中找出規律
3.2 模型是如何訓練出來的
3.3 複習
第 4 章 快速上手 PyTorch
4.1 神經網路中的幾個基底資料型態
4.2 張量類別的基
4.3 張量與 NumPy
4.4 在 CPU 和 GPU 控制的記憶體中定義張量
4.5 生成隨機值張
4.6 張量間的數學運算
4.7 張量間的資料操作
4.8 Variable 類型與自動微分模組
4.9 定義模型結構的步驟與方法
4.10 模型的網路層
第 5 章 神經網路的基本原理與實現
5.1 了解深度學習中的神經網路與神經元
5.2 深度學習中的基礎神經網路模型
5.3 什麼是全連接神經網路
5.4 啟動函數--加入非線性因素,彌補線性模型缺陷
5.5 啟動函數複習
5.6 訓練模型的步驟與方法
5.7 神經網路模組 (nn) 中的損失函數
5.8 Softmax 演算法 -- 處理分類問題
5.9 最佳化器模組
5.10 學習率衰減 -- 在訓練的速度與精度之間找到平衡
5.11 實例 4:預測鐵達尼號船上的生存乘客
【第二篇 基礎 -- 神經網路的監督訓練與無監督訓練】
第 6 章 實例 5:辨識黑白圖中的服裝圖案
6.1 熟悉樣本:了解 Fashion-MNIST 資料集
6.2 製作批次資料集
6.3 建構並訓練模型
6.4 載入模型,並用其進行預測
6.5 評估模型
6.6 擴充:多顯示卡平行訓練
第 7 章 監督學習中的神經網路
7.1 從視覺的角度了解卷積神經網路
7.2 卷積神經網路的結構
7.3 卷積神經網路的實現
7.4 深層卷積神經網路
7.5 循環神經網路結構
7.6 常見的循環神經網路單元及結構
7.7 實例 11:用循環神經網路訓練語言模型
7.8 過擬合問題及最佳化技巧
7.9 神經網路中的注意力機制
7.10 實例 18:利用注意力循環神經網路對圖片分類
第 8 章 無監督學習中的神經網路
8.1 快速了解資訊熵
8.2 通用的無監督模型 -- 自編碼神經網路與對抗神經網路
8.3 自編碼神經網路
8.4 實例 19:用變分自編碼神經網路模型生成模擬資料
8.5 實例 20:用條件變分自編碼神經網路生成可控模擬資料
8.6 對抗神經網路
8.7 實例 21:用 WGAN-gp 模型生成模擬資料
8.8 實例 22:用條件 GAN 生成可控模擬資料
8.9 實例 23:實現帶有 W 散度的 GAN -- WGAN-div 模型
8.10 散度在神經網路中的應用
8.11 實例 25:用最大化深度相互資訊模型執行圖片搜索器
第 9 章 快速了解圖神經網路 -- 少量樣本也可以訓練模型
9.1 圖神經網路的相關基礎知識
9.2 矩陣的基礎
9.3 鄰接矩陣的幾種操作
9.4 實例 26:用圖卷積神經網路為論文分類
9.5 圖卷積神經網路
9.6 擴充實例:用 Multi-sample Dropout 最佳化模型的訓練速度
9.7 從圖神經網路的角度看待深度學習
9.8 圖神經網路使用拉普拉斯矩陣的原因
第 10 章 基於空間域的圖神經網路實現
10.1 重新認識圖卷積神經網路
10.2 實例 27:用圖注意力神經網路為論文分類
10.3 圖神經網路常用函數庫 – DGL 函數庫
10.4 DGLGraph 圖的基本操作
10.5 實例 28:用帶有殘差結構的多層 GAT 模型實現論文分類
10.6 圖卷積模型的缺陷
10.7 實例 29:用簡化圖卷積模型實現論文分類
10.8 實例 30:用圖濾波神經網路模型實現論文分類
10.9 實例 31:用深度圖相互資訊模型實現論文分類
10.10 實例 32:用圖同構網路模型實現論文分類
10.11 實例 33:用APPNP模型實現論文分類
10.12 實例 34:用JKNet模型實現論文分類
10.13 複習
【第一篇 入門 – PyTorch 基礎】
第 1 章 快速了解人工智慧與 PyTorch
1.1 圖神經網路與深度學習
1.2 PyTorch 是做什麼的
1.3 PyTorch 的特點
1.4 PyTorch 與 TensorFlow 各有所長
1.5 如何使用本書學好深度學習
第 2 章 架設開發環境
2.1 下載及安裝 Anaconda
2.2 安裝 PyTorch
2.3 熟悉 Anaconda 3 的開發工具
2.4 測試開發環境
第 3 章 PyTorch 基本開發步驟 -- 用邏輯回歸擬合二維資料
3.1 實例 1:從一組看似混亂的資料中找出規律
3.2 模型是如何訓練出來的
3.3 複習
第 4 章 快速上手 PyTorch
4.1 神經網路...