發布日期:2022-10-09 點擊率:56
這篇文章討論了張量方法,它們是如何在 NVIDIA 中使用的,以及它們是如何成為下一代人工智能算法的核心。
現代機器學習中的張量
張量將矩陣推廣到二維以上,在現代機器學習中無處不在。從深層神經網絡特征到視頻或功能磁共振成像數據,這些高階張量的結構往往至關重要。
深度神經網絡通常在高階張量之間映射。事實上,正是深層卷積神經網絡保持和利用局部結構的能力,使得當前的性能水平以及大數據集和高效硬件成為可能。張量方法使您能夠為單個層或整個網絡進一步保留和利用該結構。
圖 1 深張量網絡圖
將張量方法與深度學習相結合可以產生更好的模型,包括:
通過更好的歸納偏差,實現更好的性能和通用性
通過隱式(低秩結構)或顯式(張量衰減)正則化改進魯棒性
簡約模型,參數數量大幅減少
通過直接有效地操作因式化張量,提高了計算速度
一個例子是因式卷積。使用 CP 結構,可以分解卷積的核并將其高效地表示為可分離的核。這將解耦尺寸標注并使您能夠轉換,例如在二維上進行培訓,并在利用二維中學習到的信息的同時將其推廣到三維。
圖 2 分解卷積的過程:二維信息如何轉化為三維信息。
基于張量的深度神經網絡的正確實現可能很棘手。主要的神經網絡庫,如 PyTorch 或 TensorFlow 不提供基于張量代數方法的層,并且對稀疏張量的支持有限。在 NVIDIA 中,我們通過 TensorLy 項目和 Minkowski 引擎,領導開發了一系列工具,以使張量方法在深度學習中無縫使用。
張力生態系統
TensorLy 為張量方法提供了一個高級 API ,包括分解和代數。
它使您能夠輕松地使用張量方法,而不需要大量的背景知識。您可以選擇并無縫集成您選擇的計算后端( NumPy 、 PyTorch 、 MXNet 、 TensorFlow 、 CuPy 或 JAX ),而無需更改代碼。
圖 3 張力火炬層圖
TensorLy Torch 是一個新的庫,它構建在 TensorLy 之上,并提供實現這些 tensor 操作的 PyTorch 層。它們可以開箱即用,并且很容易集成到任何深度神經網絡中。它的核心是因式分解張量的概念:張量以分解形式直接表示、存儲和操作。只要可能,操作就直接對這些分解的張量進行操作。
這些因子化張量可用于有效地參數化深層神經網絡層,如因子化卷積和線性層。最后,張量掛鉤使您能夠無縫地應用諸如廣義套索和張量衰減等技術,以提高泛化和健壯性。
空間稀疏張量與 Minkowski 引擎
在許多高維問題中,隨著空間體積的增加,數據變得稀疏。稀疏性主要嵌入在空間維度中,您可以在其中計算距離。這種稀疏性最著名的例子是 3D 數據,如網格和掃描。
下面是一個有兩張床的房間的三維重建示例。它所占用的三維邊界體積可能相當大,但數據或三維曲面重建只占用空間的一小部分。在本例中, 95.5% 的空間為空,小于 5% 的空間包含有效曲面。如果要處理此類數據,使用稠密張量表示此類數據不僅會浪費大量內存,還會浪費計算量。
在這種情況下,您可以使用稀疏表示法來構建神經網絡或學習算法,該表示法不會在空白空間浪費內存和計算。具體來說,您可以使用稀疏張量表示此類數據,這是稀疏數據最廣泛使用的表示形式之一。稀疏張量使用一對非零值的位置和值表示數據。
Minkowski 發動機是 PyTorch 的擴展,它為稀疏張量提供了一組廣泛的神經網絡層。 Minkowski 發動機中的所有功能都支持 CPU 和 CUDA 操作,其中 CUDA 操作在 CPU s 生產線頂部加速超過 100 倍。
圖 5 稀疏表示圖:隨時間變化的非零元素數量,加速比上的非零元素數。
關于作者
Jean Kossaifi 是 NVIDIA 的高級研究科學家。在此之前,他是劍橋三星人工智能中心的研究科學家。他在自然條件下的面部分析和面部情感評估方面做了大量工作,這是一個彌合計算機視覺和機器學習之間差距的領域。他目前的重點是機器學習的張量方法。特別是,將這些方法與深度學習有效地結合起來,開發出更好的模型,這些模型在內存和計算效率方面都是高效的,同時對噪聲、隨機或對抗性以及域轉移更具魯棒性。他是 TensorLy 的創建者, TensorLy 是 Python 中張量方法和深度張量化神經網絡的高級 API ,旨在使張量學習變得簡單易懂。 Jean 在倫敦帝國理工學院獲得博士和碩士學位,并與 Maja Pantic 教授一起工作。他還擁有法國工程文憑和應用數學、計算和金融理學碩士學位,并同時獲得高等數學理學學士學位。
審核編輯:郭婷
下一篇: PLC、DCS、FCS三大控
上一篇: KUKA C4更換機器人的2