search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

【矽谷問道】對於 iOS 開發,人工智慧意味著什麼?

前言

近幾年來人工智慧的話題那是炙手可熱。在國內很多大佬言必談機器學習和大數據;在美國剛畢業的人工智慧 PHD 也是眾人追捧,工資直逼 NFL 四分衛。人工智慧甚至成為了互聯網領域茶餘飯後的話題 —— 彷彿不懂人工智慧就是落伍了。

筆者作為一名 iOS 開發者,對於如火如荼的人工智慧和機器學習,也保持了密切的追蹤和了解。這篇文章就是總結我在矽谷和西雅圖的所見所聞,拋磚引玉的與大家分享一下我對於人工智慧的思考。

人工智慧是什麼?

關於人工智慧(AI),我們經常聽到這樣一些相關詞:大數據(Big Data),機器學習(Machine Learning),神經網路(Neural Network)。那麼這些詞到底有什麼區別?我們來看下面一則小故事。

從前有個程序員叫牛頓。他定義了一個方法來計算自由落體的速度:

func getVelocity(time t: second) -> Float { return 9.8 * t}

他是怎麼得到這個方法的呢?牛頓自己被一個蘋果砸中之後,做了大量的邏輯推導和實驗論證之後,得到了這個公式。這是目前傳統意義上的寫程序方法 -- 理解清楚了事物的內在邏輯和真相后,由人來定義方法。直到今天,絕大多數程序都是這麼寫出來的。

而所謂的人工智慧,就是機器自己定義方法。人工智慧的實現方法有很多,比如可以讓機器來模擬大腦,然後像人一樣思考,從而定義方法。機器學習只是另一種實現人工智慧的方法,就是由大數據定義方法。假如牛頓時期就有機器學習,它得出自由落體速度的過程是這樣的:

  • 收集儘可能多的自由落體實驗數據。假如收集到的數據如下

    負責人速度 (m/s)時間 (s)
    伽利略9.81
    牛頓19.62
    達芬奇29.43
    亞里士多德304

  • 分析數據。機器學習會分析出,亞里士多德的數據有誤不予採納。其他三人的數據滿足同一規律。

  • 定義方法。根據上面數據,機器學習得出結論,速度 = 時間 * 9.8。

隨著數據收集得越多,機器學習得到的結論就越準確。其實人類學習的過程也十分類似:書上有大量的知識(加工的數據),我們看了之後進行理解思考,然後得出自己的結論。

開普勒就是個著名的人肉的機器學習實踐者:他前半輩子看星星,把觀測到的數據記錄下來;後半輩子用自己的邏輯和理解分析這些數據;最後得出行星運動的開普勒-牛頓模型。然後用這個模型去預測其他行星運轉,同時新的數據用來修正模型的參數,使之逼近完美。

那麼數據和人相比有什麼優勢呢?我認為是更快更準確。人在定義方法時,總是需要對該方法的前後因果、邏輯關係、各種情況都要求考慮周全,這有時需要花費很多時間去研究論證,而且忽略某些極端情況也時有發生,導致定義漏洞百出。而數據在互聯網時代,獲取的成本是很低的。在這樣情況下,大量數據的輕易獲得會使得方法定義越來越快;同時現實中數據涵蓋的情況之廣,也使得依次定義的方法更加準確。

吳君博士在《智能時代》一書中對大數據的優勢進行了以下總結:「在無法確定因果關係時,數據為我們提供了解決問題的新方法,數據中所包含的信息可以幫助我們消除不確定性,而數據之間的相關性在某種程度上可以取代原來的因果關係,幫助我們得到想要的答案,這便是大數據的核心。」

我們回到上文牛頓自由落體速度的實驗中去。實際上,機器學習拿到的實驗數據,可能是以下的記載:

9月15日的夜晚,小雨微風。伽利略在比薩斜塔上扔下了1顆鉛球,質量為4kg,初始速度為0,到達地面時間為6s多。

這個數據樣本中有很多特徵,時間、空氣濕潤度、風力、比薩斜塔的高度、鉛球質量、初始速度、到達地面時間等等。那麼自由落體速度到底跟哪些特徵相關?如果讓機器自己去分析,這就叫做無監督學習。如果我們告訴機器,不要 care 質量和時間,重點觀測時間,這就叫做監督學習。後者在於借鑒了人類的智慧,這樣機器學習就有了大致的方向。

至此,機器學習依然難以稱得上「智能」 -- 它無非是更快更準確的得出答案而已。如果僅僅如此,AlphaGo 就算將所有九段棋手的對弈研究透徹(這些對弈的輸贏已定,相當於人為標註走法好壞,故為監督學習),水平也就十段而已,於九段相比,也就是略勝一籌,發揮更穩定一點。然而事實是,AlphaGo 的棋力要遠勝人類最高水平。

