簡介
近來很夯的話題,就是AI人工智慧。AI包含的範圍非常大,比如人臉追蹤,人臉辨識,文字辨識(OCR), 語音辨識,車牌辨識,植物辨識,汽車自動駕駛,無人飛機,類神經網路,fuzzy(模糊辨識),車道辨識,心跳異常,血壓監控……。
什麼是AI
別讓這名詞給唬住了,電腦再怎麼厲害,也只會高速計算大量的數據。那麼,有多大的量呢,只是大到我們無法理會而以。
AI說穿了,就是利用多個演算法,產出一組數值。將已知結果的資料演算一下,產生A值,再將要預測結果的資料演算一下,產生B值。然後由A, B這二個數值去比對大小或範圍,判斷出結果。
要完成一個AI的演算,可能簡單到可能只要一種演算法,也可能複雜到上百種演算法,反正電腦很會算嘛,不用怕。
如何辨識
要辨識一件東西,當然要透過眼睛或耳朵,然後經過大腦研判。在電腦裏,照像機或web cam 就是眼睛、麥克風就是耳朵,程式就是大腦。但我們還可以透過其它感應器收集相關資訊再進行分析。所以我們的首要任務,就是要取得影像,聲音,然後轉換成圖片資料或是音頻資料,再進行分析。
所以學習 AI 的步驟如下:
1. 如何取得資料(圖片/視訊/音訊)
2. 如何轉換處理資料
3. 如何分析辨識演算法
取得資料
資料的取得,可以從照像機,web cam, 錄音等設備取得。但如何儲存到電腦中,這就是一個很高的門檻。大家可能都會說,就用電腦現有的錄音錄影程式就好了啊。其實不然,因為即時性的問題,錄音錄影的程式,都是要自已寫出來的,而不是套用市面上常用的軟体就可以解決。
處理資料
剋服上述的問題後,接下來就是資料處理了。比如圖片的縮放,裁切,去躁,灰階,二級化,模糊化,反差,明亮度變更,飽和度變更。
但,這不是Photoshop就可以達成了嗎? 是的,Photoshop可以輕易的達成。但我們要的是處理後的數字,不是你眼中看見的圖!!
辨識演算法
有了上述的數值後,就要開始進行數值的運算,比較其中的異同,然後傳出結果,這才是整個機器辨識的精華,也是最難的地方
從圖片處理開始
圖片處理,是辨識領域的第一步。因此學習如何用程式處理圖片是首要的技能。此技能不是使用Photoshop, 而是要用程式達成Photoshop所能完成的工作。要完成此階段的任務,就需從OpenCV開始著手
CPU/GPU/TPU
近來有些手機,特地加入AI人工智慧晶片,那這晶片是要幹嘛,有加沒加有差嗎? 首先先了解一下神經網路的運作過程
下圖中,一張 8 的圖,由28×28個灰階點構成。神經網路的運作,是將這28×28個點轉成一維的784個神經元,然後將所有的神經元與參數值相乘。參數值即為矩陣卷積核的值,也就是下圖的紅色線,然後從相乘的結果計算與8的相似度。所以神經網路需要進行大量的矩陣乘法與加法。
在CPU中進行乘法與加法,是依賴算術邏輯單元(ALU)完成。CPU的ALU只有一個,而且CPU必需由記憶体取得資料,或將計算結果送到記憶体,這就是馮諾依曼瓶頸。這資料的傳輸需耗費大量的時間及電能。
而GPU呢? 每個處理器中,有上千個ALU(2500-5000個)。這當然就比CPU快多了。不過還是需要跟記憶体交換資料。還是有馮諾依曼瓶頸。
TPU則是由Google自行設計,一樣有上千個ALU, 而且運算過程不需跟記憶体交換資料。僅在計算結束後,才把結果傳出到記憶体,所以又比GPU快了許多。
專門計算矩陣相乘相加的晶片,就被稱為AI晶片,比如TPU就是其中一種。
20多年前的386 CPU, 並沒有設計專門計算小數的功能,必需要用軟体摸擬。為了加速計算,必需購買浮點運算器。直到486,才把浮點運算器加入CPU之內。
由此推論,搞不好明年,或後年,新推出的CPU,就會把矩陣相乘相加的功能加入CPU內,此時就會稱此CPU為 “AI CPU”,或者是 “神經網路CPU”。