前言
近幾年來人工智能的話題那是炙手可熱逸绎。在國內(nèi)很多大佬言必談機器學習和大數(shù)據(jù);在美國剛畢業(yè)的人工智能 PHD 也是眾人追捧隧哮,工資直逼 NFL 四分衛(wèi)桶良。人工智能甚至成為了互聯(lián)網(wǎng)領域茶余飯后的話題 —— 仿佛不懂人工智能就是落伍了。
筆者作為一名 iOS 開發(fā)者沮翔,對于如火如荼的人工智能和機器學習陨帆,也保持了密切的追蹤和了解。這篇文章就是總結(jié)我在硅谷和西雅圖的所見所聞采蚀,拋磚引玉的與大家分享一下我對于人工智能的思考疲牵。
人工智能是什么?
關于人工智能(AI)榆鼠,我們經(jīng)常聽到這樣一些相關詞:大數(shù)據(jù)(Big Data)纲爸,機器學習(Machine Learning),神經(jīng)網(wǎng)絡(Neural Network)妆够。那么這些詞到底有什么區(qū)別识啦?我們來看下面一則小故事。
從前有個程序員叫牛頓神妹。他定義了一個方法來計算自由落體的速度:
funcgetVelocity(time t: second)->Float{return9.8* t}
他是怎么得到這個方法的呢颓哮?牛頓自己被一個蘋果砸中之后,做了大量的邏輯推導和實驗論證之后鸵荠,得到了這個公式冕茅。這是目前傳統(tǒng)意義上的寫程序方法 -- 理解清楚了事物的內(nèi)在邏輯和真相后,由人來定義方法蛹找。直到今天姨伤,絕大多數(shù)程序都是這么寫出來的。
而所謂的人工智能庸疾,就是機器自己定義方法乍楚。人工智能的實現(xiàn)方法有很多,比如可以讓機器來模擬大腦届慈,然后像人一樣思考炊豪,從而定義方法凌箕。機器學習只是另一種實現(xiàn)人工智能的方法拧篮,就是由大數(shù)據(jù)定義方法词渤。假如牛頓時期就有機器學習,它得出自由落體速度的過程是這樣的:
收集盡可能多的自由落體實驗數(shù)據(jù)串绩。假如收集到的數(shù)據(jù)如下
負責人速度 (m/s)時間 (s)
伽利略9.81
牛頓19.62
達芬奇29.43
亞里士多德304
分析數(shù)據(jù)缺虐。機器學習會分析出,亞里士多德的數(shù)據(jù)有誤不予采納礁凡。其他三人的數(shù)據(jù)滿足同一規(guī)律高氮。
定義方法。根據(jù)上面數(shù)據(jù)顷牌,機器學習得出結(jié)論剪芍,速度 = 時間 * 9.8。
隨著數(shù)據(jù)收集得越多窟蓝,機器學習得到的結(jié)論就越準確罪裹。其實人類學習的過程也十分類似:書上有大量的知識(加工的數(shù)據(jù)),我們看了之后進行理解思考运挫,然后得出自己的結(jié)論状共。
開普勒就是個著名的人肉的機器學習實踐者:他前半輩子看星星,把觀測到的數(shù)據(jù)記錄下來谁帕;后半輩子用自己的邏輯和理解分析這些數(shù)據(jù)峡继;最后得出行星運動的開普勒-牛頓模型。然后用這個模型去預測其他行星運轉(zhuǎn)匈挖,同時新的數(shù)據(jù)用來修正模型的參數(shù)碾牌,使之逼近完美。
那么數(shù)據(jù)和人相比有什么優(yōu)勢呢儡循?我認為是更快更準確舶吗。人在定義方法時,總是需要對該方法的前后因果贮折、邏輯關系裤翩、各種情況都要求考慮周全,這有時需要花費很多時間去研究論證调榄,而且忽略某些極端情況也時有發(fā)生踊赠,導致定義漏洞百出。而數(shù)據(jù)在互聯(lián)網(wǎng)時代每庆,獲取的成本是很低的筐带。在這樣情況下,大量數(shù)據(jù)的輕易獲得會使得方法定義越來越快缤灵;同時現(xiàn)實中數(shù)據(jù)涵蓋的情況之廣伦籍,也使得依次定義的方法更加準確蓝晒。
吳軍博士在《智能時代》一書中對大數(shù)據(jù)的優(yōu)勢進行了以下總結(jié):“在無法確定因果關系時,數(shù)據(jù)為我們提供了解決問題的新方法帖鸦,數(shù)據(jù)中所包含的信息可以幫助我們消除不確定性芝薇,而數(shù)據(jù)之間的相關性在某種程度上可以取代原來的因果關系,幫助我們得到想要的答案作儿,這便是大數(shù)據(jù)的核心洛二。”
我們回到上文牛頓自由落體速度的實驗中去攻锰。實際上晾嘶,機器學習拿到的實驗數(shù)據(jù),可能是以下的記載:
9月15日的夜晚娶吞,小雨微風垒迂。伽利略在比薩斜塔上扔下了1顆鉛球,質(zhì)量為4kg妒蛇,初始速度為0机断,到達地面時間為6s多。
這個數(shù)據(jù)樣本中有很多特征材部,時間毫缆、空氣濕潤度、風力乐导、比薩斜塔的高度苦丁、鉛球質(zhì)量、初始速度物臂、到達地面時間等等旺拉。那么自由落體速度到底跟哪些特征相關?如果讓機器自己去分析棵磷,這就叫做無監(jiān)督學習蛾狗。如果我們告訴機器,不要 care 質(zhì)量和時間仪媒,重點觀測時間沉桌,這就叫做監(jiān)督學習。后者在于借鑒了人類的智慧算吩,這樣機器學習就有了大致的方向留凭。
至此,機器學習依然難以稱得上“智能” -- 它無非是更快更準確的得出答案而已偎巢。如果僅僅如此蔼夜,AlphaGo 就算將所有九段棋手的對弈研究透徹(這些對弈的輸贏已定,相當于人為標注走法好壞压昼,故為監(jiān)督學習)求冷,水平也就十段而已瘤运,于九段相比,也就是略勝一籌匠题,發(fā)揮更穩(wěn)定一點拯坟。然而事實是,AlphaGo 的棋力要遠勝人類最高水平梧躺。
其實 AlphaGo 在下棋時似谁,每下幾步,系統(tǒng)都會告訴它勝率是否提升掠哥。這種不斷反饋的機制可以讓 AlphaGo 實時強化棋力,并鼓勵其嘗試人類從沒有下過的路數(shù)秃诵,從而實現(xiàn)超越人類续搀。這種反饋的訓練方式就叫做增強學習。
最后講講神經(jīng)網(wǎng)絡是怎么回事菠净。以我粗淺的理解禁舷,神經(jīng)網(wǎng)絡是由神經(jīng)元組成,每個神經(jīng)元都有對應的功能毅往。比如牵咙,人工智能要識別一堆動物照片中的母狗,第一個神經(jīng)元做的是判斷哪些動物是狗攀唯,第二個神經(jīng)元做的就是區(qū)分狗的公母洁桌。
上面這個例子中,我們是先讓第一個神經(jīng)元進行判斷侯嘀,再將結(jié)果傳遞給第二個神經(jīng)元另凌。也就是說,后者的輸入是前者的輸出戒幔,這就是神經(jīng)網(wǎng)絡分層的概念吠谢。所以 AlphaGo 這種大型神經(jīng)網(wǎng)絡,就是基于神經(jīng)元分層這個原理诗茎。
因為機器學習的發(fā)展在人工智能領域一枝獨秀工坊。所以提到人工智能,幾乎就相當于是在談機器學習敢订。
人工智能在 iOS 開發(fā)上有哪些應用王污?
前面說了這么多,肯定很多人要問:這些都很高大上枢析,可惜我是 iOS 工程師玉掸,人工智能到底關我何事?其實人工智能在 iOS 上由來已久醒叁,且可能會深入我們的日常開發(fā)中司浪,所以我們有必要對此高度敏感泊业。這里筆者來分享一下人工智能在 iOS 上的應用。
首先啊易,喬布斯老爺子早在若干年前就在 iPhone 上布局了智能語音助手 Siri吁伺。Siri 可謂是人工智能和機器學習在移動端上第一次成功的應用:它結(jié)合了語音識別(Speech Recognition)和自然語言處理(Natural Language Processing)兩大人工智能操作(當然前者是后者的一部分)。后來因為蘋果封閉的基因租谈,Siri 的數(shù)據(jù)量一直沒有上去篮奄,而我們都知道數(shù)據(jù)量是提高人工智能水平的關鍵,所以現(xiàn)在 Siri 現(xiàn)在一直很雞肋割去。
同 Siri 類似窟却,F(xiàn)acebook 在他們的 Messenger App 中集成了聊天機器人(Chatbot)。在去年的 F8 現(xiàn)場呻逆,我還清楚地記得他們號稱這是 App 開發(fā)的新紀元 - 由聊天機器人和人工智能主導的 App 將取代傳統(tǒng)手機應用夸赫,而 Messenger 將從一款聊天應用變成一個平臺甚至是一個操作系統(tǒng)。這個跟微信的小程序戰(zhàn)略類似咖城,只不過多了人工智能的噱頭茬腿。可惜的是宜雀,很多人工智能領域的大佬告訴我切平,聊天機器人離成熟還有很大距離。
Facebook Chatbot辐董,通過人工智能優(yōu)化的購物客服
到這里侮邀,人工智能在 iOS 端都沒有比較成功的案例逝慧。直到這一款 App 的誕生:Prisma休玩。老毛子 Alexey 在讀了兩篇論文 --《藝術風格的神經(jīng)算法》和《利用神經(jīng)卷積網(wǎng)絡進行文理合成》之后躏结,開發(fā)出了 Prisma 這款風格轉(zhuǎn)換的 App。它的基本流程是這樣:
用戶上傳照片
將照片傳至云端夸研,云端的神經(jīng)網(wǎng)絡分析識別照片
輸出一副重新繪制的作品
將重繪的作品下載到手機端
這款 App 最難的地方在于第二步的耗時邦蜜,即模型分析研究照片的風格。Alexey 優(yōu)化了神經(jīng)網(wǎng)絡的細節(jié)亥至,使得 Prisma 在重繪一張照片的耗時僅需幾秒悼沈。之后的App 迭代,為了讓速度更快姐扮,也為了解決海外用戶連接云端的演示問題絮供,神經(jīng)網(wǎng)絡的模型被直接部署在了移動端。利用 iPhone 強大的處理器直接進行離線圖片繪制茶敏,這也讓 Prisma 成為了第一款能夠離線運行風格轉(zhuǎn)換神經(jīng)網(wǎng)絡的手機運用∪腊校現(xiàn)在 Prisma 的處理一張圖片的速度只需半秒不到,它也因為藝術和技術的完美結(jié)合而拿下 iOS 年度最佳應用惊搏,并且擁有了數(shù)億用戶贮乳。
最后再介紹一款 App:Topology Eyewear忧换。這是一款訂制眼鏡的電子商務應用。其特點是對用戶進行人臉識別向拆,然后在手機端渲染出客戶戴上不同眼鏡的效果亚茬。
第三方 App 的成功,刺激了大廠在相關領域的重視浓恳。Snapchat刹缝,Instagram,WhatsApp 紛紛將人工智能技術引入了其濾鏡效果颈将。同時 Facebook 和 Google 也開始將 AI 框架情輕便化以方便部署在移動端梢夯。2017年剛過去的 WWDC,機器學習成為了整個大會最熱門的詞匯吆鹤,同時蘋果正式推出了 Core ML 框架厨疙。它涵蓋視覺識別和自然語義處理兩大內(nèi)容,在提供很多訓練好的模型基礎上還有十分定制化的模型生成工具疑务。操作的易用性讓 Core ML 剛面世就受到廣大開發(fā)者的追捧。
總體來說梗醇,移動應用 AI 化已經(jīng)是一個基本趨勢知允,正如李開復在哥倫比亞大學的畢業(yè)演講中說:在未來,伴隨著硬件叙谨、軟件和網(wǎng)絡帶寬成本的下降温鸽,人工智能的成本幾乎就是電費了。
iOS 開發(fā)者該何去何從手负?
首先我認為涤垫,iOS 和人工智能并不是對立關系,而是互補的關系竟终。iOS 應用需要人工智能來提高自身的效率和拓展功能蝠猬,人工智能技術需要在 iOS 平臺上落實為產(chǎn)品。智能時代更多是移動時代的升級和補充统捶,而不是取代榆芦。所以 iOS 開發(fā)仍有市場,我們無需擔心人工智能會讓我們失業(yè)喘鸟。
但是匆绣,iOS 開發(fā)者需要擁抱人工智能。這屆的 try! Swift 大會什黑,有兩個演講專門提到了機器學習崎淳;如果你有讀博客的習慣,你會發(fā)現(xiàn) Facebook 的 iOS 技術專欄近年來幾乎篇篇都要談到借鑒人工智能技術開發(fā)的新功能愕把。比如《The engineering behind social recommendations》拣凹,F(xiàn)acebook紐約的團隊為了在移動端更好得面向用戶推薦餐廳和旅游地點森爽,利用了大數(shù)據(jù)和人工智能將大量相關的信息抽取出來,再針對用戶的狀態(tài)和地點進行推薦咐鹤。Google 更是把人工智能融入到了絕大多數(shù)的 iOS 的應用中拗秘。如果 iOS 開發(fā)者拒絕人工智能,我們可能再也無法開發(fā)出讓用戶滿意的應用祈惶。就像現(xiàn)在算法和計算機系統(tǒng)是程序員的基本功一樣雕旨,未來人工智能也會是程序員的必備基本技能之一。
人工智能將給 iOS 開發(fā)帶來很多新的機會捧请。人工智能界的泰斗凡涩,邁克爾喬丹教授說 AI = IA + II + AA。作為 iOS 開發(fā)者我深以為然疹蛉,下面是我對這句話的理解:
人工智能(Artificial Intelligence) = 智能放大(intelligence Augment)+ 智能基建(intelligent Infrastructure)+ 自動算法(Automatic Algorithm)活箕。
智能放大:即我們?nèi)祟愔腔鄣耐卣埂1热?Google 搜索拓展了我們獲取知識的渠道可款;大數(shù)據(jù)可以幫助科爾改進金州勇士隊的訓練方案和優(yōu)化戰(zhàn)術選擇育韩。
智能基建:即物聯(lián)網(wǎng)。Amazon 的智能家居和 Amazon Go 無人超市闺鲸,Uber 的無人汽車筋讨,IBM 的智慧城市,它們都會根據(jù)每個用戶的需求進行個性化操作摸恍。
自動算法:即各種各樣的人工智能工具悉罕。深度學習、增強學習立镶、神經(jīng)網(wǎng)絡的改進壁袄,以及 TensorFlow, Caffe, MXNet 等框架的推出和應用都屬于這個范疇。
無論是哪一個方面媚媒,iOS 開發(fā)都可以大有作為嗜逻。智能放大方面的 App 可以直接面向用戶;智能機建一定需要 iOS 開發(fā)者在終端完成對用戶的相應連接欣范;自動算法的運用會讓 iOS 應用更加強大变泄。
最后,作為 iOS 開發(fā)者該如何學習人工智能恼琼?Core ML 是官方推出的工具妨蛹,大家不妨從這里著手。WWDC 展示的 Core ML 開發(fā)步驟分為以下3步:
通過其他平臺或框架得到機器學習模型
將模型導入 Xcode 中晴竞,Xcode 自動生成對應的 Swift 接口
使用 Swift 接口進行編程
使用場景為:
情感分析
物體識別
個性化定制
類型轉(zhuǎn)換
音樂標簽
手勢識別
自然語義識別
WWDC展示的物體識別應用
還有Google推出的TensorFlow蛙卤,F(xiàn)acebook主導的Caffe,以及Amazon力捧的MXNet,都可以訓練出很棒的 Core ML 模型供 iOS 開發(fā)使用颤难。這幾個框架大家也可以了解一下神年,這里吐血建議,研究人工智能框架行嗤,不推薦看中文書已日,直接去看英文文檔效果更好。因為這些框架變化很快栅屏,書中內(nèi)容淘汰得很快飘千,而且有些理論知識還是看一手的資料更好。
結(jié)語
也有很多人不看好人工智能栈雳,認為現(xiàn)在炒作太熱护奈,只是概念,泡沫太多哥纫,難以落地變現(xiàn)霉旗。作為 iOS 開發(fā)者,從技術角度看蛀骇,現(xiàn)在的人工智能技術已經(jīng)足以大幅推動我們 App 的進步和拓展厌秒。與其作壁上觀,不如進來親身實踐擅憔,希望這篇文章能給開發(fā)或者關注 iOS 的你帶來一些啟發(fā)简僧。
參考文獻
移動應用AI化成新戰(zhàn)場?詳解蘋果最新Core ML模型構(gòu)建基于機器學習的智能應用