其實 AlphaGo 在下棋時,每下幾步,系統都會告訴它勝率是否提升。這種不斷反饋的機制可以讓 AlphaGo 實時強化棋力,並鼓勵其嘗試人類從沒有下過的路數,從而實現超越人類。這種反饋的訓練方式就叫做增強學習。

最後講講神經網路是怎麼回事。以我粗淺的理解,神經網路是由神經元組成,每個神經元都有對應的功能。比如,人工智慧要識別一堆動物照片中的母狗,第一個神經元做的是判斷哪些動物是狗,第二個神經元做的就是區分狗的公母。

上面這個例子中,我們是先讓第一個神經元進行判斷,再將結果傳遞給第二個神經元。也就是說,後者的輸入是前者的輸出,這就是神經網路分層的概念。所以 AlphaGo 這種大型神經網路,就是基於神經元分層這個原理。

因為機器學習的發展在人工智慧領域一枝獨秀。所以提到人工智慧,幾乎就相當於是在談機器學習。

人工智慧在 iOS 開發上有哪些應用?

前面說了這麼多,肯定很多人要問:這些都很高大上,可惜我是 iOS 工程師,人工智慧到底關我何事?其實人工智慧在 iOS 上由來已久,且可能會深入我們的日常開發中,所以我們有必要對此高度敏感。這裡筆者來分享一下人工智慧在 iOS 上的應用。

首先,喬布斯老爺子早在若干年前就在 iPhone 上布局了智能語音助手 Siri。Siri 可謂是人工智慧和機器學習在移動端上第一次成功的應用:它結合了語音識別(Speech Recognition)和自然語言處理(Natural Language Processing)兩大人工智慧操作(當然前者是後者的一部分)。後來因為蘋果封閉的基因,Siri 的數據量一直沒有上去,而我們都知道數據量是提高人工智慧水平的關鍵,所以現在 Siri 現在一直很雞肋。

同 Siri 類似,Facebook 在他們的 Messenger App 中集成了聊天機器人(Chatbot)。在去年的 F8 現場,我還清楚地記得他們號稱這是 App 開發的新紀元 - 由聊天機器人和人工智慧主導的 App 將取代傳統手機應用,而 Messenger 將從一款聊天應用變成一個平台甚至是一個操作系統。這個跟微信的小程序戰略類似,只不過多了人工智慧的噱頭。可惜的是,很多人工智慧領域的大佬告訴我,聊天機器人離成熟還有很大距離。

Facebook Chatbot,通過人工智慧優化的購物客服

到這裡,人工智慧在 iOS 端都沒有比較成功的案例。直到這一款 App 的誕生:Prisma。老毛子 Alexey 在讀了兩篇論文 --《藝術風格的神經演算法》和《利用神經卷積網路進行文理合成》之後,開發出了 Prisma 這款風格轉換的 App。它的基本流程是這樣:

  • 用戶上傳照片

  • 將照片傳至雲端,雲端的神經網路分析識別照片

  • 輸出一副重新繪製的作品

  • 將重繪的作品下載到手機端

這款 App 最難的地方在於第二步的耗時,即模型分析研究照片的風格。Alexey 優化了神經網路的細節,使得 Prisma 在重繪一張照片的耗時僅需幾秒。之後的App 迭代,為了讓速度更快,也為了解決海外用戶連接雲端的演示問題,神經網路的模型被直接部署在了移動端。利用 iPhone 強大的處理器直接進行離線圖片繪製,這也讓 Prisma 成為了第一款能夠離線運行風格轉換神經網路的手機運用。現在 Prisma 的處理一張圖片的速度只需半秒不到,它也因為藝術和技術的完美結合而拿下 iOS 年度最佳應用,並且擁有了數億用戶。

最後再介紹一款 App:Topology Eyewear。這是一款訂製眼鏡的電子商務應用。其特點是對用戶進行人臉識別,然後在手機端渲染出客戶戴上不同眼鏡的效果。

第三方 App 的成功,刺激了大廠在相關領域的重視。Snapchat,Instagram,WhatsApp 紛紛將人工智慧技術引入了其濾鏡效果。同時 Facebook 和 Google 也開始將 AI 框架情輕便化以方便部署在移動端。2017年剛過去的 WWDC,機器學習成為了整個大會最熱門的辭彙,同時蘋果正式推出了 Core ML 框架。它涵蓋視覺識別和自然語義處理兩大內容,在提供很多訓練好的模型基礎上還有十分定製化的模型生成工具。操作的易用性讓 Core ML 剛面世就受到廣大開發者的追捧。

