1. 程式人生 > >終於有人把雲端計算、大資料和人工智慧講明白了! (2)

終於有人把雲端計算、大資料和人工智慧講明白了! (2)

此文已由作者劉超授權網易雲社群釋出。

歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。


3大資料時代,眾人拾柴火焰高


當資料量很小時,很少的幾臺機器就能解決。慢慢的,當資料量越來越大,最牛的伺服器都解決不了問題時,怎麼辦呢?這時就要聚合多臺機器的力量,大家齊心協力一起把這個事搞定,眾人拾柴火焰高。


對於資料的收集:就IoT來講,外面部署這成千上萬的檢測裝置,將大量的溫度、溼度、監控、電力等資料統統收集上來;就網際網路網頁的搜尋引擎來講,需要將整個網際網路所有的網頁都下載下來。這顯然一臺機器做不到,需要多臺機器組成網路爬蟲系統,每臺機器下載一部分,同時工作,才能在有限的時間內,將海量的網頁下載完畢。

 



對於資料的傳輸:一個記憶體裡面的佇列肯定會被大量的資料擠爆掉,於是就產生了基於硬碟的分散式佇列,這樣佇列可以多臺機器同時傳輸,隨你資料量多大,只要我的佇列足夠多,管道足夠粗,就能夠撐得住。


 



對於資料的儲存:一臺機器的檔案系統肯定是放不下的,所以需要一個很大的分散式檔案系統來做這件事情,把多臺機器的硬碟打成一塊大的檔案系統。

 



對於資料的分析:可能需要對大量的資料做分解、統計、彙總,一臺機器肯定搞不定,處理到猴年馬月也分析不完。於是就有分散式計算的方法,將大量的資料分成小份,每臺機器處理一小份,多臺機器並行處理,很快就能算完。例如著名的Terasort對1個TB的資料排序,相當於1000G,如果單機處理,怎麼也要幾個小時,但並行處理209秒就完成了。

 

 

 





所以說什麼叫做大資料?說白了就是一臺機器幹不完,大家一起幹。可是隨著資料量越來越大,很多不大的公司都需要處理相當多的資料,這些小公司沒有這麼多機器可怎麼辦呢?


4大資料需要雲端計算,雲端計算需要大資料


說到這裡,大家想起雲計算了吧。當想要幹這些活時,需要很多的機器一塊做,真的是想什麼時候要就什麼時候要,想要多少就要多少。


例如大資料分析公司的財務情況,可能一週分析一次,如果要把這一百臺機器或者一千臺機器都在那放著,一週用一次非常浪費。那能不能需要計算的時候,把這一千臺機器拿出來;不算的時候,讓這一千臺機器去幹別的事情?


誰能做這個事兒呢?只有雲端計算,可以為大資料的運算提供資源層的靈活性。而云計算也會部署大資料放到它的PaaS平臺上,作為一個非常非常重要的通用應用。因為大資料平臺能夠使得多臺機器一起幹一個事兒,這個東西不是一般人能開發出來的,也不是一般人玩得轉的,怎麼也得僱個幾十上百號人才能把這個玩起來。


所以說就像資料庫一樣,其實還是需要有一幫專業的人來玩這個東西。現在公有云上基本上都會有大資料的解決方案了,一個小公司需要大資料平臺的時候,不需要採購一千臺機器,只要到公有云上一點,這一千臺機器都出來了,並且上面已經部署好了的大資料平臺,只要把資料放進去算就可以了。


雲端計算需要大資料,大資料需要雲端計算,二者就這樣結合了。


四、人工智慧擁抱大資料


1機器什麼時候才能懂人心


雖說有了大資料,人的慾望卻不能夠滿足。雖說在大資料平臺裡面有搜尋引擎這個東西,想要什麼東西一搜就出來了。但也存在這樣的情況:我想要的東西不會搜,表達不出來,搜尋出來的又不是我想要的。


例如音樂軟體推薦了一首歌,這首歌我沒聽過,當然不知道名字,也沒法搜。但是軟體推薦給我,我的確喜歡,這就是搜尋做不到的事情。當人們使用這種應用時,會發現機器知道我想要什麼,而不是說當我想要時,去機器裡面搜尋。這個機器真像我的朋友一樣懂我,這就有點人工智慧的意思了。


人們很早就在想這個事情了。最早的時候,人們想象,要是有一堵牆,牆後面是個機器,我給它說話,它就給我回應。如果我感覺不出它那邊是人還是機器,那它就真的是一個人工智慧的東西了。


2讓機器學會推理


怎麼才能做到這一點呢?人們就想:我首先要告訴計算機人類的推理的能力。你看人重要的是什麼?人和動物的區別在什麼?就是能推理。要是把我這個推理的能力告訴機器,讓機器根據你的提問,推理出相應的回答,這樣多好?


其實目前人們慢慢地讓機器能夠做到一些推理了,例如證明數學公式。這是一個非常讓人驚喜的一個過程,機器竟然能夠證明數學公式。但慢慢又發現其實這個結果也沒有那麼令人驚喜。因為大家發現了一個問題:數學公式非常嚴謹,推理過程也非常嚴謹,而且數學公式很容易拿機器來進行表達,程式也相對容易表達。


然而人類的語言就沒這麼簡單了。比如今天晚上,你和你女朋友約會,你女朋友說:如果你早來,我沒來;你等著,如果我早來;你沒來,你等著!這個機器就比較難理解了,但人都懂。所以你和女朋友約會,是不敢遲到的。


3教給機器知識


因此,僅僅告訴機器嚴格的推理是不夠的,還要告訴機器一些知識。但告訴機器知識這個事情,一般人可能就做不來了。可能專家可以,比如語言領域的專家或者財經領域的專家。


語言領域和財經領域知識能不能表示成像數學公式一樣稍微嚴格點呢?例如語言專家可能會總結出主謂賓定狀補這些語法規則,主語後面一定是謂語,謂語後面一定是賓語,將這些總結出來,並嚴格表達出來不久行了嗎?


後來發現這個不行,太難總結了,語言表達千變萬化。就拿主謂賓的例子,很多時候在口語裡面就省略了謂語,別人問:你誰啊?我回答:我劉超。但你不能規定在語音語義識別時,要求對著機器說標準的書面語,這樣還是不夠智慧,就像羅永浩在一次演講中說的那樣,每次對著手機,用書面語說:請幫我呼叫某某某,這是一件很尷尬的事情。


人工智慧這個階段叫做專家系統。專家系統不易成功,一方面是知識比較難總結,另一方面總結出來的知識難以教給計算機。因為你自己還迷迷糊糊,覺得似乎有規律,就是說不出來,又怎麼能夠通過程式設計教給計算機呢?


4算了,教不會你自己學吧


於是人們想到:機器是和人完全不一樣的物種,乾脆讓機器自己學習好了。


機器怎麼學習呢?既然機器的統計能力這麼強,基於統計學習,一定能從大量的數字中發現一定的規律。


其實在娛樂圈有很好的一個例子,可見一般:


有一位網友統計了知名歌手在大陸發行的 9 張專輯中 117 首歌曲的歌詞,同一詞語在一首歌出現只算一次,形容詞、名詞和動詞的前十名如下表所示(詞語後面的數字是出現的次數):

 


如果我們隨便寫一串數字,然後按照數位依次在形容詞、名詞和動詞中取出一個詞,連在一起會怎麼樣呢?


例如取圓周率 3.1415926,對應的詞語是:堅強,路,飛,自由,雨,埋,迷惘。稍微連線和潤色一下:


堅強的孩子,

依然前行在路上,

張開翅膀飛向自由,

讓雨水埋葬他的迷惘。


是不是有點感覺了?當然,真正基於統計的學習演算法比這個簡單的統計複雜得多。


然而統計學習比較容易理解簡單的相關性:例如一個詞和另一個詞總是一起出現,兩個詞應該有關係;而無法表達複雜的相關性。並且統計方法的公式往往非常複雜,為了簡化計算,常常做出各種獨立性的假設,來降低公式的計算難度,然而現實生活中,具有獨立性的事件是相對較少的。


