企業(yè)網站建設方案書 范本網絡營銷方案設計范文
文章目錄
- ViT架構所需的大型訓練集
- 歸納偏置
- CNN 中的歸納偏置
- ViT中的歸納偏置
- 平移不變性和平移等變性
- 平移不變性
- 平移等變性
- ViT可以比CNN表現得更好
- ViT如何從訓練數據中學習?
- ViT學到了什么?
- 總結
ViT架構所需的大型訓練集
歸納偏置
歸納偏置(Inductive Bias)是指在機器學習模型中,為了使模型能夠在有限的數據上進行有效學習而引入的先驗假設或約束。它決定了模型在面對未知數據時的泛化能力。不同的模型具有不同的歸納偏置,例如卷積神經網絡(CNN)通過局部感受野和權重共享引入了空間不變性,而ViT(Vision Transformer)則減少了這類歸納偏置,更依賴于大規(guī)模數據來學習有效的特征表示。
CNN 中的歸納偏置
以下是CNN中主要的歸納偏置,它們在很大程度上決定了CNN的工作方式:
-
局部連接:在CNN中,隱藏層的每個單元僅與前一層中的部分神經元相連。這一限制的合理性基于如下假設:鄰近像素的關聯性比相隔較遠的像素更強。典型的例子是該假設應用于圖像的邊緣或輪廓識別場景。
-
權值共享:假設相同的濾波器對于檢測圖像不同部分的相同模式是有用的,那么通過卷積層,我們在整個圖像中使用同一小組權重(卷積核或濾波器)。
-
分層處理:CNN由多個卷積層組成,用于從輸入圖像中提取特征。隨著網絡從輸入層向輸出層的逐步深入,低級特征逐漸整合形成更為復雜的特征,最終實現對復雜物體、形狀的識別。此外,這些層中的卷積濾波器能學會在不同的抽象層次檢測特定的模式和特征。
-
空間不變性:CNN具有空間不變這一數學特征,這意味著即使輸入信號在空間域內移動不同的位置,模型的輸出也保持一致。這一特點源于前文提到的局部連接、權值共享以及分層處理的結合。
ViT中的歸納偏置
與CNN相比,ViT(Vision Transformer)中的歸納偏置顯著減少。ViT主要依賴自注意力機制來建模全局特征關系,缺乏CNN中的局部連接、權值共享和空間結構等先驗假設。ViT的主要歸納偏置體現在以下幾個方面:
- 位置編碼:ViT通過顯式的位置編碼向模型注入位置信息,彌補自注意力機制對空間結構的感知能力不足。
- 分塊輸入:ViT將圖像劃分為固定大小的patch,每個patch作為一個“單詞”輸入Transformer,這種分塊方式本身是一種歸納偏置。
- 層歸一化與殘差連接:這些結構有助于穩(wěn)定訓練和信息流動,但與CNN的空間歸納偏置不同。
由于ViT缺乏強歸納偏置,它更依賴于大規(guī)模數據集來學習有效的特征表達。這也是ViT在小數據集上表現不如CNN,但在大數據集上能夠取得優(yōu)異性能的原因之一。
平移不變性和平移等變性
平移不變性
平移不變性(Translation Invariance)是指:當輸入數據發(fā)生平移(即整體移動)時,模型對輸入的識別或輸出結果不會發(fā)生變化。
舉例說明:
- 在圖像識別中,如果一只貓在圖片左邊還是右邊,理想的模型都能識別出“貓”,這就是平移不變性。
- 卷積神經網絡(CNN)通過卷積操作和池化層,天然具備一定的平移不變性。
原理簡述:
平移不變性讓模型關注“是什么”而不是“在哪里”,提升了模型對輸入位置變化的魯棒性。
注意:
ViT(Vision Transformer)等基于自注意力機制的模型,原生并不具備平移不變性,需要通過數據增強等方式提升這方面能力。
平移等變性
平移等變性(Translation Equivariance)是指:當輸入數據發(fā)生平移時,模型的輸出會以相同的方式發(fā)生平移。也就是說,輸出會“跟著”輸入的平移而平移。
舉例說明:
- 假設有一張圖片,圖片中的物體從左邊移動到右邊。對于卷積神經網絡(CNN)中的卷積層來說,卷積操作的結果(特征圖)也會相應地向右移動。這說明卷積層對輸入的平移是等變的。
- 例如,輸入 x x x 向右平移 k k k 個像素,卷積操作 f f f 滿足 f ( T k x ) = T k f ( x ) f(T_k x) = T_k f(x) f(Tk?x)=Tk?f(x),其中 T k T_k Tk? 表示平移操作。
代碼演示(PyTorch):
import numpy as np
import matplotlib.pyplot as plt
from scipy.ndimage import convolvedef translate_image(img, dx, dy):"""平移圖像(不調用OpenCV)參數:img: 輸入圖像(2D數組)dx: X軸平移量(像素)dy: Y軸平移量(像素)返回:translated_img: 平移后的圖像"""h, w = img.shape# 創(chuàng)建空矩陣存儲結果translated_img = np.zeros_like(img)for y in range(h):for x in range(w):new_x, new_y = x - dx, y - dyif 0 <= new_x < w and 0 <= new_y < h:translated_img[y, x] = img[new_y, new_x]return translated_imgdef apply_convolution(img, kernel):"""應用簡單卷積操作(驗證等變性)"""return convolve(img, kernel, mode='constant')# 生成測試圖像(中心帶矩形)
image = np.zeros((100, 100))
image[40:60, 40:60] = 1 # 中心矩形# 定義卷積核(邊緣檢測)
kernel = np.array([[1, 0, -1],[1, 0, -1],[1, 0, -1]])# 實驗1: 先卷積后平移
conv_result = apply_convolution(image, kernel)
translated_conv = translate_image(conv_result, 20, 20)# 實驗2: 先平移后卷積
translated_img = translate_image(image, 20, 20)
conv_translated = apply_convolution(translated_img, kernel)# 可視化結果
fig, axes = plt.subplots(2, 2, figsize=(10, 10))
axes[0, 0].imshow(image, cmap='gray')
axes[0, 0].set_title("原始圖像")
axes[0, 1].imshow(conv_result, cmap='gray')
axes[0, 1].set_title("卷積結果")
axes[1, 0].imshow(translated_conv, cmap='gray')
axes[1, 0].set_title("先卷積后平移")
axes[1, 1].imshow(conv_translated, cmap='gray')
axes[1, 1].set_title("先平移后卷積")plt.rcParams['font.sans-serif']=['Microsoft YaHei'] #用來正常顯示中文標簽
plt.show()
關鍵代碼解析
?
-
?平移函數 (translate_image)??
- 通過循環(huán)逐像素移動圖像,保留原始數據。
- 使用條件判斷
0 <= new_x < w
確保平移后不越界。
-
?卷積操作 (apply_convolution)??
- 使用
scipy.ndimage.convolve
實現卷積,模擬CNN中的特征提取。 - 邊緣檢測核突出平移對特征位置的影響。
- 使用
-
?等變性驗證邏輯??
- ?路徑1??:原始圖像 → 卷積 → 平移 → 結果A
- 路徑2??:原始圖像 → 平移 → 卷積 → 結果B
- 等變性成立??:結果A與結果B應完全一致(特征位置同步偏移)
注意:
- 卷積層天然具備平移等變性,這也是CNN能夠有效處理圖像等空間數據的關鍵原因之一。
- 池化層(如最大池化)會破壞等變性,但提升了平移不變性。
- ViT等自注意力模型不具備平移等變性,需要依賴數據增強等手段。
ViT可以比CNN表現得更好
通過前文討論歸納偏置時所固化的那些假設,相比全連接層,CNN中的參數量大幅減少。另外,相比CNN,ViT往往具有更多參數,也就需要更多的訓練數據。
在沒有大規(guī)模預訓練的情況下,ViT在性能上可能不如流行的CNN架構,但如果有足夠大的預訓練數據集,它可以表現得非常出色。語言Transformer模型中的首選方法是無監(jiān)督預訓練,而ViT通常使用大型的有標簽數據集進行預訓練,并采用常規(guī)的監(jiān)督學習方式。
ViT如何從訓練數據中學習?
ViT(Vision Transformer)通過端到端的監(jiān)督學習,從大規(guī)模標注數據中自動學習圖像的特征表示。其主要學習過程如下:
- 分塊與嵌入:ViT首先將輸入圖像劃分為固定大小的patch,并將每個patch展平后通過線性變換映射到高維特征空間,形成patch嵌入。
- 位置編碼:為每個patch嵌入加上位置編碼,使模型能夠感知patch的空間位置信息。
- 自注意力機制:多個Transformer編碼器層通過自注意力機制建模patch之間的全局依賴關系,捕捉圖像中不同區(qū)域的長距離聯系。
- 特征聚合與分類:最終通過分類token或全局池化等方式聚合特征,輸出分類結果。
ViT學到了什么?
- 全局特征關系:ViT能夠捕捉圖像中不同區(qū)域之間的全局依賴,而不僅僅是局部特征。
- 空間結構信息:雖然ViT沒有CNN那樣的強空間歸納偏置,但通過大規(guī)模數據和位置編碼,模型可以自動學習到一定的空間結構規(guī)律。
- 多層次抽象特征:Transformer層堆疊后,ViT能夠逐步提取從低級到高級的圖像語義特征。
- 適應性特征表達:ViT可以根據任務和數據自動調整其特征表達方式,不局限于固定的卷積核模式。
總之,ViT依賴大規(guī)模數據,通過自注意力機制和深層網絡結構,學習到豐富且靈活的圖像特征表達,從而在視覺任務中取得優(yōu)異表現。
總結
本文主要介紹了ViT(Vision Transformer)與CNN在歸納偏置、平移不變性/等變性等方面的差異。CNN通過局部連接、權值共享等強歸納偏置,天然具備空間結構感知和一定的平移不變性/等變性,能在小數據集上表現良好。ViT則弱化了這些歸納偏置,依賴自注意力機制和大規(guī)模數據集,通過位置編碼和分塊輸入等方式學習全局特征關系。雖然ViT在小數據集上不如CNN,但在大規(guī)模有標簽數據集預訓練下,能夠學到豐富的特征表達,取得優(yōu)異性能。整體來看,ViT的成功依賴于大數據和強大的模型容量,通過端到端學習實現了對視覺任務的高效建模。