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