盡管 CNN 在引入 LeNet 后在計算機視覺和機器學習社區中廣為人知 (LeCun等人,1995 年),但它們并沒有立即占據該領域的主導地位。盡管 LeNet 在早期的小型數據集上取得了不錯的成績,但在更大、更真實的數據集上訓練 CNN 的性能和可行性尚未確定。事實上,在 1990 年代初期和 2012 年分水嶺結果之間的大部分時間里(Krizhevsky等人,2012 年),神經網絡經常被其他機器學習方法超越,例如內核方法(Sch?lkopf 和 Smola,2002 年) , 集成方法 ( Freund et al. , 1996 )和結構化估計 ( Taskar et al. , 2004 )。
對于計算機視覺,這種比較可能并不完全準確。也就是說,盡管卷積網絡的輸入由原始或輕微處理(例如,通過居中)的像素值組成,但從業者永遠不會將原始像素輸入傳統模型。相反,典型的計算機視覺管道由人工設計的特征提取管道組成,例如 SIFT ( Lowe, 2004 )、SURF ( Bay et al. , 2006 )和視覺詞袋 ( Sivic and Zisserman, 2003 )。不是學習這些特征,而是精心制作這些特征. 大多數進步一方面來自于對特征提取有更聰明的想法,另一方面來自于對幾何學的深刻洞察(Hartley和 Zisserman,2000 年) 。學習算法通常被認為是事后才想到的。
盡管在 1990 年代出現了一些神經網絡加速器,但它們的功能還不足以制作具有大量參數的深度多通道、多層 CNN。例如,NVIDIA 的 GeForce 256 從 1999 年開始能夠每秒處理最多 4.8 億次操作 (MFLOP),而沒有任何有意義的編程框架用于游戲以外的操作。今天的加速器每臺設備能夠執行超過 300 TFLOPs(NVIDIA 的 Ampere A100)。請注意,FLOP是浮點運算,例如乘法和加法。此外,數據集仍然相對較小:OCR on 60,000 low-resolution28×28像素圖像被認為是一項極具挑戰性的任務。除了這些障礙之外,訓練神經網絡的關鍵技巧包括參數初始化啟發式 (Glorot 和 Bengio,2010 年)、隨機梯度下降的巧妙變體(Kingma 和 Ba,2014 年)、非壓縮激活函數 (Nair 和 Hinton,2010 年),和有效的正則化技術 ( Srivastava et al. , 2014 )仍然缺失。
因此,與其訓練端到端(像素到分類)系統,經典管道看起來更像這樣:
-
獲得一個有趣的數據集。在早期,這些數據集需要昂貴的傳感器。例如, 1994 年的Apple QuickTake 100擁有高達 0.3 兆像素 (VGA) 的分辨率,能夠存儲多達 8 張圖像,而所有這些的價格都是 1,000 美元。
-
通過一組標準的特征提取器輸入數據,例如 SIFT(尺度不變特征變換)(Lowe,2004 年)、SURF(加速穩健特征) (Bay等人,2006 年),或任何數量的其他手-調整管道。OpenCV 至今仍提供 SIFT 提取器!
-
將生成的表示轉儲到您最喜歡的分類器中,可能是線性模型或內核方法,以訓練分類器。
如果您與機器學習研究人員交談,他們認為機器學習既重要又美麗。優雅的理論證明了各種分類器的特性 (Boucheron等人,2005 年),凸優化 (Boyd 和 Vandenberghe,2004 年)已成為獲得它們的中流砥柱。機器學習領域蓬勃發展、嚴謹且非常有用。但是,如果您與計算機視覺研究人員交談,您會聽到截然不同的故事。他們會告訴你,圖像識別的骯臟真相是特征、幾何 (Hartley 和 Zisserman,2000 年,Hartley 和 Kahl,2009 年)和工程學,而不是新穎的學習算法,推動了進步。計算機視覺研究人員有理由相信,與任何學習算法相比,稍微更大或更清潔的數據集或稍微改進的特征提取管道對最終準確性的影響要大得多。
import tensorflow as tf
from d2l import tensorflow as d2l
8.1.1. 表征學習
另一種表達事態的方法是管道中最重要的部分是表示。直到 2012 年,表示法主要是機械計算的。事實上,設計一組新的特征函數、改進結果并編寫方法是一種突出的論文類型。SIFT (Lowe,2004)、SURF (Bay等人,2006)、HOG(定向梯度直方圖)(Dalal 和 Triggs,2005)、視覺詞袋 (Sivic 和 Zisserman,2003)和類似的特征提取器統治了棲息。
另一組研究人員,包括 Yann LeCun、Geoff Hinton、Yoshua Bengio、Andrew Ng、Shun-ichi Amari 和 Juergen Schmidhuber,有不同的計劃。他們認為應該學習特征本身。此外,他們認為要合理復雜,特征應該由多個聯合學習層分層組成,每個層都有可學習的參數。在圖像的情況下,最低層可能會檢測邊緣、顏色和紋理,類似于動物的視覺系統如何處理其輸入。特別是,視覺特征的自動設計,例如通過稀疏編碼獲得的特征(Olshausen 和 Field,1996 年)在現代 CNN 出現之前仍然是一個開放的挑戰。直到 Dean等人。( 2012 ), Le ( 2013 ),從圖像數據自動生成特征的想法獲得了顯著的吸引力。
第一個現代 CNN (Krizhevsky等人,2012 年)以其發明者之一 Alex Krizhevsky 的名字命名為 AlexNet ,主要是對 LeNet 的進化改進。它在 2012 年的 ImageNet 挑戰賽中取得了優異的成績。
有趣的是,在網絡的最低??層,該模型學習了類似于一些傳統過濾器的特征提取器。 圖 8.1.1顯示了較低級別的圖像描述符。網絡中的更高層可能基于這些表示來表示更大的結構,如眼睛、鼻子、草葉等。甚至更高的層可能代表整個對象,如人、飛機、狗或飛盤。最終,最終的隱藏狀態學習圖像的緊湊表示,總結其內容,這樣屬于不同類別的數據可以很容易地分開。
AlexNet (2012) 及其前身 LeNet (1995) 共享許多架構元素。這就引出了一個問題:為什么花了這么長時間?一個關鍵區別在于,在過去二十年中,可用的數據量和計算能力顯著增加。因此 AlexNet 更大:與 1995 年可用的 CPU 相比,它使用更多數據和更快的 GPU 進行訓練。
8.1.1.1。缺少的成分:數據
具有多層的深度模型需要大量數據才能進入顯著優于基于凸優化的傳統方法(例如,線性和核方法)的狀態。然而,鑒于計算機的存儲容量有限、(成像)傳感器的相對費用以及 1990 年代相對緊張的研究預算,大多數研究都依賴于微小的數據集。許多論文依賴于 UCI 的數據集集合,其中許多僅包含數百或(幾)數千張以低分辨率捕獲的圖像,并且通常具有人為清潔的背景。
2009 年,ImageNet 數據集發布 (Deng等人,2009 年),挑戰研究人員從 100 萬個示例中學習模型,每個示例來自 1000 個不同類別的對象 1000 個。類別本身基于 WordNet 中最流行的名詞節點(Miller,1995)。ImageNet 團隊使用 Google Image Search 為每個類別預過濾大型候選集,并使用 Amazon Mechanical Turk 眾包管道來確認每個圖像是否屬于相關類別。這個規模是前所未有的,超過其他規模超過一個數量級(例如,CIFAR-100 有 60,000 張圖像)。另一個方面是圖像的分辨率相對較高224×224 像素,不同于 8000 萬大小的 TinyImages 數據集 (Torralba等人,2008 年),包括 32×32像素縮略圖。這允許形成更高級別的特征。相關競賽被稱為 ImageNet 大規模視覺識別挑戰賽 (Russakovsky等人,2015 年),推動了計算機視覺和機器學習研究的發展,挑戰研究人員確定哪些模型在比學術界之前考慮的更大的規模上表現最好。最大的視覺數據集,如 LAION-5B (Schuhmann等人,2022 年)包含數十億張帶有附加元數據的圖像。
8.1.1.2。缺少的成分:硬件
深度學習模型是計算周期的貪婪消費者。訓練可能需要數百個時期,每次迭代都需要通過多層計算昂貴的線性代數運算來傳遞數據。這是為什么在 1990 年代和 2000 年代初期,基于更有效優化的凸目標的簡單算法受到青睞的主要原因之一。
圖形處理單元(GPU) 被證明是使深度學習可行的游戲規則改變者。這些芯片長期以來一直被開發用于加速圖形處理以造福于計算機游戲。特別是,它們針對高吞吐量進行了優化4×4 許多計算機圖形任務都需要矩陣向量積。幸運的是,數學與計算卷積層所需的數學驚人地相似。大約在那個時候,NVIDIA 和 ATI 已經開始針對通用計算操作優化 GPU (Fernando,2004 年),甚至將它們作為 通用 GPU (GPGPU) 推向市場。
為了提供一些直覺,請考慮現代微處理器 (CPU) 的內核。每個內核都相當強大,以高時鐘頻率運行并運行大型緩存(高達幾兆字節的 L3)。每個內核都非常適合執行各種指令,具有分支預測器、深度管道、專門的執行單元、推測執行和許多其他功能,使其能夠運行具有復雜控制流的各種程序。
評論
查看更多