【機器是怎麼產生視覺的?】 本期AI匠來聊聊機器視覺背後的原理: 卷積神經網路。卷積是什麼?池化是什麼?完全連接層是什麼?機器學習與神經網路的深度學習又有什麼不同呢?,趕快來跟AI匠一起學習吧!
Автор: AI匠
Загружено: 6 окт. 2023 г.
Просмотров: 821 просмотр
【機器是怎麼產生視覺的?】 本期AI匠來聊聊機器視覺背後的原理: 卷積神經網路
AI匠頻道的朋友都是孜孜不倦的好學生。今天,我們又要來上課啦! 本集我們就來聊聊卷積神經網路(CNN)
如果你喜歡我的創作,你可以點擊以下連結buy me a coffee支持我,謝謝
If you enjoy, you can "buy me a coffee" to support me. Thank you!
https://www.buymeacoffee.com/aijun8675
AI匠FB: https://www.facebook.com/profile.php?...
AI匠IG: / aijun8675
神經網路
神經網路(Neural Network)是一種模仿人腦神經系統工作方式的計算機系統。它是機器學習的一個子領域,也是深度學習的核心。神經網路的名字和結構受到了人腦神經元相互作用方式的啟發。
人工神經網路由多層節點組成,包括一個輸入層、一個或多個隱藏層和一個輸出層。每個節點或人工神經元都連線到另一個節點,連線上有相關權重和閾值。如果任何單一節點的輸出高於指定閾值,節點會被啟用,將資料傳送到網路的下一層。反之,如果低於指定閾值,資料就不會傳遞到網路的下一層。
神經網路依靠訓練資料來學習,並隨著時間的推移提高其準確性。神經網路進行語音識別或影象識別的任務,可能只需幾分鐘就能完成。最著名的神經網路使用範例之一就是 Google 的搜尋演算法。
神經網路架構
一個神經網路有很多層,每一層都執行不同的特定功能。網路越複雜,層數就越多,這也是為什麼神經網路又被稱為多層感知器。簡單的神經網路架構如下:
輸入層(Input Layer):來自外部的資料進入神經網路,輸入節點會拾取資料並對資料進行處理,進行分析或分類後,傳遞至下一層,也就是隱藏層。
隱藏層(Hidden Layers):隱藏層執行所有的後端運算任務,會由輸入層或其他隱藏層取得輸入資料。一個神經網路可以有一層或是多層隱藏層,每一個隱藏層都會分析並處理前一層的資料,再傳遞至下一層。
輸出層(Output Layer):輸出層傳輸隱藏層運算和處理所有資料的最終結果。輸出層與輸入層一樣都只有一層,但其可以有一個或多個節點,取決於分類問題是二元還是多類別。二元分類問題的輸出層只會有一個輸出節點,結果為 0 或 1;而多類別分類問題則可能會含有多個輸出節點。
神經網路的型別
感知器(Perceptron):感知器是最古老的神經網路,由美國心理學家弗蘭克·羅森布拉特(Frank Rosenblatt)於1958年發明。
前饋神經網路(FNN):前饋神經網路,或多層感知器(MLP),是最簡單的神經網路模型,由一個輸入層、一個或多個隱藏層和一個輸出層組成。從輸入層到輸出層,資料為單向傳送。這種神經網路是計算機視覺、自然語言處理和其他神經網路的基礎。
卷積神經網路(CNN):卷積神經網路的運作類似前饋神經網路,但它通常用於影象識別、模式識別和計算機視覺。這種神經網路利用線性代數的原理,特別是矩陣乘法,來識別影象中的模式。
迴圈神經網路(RNN):迴圈神經網路與前饋神經網路的單向傳遞不同,是通過反饋迴圈來識別的。這種學習演算法主要應用在,使用時間序列資料對未來結果進行預測,如股市預測或銷售預測方面。
卷積神經網路的運作原理
對神經網路有了大致了解後,我們來聊聊什麼是卷積神經網路(Convolutional Neural Networks,CNN)
CNN是根據生物的視覺處理過程來進行設計的,它是目前深度神經網路(deep neural network)領域的發展主力,在圖片辨別上甚至可以做到比人類還精準的程度。
CNN主要可分為三大步驟: 1. 卷積層。 2. 池化層。 3. 深度學習。 4. 完全連接層。
在圖片處理中,特徵是指可以被機器學習模型識別的重要視覺或結構元素。這些特徵可能包括邊緣、形狀、紋理等。特徵提取是將原始數據(如圖片)轉換為機器可以理解的形式的過程。
為了要了解這些特徵,我們使用一種數學運算方法: 卷積。
卷積是一種數學運算,用於對圖片或信號進行處理。它通過在圖片上移動一個稱為卷積核的小矩陣,對圖片的局部區域進行運算,產生新的特徵圖。這有助於擷取圖片中的不同特徵。
卷積的基本原理:
卷積的基本原理是將卷積核(也稱為濾波器)應用於圖片的每個位置,對應位置的像素值與卷積核的值進行運算。
卷積運算的核心原理是對兩張圖片的相應像素進行逐一相乘,然後將乘積相加,再除以像素數量。當兩個像素均為白色時(值為1),乘積為1,若兩者均為黑色(值為-1),乘積也為1。換言之,相同像素的乘積為1,不同的為-1。將這些乘積加總,再除以像素數量,可得到一個相似度指標。透過這個過程,我們可以根據每次卷積的值和位置,製作一個新的二維矩陣,歸納出圖片的多種特徵。
2. 池化
池化(Pooling)是卷積神經網路(CNNs)中一個強大的工具,用於壓縮圖片並保留重要資訊。池化操作相對簡單,選擇圖片上不同窗口(window),並從每個窗口中選取最大值作為代表。通常選用邊長為二或三的正方形範圍,搭配兩像素的間隔(stride)。
經過池化後,原圖的像素數量減少為四分之一,但仍保留了各區域最重要的特徵。池化後的資訊聚焦於特徵的存在與相符程度,而非特徵位置,使CNN能判斷圖片是否包含特定特徵而不受特徵位置影響,池化層將圖片縮小,保留重要特徵,並降低像素數量,改善運算效率。以先簡化圖片像素,再進行後續分析,有效解決運算負擔問題。
然後,再透過線性整流單元(ReLU),將所有負數值轉換為零,保留正數值。避免CNN的運算結果趨近 0 或無限大。
3. 深度學習
卷積神經網路的每一層運算都有類似的輸入和輸出,同圍二維矩陣,因此可以將這些層疊加在一起,就像搭建樂高積木一樣。
這些圖片可以進一步經過篩選和壓縮,特徵隨著每次處理變得更加複雜,圖片也變得更小。較低層次的處理層包含著簡單的特徵,例如邊緣或光點,而較高層次的處理層包含著更複雜的特徵,例如形狀或圖案。這些高層次的特徵通常更容易被識別,以人臉辨識為例,在最高層次的處理層中可以看到完整的人臉特徵。這種分層處理有助於CNN更有效地學習和識別複雜的圖像特徵。
傳統的機器學習需要人工輸入相關特徵集,資料科學家手動確定分析這些特徵。這限制了軟體的能力,使得建立和管理變得繁瑣。在深度學習中,資料科學家只需提供原始資料,深度學習網路能自動推導特徵並更獨立地學習。它能夠分析非結構化資料集,解決更複雜的問題。
舉例來說,若要訓練機器識別寵物影像,在傳統機器學習中需要手動標記數千張影像,告訴軟體要尋找哪些特徵,並透過設定的特徵來識別影像。然而,在深度學習中,神經網路會自動學習影像中的特徵,不需手動設定,只需對產出的結果進行調整,使得誤差降低。
4. 完全連接層
全連結層(fully connected layers)在卷積神經網路(CNN)會接收高階篩選過的圖片,並將這些特徵資訊轉化為投票。在全連結層中,我們將高階處理層的輸出視為一個一維數組,而不是之前的二維圖像矩陣。每個值在這個數組中都代表著一個特徵,可以用來決定圖像是A還是B。然而,這個決策過程並非純粹的多數決,而是根據每個值的權重(weight)或連結強度(connection strength)來進行。有些值可能更有利於判斷A,而有些則更適合判斷B,這些值的投票權重不盡相同。當一張新的圖像通過CNN進行分類時,它首先經過多個低階處理層,然後進入全連結層。在全連結層的投票過程後,最高票數的選項將成為該圖像的預測類別。
除了單一全連結層外,我們還可以組合多個全連結層,其中的一些層可以引入虛擬的、隱藏的投票選項。每當我們新增一層全連結層,整個神經網路都可以學習更複雜的特徵組合,進而提高對圖像的準確判斷能力。
如同人類學習辨識爸爸媽媽的臉孔一樣,是從出生以來慢慢累積的技能,不斷的告訴小朋友我是媽媽,並在答錯的時候被糾正,答對的時候被獎勵。
而機器同理,當我們在應用機器學習技術去辨識圖片時,我們也是告訴機器每一張圖片分別代表的是什麼,最後再測試機器的學習情況如何,並根據結果作學習方式的調整。這樣的方式稱之為監督式學習,有興趣的朋友可以去看AI匠的另一支影片喔!
有個名叫反向傳播(backpropagation)的機器學習技巧就可以很好的幫助我們解決這個問題。
使用反向傳播時,首先需要準備一些已標註答案的圖片,標示其中的預期類別。接著,建立一個未經訓練的CNN,其中所有的像素、特徵、權重和全連結層的值都是隨機的。然後,使用這些標註好的圖片來訓練CNN。
CNN處理每張圖片後,會產生一個預測類別的結果。這個結果與實際答案進行比較,得到一個辨識誤差。透過調整特徵和權重,使得誤差降低。在每次調整後,特徵和權重會微調,誤差會重新計算,成功降低誤差的調整將會被保留。這樣反覆進行,不斷調整卷積層和全連結層中的特徵和權重,直到誤差足夠小。當我們訓練足夠多的已標記圖片時,特徵和權重的值會趨向穩定,使得CNN能夠更好地識別大多數圖片,最終達到高性能的狀態。
AI娃衍伸問題
卷積是什麼?
機器學習與神經網路的深度學習有什麼不同?
特徵是怎麼決定的?需要人來決定嗎?
CNN只能用來處理圖像嗎?
AI匠FB: https://www.facebook.com/profile.php?...
AI匠IG: / aijun8675
參考資料:
https://allen108108.github.io/blog/20...
• But what is a convolution?
• How Deep Neural Networks Work - Full ...
https://edge.aif.tw/about-cnn/
http://3smarket-info.blogspot.com/201...
https://aws.amazon.com/tw/what-is/neu...
https://zh.wikipedia.org/zh-tw/%E5%8D...
/ %e5%8d%b7%e7%a9%8d%e7%a5%9e%e7%b6%93%e7%b6...
/ %e8%b3%87%e6%96%99%e5%88%86%e6%9e%90-%e6%a...
• How Convolutional Neural Networks work
https://brohrer.mcknote.com/zh-

Доступные форматы для скачивания:
Скачать видео mp4
-
Информация по загрузке: