對於 iOS 開發,人工智慧意味著什麼?

2021-08-20 20:16:07 字數 4338 閱讀 2961

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

關於人工智慧(ai),我們經常聽到這樣一些相關詞:大資料(big data),機器學習(machine learning),神經網路(neural network)。那麼這些詞到底有什麼區別?我們來看下面一則小故事。

從前有個程式設計師叫牛頓。他定義了乙個方法來計算自由落體的速度:

func

getvelocity

(time t: second)

-> float

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

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

收集盡可能多的自由落體實驗資料。假如收集到的資料如下

負責人速度 (m/s)

時間 (s)

伽利略9.81牛頓

19.6

2達文西

29.4

3亞里斯多德304

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

facebook chatbot,通過人工智慧優化的購物客服

使用者上傳**

將**傳至雲端,雲端的神經網路分析識別**

輸出一副重新繪製的作品

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

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

人工智慧將給 ios 開發帶來很多新的機會。人工智慧界的泰斗,麥可喬丹教授說 ai = ia + ii + aa。作為 ios 開發者我深以為然,下面是我對這句話的理解:

人工智慧(artificial intelligence) = 智慧型放大(intelligence augment)+ 智慧型基建(intelligent infrastructure)+ 自動演算法(automatic algorithm)。

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

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

將模型匯入 xcode 中,xcode 自動生成對應的 swift 介面

使用 swift 介面進行程式設計

使用場景為:

wwdc展示的物體識別應用

還有google推出的tensorflow,facebook主導的caffe,以及amazon力捧的mxnet,都可以訓練出很棒的 core ml 模型供 ios 開發使用。這幾個框架大家也可以了解一下,這裡**建議,研究人工智慧框架,不推薦看中文書,直接去看英文文件效果更好。因為這些框架變化很快,書中內容淘汰得很快,而且有些理論知識還是看一手的資料更好。

人工智慧對教育意味著什麼?

人工智慧來了,你準備好了嗎?系列文章 第三篇 任何一項科學技術的大發展,必然會影響到教育領域,人工智慧也不會例外。作為教育工作者,我們不禁要自問 在人工智慧發展如此迅猛的時代,那麼多領域和行業都受到其直接 快速 甚至顛覆性的影響,都主動或被動地做出了改變,那麼教育領域會不會因為人工智慧的發展而受到顛...

數學,對人工智慧開發者意味著什麼

21世紀以來,全球化的加速和網際網路的蓬勃發展,帶來全球範圍內電子資料的 性增長,人類邁入了大資料時代。與此同時,計算機晶元的計算能力也持續高速增長。在資料和計算能力指數式增長的支援下,人工智慧演算法在應用中取得了重大突破,如人臉識別 語音識別 網頁搜尋 購物推薦 自動化交易等方面都取得了突破性進展...

人工智慧創造了乙個假世界 這對人類意味著什麼?

當ai fabrication可以接受時 通常情況下,觀眾如果意識到這一點,就會接受人工智慧的製作。多年來,為了娛樂的利益,我們中的許多人已經開始接受電影和電視螢幕上現實生活的表現。然而,現在 好萊塢正在為指令碼編寫獲得ai協助。隨著機器學習的發展,演算法可以對大量資料進行分類,以了解哪些元素更有可...