5模擬大腦的工作方式


於是人類開始從機器的世界,反思人類的世界是怎麼工作的。   


人類的腦子裡面不是儲存著大量的規則,也不是記錄著大量的統計資料,而是通過神經元的觸發實現的,每個神經元有從其它神經元的輸入,當接收到輸入時,會產生一個輸出來刺激其它神經元。於是大量的神經元相互反應,最終形成各種輸出的結果。


例如當人們看到美女瞳孔會放大,絕不是大腦根據身材比例進行規則判斷,也不是將人生中看過的所有的美女都統計一遍,而是神經元從視網膜觸發到大腦再回到瞳孔。在這個過程中,其實很難總結出每個神經元對最終的結果起到了哪些作用,反正就是起作用了。


於是人們開始用一個數學單元模擬神經元。


這個神經元有輸入,有輸出,輸入和輸出之間通過一個公式來表示,輸入根據重要程度不同(權重),影響著輸出。

 



於是將n個神經元通過像一張神經網路一樣連線在一起。n這個數字可以很大很大,所有的神經元可以分成很多列,每一列很多個排列起來。每個神經元對於輸入的權重可以都不相同,從而每個神經元的公式也不相同。當人們從這張網路中輸入一個東西的時候,希望輸出一個對人類來講正確的結果。


例如上面的例子,輸入一個寫著2的圖片,輸出的列表裡面第二個數字最大,其實從機器來講,它既不知道輸入的這個圖片寫的是2,也不知道輸出的這一系列數字的意義,沒關係,人知道意義就可以了。正如對於神經元來說,他們既不知道視網膜看到的是美女,也不知道瞳孔放大是為了看的清楚,反正看到美女,瞳孔放大了,就可以了。


對於任何一張神經網路,誰也不敢保證輸入是2,輸出一定是第二個數字最大,要保證這個結果,需要訓練和學習。畢竟看到美女而瞳孔放大也是人類很多年進化的結果。學習的過程就是,輸入大量的圖片,如果結果不是想要的結果,則進行調整。


如何調整呢?就是每個神經元的每個權重都向目標進行微調,由於神經元和權重實在是太多了,所以整張網路產生的結果很難表現出非此即彼的結果,而是向著結果微微地進步,最終能夠達到目標結果。


當然,這些調整的策略還是非常有技巧的,需要演算法的高手來仔細的調整。正如人類見到美女,瞳孔一開始沒有放大到能看清楚,於是美女跟別人跑了,下次學習的結果是瞳孔放大一點點,而不是放大鼻孔。


6沒道理但做得到


聽起來也沒有那麼有道理,但的確能做到,就是這麼任性!


神經網路的普遍性定理是這樣說的,假設某個人給你某種複雜奇特的函式,f(x):

 




不管這個函式是什麼樣的,總會確保有個神經網路能夠對任何可能的輸入x,其值f(x)(或者某個能夠準確的近似)是神經網路的輸出。


如果在函式代表著規律,也意味著這個規律無論多麼奇妙,多麼不能理解,都是能通過大量的神經元,通過大量權重的調整,表示出來的。


7人工智慧的經濟學解釋


這讓我想到了經濟學,於是比較容易理解了。


我們把每個神經元當成社會中從事經濟活動的個體。於是神經網路相當於整個經濟社會,每個神經元對於社會的輸入,都有權重的調整,做出相應的輸出,比如工資漲了、菜價漲了、股票跌了,我應該怎麼辦、怎麼花自己的錢。這裡面沒有規律麼?肯定有,但是具體什麼規律呢?很難說清楚。


基於專家系統的經濟屬於計劃經濟。整個經濟規律的表示不希望通過每個經濟個體的獨立決策表現出來,而是希望通過專家的高屋建瓴和遠見卓識總結出來。但專家永遠不可能知道哪個城市的哪個街道缺少一個賣甜豆腐腦的。


於是專家說應該產多少鋼鐵、產多少饅頭,往往距離人民生活的真正需求有較大的差距,就算整個計劃書寫個幾百頁,也無法表達隱藏在人民生活中的小規律。


