一、深度學習影像辨識基本原理
本章節提到的只是深度學習的基本概念,與 AOI 的關聯不大,若您已經有深度學習相關的基礎知識,可以跳過本章節。
什麼是深度學習網路?
深度學習網路源自於類神經網路,類神經網路是指用電腦模擬神經元傳遞信號的架構,每個神經元都只是極為單純的小函式,單一神經元並沒有做複雜的運算。
類神經網路會把數百、數千個神經元(依網路設計不同,神經元的數量會有差異)連接起來,形成一個網路架構。神經元之間會互相串聯,一個神經元的輸出值,會串接到其他(一個或多個,通常是多個,依網路架構設計決定)神經元的輸入,這邊會產生[層]的概念,我們把原始輸入的資料(可能是圖像/語音/文字,但它們進入網路前,都會先轉化為浮點數陣列格式的數值資料,也就是對深度學習網路而言,無論餵什麼東西給它,都是當成一整串的數字來處理,輸入是數字,輸出也是數字)作為第0層,[所有以原始資料作為輸入值的神經元集合]稱為第1層,[所有以第1層的輸出作為自己的輸入值的神經元集合]則稱為第2層,依此類推。深度學習網路的[深度],就是指網路的層數疊得很深。
至於具體而言,類神經網路要疊多深才稱為深度學習網路,沒有明確的定義,對於影像辨識類型的網路,通常我們把 2012 年 AlexNet 以後的網路架構,稱之為深度學習網路。
而深度學習的[學習]是指什麼?其實一個剛規劃完的深度學習網路系統,相當於一顆空白的大腦,它並沒有辨識、分類的能力。我們必須透過一種稱為[訓練]的動作,把透過人工事先分類、標示好的訓練資料集,餵入網路讓它[學習],它才會有辨識、分類的能力。網路中每個神經元,有個稱之為[權重值]的可變數值,這個數值不是我們直接給定的(當然,要給個初始值也是可以),而是在這個訓練的過程中,一輪一輪的修正出來的。
這邊舉個例子來說明深度學習是怎麼訓練與修正權重,並與強化學習( Reinforcement learning )進行比較:
最近幾年深度學習很流行,我們想導入深度學習系統,用來做大樓進出人員管理,如果[有陌生人進入大樓],此系統需要發出警報。
但是預算有限,沒錢,怎麼辦?沒關係,我們來搞一個最便宜的[生物式深度學習系統]。首先,我們準備一根棍子,不用太粗,趁手的就行,重點是要結實。然後到街上走走,路上看到順眼的流浪狗,就一棍子敲下去,打暈牠。打暈時要注意牠的叫聲,如果是[嗷嗚!],那就沒錯,如果不是的話,繼續找。這隻狗我們就稱呼牠為 DL 狗。把 DL 狗綁在大樓門口,讓牠盯著門,然後我們開始訓練牠。
首先,找找隔壁大樓的人,請他進來我們的大樓,這時候,你的 DL 狗通常不會叫。不會叫沒關係,棍子就在手邊,我們打牠,讓牠叫。這個動作多重複幾次,也多找找不同的人,隔壁樓的大哥、大姊、大叔、大嬸,通通找,你的 DL 狗叫了就不打,不叫就打到牠叫!這個流程多做個幾次,我們就可以得到一隻[只要有人進門,牠就會叫]的 DL 狗了。接下來,我們找自己大樓的人進門。這時候 DL 狗大概會叫,沒關係,牠叫了我們就打牠,打到牠不叫。一直重複以上動作,自己大樓的人進門時 DL 狗叫了,我們就打牠,其他陌生人進門時 DL 狗沒叫,我們也打牠。大約一個月後,我們就得到一隻[如果有陌生人進入大樓,牠就會大叫]的 DL 狗了。這就是我們的[生物式深度學習門檢系統]。
圖 1. 生物式深度學習系統訓練示意圖。