摘要
本文是系列文章的第二部分,重點介紹卷積神經網路(CNN)的特性和應用。 CNN主要用於模式識別和對象分類。在上一篇文章《訓練卷積神經網路:什麼是機器學習? (一)》中,我們比較了在MCU微控制器中運行經典線性規劃程序與運行CNN的區別,並展示了CNN的優勢。我們還探討了CIFAR網絡,該網路可以對圖像中的貓、房子或自行車等對象進行分類,還可以執行簡單的語音識別。本文重點解釋如何訓練這些神經網路以解決實際問題。
神經網路的訓練過程
本系列文章的第一部分討論的CIFAR網路由不同層的神經元組成。如圖1所示,32 × 32像素的圖像數據被呈現給網路並通過網路層傳遞。 CNN處理過程的第一步就是提取待區分對象的特性和結構,這需要藉助濾波器矩陣實現。設計人員對CIFAR網絡進行建模後,由於最初無法確定這些濾波器矩陣,因此這個階段的網路無法檢測模式和對象。
為此,首先需要確定濾波器矩陣的所有參數,以最大幅度提高檢測對象的精度或最大幅度減少損失函數。這個過程就稱為神經網路訓練。本系列文章的第一部分所描述的常見應用在開發和測試期間只需對網路進行一次訓練就可以使用,無需再調整參數。如果系統對熟悉的對象進行分類,則無需額外訓練;當系統需要對全新的對象進行分類時,才需要額外進行訓練。
進行CNN網路訓練需要使用訓練數據集,並使用類似的一組測試數據集來測試網路的精度。例如CIFAR-10網路數據集為十個對像類的圖像集合:飛機、汽車、鳥、貓、鹿、狗、青蛙、馬、輪船和卡車。我們必須在訓練CNN之前對這些圖像進行命名,這也是人工智慧應用開發過程中最複雜的部分。本文討論的訓練過程採用反向傳播的原理,即向網路連續展示大量圖像,並且每次都同時傳送一個目標值。本例的目標值為圖像中相關的對像類。在每次顯示圖像時,濾波器矩陣都會被優化,這樣對像類的目標值就會和實際值相匹配。完成此過程的網路就能夠檢測出訓練期間從未看到過的圖像中的對象。
圖1. CIFAR CNN架構。
圖2. 由前向傳播與反向傳播所組成之訓練循環
擬合過度與擬合不足
在神經網路的建模過程中經常會出現的問題是:神經網路應該有多少層,或者是神經網路的濾波器矩陣應該有多大。回答這個問題並非易事,因此討論網絡的過度擬合和擬合不足至關重要。過度擬合由模型過於複雜以及參數過多而導致。我們可以通過比較訓練數據集和測試數據集的損失來確定預測模型與訓練數據集的擬合程度。如果訓練期間損失較低並且在向網路呈現從未顯示過的測試數據時損失過度增加,這就強烈表明網路已經記住了訓練數據而不是在實施模式識別。此類情況主要發生在網路的參數儲存空間過大或者網路的卷積層過多的時候。這種情況下應當縮小網路規模。
損失函數和訓練算法
學習分兩個步驟進行。第一步,向網路展示圖像,然後由神經元網路處理這些圖像生成一個輸出矢量。輸出矢量的最大值表示檢測到的對像類,例如示例中的「狗」,該值不一定是正確的。這一步稱為前向傳播。
目標值與輸出時產生的實際值之間的差值稱為損失,相關函數則稱為損失函數。網路的所有要素和參數均包含在損失函數中。神經網路的學習過程旨在以最小化損失函數的方式定義這些參數。這種最小化可透過反向傳播的過程實現。在反向傳播的過程中,輸出產生的偏差(損失 = 目標值減去實際值)通過網路的各層反饋,直至達到網路的起始層。
因此,前向傳播和反向傳播在訓練過程中產生了一個可以逐步確定濾波器矩陣參數的循環。這種循環過程會不斷重複,直至損失值降至一定程度以下。
優化算法、梯度和梯度下降法
為說明訓練過程,圖3顯示了一個包含X和Y兩個參數的損失函數的範例,這裡Z軸對應於損失。如果我們仔細查看該損失函數的三維函數圖,我們就會發現這個函數有一個全局最小值和一個局部最小值。
目前,有大量數值優化算法可用於確定權重和偏差。其中,梯度下降法最為簡單。梯度下降法的理念是使用梯度在逐步訓練的過程中找到一條通向全局最小值的路徑,該路徑的起點從損失函數中隨機選擇。梯度是一個數學運算符,它會在損失函數的每個點生成一個梯度矢量。該向量的方向指向函數值變化最大的方向,幅度對應於函數值的變化程度。在圖3的函數中,右下角(紅色箭頭處)由於表面平坦,因此梯度向量的幅度較小。而接近峰值時的情況則完全不同。此處向量(綠色箭頭)的方向急劇向下,並且由於此處高低差明顯,梯度向量的幅度也較大。
圖3.使用梯度下降法確定到最小值的不同路徑。
因此我們可以利用梯度下降法從任意選定的起點開始,以反覆運算的方式尋找下降至山谷的最陡峭路徑。這意味著優化演算法會在起點計算梯度,並沿最陡峭的下降方向前進一小步。之後算法會重新計算該點的梯度,繼續尋找創建一條從起點到山谷的路徑。這種方法的問題在於起點並非事先確定的,而是隨機選擇的。在我們的三維地圖中,某些細心的讀者會將起點置於函數圖左側的某個位置,以確保路徑的終點為全域最小值(如藍色路徑所示)。其他兩個路徑(黃色和橙色)要嘛更長,要嘛是終點位於局部最小值。但是,算法必須對成千上萬個參數進行優化,顯然起點的選擇不可能每次都剛好正確。實際上,這種方法作用不大。因為所選擇的起點可能會導致路徑(即訓練時間)較長,或者目標點並不位於全域最小值,導致網路的精度下降。
因此,為避免上述問題,過去幾年已開發出大量可作為替代的優化演算法。一些替代方法包括隨機梯度下降法、動量法、AdaGrad法、RMSProp法、Adam法等。鑑於每種算法都有其特定的優缺點,實踐中具體使用的算法將由網路開發人員決定。
訓練數據
如前所述,在訓練過程中,我們會向網路提供標有正確物件類的圖像,如汽車、船舶等。 本範例使用既有的 CIFAR-10 dataset。 當然,在具體實踐中,人工智慧可能會用於識別貓、狗和汽車之外的領域。 這可能需要開發新應用,例如檢測製造過程中螺釘的質量,必須使用能夠區分好壞螺釘的訓練數據對網路進行訓練。 創建此類數據集極其耗時、費力,往往是開發人工智慧應用過程中成本最高的一步。 編譯完成的數據集可分為訓練數據和測試數據。 訓練數據用於前面所述的訓練,而測試數據則用在開發過程結束時,檢查訓練好的網路功能。
結論
在本系列的第一部分「人工智慧世界簡介:什麼是機器學習?(一)」中,我們介紹了神經網路,並針對其設計和功能進行詳細探討。現在我們已經定義了函數所需的所有權重和偏差,我們可以假設網路可以正常工作。在後續第三部分的文章中,我們將透過硬體運行CNN神經網路來測試其識別貓的能力。為此,我們將使用ADI公司所開發的MAX78000內建CNN加速器的人工智慧微控制器來進行演示。
聯繫我們
ADI 所有產品請洽【 安馳科技 】
安馳科技|ADI亞德諾半導體網站:https://anstekadi.com
安馳科技 LINE 官方帳號:https://lin.ee/5gcKNi7
安馳科技 Facebook 官方帳號:https://www.facebook.com/ANStek3528
安馳科技EDM訂閱 https://anstekadi.com/Home/EDM
申請樣品與技術支援:https://www.surveycake.com/s/dQ3Y2
與我聯絡:Marketing.anstek@macnica.com