基於統計的巨集觀調控就靠譜多了,每年統計局都會統計整個社會的就業率、通脹率、GDP等指標。這些指標往往代表著很多內在規律,雖然不能精確表達,但是相對靠譜。


然而基於統計的規律總結表達相對比較粗糙。比如經濟學家看到這些統計資料,可以總結出長期來看房價是漲還是跌、股票長期來看是漲還是跌。例如,如果經濟總體上揚,房價和股票應該都是漲的。但基於統計資料,無法總結出股票,物價的微小波動規律。


基於神經網路的微觀經濟學才是對整個經濟規律最最準確的表達,每個人對於自己在社會中的輸入進行各自的調整,並且調整同樣會作為輸入反饋到社會中。想象一下股市行情細微的波動曲線,正是每個獨立的個體各自不斷交易的結果,沒有統一的規律可循。


而每個人根據整個社會的輸入進行獨立決策,當某些因素經過多次訓練,也會形成巨集觀上統計性的規律,這也就是巨集觀經濟學所能看到的。例如每次貨幣大量發行,最後房價都會上漲,多次訓練後,人們也就都學會了。


8人工智慧需要大資料


然而,神經網路包含這麼多的節點,每個節點又包含非常多的引數,整個引數量實在是太大了,需要的計算量實在太大。但沒有關係,我們有大資料平臺,可以匯聚多臺機器的力量一起來計算,就能在有限的時間內得到想要的結果。


人工智慧可以做的事情非常多,例如可以鑑別垃圾郵件、鑑別黃色暴力文字和圖片等。這也是經歷了三個階段的:


  • 第一個階段依賴於關鍵詞黑白名單和過濾技術,包含哪些詞就是黃色或者暴力的文字。隨著這個網路語言越來越多,詞也不斷地變化,不斷地更新這個詞庫就有點顧不過來。

  • 第二個階段時,基於一些新的演算法,比如說貝葉斯過濾等,你不用管貝葉斯演算法是什麼,但是這個名字你應該聽過,這個一個基於概率的演算法。

  • 第三個階段就是基於大資料和人工智慧,進行更加精準的使用者畫像和文字理解和影象理解。


由於人工智慧演算法多是依賴於大量的資料的,這些資料往往需要面向某個特定的領域(例如電商,郵箱)進行長期的積累,如果沒有資料,就算有人工智慧演算法也白搭,所以人工智慧程式很少像前面的IaaS和PaaS一樣,將人工智慧程式給某個客戶安裝一套,讓客戶去用。因為給某個客戶單獨安裝一套,客戶沒有相關的資料做訓練,結果往往是很差的。


但云計算廠商往往是積累了大量資料的,於是就在雲端計算廠商裡面安裝一套,暴露一個服務介面,比如您想鑑別一個文字是不是涉及黃色和暴力,直接用這個線上服務就可以了。這種形勢的服務,在雲端計算裡面稱為軟體即服務,SaaS (Software AS A Service)


於是工智慧程式作為SaaS平臺進入了雲端計算。


五、基於三者關係的美好生活


終於雲端計算的三兄弟湊齊了,分別是IaaS、PaaS和SaaS。所以一般在一個雲端計算平臺上,雲、大資料、人工智慧都能找得到。一個大資料公司,積累了大量的資料,會使用一些人工智慧的演算法提供一些服務;一個人工智慧公司,也不可能沒有大資料平臺支撐。


所以,當雲端計算、大資料、人工智慧這樣整合起來,便完成了相遇、相識、相知的過程。



網易雲端計算基礎服務深度整合了 IaaS、PaaS 及容器技術,提供彈性計算、DevOps 工具鏈及微服務基礎設施等服務,幫助企業解決 IT、架構及運維等問題,使企業更聚焦於業務,是新一代的雲端計算平臺,點選可免費試用

   

免費體驗雲安全(易盾)內容安全、驗證碼等服務

更多網易技術、產品、運營經驗分享請點選



相關文章:
【推薦】 深入解讀Service Mesh的資料面Envoy