3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
前言近幾年來人工智慧的話題那是炙手可熱。在國內很多大佬言必談機器學習和大數據;在美國剛畢業的人工智慧 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 AppsEverything a Swift Dev Needs to Know About Machine Learning

本文由yidianzixun提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