觀念教學
卷積神經網路 (CNN) 擅長影像辨識,是電腦視覺領域最重要的架構。
白話說明
人看圖片時會先注意邊緣、顏色、形狀,再組合成「這是一隻貓」。CNN 也一樣:卷積層像一個個小濾鏡在圖片上滑動,淺層抓邊緣線條,深層抓眼睛耳朵,最後組合判斷「這是貓」。
核心結構
卷積層(提取特徵)→ 池化層(縮小尺寸)→ 全連接層(做分類)
使用場景
影像分類、人臉辨識、醫學影像分析、自動駕駛。
優點
自動學特徵(不用手動設計)、參數共享效率高、影像任務的基石。
缺點
只看局部(感受野有限,ViT 改善了這點)、需要大量標註資料。
影像資料增強(Image Data Augmentation)
CNN 訓練時幾乎必備,用變換手法讓模型看到更多樣的圖片,防止過擬合。
基礎增強
- 水平/垂直翻轉、隨機旋轉、隨機裁切
- 亮度/對比/飽和度隨機調整
- 縮放、平移、仿射變換
進階增強
- Mixup:兩張圖按比例混合,標籤也混合
- CutMix:從一張圖剪一塊貼到另一張,標籤按面積比例分配
- CutOut / Random Erasing:隨機遮擋圖片一部分,強迫模型學全局特徵
- AutoAugment:讓 AI 自動搜尋最佳增強策略組合
iPAS 歷屆考題詳解(21 題)
先自行作答,再展開詳解。題目出處均為 iPAS AI 應用規劃師正式考題,著作權屬原主辦單位。
某新創公司開發一套圖像描述生成系統,能根據輸入的照片自動產生說明文字。為了讓產生的描述文字能與圖片資訊精準對應,下列哪一種設計思路最關鍵?
- A強化語言模型的句法與流暢性,確保生成文字更自然易讀
- B在生成過程中結合圖片特徵與語言建模,讓模型同時利用影像內容與文字資訊
- C調整生成策略(如 Beam Search 或溫度參數),以提升輸出文字的合理性
- D專注於文字序列上下文的建模,只提升文字間的連貫性
看正解與逐選項詳解
正解:B
正確答案:(B)
【正解解析】
圖像描述生成(Image Captioning)屬於視覺-語言任務。要讓生成文字與圖片精準對應,關鍵在於將視覺編碼器(Vision Encoder)抽取的影像特徵融入語言生成過程:模型每一步生成都同時參考影像內容與已生成的文字上下文,描述才能以圖片為依據。從早期的 Show and Tell 到 BLIP、LLaVA 等視覺語言模型,共同的核心設計都是影像特徵與語言建模的深度結合;缺少這一步,語言模型只能依語言統計慣性生成內容,再流暢也無法保證與圖片相符。
【為何其他選項錯了?】
- (A):句法與流暢性只影響文字品質,不提供任何影像資訊;描述再通順,若生成過程未以影像特徵為條件,內容仍可能與圖片不符。
- (C):Beam Search 與溫度參數只改變解碼策略,是在模型既有的輸出分布中挑選結果;若模型未融合影像特徵,調整生成策略無法補回缺失的視覺資訊。
- (D):只建模文字上下文等於退化為純語言模型,提升的是文字連貫性,與影像內容的對應能力無關。
提示:題幹關鍵詞「與圖片資訊精準對應」指向多模態融合:影像特徵必須進入生成過程,文句流暢與解碼策略皆非關鍵。
某團隊訓練影像分類模型,發現模型在訓練資料上的準確率達98%,但在測試資料上僅有72%。若團隊希望提升模型對新資料的適應能力,並增加訓練資料的多樣性,下列何者最適合?
- A增加模型的深度與參數量,使模型學習更多細節
- B對訓練影像進行旋轉、翻轉等隨機變化
- C提高訓練速度,使模型更快完成學習
- D僅保留模型表現較好的訓練資料
看正解與逐選項詳解
正解:B
正確答案:(B)
【正解解析】
訓練準確率 98%、測試僅 72%,是典型的過擬合(Overfitting):模型記住了訓練資料的細節甚至雜訊,失去對新資料的泛化能力。題幹同時要求「提升對新資料的適應能力」與「增加訓練資料多樣性」,對應的正是資料增強(Data Augmentation):對訓練影像施以隨機旋轉、翻轉、縮放、亮度調整等變換,等於擴充出更多樣化的訓練樣本,促使模型學習更本質的特徵而非死記特定影像,縮小訓練與測試表現的落差。
【名詞白話語典】
- 過擬合(Overfitting):模型在訓練集上表現極佳,但在未見過的新資料上表現明顯變差的現象。
- 資料增強(Data Augmentation):透過對現有資料施加隨機變化來擴充訓練資料集、提升模型泛化能力的技術。
【為何其他選項錯了?】
- (A):增加深度與參數量會提高模型容量,更有能力記住訓練資料的細節與雜訊,通常使過擬合更加嚴重。
- (C):訓練速度與泛化能力沒有直接關係,加快訓練無助於改善測試表現。
- (D):僅保留表現較好的訓練資料會降低資料多樣性並引入選擇偏差,反而可能加劇過擬合,也與「增加多樣性」的要求相反。
提示:訓練高、測試低即過擬合;題幹點名「增加資料多樣性」,直接對應資料增強。
某物流公司想導入 AI 以提升營運效率,評估不同資料型態與模型架構。下列哪一 種應用情境最適合採用卷積神經網路(Convolutional Neural Network, CNN) 作為 主要模型架構?
- A依據包裹每日掃描紀錄的時間序列,預測下週各倉庫的進貨量波動
- B根據客服對話逐句內容的先後順序,判斷客訴是否可能升級為申訴案件
- C根據倉庫監視器影像,自動辨識貨架是否缺貨並標示缺貨區域位置
- D依據車隊 GPS 路徑點的連續軌跡,預測下一段可能行駛路線
看正解與逐選項詳解
正解:C
正確答案:(C)
【正解解析】
卷積神經網路(CNN)的核心優勢在於處理具「網格狀拓撲結構」的資料並擷取空間局部特徵,最典型的就是由像素構成的二維影像:卷積核在影像上滑動,逐層擷取邊緣、紋理、形狀等特徵,適合影像分類、物件偵測與定位。選項 (C) 以倉庫監視器影像辨識貨架是否缺貨並標示缺貨區域,屬影像辨識與物件偵測任務,正是 CNN 的典型應用場景。
【為何其他選項錯了?】
- (A):包裹掃描紀錄的進貨量預測屬時間序列問題,重點在時間依賴關係,較適合 RNN/LSTM、Transformer 或傳統時間序列模型。
- (B):客服對話逐句判斷屬自然語言的序列理解任務,需建模語句先後順序與上下文,主流架構是 RNN/LSTM 或 Transformer。
- (D):GPS 連續軌跡的路線預測同樣是序列建模問題,處理的是時間上的依賴關係,不是 CNN 擅長的空間網格特徵。
提示:影像資料對應 CNN;時間序列、文字對話、GPS 軌跡皆屬序列資料,對應 RNN/LSTM 或 Transformer。
某果園管理公司計畫導入 AI 系統協助農民判斷蘋果成熟度,透過分析果實特徵資 訊,評估成熟狀態並自動判斷採收時機。根據 AI 應用領域的分類,這個系統主要 屬於哪一個應用領域?
- A自然語言處理(Natural Language Processing)
- B電腦視覺(Computer Vision)
- C語音識別(Speech Recognition)
- D推薦系統(Recommendation System)
看正解與逐選項詳解
正解:B
正確答案:(B)
【正解解析】
系統透過「分析果實特徵資訊」判斷蘋果成熟度,實務上即以攝影機取得果實影像,分析顏色、大小、形狀等視覺特徵,進而評估成熟狀態與採收時機,屬於讓電腦「看懂」影像的電腦視覺(Computer Vision)應用領域;農產品成熟度與外觀品質的影像判定,是電腦視覺在智慧農業的典型案例。
【名詞白話語典】
- 電腦視覺(Computer Vision):賦予機器「視覺」能力,從影像或影片中擷取並理解資訊的 AI 技術分支。
【為何其他選項錯了?】
- (A):自然語言處理針對人類語言文字的理解與生成;本系統分析的是果實外觀特徵,不是文字資料。
- (C):語音識別將人類語音轉換為文字,與果實影像分析無關。
- (D):推薦系統依據使用者的歷史行為與偏好推薦項目,屬個人化排序問題,與成熟度判斷無關。
提示:「分析外觀/影像特徵」對應電腦視覺;文字對應 NLP,聲音對應語音識別,行為偏好對應推薦系統。
某智慧交通系統在城市主要路口安裝監視攝影機,需即時識別畫面中的汽車、 機車、公車等不同車輛類型,並統計各路口的車輛流量以支援號誌控制優化。 下列哪一種神經網路架構最適合處理此類影像中的物件類型識別任務?
- A循環神經網路(RNN),適合處理序列資料;
- B卷積神經網路(CNN),適合處理影像資料;
- C長短期記憶網路(LSTM),適合處理長期依賴;
- D多層感知機(MLP),將輸入資料轉換為數值後進行分類
看正解與逐選項詳解
正解:B
正確答案:(B)
【正解解析】
路口監視器影像中的車輛類型識別屬影像辨識任務。CNN 以卷積核擷取影像的局部空間特徵(邊緣、紋理、形狀),透過區域感知與參數共享高效處理二維像素網格,是影像分類與物件偵測的主流架構,適合即時辨識汽車、機車、公車等不同車輛類型並支援流量統計。
【為何其他選項錯了?】
- (A):RNN 為序列資料設計,依時間步處理輸入,適合文字或時間序列,不是影像空間特徵擷取的主要架構。
- (C):LSTM 是 RNN 的改良變體,用於處理長期依賴,應用場景仍是序列資料,不是影像分類的首選。
- (D):MLP 需將影像攤平為一維向量後以全連接方式處理,破壞空間結構且參數量龐大,處理影像的效率與效果均不如 CNN。
提示:影像的物件類型識別優先對應 CNN;RNN/LSTM 處理序列,MLP 未利用影像的空間結構。
關於Softmax 與Max-Pooling,下列敘述何者正確?
- ASoftmax 與Max-Pooling都會將特徵張量壓縮為單一最大值
- BMax-Pooling 會對輸入進行機率分佈的轉換
- CSoftmax 會保留所有輸入資訊,但以比例表示;Max-Pooling 只保留區域最大值
- DSoftmax 主要用於特徵降維,而Max-Pooling用於分類輸出
看正解與逐選項詳解
正解:C
正確答案:(C)
【正解解析】
Softmax 把一組輸入分數轉換成總和為 1 的機率分布,每個輸入都被保留,只是改以相對比例呈現,常用於分類層的輸出;Max-Pooling 則是在特徵圖的每個局部區域只取最大值、捨棄其餘數值,用於下採樣並保留顯著特徵。一個是「全數保留、改為比例」,一個是「只留區域最大、其餘捨棄」,選項 (C) 正確描述了這組對比。
【為何其他選項錯了?】
- (A):Softmax 不會壓縮成單一最大值,它輸出與輸入等長的機率向量;取最大值的是 Max-Pooling,且是每個區域各取一個,不是整張特徵圖只留一個。
- (B):Max-Pooling 只做區域取最大值,不涉及機率分布轉換;做機率轉換的是 Softmax。
- (D):兩者角色對調:負責降維(下採樣)的是 Max-Pooling,用於分類輸出的是 Softmax。
提示:Softmax 全數保留並轉為比例;Max-Pooling 僅保留區域最大值,用於下採樣。
某智慧製造公司開發一套影像辨識系統,用於自動檢測生產線上的瑕疵產品。系統採用卷積神經網路(Convolutional Neural Network, CNN)作為主要模型架構,其中第一層卷積層(Convolutional Layer)主要負責的功能為下列何者?
- A自動提取輸入影像中的局部特徵
- B降低影像維度以加速運算效率
- C增加神經元與參數數量以提升模型容量
- D整合所有特徵並輸出最終分類結果
看正解與逐選項詳解
正解:A
正確答案:(A)
【正解解析】
卷積層以小尺寸濾波器(Kernel)在影像上滑動,對每個局部區域做卷積運算,自動學習並提取局部特徵;第一層卷積通常學到邊緣、線條、紋理等低階特徵,越深層再把它們組合成越抽象的形狀與物件部件。這種「自動特徵提取」正是 CNN 取代人工特徵工程、適合瑕疵檢測等影像任務的核心價值。
【為何其他選項錯了?】
- (B):降低影像空間維度、壓縮運算量主要是池化層(Pooling)的工作;卷積層的首要任務是擷取特徵,不是縮小尺寸。
- (C):卷積層藉由參數共享,參數量反而遠少於全連接層;「增加神經元與參數以提升容量」與卷積層的設計理念相反。
- (D):整合所有特徵並輸出最終分類結果,是網路末端全連接層(搭配 Softmax/Sigmoid)的職責,不是第一層卷積層的功能。
提示:CNN 分工:卷積層擷取特徵、池化層縮減尺寸、全連接層輸出決策。
某智慧城市團隊開發一套交通監控系統,用於即時辨識路口監視器影像中的車輛與行人。團隊比較後發現,卷積神經網路(Convolutional Neural Network, CNN)在訓練與推論效率上,明顯優於傳統的全連接神經網路(Fully Connected Neural Network, FCNN)。請問下列何者為主要原因?
- ACNN 能自動學習影像的旋轉與比例不變性
- BCNN 可直接跳過人工特徵提取步驟進行分類
- CCNN 透過區域感知(Local Receptive Field)與參數共享(Parameter Sharing)機制,降低模型參數量與運算複雜度
- DCNN 捨棄激勵函數(Activation Function),以加快運算速度
看正解與逐選項詳解
正解:C
正確答案:(C)
【正解解析】
CNN 訓練與推論效率優於全連接網路(FCNN)的關鍵是兩個機制:區域感知(Local Receptive Field,每個神經元只連接輸入的一小塊局部視窗,而非全部像素)與參數共享(Parameter Sharing,同一組濾波器權重在整張影像上重複使用)。兩者合力大幅減少參數量與運算複雜度——全連接層直接處理高解析度影像時,參數會隨像素數暴增,CNN 則可避免。
【為何其他選項錯了?】
- (A):CNN 藉由卷積與池化對「平移」有一定容忍度,但旋轉與比例不變性並非天生具備,實務上須靠資料增強補足;且這也不是效率差異的來源。
- (B):CNN 確實免去人工特徵提取,但 FCNN 同樣可以端到端學習,這不是 CNN 運算效率較高的原因。
- (D):CNN 每個卷積層後仍需接激活函數(如 ReLU)引入非線性;捨棄激活函數的說法完全錯誤。
提示:CNN 降低參數量的兩大機制:區域感知(只連局部)與參數共享(同組濾波器整張影像重複使用)。
在深度神經網路中,不同層的參數量(parameter count)差異極大。有些層雖然數量少但計算量大,有些則相反。了解參數分佈情形,有助於模型壓縮與遷移學習設計。請問在 VGG16中,下列何者的參數量最多?
- A卷積層(Conv2d)
- B全連接層(Linear)
- CReLU激活函數
- D池化層(MaxPool2d, AdaptiveAvgPool2d)
看正解與逐選項詳解
正解:B
正確答案:(B)
【正解解析】
從 VGG16 的參數統計看:三個全連接層(Linear)的參數量分別為 102,764,544、16,781,312、4,097,000,合計約 1.236 億,佔總參數 138,357,544 的近九成;僅第一個全連接層(把 512×7×7=25088 維展平向量接到 4096 個神經元)一層就超過一億。相較之下,13 個卷積層合計僅約 1,470 萬。全連接層是 VGG16 參數量最大的部分,也因此成為模型壓縮的首要目標。
【為何其他選項錯了?】
- (A):卷積層靠參數共享節省參數,單層最多約兩百多萬,13 層加總約 14.7M,只佔總量約一成。
- (C):ReLU 只是逐元素的 max(0, x) 運算,模型摘要中參數欄位為 0,不含任何可學習參數。
- (D):池化層(MaxPool2d、AdaptiveAvgPool2d)只做取最大值或平均值的固定運算,同樣沒有可學習參數。
提示:VGG16 約九成參數集中於全連接層;模型壓縮優先處理 FC 層。
在神經網路中,了解各層的運算量分佈,有助於模型壓縮與硬體加速的策略設計。請問在 VGG16中,下列何者運算量(FLOPs)最多?
- A卷積層(Conv2d)
- B全連接層(Linear)
- CReLU激活函數
- D池化層(MaxPool2d, AdaptiveAvgPool2d)
看正解與逐選項詳解
正解:A
正確答案:(A)
【正解解析】
運算量(FLOPs)與參數量是兩個不同的指標:卷積層的每個濾波器要在特徵圖的「每一個空間位置」重複做乘加運算,FLOPs 約等於參數量乘以輸出特徵圖的空間尺寸。例如 Conv2d-3 只有 36,928 個參數,但在 150×150 的特徵圖上滑動,單層運算量就達數億次;全部卷積層的 FLOPs 以百億計,佔 VGG16 總運算量九成以上,是模型中運算最密集的部分。
【為何其他選項錯了?】
- (B):全連接層參數雖多,但每個權重只參與一次乘加,FLOPs 約等於參數量(約 1.2 億次),比卷積層低約兩個數量級。
- (C):ReLU 只做逐元素比較取大,運算量極低,可忽略不計。
- (D):池化層只做局部取最大值或平均值,沒有密集的乘加運算,FLOPs 同樣可忽略。
提示:參數集中於 FC、運算集中於 Conv;壓縮參數優先處理全連接層,加速推論優先優化卷積層。
以 torchsummary 對輸入尺寸 (3, 150, 150) 的預訓練 VGG16 輸出模型摘要,關鍵資訊節錄如下:
MaxPool2d-31 輸出 [-1, 512, 4, 4],參數 0
AdaptiveAvgPool2d-32 輸出 [-1, 512, 7, 7],參數 0
Linear-33 輸出 [-1, 4096],參數 102,764,544
Linear-36 輸出 [-1, 4096],參數 16,781,312
Linear-39 輸出 [-1, 1000],參數 4,097,000
Total params: 138,357,544
Forward/backward pass size (MB): 96.93
Params size (MB): 527.79
Estimated Total Size (MB): 624.98
VGG16 層數深且結構規則,由多層卷積、池化及全連接層組成。根據 VGG16 的模型架構,下列敘述何者正確?
- AAdaptiveAvgPool2d 的輸出會被攤平後傳入第一個全連接層;由於前一層池化輸出空間為 4×4,所以第一個線性層的輸入維度是 512×4×4 = 8192
- BLinear-33(第一個全連接層)報出的 102,764,544 參數只包含權重,偏差(bias)沒有算在內
- C根據列出的「Estimated Total Size (MB) = 624.98」,表示訓練此模型只需大約 625MB 的 GPU 記憶體(包含所有 optimizer state 與梯度),所以一張 1GB 的 GPU 就足夠訓練
- DVGG16 包含 13 層卷積層(conv)與 3 層全連接層(FC),總參數數目約為 138,357,544(約 138.36M)
看正解與逐選項詳解
正解:D
正確答案:(D)
【正解解析】
VGG16 的「16」指 16 個具可學習權重的層:13 層卷積(Conv2d)加 3 層全連接(Linear);摘要表的 Total params 也印證總參數為 138,357,544(約 138.36M)。層數結構與參數總量兩個數字都與敘述吻合。
【為何其他選項錯了?】
- (A):展平後接進第一個全連接層的是 AdaptiveAvgPool2d 的輸出(512×7×7=25088 維),不是 MaxPool 的 4×4;驗算:25088×4096+4096=102,764,544,與表中參數完全吻合,8192 的說法錯誤。
- (B):由同一筆驗算可見,102,764,544 等於權重 25088×4096 再加上 4096 個偏差項——bias 已包含在參數統計內,並非只計權重。
- (C):624.98MB 只是單一樣本前向/反向傳遞加上參數本身的估計,不含優化器狀態、梯度緩衝與更大批次的啟動值;實際訓練所需記憶體遠高於此,1GB 的 GPU 不足以訓練 VGG16。
提示:VGG16=13 Conv+3 FC;torchsummary 的 Estimated Total Size 僅是單樣本推估,訓練所需記憶體遠高於該數字。
在實務應用中,我們常使用遷移學習(Transfer Learning)技巧:載入預訓練模型(如 VGG16),凍結部分層的參數,只針對特定任務重新訓練最後幾層,以節省訓練時間並提升模型效能。假設你要對 VGG16 進行遷移學習,希望凍結卷積層的參數,只訓練最後的全連接層(classifier)。下列四段程式碼(均已 import torch 與 import torchvision.models as models):
程式碼A:
model = models.vgg16(pretrained=True)
for param in model.parameters():
param.requires_grad = False
model.classifier[6] = torch.nn.Linear(4096, 10)
程式碼B:
model = models.vgg16(pretrained=True)
for param in model.features.parameters():
param.requires_grad = False
model.classifier[6] = torch.nn.Linear(4096, 10)
程式碼C:
model = models.vgg16(pretrained=True)
for param in model.classifier.parameters():
param.requires_grad = False
model.classifier[6] = torch.nn.Linear(4096, 10)
程式碼D:
model = models.vgg16(pretrained=True)
model.requires_grad = False
model.classifier[6] = torch.nn.Linear(4096, 10)
請問哪一段程式碼寫法正確?
- A程式碼A
- B程式碼B
- C程式碼C
- D程式碼D
看正解與逐選項詳解
正解:B
正確答案:(B)
【正解解析】
torchvision 的 VGG16 結構分成 model.features(全部卷積與池化層)與 model.classifier(三層全連接)。程式碼B 只對 model.features.parameters() 逐一設 requires_grad=False,凍結卷積特徵抽取器,整個 classifier 保持可訓練,最後再把 classifier[6] 換成輸出 10 類的新層——完全符合「凍結卷積層、只訓練全連接分類頭」的需求。
【為何其他選項錯了?】
- (A):對 model.parameters() 全部凍結後才替換最後一層,結果只有新換上的 classifier[6] 可訓練,classifier 前兩層全連接仍被凍結,不符「訓練整個 classifier」的要求。
- (C):凍結對象錯誤——把 classifier 凍結,卷積層反而全部可訓練,與需求方向完全相反。
- (D):model.requires_grad = False 只是替 Module 物件新增一個自訂屬性,不會作用到任何參數;凍結必須逐一設定參數的 requires_grad(或使用 requires_grad_() 方法),這行實際上沒有凍結任何參數。
提示:凍結要落在 parameters() 上——要凍結哪一段,就迭代該段的 parameters 設 requires_grad=False。
某工程師正在實作一個 CNN 影像分類模型,在 PyTorch 中定義模型架構時,需要在卷積擷取特徵後接上全連結層(Fully Connected Layer)進行分類。在模型程式碼中,需要在卷積輸出與全連結層之間插入什麼操作?
- A使用全域平均池化(Global Average Pooling)將特徵圖壓縮後再接全連結層
- B使用 Flatten將特徵圖展平成一維向量
- C直接將卷積輸出接到全連結層,系統會自動轉換維度
- D先對特徵圖做 Softmax,再輸入全連結層
看正解與逐選項詳解
正解:B
正確答案:(B)
【正解解析】
卷積與池化層的輸出是形狀 (批次, 通道, 高, 寬) 的多維特徵圖,而全連結層(nn.Linear)期望的輸入是 (批次, 特徵數) 的一維向量。因此在卷積輸出與全連結層之間必須插入 Flatten 操作,把每個樣本的特徵圖展平成一維向量——PyTorch 中以 nn.Flatten() 或 x.view(batch_size, -1) 完成,維度銜接正確,分類頭才能運作。
【為何其他選項錯了?】
- (A):全域平均池化(GAP)是一種可行的替代架構(ResNet 等以它壓縮空間維度、減少參數),但它是另一種設計選擇,並非題目所問的必要銜接操作;且 GAP 輸出 (批次, 通道, 1, 1) 之後,接全連結層前仍需展平。
- (C):PyTorch 不會自動轉換維度,直接將 4D 特徵圖輸入 nn.Linear 會產生形狀不匹配(shape mismatch)錯誤。
- (D):Softmax 是輸出層把 logits 轉成機率分布的最後一步,放在卷積與全連結層之間既不合理也無作用。
提示:卷積輸出特徵圖,須展平為一維向量才能接全連結層;Flatten 是 CNN 分類頭前的必要銜接。
某公司希望開發一個工業零件瑕疵辨識分類模型,共有 10 個類別,但每類僅約50 張人工標註影像(總計約 500 張)。由於標註成本高昂,短期內無法擴充資料集。在此情境下,工程師需要在有限標註資料下建構高效能模型。請問下列哪一種策略最為適合?
- A使用在大型資料集預訓練完成的卷積神經網路(CNN),並進行遷移學習微調
- B從頭訓練大型 Vision Transformer(ViT),完全使用現有 500張影像
- C使用 K-means 對影像進行分群,並直接將群集結果作為分類模型輸出
- D複製既有的資料以增加標註影像數量,並從頭訓練深度 CNN模型
看正解與逐選項詳解
正解:A
正確答案:(A)
【正解解析】
每類僅 50 張、總計 500 張,是標準的小樣本影像分類場景。最務實的解法是遷移學習:取在 ImageNet 等大型資料集上預訓練好的 CNN,其底層卷積已學會邊緣、紋理等通用視覺特徵,凍結大部分骨幹、只微調頂層(或以小學習率整體微調),讓 500 張標註資料專注學習「工業零件瑕疵」的領域知識,小資料量也能達到可用效能,必要時再搭配資料增強。
【為何其他選項錯了?】
- (B):ViT 缺乏 CNN 的歸納偏置,對資料量需求極大,從頭訓練通常需要百萬張級影像;以 500 張影像從頭訓練 ViT,必然嚴重過擬合,無法獲得可用效能。
- (C):K-means 是非監督分群,群集邊界與真實瑕疵類別未必對應,直接把群集結果當分類輸出,等於放棄既有的人工標註資訊。
- (D):複製既有影像不會帶來任何新資訊,模型只是重複記憶相同樣本,從頭訓練的深度 CNN 仍會嚴重過擬合。
提示:小樣本影像分類優先考慮遷移學習:預訓練骨幹加微調分類頭,再輔以資料增強。
某醫療新創團隊將原有 3層CNN升級為16層架構以提升 CT影像腫瘤偵測率,但發現訓練損失反而高於 3層版本且收斂困難。工程師懷疑是網路深度造成的訓練問題,下列診斷與對策何者最正確?
- A網路層數增加導致參數量過多,應減少每層卷積濾波器(Filters)數量以降低模型複雜度
- B深層網路可能出現梯度消失問題,導致淺層權重難以更新;應採用 ResNet 的殘差連接(Skip Connection)以改善梯度傳遞
- C16層模型對 CT影像而言仍過淺,應進一步增加網路深度以學習更高階特徵
- D問題可能來自激活函數(Activation Function),將 ReLU改為Sigmoid 可改善梯度傳遞問題
看正解與逐選項詳解
正解:B
正確答案:(B)
【正解解析】
從 3 層加深到 16 層後「訓練損失反而更高、收斂困難」,這是深層平原(plain)網路的退化與優化問題:反向傳播時梯度逐層縮小,淺層權重幾乎收不到有效的更新訊號。ResNet 的殘差連接讓區塊學習 F(x) 並輸出 F(x)+x,梯度可以沿著恆等捷徑直接回傳到淺層,大幅改善深層網路的可訓練性,是此症狀的對症解法。
【為何其他選項錯了?】
- (A):減少濾波器數量是處理過擬合(訓練好、驗證差)的手段;本題連訓練損失都比淺層版本高,屬「學不動」的優化問題而非「學過頭」的泛化問題,診斷方向錯誤。
- (C):問題正是深度帶來的優化困難,在沒有殘差結構的前提下繼續加深,退化只會更嚴重。
- (D):方向相反——Sigmoid 兩端飽和、梯度趨近於零,會加劇梯度消失;ReLU 正是為了改善此問題才成為主流,將 ReLU 改回 Sigmoid 只會使梯度傳遞更差。
提示:訓練損失降不下去屬優化問題(考慮殘差連接、BatchNorm);訓練低、驗證高屬過擬合(考慮正則化)。先診斷再處置。
某工程師設計用於醫療 X 光影像分類的 CNN,發現卷積層後直接接全連結層導致參數量高達 5,000 萬,訓練速度極慢。為降低模型參數量與計算成本,他在卷積層後加入池化層(Pooling Layer)。下列何者為池化層在此設計中最主要解決的問題?
- A降低特徵圖空間維度,減少參數與計算量
- B提供非線性表達能力,以提升模型學習複雜度
- C改善梯度消失問題,以強化反向傳播穩定性
- D提升模型泛化能力而不影響特徵維度
看正解與逐選項詳解
正解:A
正確答案:(A)
【正解解析】
池化層(如 2×2 MaxPooling)對特徵圖做空間下採樣:長寬各減半,特徵圖元素數量即剩四分之一;經過幾層池化後,進入全連結層前的展平向量大幅縮短,全連結層的權重數與計算量隨之銳減——直接化解「卷積後直接接全連結導致 5,000 萬參數」的困境,同時帶來一定程度的平移不變性。
【為何其他選項錯了?】
- (B):非線性表達能力主要來自激活函數(如 ReLU);池化的設計目的不是提供非線性。
- (C):改善梯度消失依靠殘差連接、BatchNorm 與合適的激活函數;池化與反向傳播的梯度穩定性沒有直接關係。
- (D):「不影響特徵維度」與事實相反——池化正是在縮小空間維度,這也是它能節省參數的原因,此選項自相矛盾。
提示:卷積擷取特徵,池化縮減空間尺寸;參數量過大時優先考慮池化或全域平均池化(GAP)。
以下為使用 ResNet 進行遷移學習(Transfer Learning)的 Python 程式片段:
import torch
import torch.nn as nn
import torchvision
model = torchvision.models.resnet50(pretrained=True)
for param in model.parameters():
param.requires_grad = False # 行(A)
model.fc = nn.Linear(2048, 2)
optimizer = torch.optim.Adam(model.fc.parameters(), lr=1e-4)
觀察程式中行(A)將所有既有權重的梯度計算關閉,這在遷移學習中屬於哪一種標準策略?
- A全面微調(Full Fine-Tuning)
- B零樣本學習(Zero-shot Learning)
- C特徵萃取(Feature Extraction)
- D知識蒸餾(Knowledge Distillation)
看正解與逐選項詳解
正解:C
正確答案:(C)
【正解解析】
行(A) 把所有預訓練參數的 requires_grad 設為 False,凍結整個 ResNet50 骨幹,反向傳播不再更新它們;接著換上新的全連結層 model.fc,優化器也只註冊 model.fc.parameters()。凍結的骨幹成為固定的特徵抽取器,只訓練新的分類頭——這正是遷移學習中的特徵萃取(Feature Extraction)策略,適合目標資料量小、且與預訓練領域相近的場景。
【為何其他選項錯了?】
- (A):全面微調是所有層一起解凍、全部參數都更新;與凍結全部骨幹恰為兩個極端。
- (B):零樣本學習是不經任何訓練、直接對新類別推論;此程式仍訓練了新的 fc 層,不屬零樣本。
- (D):知識蒸餾需要教師與學生兩個模型,以教師輸出作為軟標籤訓練學生;程式中僅有單一模型,不存在教師-學生配置。
提示:凍結骨幹、只訓練新分類頭=特徵萃取;全部解凍以小學習率更新=全面微調;教師-學生雙模型=知識蒸餾。
在進行遷移學習微調(Fine-Tuning)時,通常會將優化器的學習率(Learning Rate)設得非常小(如 1e-4),下列何者為主要的原因?
- A為了避免記憶體耗盡(OOM)
- B為了加速模型整體的收斂時間
- C為了讓損失函數強制歸零
- D為了避免更新步伐過大,破壞預訓練模型原本已學好的良好特徵表示
看正解與逐選項詳解
正解:D
正確答案:(D)
【正解解析】
預訓練模型的權重已蘊含大量通用特徵(邊緣、紋理、語意結構),是微調的價值所在。微調時若學習率過大,每步更新幅度大,會大幅覆寫這些已學好的特徵表示(即災難性遺忘,Catastrophic Forgetting),使遷移學習失去意義。將學習率設得非常小(如 1e-4),讓權重在既有基礎上小步、溫和地適應新任務,才能既保留預訓練知識、又完成任務轉移。
【為何其他選項錯了?】
- (A):學習率只影響每步更新的幅度,不影響記憶體占用;避免 OOM 須靠縮小 batch size、混合精度、梯度累積等手段。
- (B):小學習率通常使收斂更慢而非更快;選擇小學習率是為了穩定,不是為了速度。
- (C):訓練目標是泛化能力,不是把損失強制歸零;損失趨近於零反而常是過擬合的警訊,學習率也無法「強制」達成此事。
提示:微調的原則是小步更新:學習率過大會破壞預訓練特徵,失去遷移學習的意義。
使用 CIFAR-10 資料集建立 CNN 進行彩色影像分類:共 10 個類別、60000 張 32×32 像素的 RGB 影像(訓練集 50000 張、測試集 10000 張),像素值為 0~255 的整數,標籤 y 為 0~9 的整數。資料處理程式如下:
x_train, x_test = x_train / 255.0, x_test / 255.0
y_train = tf.keras.utils.to_categorical(y_train, 10)
y_test = tf.keras.utils.to_categorical(y_test, 10)
描述 A:x_train, x_test 將影像範圍壓縮到 0~31 範圍
描述 B:可以增加模型的泛化能力
描述 C:x_train, x_test 資料轉換結果相當於 z-score 標準化
描述 D:資料轉換目的是避免梯度爆炸或梯度消失
描述 E:y_train 將 label 轉換為獨熱編碼(One-hot Encoding)
描述 F:y_train 適合輸出層使用 softmax 函數
下列哪一項描述組合正確?
- A描述 A、描述 C、描述 F
- B描述 B、描述 D、描述 E、描述 F
- C描述 B、描述 C、描述 E、描述 F
- D描述 A、描述 B、描述 D、描述 E、描述 F
看正解與逐選項詳解
正解:B
正確答案:(B)
【正解解析】
逐一檢核六個描述:描述 B 正確——輸入縮放讓數值尺度一致、訓練更穩定,有助模型泛化;描述 D 正確——把 0~255 壓縮到 0~1,可避免大數值輸入造成梯度爆炸或消失等數值不穩定;描述 E 正確——to_categorical 就是把整數標籤轉成獨熱編碼(One-Hot Encoding);描述 F 正確——One-Hot 標籤搭配輸出層 softmax(配 categorical crossentropy)是多類分類的標準組合。正確組合即 B、D、E、F。
【為何其他選項錯了?】
- (A):包含描述 A——除以 255.0 是把像素從 0~255 縮放到 0~1,不是 0~31;也包含錯誤的描述 C。
- (C):包含描述 C——除以 255 屬 min-max 式縮放,z-score 標準化是 (x−μ)/σ、結果以 0 為中心,兩者公式與分布皆不同。
- (D):四個正確描述都在,卻多納入錯誤的描述 A;組合中只要含一個錯誤描述,整個選項即不成立。
提示:除以 255 是 0~1 縮放,(x−μ)/σ 是 z-score,to_categorical 是 One-Hot;釐清三者即可逐一檢核描述。
使用 CIFAR-10 資料集(32×32 RGB、10 類)以下列程式建立 CNN 模型,程式分為區塊 1~4:
model = models.Sequential([
# 區塊 1
layers.Input(shape=(32, 32, 3)),
layers.Conv2D(32, kernel_size=(3,3), padding="same", activation="relu"),
layers.BatchNormalization(),
layers.Conv2D(32, (3,3), activation='relu', padding='same'),
layers.BatchNormalization(),
layers.MaxPooling2D((2,2)),
layers.Dropout(0.25),
# 區塊 2
layers.Conv2D(64, (3,3), activation='relu', padding='same'),
layers.BatchNormalization(),
layers.Conv2D(64, (3,3), activation='relu', padding='same'),
layers.BatchNormalization(),
layers.MaxPooling2D((2,2)),
layers.Dropout(0.25),
# 區塊 3
layers.Conv2D(128, (3,3), activation='relu', padding='same'),
layers.BatchNormalization(),
layers.Conv2D(128, (3,3), activation='relu', padding='same'),
layers.BatchNormalization(),
layers.MaxPooling2D((2,2)),
layers.Dropout(0.25),
# 區塊 4
layers.Flatten(),
layers.Dense(256, activation='relu'),
layers.BatchNormalization(),
layers.Dropout(0.5),
layers.Dense(10, activation='softmax')
])
描述 A:區塊 1 layers.Input(shape=(32, 32, 3)) 主要目的是進行資料標準化
描述 B:區塊 1 layers.Conv2D(32, kernel_size=(3,3), padding="same", activation="relu") 考慮輸入為 (32,32,3),則輸出 shape 為 (32,32,3)
描述 C:區塊 1 layers.BatchNormalization() 放在 Conv2D 之後可以減少梯度消失或爆炸
描述 D:區塊 2 layers.Dropout(0.25) 可以隨機將 25% 神經元輸出設定為 1
描述 E:區塊 3 layers.Dropout(0.25) 可以減少過度擬合(Overfitting)
描述 F:區塊 4 Flatten 層的作用是將 3D 特徵圖展開為 1D 向量
下列哪一項描述組合正確?
- A描述 A、描述 C
- B描述 C、描述 E、描述 F
- C描述 A、描述 D、描述 E
- D描述 D、描述 E、描述 F
看正解與逐選項詳解
正解:B
正確答案:(B)
【正解解析】
描述 C 正確:BatchNormalization 接在 Conv2D 之後,正規化各通道的輸出分布,穩定訓練並緩解梯度消失或爆炸;描述 E 正確:Dropout(0.25) 隨機丟棄部分神經元輸出,是對抗過擬合的正則化手段;描述 F 正確:Flatten 把 (高, 寬, 通道) 的 3D 特徵圖展平成 1D 向量,銜接後面的全連結層。故正確組合為 C、E、F。
【為何其他選項錯了?】
- (A):描述 A 錯誤——layers.Input 只是宣告輸入張量的形狀,不做任何資料標準化(除以 255 是在資料前處理完成);含描述 A 的組合不成立。
- (C):描述 A 錯誤之外,描述 D 也錯——Dropout 是把被選中的神經元輸出「設為 0」(丟棄),不是設為 1;訓練時還會對保留的輸出做縮放補償。另描述 B 亦錯:32 個濾波器加 same padding 的輸出是 (32,32,32),通道數等於濾波器數,不是 (32,32,3)。
- (D):描述 D 錯誤(同上),含錯誤描述的組合不成立。
提示:same padding 維持長寬、輸出通道數等於濾波器數;Dropout 將輸出設為 0 而非 1;Flatten 將 3D 特徵圖展平為 1D。
若團隊需要建立一個超過50層的深層神經網路,以捕捉晶圓表面細微的劃傷特徵,但又擔心傳統深層網路常見的梯度消失(Vanishing Gradient)問題,則下列哪一種經典架構最適合優先考慮?
- AVGG(Visual Geometry Group):透過重複堆疊3×3卷積層與池化層來維持梯度穩定;
- BGoogLeNet:透過 Inception 模塊並行使用不同大小的卷積核,以避免深層網路的梯度問題
- CResNet(Residual Network):透過殘差連接(Residual Connection / Skip Connection),使梯度能跨層傳遞並降低深層訓練困難
- DVision Transformer(ViT):完全捨棄卷積,因此不會出現任何深層模型的訓練問題
看正解與逐選項詳解
正解:C
正確答案:(C)
【正解解析】
ResNet 的殘差連接讓每個區塊學習殘差 F(x) 並輸出 F(x)+x:恆等捷徑(Skip Connection)為梯度提供直達淺層的傳遞路徑,有效緩解深層網路的梯度消失與退化問題,使 50 層以上的架構(ResNet-50/101/152)得以穩定訓練——正是「要堆疊超過 50 層、又擔心梯度消失」時的首選,適合晶圓表面細微劃傷這類需要深層特徵的檢測任務。
【為何其他選項錯了?】
- (A):VGG 只是反覆堆疊 3×3 卷積與池化,沒有任何跨層捷徑;層數加深後正是梯度消失的高風險架構,「維持梯度穩定」的敘述與事實相反。
- (B):GoogLeNet 的 Inception 模塊解決的是多尺度特徵萃取與計算效率,其訓練還需借助輔助分類器協助梯度傳遞,並非以解決深層梯度問題著稱。
- (D):ViT 沒有卷積不代表沒有訓練難題——它需要大量資料與強正則化才能穩定訓練,「不會出現任何深層模型的訓練問題」的絕對化敘述並不成立。
提示:超過 50 層的深層網路優先考慮殘差連接;Skip Connection 讓梯度可跨層直達淺層。