2017/12/30

不發展 AI 會被淘汰?



常常看到許多財經雜誌寫著類似非常聳動的標題,但事實上倒也沒那麼誇張。若把AI的發展比喻成網際網路的基礎建設,並不是「網際網路」本身讓「網際網路」變得不可或缺,而是人與人之間的聯繫、互動與分享等需求所致。想想看,若我們提出來的應用若只是圖像辨識或語音辨識,那如何能讓AI變得那麼不可或缺?

現代人若沒有網路恐怕很難熬,但將來AI能有甚麼樣的應用會讓人沒有它不能活呢?



AI 的入行門檻遠比你想像的還低!
這波的AI大浪著實來的猛爆,多少人擁有十八般武藝總算有機會嶄露,有些人半路出家深怕跟不上浪頭或被大浪吞沒,當然也有不少人趁機打著AI的旗幟看看能不能在開始的混亂之中撈到一些珍珠貝殼(騙騙VC的計畫)。且讓我們靜觀整個局勢的發展,當海水退去之後,誰沒穿褲子將一目瞭然。



AI 重新定義程式開發的套路
深層神經網路猛爆式的發展,對程式設計師的思維模式來說也產生了實質的變遷:以往我們寫一個程式(無論習慣用C++JavaPython)不外乎就是變數宣告、記憶體配置、幾個內外迴圈再加幾個函式呼叫來達成某個特定任務;而到了神經網路則變成了框架拼圖、訓練/學習與正向的推論,當神經網路框架與網路參數都「固化」以後的系統即可執行與傳統程式架構有相同輸出/入功能的任務。




不過其中較困難的部份,包括倒傳遞理論解偏微分、度優化法Gradient Descent與網路參數最佳化等等都已經模組化與自動化。也就是說,「寫程式」這個工作有點變成了拼積木、訓練與看結果的過程(這個工作小朋友都會)。所以,程式設計師若不長進將會第一個被淘汰。

例如下面以Keras腳本所描述不超過15行的神經網路框架(CNN+MLP),讓我們輕鬆花個兩分鐘就能拼湊出一個CIFA10影像識別率超過75%準確率的神經網路。

model = Sequential()
model.add(Conv2D(32, (3, 3),input_shape=(32,32,3),padding='same',activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(32, (3, 3),padding='same',activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2))
model.add(Conv2D(32, (3, 3),padding='same',activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Flatten())
model.add(Dense(units=1024,activation='relu'))
model.add(Dense(units=10,activation='softmax'))
model.add(Dropout(0.25))

model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])



跟以往處理很多變數、記憶體配置、內外迴圈加函式呼叫的程式思維模式完全不同,現在要做的是:睡覺前拼一版神經網路然後丟去雲端做訓練,隔天起來看結果(好結果,程式完成)。




比較有趣的是,我們還可以窺視神經網路到底是怎麼理解數據的呢?如下圖是樣本訓練完所自動產生的第一階CNN濾波器與原始影像執行卷積的結果:







有時候當神經網路把狗當成貓時(下面這些標示為「5狗」的圖被上述神經網路辨識為「3貓」了),內心還蠻欣慰的,人類其實還是蠻優秀的啦!當然,這可能是我的網路架構不好所致。





AI 硬體描述語言產生器(Hardware Description Language Generator
筆者大膽預測一下將來可能出現(或許多鴨子划水已經默默在孵化中)的開發工具。概念如下:透過類似Scratch界面的開發者平台(具有強大運算力的雲端伺服器),開發者根據應用需求與問題特性定義輸入維度、判定類別數與神經網路框架,經過幾次疊代調出最佳的網路參數之後就能自動產生該神經網路的源生Python程式碼,再經過語言模組的轉換可自動生成高階的硬體描述語言,之後便可交由傳統的IC生產製造流程。





自適應多任務強化學習(Adaptive Multi-Task Reinforcement Learning
要做一個AI很簡單,但要做一個實用且可適應不同任務進行動態訓練與學習的應用就要花一些腦筋。幸運的是,神經網路正向推論所需的硬體資源配置單純且大部分都可以共用,而相較複雜且須要耗費大量計算資源的部份應該交由強大的雲端伺服器來執行。這在目前以WiFi或未來5G的系統都非難事而且將順水推舟,因此可預期未來機器人的學習與適應力將越來越強,會產衍生出甚麼複雜的應用難以想像。






分散式神經元感知器(Distributed Perceptron
在即將普遍的5G萬物聯網時代,許多感測器(如城市攝影機、道路信號控制、高空遙測、橋樑監測或行車記錄器等)、普及的電腦、遊戲機、家電設備到個人的手持裝置與生物監測器等都可以分享出部份資源與計算力來當成感知器並組成巨大的神經網路。




就像本期「科學人」說的:「科學想像力沒有邊界」。而在這個新時代,AI的發展將不再受限於手邊能用的技術,而是取決於我們的想像力。與其擔心甚麼時候AI將取代人類的工作,或大言不慚的說要讓年輕人看到未來,可能更應該正視:小朋友其實比我們來的有創意多了!