簡介
近來很夯的話題就是AI人工智慧,AI包含的範圍非常大,比如人臉追蹤、人臉辨識、文字辨識(OCR)、 語音辨識、車牌辨識、植物辨識、汽車自動駕駛、無人飛機、類神經網路、fuzzy(模糊辨識)、NLP自然語言處理…。每一種領域又有難懂的數學及統計學演算法。
這門學科絕對不會像廣告說的 “不懂程式也可以學會 AI “。相反的,不懂程式絕對學不會 AI。
什麼是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”。
AI 為 Artificial Intelligence 的縮寫,中文稱為人工智慧。這門學科,包含了成千上萬的數學演算法,統計學及程式。本站使用 Python 介紹基本入門。
學習心態
AI 要學習的東西無窮無盡,初學者都想知道某個模型它是怎麼作出來的。比如 VGG 模型可以針對傳入百萬張的圖片進行訓練,然後預測新圖片的種類。
換個角度想想,這些團隊花了那麼多人力,那麼多時間,搜集那麼多資料,才完成一個 VGG 模型,然後到現在還在改版。
而這個世界又有那麼多的模型(那麼多的人力、時間、資料)。這就好比這個宇宙,有上億個星系,每個星系又有上億個行星,然後現在又有無限的平行宇宙概念。
這個領域即深且廣,不是一個人可以完全了解所有的 AI 模型及演算法。所以把常用模型所需的資料格式及規則記下來才是重點。日後有興趣再往特定的模型去深入開發研究。