總體來說,移動應用 AI 化已經是一個基本趨勢,正如李開復在哥倫比亞大學的畢業演講中說:在未來,伴隨著硬體、軟體和網路帶寬成本的下降,人工智慧的成本幾乎就是電費了。

iOS 開發者該何去何從?

首先我認為,iOS 和人工智慧並不是對立關係,而是互補的關係。iOS 應用需要人工智慧來提高自身的效率和拓展功能,人工智慧技術需要在 iOS 平台上落實為產品。智能時代更多是移動時代的升級和補充,而不是取代。所以 iOS 開發仍有市場,我們無需擔心人工智慧會讓我們失業。

但是,iOS 開發者需要擁抱人工智慧。這屆的 try! Swift 大會,有兩個演講專門提到了機器學習;如果你有讀博客的習慣,你會發現 Facebook 的 iOS 技術專欄近年來幾乎篇篇都要談到借鑒人工智慧技術開發的新功能。比如《The engineering behind social recommendations》,Facebook紐約的團隊為了在移動端更好得面向用戶推薦餐廳和旅遊地點,利用了大數據和人工智慧將大量相關的信息抽取出來,再針對用戶的狀態和地點進行推薦。Google 更是把人工智慧融入到了絕大多數的 iOS 的應用中。如果 iOS 開發者拒絕人工智慧,我們可能再也無法開發出讓用戶滿意的應用。就像現在演算法和計算機系統是程序員的基本功一樣,未來人工智慧也會是程序員的必備基本技能之一。

人工智慧將給 iOS 開發帶來很多新的機會。人工智慧界的泰斗,邁克爾喬丹教授說 AI = IA + II + AA。作為 iOS 開發者我深以為然,下面是我對這句話的理解:

人工智慧(Artificial Intelligence) = 智能放大(intelligence Augment)+ 智能基建(intelligent Infrastructure)+ 自動演算法(Automatic Algorithm)。

  • 智能放大:即我們人類智慧的拓展。比如 Google 搜索拓展了我們獲取知識的渠道;大數據可以幫助科爾改進金州勇士隊的訓練方案和優化戰術選擇。

  • 智能機建:即物聯網。Amazon 的智能家居和 Amazon Go 無人超市,Uber 的無人汽車,IBM 的智慧城市,它們都會根據每個用戶的需求進行個性化操作。

  • 自動演算法:即各種各樣的人工智慧工具。深度學習、增強學習、神經網路的改進,以及 TensorFlow, Caffe, MXNet 等框架的推出和應用都屬於這個範疇。

無論是哪一個方面,iOS 開發都可以大有作為。智能放大方面的 App 可以直接面向用戶;智能機建一定需要 iOS 開發者在終端完成對用戶的相應連接;自動演算法的運用會讓 iOS 應用更加強大。

最後,作為 iOS 開發者該如何學習人工智慧?Core ML 是官方推出的工具,大家不妨從這裡著手。WWDC 展示的 Core ML 開發步驟分為以下3步:

  • 通過其他平台或框架得到機器學習模型

  • 將模型導入 Xcode 中,Xcode 自動生成對應的 Swift 介面

  • 使用 Swift 介面進行編程

使用場景為:

  • 情感分析

  • 物體識別

  • 個性化定製

  • 類型轉換

  • 音樂標籤

  • 手勢識別

  • 自然語義識別

WWDC展示的物體識別應用

還有Google推出的TensorFlow,Facebook主導的Caffe,以及Amazon力捧的MXNet,都可以訓練出很棒的 Core ML 模型供 iOS 開發使用。這幾個框架大家也可以了解一下,這裡吐血建議,研究人工智慧框架,不推薦看中文書,直接去看英文文檔效果更好。因為這些框架變化很快,書中內容淘汰得很快,而且有些理論知識還是看一手的資料更好。

結語

也有很多人不看好人工智慧,認為現在炒作太熱,只是概念,泡沫太多,難以落地變現。作為 iOS 開發者,從技術角度看,現在的人工智慧技術已經足以大幅推動我們 App 的進步和拓展。與其作壁上觀,不如進來親身實踐,希望這篇文章能給開發或者關注 iOS 的你帶來一些啟發。

參考文獻

  • 智能時代

  • 寫給大家看的機器學習書

  • 人工智慧的現狀和未來

  • 移動應用AI化成新戰場?詳解蘋果最新Core ML模型構建基於機器學習的智能應用

  • Bringing Machine Learning to your iOS Apps

  • Everything a Swift Dev Needs to Know About Machine Learning



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