今天跟大家講講云計算,、大數(shù)據(jù)和人工智能。這三個詞現(xiàn)在非?;穑⑶宜鼈冎g好像互相有關系,。 一般談云計算的時候會提到大數(shù)據(jù),、談人工智能的時候會提大數(shù)據(jù),、談人工智能的時候會提云計算……感覺三者之間相輔相成又不可分割。 但如果是非技術的人員,,就可能比較難理解這三者之間的相互關系,,所以有必要解釋一下。 云計算最初的目標 我們首先來說云計算,。云計算最初的目標是對資源的管理,,管理的主要是計算資源、網(wǎng)絡資源,、存儲資源三個方面,。 管數(shù)據(jù)中心就像配電腦 什么叫計算,、網(wǎng)絡、存儲資源,? 比如你要買臺筆記本電腦,,是不是要關心這臺電腦是什么樣的 CPU?多大的內(nèi)存,?這兩個就被我們稱為計算資源,。 這臺電腦要上網(wǎng),,就需要有個可以插網(wǎng)線的網(wǎng)口,或者有可以連接我們家路由器的無線網(wǎng)卡,。 您家也需要到運營商比如聯(lián)通,、移動或者電信開通一個網(wǎng)絡,比如 100M 的帶寬,。然后會有師傅弄一根網(wǎng)線到您家來,,師傅可能會幫您將您的路由器和他們公司的網(wǎng)絡連接配置好。 這樣您家的所有的電腦,、手機,、平板就都可以通過您的路由器上網(wǎng)了。這就是網(wǎng)絡資源,。 您可能還會問硬盤多大,?過去的硬盤都很小,大小如 10G 之類的,;后來即使 500G,、1T、2T 的硬盤也不新鮮了,。(1T 是 1000G),,這就是存儲資源。 對于一臺電腦是這個樣子的,,對于一個數(shù)據(jù)中心也是同樣的,。想象你有一個非常非常大的機房,里面堆了很多的服務器,,這些服務器也是有 CPU,、內(nèi)存、硬盤的,,也是通過類似路由器的設備上網(wǎng)的,。 這時的問題就是:運營數(shù)據(jù)中心的人是怎么把這些設備統(tǒng)一的管理起來的呢? 靈活就是想啥時要都有,,想要多少都行 管理的目標就是要達到兩個方面的靈活性,。具體哪兩個方面呢? 舉個例子來理解:比如有個人需要一臺很小的電腦,,只有一個 CPU,、1G 內(nèi)存、10G 的硬盤,、一兆的帶寬,,你能給他嗎? 像這么小規(guī)格的電腦,現(xiàn)在隨便一個筆記本電腦都比這個配置強了,,家里隨便拉一個寬帶都要 100M,。然而如果去一個云計算的平臺上,他想要這個資源時,,只要一點就有了,。 這種情況下它就能達到兩個方面的靈活性:
空間靈活性和時間靈活性,,即我們常說的云計算的彈性。而解決這個彈性的問題,,經(jīng)歷了漫長時間的發(fā)展,。 物理設備不靈活 第一個階段是物理設備時期。這個時期客戶需要一臺電腦,,我們就買一臺放在數(shù)據(jù)中心里。 物理設備當然是越來越牛:
然而物理設備不能做到很好的靈活性: 首先是它缺乏時間靈活性,。不能夠達到想什么時候要就什么時候要。比如買臺服務器,、買個電腦,,都要有采購的時間。 如果突然用戶告訴某個云廠商,,說想要開臺電腦,,使用物理服務器,當時去采購就很難。與供應商關系好的可能需要一個星期,,與供應商關系一般的就可能需要采購一個月,。 用戶等了很久電腦才到位,這時用戶還要登錄上去慢慢開始部署自己的應用,。時間靈活性非常差,。 其次是它的空間靈活性也不行。例如上述的用戶需要一個很小很小的電腦,,但現(xiàn)在哪還有這么小型號的電腦,?不能為了滿足用戶只要一個 G 的內(nèi)存、80G 硬盤的,,就去買一個這么小的機器,。 但是如果買一個大的,又會因為電腦大,,需要向用戶多收錢,,可用戶需要用的只有那么小一點,所以多付錢就很冤,。 虛擬化靈活多了 有人就想辦法了,。第一個辦法就是虛擬化。用戶不是只要一個很小的電腦么,? 數(shù)據(jù)中心的物理設備都很強大,,我可以從物理的 CPU、內(nèi)存,、硬盤中虛擬出一小塊來給客戶,,同時也可以虛擬出一小塊來給其他客戶。 每個客戶只能看到自己的那一小塊,,但其實每個客戶用的是整個大的設備上的一小塊,。 虛擬化的技術使得不同客戶的電腦看起來是隔離的。也就是我看著好像這塊盤就是我的,,你看著這塊盤就是你的,,但實際情況可能我的這個 10G 和你的這個 10G 是落在同樣一個很大很大的存儲上。 而且如果事先物理設備都準備好,,虛擬化軟件虛擬出一個電腦是非??斓模旧蠋追昼娋湍芙鉀Q,。所以在任何一個云上要創(chuàng)建一臺電腦,,一點幾分鐘就出來了,就是這個道理,。 這樣空間靈活性和時間靈活性就基本解決了,。 虛擬世界的賺錢與情懷 在虛擬化階段,,最牛的公司是 VMware。它是實現(xiàn)虛擬化技術比較早的一家公司,,可以實現(xiàn)計算,、網(wǎng)絡、存儲的虛擬化,。 這家公司很牛,,性能做得非常好,虛擬化軟件賣得也非常好,,賺了好多的錢,,后來讓 EMC(世界五百強,存儲廠商第一品牌)給收購了,。 但這個世界上還是有很多有情懷的人的,,尤其是程序員里面。有情懷的人喜歡做什么事情,?開源,。 這個世界上很多軟件都是有閉源就有開源,源就是源代碼,。也就是說,,某個軟件做的好,所有人都愛用,,但這個軟件的代碼被我封閉起來,,只有我公司知道,其他人不知道,。 如果其他人想用這個軟件,,就要向我付錢,這就叫閉源,。但世界上總有一些大??床粦T錢都讓一家賺了去的情況。大牛們覺得,,這個技術你會我也會;你能開發(fā)出來,,我也能,。 我開發(fā)出來就是不收錢,把代碼拿出來分享給大家,,全世界誰用都可以,,所有的人都可以享受到好處,這個叫做開源,。 比如最近的蒂姆·伯納斯·李就是個非常有情懷的人,。2017 年,他因“發(fā)明萬維網(wǎng)、第一個瀏覽器和使萬維網(wǎng)得以擴展的基本協(xié)議和算法”而獲得 2016 年度的圖靈獎,。 圖靈獎就是計算機界的諾貝爾獎,。然而他最令人敬佩的是,他將萬維網(wǎng),,也就是我們常見的 WWW 技術無償貢獻給全世界免費使用,。 我們現(xiàn)在在網(wǎng)上的所有行為都應該感謝他的功勞,如果他將這個技術拿來收錢,,應該和比爾蓋茨差不多有錢,。 開源和閉源的例子有很多:例如在閉源的世界里有 Windows,大家用 Windows 都得給微軟付錢,;開源的世界里面就出現(xiàn)了 Linux,。 比爾蓋茨靠 Windows、Office 這些閉源的軟件賺了很多錢,,稱為世界首富,,就有大牛開發(fā)了另外一種操作系統(tǒng) Linux。 很多人可能沒有聽說過 Linux,,很多后臺的服務器上跑的程序都是 Linux 上的,,比如大家享受雙十一,無論是淘寶,、京東,、考拉……支撐雙十一搶購的系統(tǒng)都是跑在 Linux 上的。 再如有 Apple 就有安卓,。Apple 市值很高,,但是蘋果系統(tǒng)的代碼我們是看不到的,于是就有大牛寫了安卓手機操作系統(tǒng),。 所以大家可以看到幾乎所有的其他手機廠商,,里面都裝安卓系統(tǒng)。原因就是蘋果系統(tǒng)不開源,,而安卓系統(tǒng)大家都可以用,。 在虛擬化軟件也一樣,有了 VMware,,這個軟件非常貴,。那就有大牛寫了兩個開源的虛擬化軟件,一個叫做 Xen,,一個叫做 KVM,,如果不做技術的,可以不用管這兩個名字,,但是后面還是會提到,。 虛擬化的半自動和云計算的全自動 要說虛擬化軟件解決了靈活性問題,,其實并不全對。因為虛擬化軟件一般創(chuàng)建一臺虛擬的電腦,,是需要人工指定這臺虛擬電腦放在哪臺物理機上的,。 這一過程可能還需要比較復雜的人工配置。所以使用 VMware 的虛擬化軟件,,需要考一個很牛的證書,,而能拿到這個證書的人,,薪資是相當高,,也可見其復雜程度。 所以僅僅憑虛擬化軟件所能管理的物理機的集群規(guī)模都不是特別大,,一般在十幾臺,、幾十臺,、最多百臺這么一個規(guī)模。 這一方面會影響時間靈活性:雖然虛擬出一臺電腦的時間很短,,但是隨著集群規(guī)模的擴大,,人工配置的過程越來越復雜,越來越耗時,。 另一方面也影響空間靈活性:當用戶數(shù)量多時,,這點集群規(guī)模,還遠達不到想要多少要多少的程度,,很可能這點資源很快就用完了,,還得去采購。 所以隨著集群的規(guī)模越來越大,,基本都是千臺起步,,動輒上萬臺、甚至幾十上百萬臺,。如果去查一下 BAT,,包括網(wǎng)易、谷歌,、亞馬遜,,服務器數(shù)目都大的嚇人。 這么多機器要靠人去選一個位置放這臺虛擬化的電腦并做相應的配置,,幾乎是不可能的事情,,還是需要機器去做這個事情。 人們發(fā)明了各種各樣的算法來做這個事情,,算法的名字叫做調(diào)度(Scheduler)。 通俗一點說,,就是有一個調(diào)度中心,,幾千臺機器都在一個池子里面,,無論用戶需要多少 CPU、內(nèi)存,、硬盤的虛擬電腦,,調(diào)度中心會自動在大池子里面找一個能夠滿足用戶需求的地方,把虛擬電腦啟動起來做好配置,,用戶就直接能用了,。 這個階段我們稱為池化或者云化。到了這個階段,,才可以稱為云計算,,在這之前都只能叫虛擬化。 云計算的私有與公有 云計算大致分兩種:一個是私有云,,一個是公有云,,還有人把私有云和公有云連接起來稱為混合云,這里暫且不說這個,。 私有云:把虛擬化和云化的這套軟件部署在別人的數(shù)據(jù)中心里面,。使用私有云的用戶往往很有錢,自己買地建機房,、自己買服務器,,然后讓云廠商部署在自己這里。 VMware 后來除了虛擬化,,也推出了云計算的產(chǎn)品,,并且在私有云市場賺的盆滿缽滿。 公有云:把虛擬化和云化軟件部署在云廠商自己數(shù)據(jù)中心里面的,,用戶不需要很大的投入,,只要注冊一個賬號,就能在一個網(wǎng)頁上點一下創(chuàng)建一臺虛擬電腦,。 例如 AWS 即亞馬遜的公有云,;國內(nèi)的阿里云、騰訊云,、網(wǎng)易云等,。 亞馬遜為什么要做公有云呢?我們知道亞馬遜原來是國外比較大的一個電商,,它做電商時也肯定會遇到類似雙十一的場景:在某一個時刻大家都沖上來買東西,。 當大家都沖上買東西時,就特別需要云的時間靈活性和空間靈活性,。因為它不能時刻準備好所有的資源,,那樣太浪費了。但也不能什么都不準備,,看著雙十一這么多用戶想買東西登不上去,。 所以需要雙十一時,,就創(chuàng)建一大批虛擬電腦來支撐電商應用,過了雙十一再把這些資源都釋放掉去干別的,。因此亞馬遜是需要一個云平臺的,。 然而商用的虛擬化軟件實在是太貴了,亞馬遜總不能把自己在電商賺的錢全部給了虛擬化廠商,。 于是亞馬遜基于開源的虛擬化技術,,如上所述的 Xen 或者 KVM,開發(fā)了一套自己的云化軟件,。沒想到亞馬遜后來電商越做越牛,,云平臺也越做越牛。 由于它的云平臺需要支撐自己的電商應用,;而傳統(tǒng)的云計算廠商多為 IT 廠商出身,,幾乎沒有自己的應用,所以亞馬遜的云平臺對應用更加友好,,迅速發(fā)展成為云計算的第一品牌,,賺了很多錢。 在亞馬遜公布其云計算平臺財報之前,,人們都猜測,,亞馬遜電商賺錢,云也賺錢嗎,?后來一公布財報,,發(fā)現(xiàn)不是一般的賺錢。僅僅去年,,亞馬遜 AWS 年營收達 122 億美元,,運營利潤 31 億美元。 云計算的賺錢與情懷 公有云的第一名亞馬遜過得很爽,,第二名 Rackspace 過得就一般了,。沒辦法,這就是互聯(lián)網(wǎng)行業(yè)的殘酷性,,多是贏者通吃的模式,。所以第二名如果不是云計算行業(yè)的,很多人可能都沒聽過了,。 第二名就想,,我干不過老大怎么辦呢?開源吧,。如上所述,,亞馬遜雖然使用了開源的虛擬化技術,但云化的代碼是閉源的。 很多想做又做不了云化平臺的公司,,只能眼巴巴的看著亞馬遜掙大錢,。Rackspace 把源代碼一公開,整個行業(yè)就可以一起把這個平臺越做越好,,兄弟們大家一起上,和老大拼了,。 于是 Rackspace 和美國航空航天局合作創(chuàng)辦了開源軟件 OpenStack,,如上圖所示 OpenStack 的架構圖,,不是云計算行業(yè)的不用弄懂這個圖。 但能夠看到三個關鍵字:Compute 計算,、Networking 網(wǎng)絡,、Storage 存儲。還是一個計算,、網(wǎng)絡,、存儲的云化管理平臺。 當然第二名的技術也是非常棒的,,有了 OpenStack 之后,,果真像 Rackspace 想的一樣,所有想做云的大企業(yè)都瘋了,,你能想象到的所有如雷貫耳的大型 IT 企業(yè):IBM,、惠普、戴爾,、華為,、聯(lián)想等都瘋了。 原來云平臺大家都想做,,看著亞馬遜和 VMware 賺了這么多錢,,眼巴巴看著沒辦法,想自己做一個好像難度還挺大,。 現(xiàn)在好了,,有了這樣一個開源的云平臺 OpenStack,所有的 IT 廠商都加入到這個社區(qū)中來,,對這個云平臺進行貢獻,,包裝成自己的產(chǎn)品,連同自己的硬件設備一起賣,。 有的做了私有云,,有的做了公有云,OpenStack 已經(jīng)成為開源云平臺的事實標準。 IaaS,,資源層面的靈活性 隨著 OpenStack 的技術越來越成熟,,可以管理的規(guī)模也越來越大,并且可以有多個 OpenStack 集群部署多套,。 比如北京部署一套,、杭州部署兩套、廣州部署一套,,然后進行統(tǒng)一的管理,。這樣整個規(guī)模就更大了。 在這個規(guī)模下,,對于普通用戶的感知來講,,基本能夠做到想什么時候要就什么時候要,想要多少就要多少,。 還是拿云盤舉例子,,每個用戶云盤都分配了 5T 甚至更大的空間,如果有 1 億人,,那加起來空間多大啊,。 其實背后的機制是這樣的:分配你的空間,你可能只用了其中很少一點,,比如說它分配給你了 5 個 T,,這么大的空間僅僅是你看到的,而不是真的就給你了,。 你其實只用了 50 個 G,,則真實給你的就是 50 個 G,隨著你文件的不斷上傳,,分給你的空間會越來越多,。 當大家都上傳,云平臺發(fā)現(xiàn)快滿了的時候(例如用了 70%),,會采購更多的服務器,,擴充背后的資源,這個對用戶是透明的,、看不到的,。 從感覺上來講,就實現(xiàn)了云計算的彈性,。其實有點像銀行,,給儲戶的感覺是什么時候取錢都有,只要不同時擠兌,,銀行就不會垮,。 總結 到了這個階段,云計算基本上實現(xiàn)了時間靈活性和空間靈活性;實現(xiàn)了計算,、網(wǎng)絡,、存儲資源的彈性。 計算,、網(wǎng)絡,、存儲我們常稱為基礎設施 Infranstracture, 因而這個階段的彈性稱為資源層面的彈性。 管理資源的云平臺,,我們稱為基礎設施服務,,也就是我們常聽到的 IaaS(Infranstracture As A Service)。 云計算不光管資源,,也要管應用 有了 IaaS,,實現(xiàn)了資源層面的彈性就夠了嗎,?顯然不是,,還有應用層面的彈性。 這里舉個例子:比如說實現(xiàn)一個電商的應用,,平時十臺機器就夠了,雙十一需要一百臺,。你可能覺得很好辦啊,,有了 IaaS,,新創(chuàng)建九十臺機器就可以了啊。 但 90 臺機器創(chuàng)建出來是空的,,電商應用并沒有放上去,,只能讓公司的運維人員一臺一臺的弄,,需要很長時間才能安裝好的,。 雖然資源層面實現(xiàn)了彈性,,但沒有應用層的彈性,依然靈活性是不夠的,。有沒有方法解決這個問題呢,? 人們在 IaaS 平臺之上又加了一層,用于管理資源以上的應用彈性的問題,,這一層通常稱為 PaaS(Platform As A Service),。 這一層往往比較難理解,大致分兩部分:一部分筆者稱為“你自己的應用自動安裝”,,一部分筆者稱為“通用的應用不用安裝”,。
像電商應用,安裝時需要配置支付寶或者微信的賬號,,才能使別人在你的電商上買東西時,,付的錢是打到你的賬戶里面的,除了你,,誰也不知道,。 所以安裝的過程平臺幫不了忙,但能夠幫你做得自動化,,你需要做一些工作,,將自己的配置信息融入到自動化的安裝過程中方可。 比如上面的例子,,雙十一新創(chuàng)建出來的 90 臺機器是空的,,如果能夠提供一個工具,能夠自動在這新的 90 臺機器上將電商應用安裝好,,就能夠實現(xiàn)應用層面的真正彈性,。 例如 Puppet、Chef,、Ansible,、Cloud Foundary 都可以干這件事情,,最新的容器技術 Docker 能更好的干這件事情。
這樣的應用可以變成標準的 PaaS 層的應用放在云平臺的界面上。當用戶需要一個數(shù)據(jù)庫時,,一點就出來了,,用戶就可以直接用了。 有人問,,既然誰安裝都一個樣,,那我自己來好了,不需要花錢在云平臺上買,。當然不是,,數(shù)據(jù)庫是一個非常難的東西,光 Oracle 這家公司,,靠數(shù)據(jù)庫就能賺這么多錢,。買 Oracle 也是要花很多錢的。 然而大多數(shù)云平臺會提供 MySQL 這樣的開源數(shù)據(jù)庫,,又是開源,,錢不需要花這么多了,。 但維護這個數(shù)據(jù)庫,,卻需要專門招一個很大的團隊,如果這個數(shù)據(jù)庫能夠優(yōu)化到能夠支撐雙十一,,也不是一年兩年能夠搞定的,。 比如您是一個做單車的,當然沒必要招一個非常大的數(shù)據(jù)庫團隊來干這件事情,,成本太高了,,應該交給云平臺來做這件事情。 專業(yè)的事情專業(yè)的人來做,,云平臺專門養(yǎng)了幾百人維護這套系統(tǒng),,您只要專注于您的單車應用就可以了。 要么是自動部署,,要么是不用部署,,總的來說就是應用層你也要少操心,,這就是 PaaS 層的重要作用。 雖說腳本的方式能夠解決自己的應用的部署問題,然而不同的環(huán)境千差萬別,,一個腳本往往在一個環(huán)境上運行正確,,到另一個環(huán)境就不正確了。 而容器是能更好地解決這個問題,。 容器是 Container,,Container 另一個意思是集裝箱,,其實容器的思想就是要變成軟件交付的集裝箱。集裝箱的特點:一是封裝,,二是標準,。 在沒有集裝箱的時代,,假設將貨物從 A 運到 B,中間要經(jīng)過三個碼頭,、換三次船,。 每次都要將貨物卸下船來,擺得七零八落,,然后搬上船重新整齊擺好,。因此在沒有集裝箱時,每次換船,,船員們都要在岸上待幾天才能走,。 有了集裝箱以后,,所有的貨物都打包在一起了,并且集裝箱的尺寸全部一致,,所以每次換船時,,一個箱子整體搬過去就行了,小時級別就能完成,,船員再也不用上岸長時間耽擱了,。 這是集裝箱“封裝”、“標準”兩大特點在生活中的應用,。 那么容器如何對應用打包呢?還是要學習集裝箱,。首先要有個封閉的環(huán)境,,將貨物封裝起來,讓貨物之間互不干擾,、互相隔離,,這樣裝貨卸貨才方便。好在 Ubuntu 中的 LXC 技術早就能做到這一點,。 封閉的環(huán)境主要使用了兩種技術:
所謂的鏡像,就是將你焊好集裝箱的那一刻,,將集裝箱的狀態(tài)保存下來,,就像孫悟空說:“定”,集裝箱里面就定在了那一刻,,然后將這一刻的狀態(tài)保存成一系列文件,。 這些文件的格式是標準的,誰看到這些文件都能還原當時定住的那個時刻,。將鏡像還原成運行時的過程(就是讀取鏡像文件,,還原那個時刻的過程),就是容器運行的過程,。 有了容器,,使得 PaaS 層對于用戶自身應用的自動部署變得快速而優(yōu)雅,。 大數(shù)據(jù)擁抱云計算 在 PaaS 層中一個復雜的通用應用就是大數(shù)據(jù)平臺,。大數(shù)據(jù)是如何一步一步融入云計算的呢? 數(shù)據(jù)不大也包含智慧 一開始這個大數(shù)據(jù)并不大,。原來才有多少數(shù)據(jù),?現(xiàn)在大家都去看電子書,上網(wǎng)看新聞了,,在我們 80 后小時候,,信息量沒有那么大,,也就看看書、看看報,,一個星期的報紙加起來才有多少字,? 如果你不在一個大城市,一個普通的學校的圖書館加起來也沒幾個書架,,是后來隨著信息化的到來,,信息才會越來越多。 首先我們來看一下大數(shù)據(jù)里面的數(shù)據(jù),,就分三種類型:
其實數(shù)據(jù)本身不是有用的,,必須要經(jīng)過一定的處理,。例如你每天跑步帶個手環(huán)收集的也是數(shù)據(jù),網(wǎng)上這么多網(wǎng)頁也是數(shù)據(jù),,我們稱為 Data,。 數(shù)據(jù)本身沒有什么用處,但數(shù)據(jù)里面包含一個很重要的東西,,叫做信息(Information),。 數(shù)據(jù)十分雜亂,經(jīng)過梳理和清洗,,才能夠稱為信息,。信息會包含很多規(guī)律,我們需要從信息中將規(guī)律總結出來,稱為知識(Knowledge),,而知識改變命運,。 信息是很多的,但有人看到了信息相當于白看,,但有人就從信息中看到了電商的未來,,有人看到了直播的未來,所以人家就牛了,。 如果你沒有從信息中提取出知識,,天天看朋友圈也只能在互聯(lián)網(wǎng)滾滾大潮中做個看客。 有了知識,,然后利用這些知識去應用于實戰(zhàn),,有的人會做得非常好,這個東西叫做智慧(Intelligence),。 有知識并不一定有智慧,,例如好多學者很有知識,已經(jīng)發(fā)生的事情可以從各個角度分析得頭頭是道,,但一到實干就歇菜,,并不能轉化成為智慧。 而很多的創(chuàng)業(yè)家之所以偉大,,就是通過獲得的知識應用于實踐,,最后做了很大的生意。 所以數(shù)據(jù)的應用分這四個步驟:數(shù)據(jù),、信息,、知識、智慧,。 最終的階段是很多商家都想要的,。你看我收集了這么多的數(shù)據(jù),能不能基于這些數(shù)據(jù)來幫我做下一步的決策,,改善我的產(chǎn)品,。 例如讓用戶看視頻的時候旁邊彈出廣告,正好是他想買的東西,;再如讓用戶聽音樂時,,另外推薦一些他非常想聽的其他音樂。 用戶在我的應用或者網(wǎng)站上隨便點點鼠標,,輸入文字對我來說都是數(shù)據(jù),,我就是要將其中某些東西提取出來、指導實踐,、形成智慧,,讓用戶陷入到我的應用里面不可自拔,上了我的網(wǎng)就不想離開,,手不停地點,、不停地買。 很多人說雙十一我都想斷網(wǎng)了,,我老婆在上面不斷地買買買,,買了 A 又推薦 B,老婆大人說,,“哎呀,,B 也是我喜歡的啊,老公我要買”,。 你說這個程序怎么這么牛,,這么有智慧,比我還了解我老婆,,這件事情是怎么做到的呢,? 數(shù)據(jù)如何升華為智慧 數(shù)據(jù)的處理分以下幾個步驟,,完成了才最后會有智慧:
數(shù)據(jù)收集 首先得有數(shù)據(jù),數(shù)據(jù)的收集有兩個方式:
比如你去搜索的時候,,結果會是一個列表,這個列表為什么會在搜索引擎的公司里面,?就是因為他把數(shù)據(jù)都拿下來了,,但是你一點鏈接,點出來這個網(wǎng)站就不在搜索引擎它們公司了,。 比如說新浪有個新聞,,你拿百度搜出來,你不點的時候,,那一頁在百度數(shù)據(jù)中心,,一點出來的網(wǎng)頁就是在新浪的數(shù)據(jù)中心了。
數(shù)據(jù)傳輸 一般會通過隊列方式進行,因為數(shù)據(jù)量實在是太大了,,數(shù)據(jù)必須經(jīng)過處理才會有用,。可系統(tǒng)處理不過來,,只好排好隊,,慢慢處理。 數(shù)據(jù)存儲 現(xiàn)在數(shù)據(jù)就是金錢,,掌握了數(shù)據(jù)就相當于掌握了錢,。要不然網(wǎng)站怎么知道你想買什么? 就是因為它有你歷史的交易數(shù)據(jù),,這個信息可不能給別人,,十分寶貴,所以需要存儲下來,。 數(shù)據(jù)處理和分析 上面存儲的數(shù)據(jù)是原始數(shù)據(jù),,原始數(shù)據(jù)多是雜亂無章的,有很多垃圾數(shù)據(jù)在里面,,因而需要清洗和過濾,,得到一些高質量的數(shù)據(jù)。 對于高質量的數(shù)據(jù),,就可以進行分析,,從而對數(shù)據(jù)進行分類,或者發(fā)現(xiàn)數(shù)據(jù)之間的相互關系,,得到知識,。 比如盛傳的沃爾瑪超市的啤酒和尿布的故事,就是通過對人們的購買數(shù)據(jù)進行分析,,發(fā)現(xiàn)了男人一般買尿布的時候,,會同時購買啤酒。 這樣就發(fā)現(xiàn)了啤酒和尿布之間的相互關系,,獲得知識,,然后應用到實踐中,將啤酒和尿布的柜臺弄的很近,,就獲得了智慧,。 數(shù)據(jù)檢索和挖掘 檢索就是搜索,所謂外事不決問 Google,,內(nèi)事不決問百度,。內(nèi)外兩大搜索引擎都是將分析后的數(shù)據(jù)放入搜索引擎,因此人們想尋找信息的時候,,一搜就有了,。 另外就是挖掘,,僅僅搜索出來已經(jīng)不能滿足人們的要求了,還需要從信息中挖掘出相互的關系,。 比如財經(jīng)搜索,,當搜索某個公司股票的時候,該公司的高管是不是也應該被挖掘出來呢,? 如果僅僅搜索出這個公司的股票發(fā)現(xiàn)漲的特別好,,于是你就去買了,,其時其高管發(fā)了一個聲明,,對股票十分不利,第二天就跌了,,這不坑害廣大股民么,?所以通過各種算法挖掘數(shù)據(jù)中的關系,形成知識庫,,十分重要,。 大數(shù)據(jù)時代,,眾人拾柴火焰高 當數(shù)據(jù)量很小時,,很少的幾臺機器就能解決。慢慢的,,當數(shù)據(jù)量越來越大,,最牛的服務器都解決不了問題時,怎么辦呢,? 這時就要聚合多臺機器的力量,,大家齊心協(xié)力一起把這個事搞定,眾人拾柴火焰高,。 對于數(shù)據(jù)的收集:就 IoT 來講,,外面部署著成千上萬的檢測設備,將大量的溫度,、濕度,、監(jiān)控、電力等數(shù)據(jù)統(tǒng)統(tǒng)收集上來,;就互聯(lián)網(wǎng)網(wǎng)頁的搜索引擎來講,,需要將整個互聯(lián)網(wǎng)所有的網(wǎng)頁都下載下來。 這顯然一臺機器做不到,,需要多臺機器組成網(wǎng)絡爬蟲系統(tǒng),,每臺機器下載一部分,,同時工作,才能在有限的時間內(nèi),,將海量的網(wǎng)頁下載完畢,。 對于數(shù)據(jù)的傳輸:一個內(nèi)存里面的隊列肯定會被大量的數(shù)據(jù)擠爆掉,,于是就產(chǎn)生了基于硬盤的分布式隊列,這樣隊列可以多臺機器同時傳輸,,隨你數(shù)據(jù)量多大,,只要我的隊列足夠多,管道足夠粗,,就能夠撐得住,。 對于數(shù)據(jù)的存儲:一臺機器的文件系統(tǒng)肯定是放不下的,,所以需要一個很大的分布式文件系統(tǒng)來做這件事情,把多臺機器的硬盤打成一塊大的文件系統(tǒng),。 對于數(shù)據(jù)的分析:可能需要對大量的數(shù)據(jù)做分解,、統(tǒng)計,、匯總,一臺機器肯定搞不定,,處理到猴年馬月也分析不完,。 于是就有分布式計算的方法,將大量的數(shù)據(jù)分成小份,,每臺機器處理一小份,,多臺機器并行處理,很快就能算完,。 例如著名的 Terasort 對 1 個 TB 的數(shù)據(jù)排序,,相當于 1000G,如果單機處理,,怎么也要幾個小時,,但并行處理 209 秒就完成了。 所以說什么叫做大數(shù)據(jù)?說白了就是一臺機器干不完,,大家一起干,。 可是隨著數(shù)據(jù)量越來越大,很多不大的公司都需要處理相當多的數(shù)據(jù),,這些小公司沒有這么多機器可怎么辦呢,? 大數(shù)據(jù)需要云計算,云計算需要大數(shù)據(jù) 說到這里,,大家想起云計算了吧,。當想要干這些活時,需要很多的機器一塊做,,真的是想什么時候要就什么時候要,,想要多少就要多少,。 例如大數(shù)據(jù)分析公司的財務情況,,可能一周分析一次,如果要把這一百臺機器或者一千臺機器都在那放著,,一周用一次非常浪費,。 那能不能需要計算的時候,把這一千臺機器拿出來,;不算的時候,,讓這一千臺機器去干別的事情? 誰能做這個事兒呢,?只有云計算,,可以為大數(shù)據(jù)的運算提供資源層的靈活性。 而云計算也會部署大數(shù)據(jù)放到它的 PaaS 平臺上,,作為一個非常非常重要的通用應用,。 因為大數(shù)據(jù)平臺能夠使得多臺機器一起干一個事兒,這個東西不是一般人能開發(fā)出來的,,也不是一般人玩得轉的,,怎么也得雇個幾十上百號人才能把這個玩起來。 所以說就像數(shù)據(jù)庫一樣,,還是需要有一幫專業(yè)的人來玩這個東西?,F(xiàn)在公有云上基本上都會有大數(shù)據(jù)的解決方案了。 一個小公司需要大數(shù)據(jù)平臺的時候,,不需要采購一千臺機器,,只要到公有云上一點,這一千臺機器都出來了,,并且上面已經(jīng)部署好了的大數(shù)據(jù)平臺,,只要把數(shù)據(jù)放進去算就可以了,。 云計算需要大數(shù)據(jù),大數(shù)據(jù)需要云計算,,二者就這樣結合了,。 人工智能擁抱大數(shù)據(jù) 機器什么時候才能懂人心 雖說有了大數(shù)據(jù),人的欲望卻不能夠滿足,。雖說在大數(shù)據(jù)平臺里面有搜索引擎這個東西,,想要什么東西一搜就出來了。 但也存在這樣的情況:我想要的東西不會搜,,表達不出來,,搜索出來的又不是我想要的。 例如音樂軟件推薦了一首歌,,這首歌我沒聽過,,當然不知道名字,也沒法搜,。但是軟件推薦給我,,我的確喜歡,這就是搜索做不到的事情,。 當人們使用這種應用時,,會發(fā)現(xiàn)機器知道我想要什么,而不是說當我想要時,,去機器里面搜索,。這個機器真像我的朋友一樣懂我,這就有點人工智能的意思了,。 人們很早就在想這個事情了,。最早的時候,人們想象,,要是有一堵墻,,墻后面是個機器,我給它說話,,它就給我回應,。 如果我感覺不出它那邊是人還是機器,那它就真的是一個人工智能的東西了,。 讓機器學會推理 怎么才能做到這一點呢,?人們就想:我首先要告訴計算機人類推理的能力。你看人重要的是什么,?人和動物的區(qū)別在什么,?就是能推理。 要是把我這個推理的能力告訴機器,,讓機器根據(jù)你的提問,,推理出相應的回答,,這樣多好? 其實目前人們慢慢地讓機器能夠做到一些推理了,,例如證明數(shù)學公式,。這是一個非常讓人驚喜的一個過程,機器竟然能夠證明數(shù)學公式,。 但慢慢又發(fā)現(xiàn)這個結果也沒有那么令人驚喜,。因為大家發(fā)現(xiàn)了一個問題:數(shù)學公式非常嚴謹,推理過程也非常嚴謹,,而且數(shù)學公式很容易拿機器來進行表達,,程序也相對容易表達。 然而人類的語言就沒這么簡單了,。比如今天晚上,,你和你女朋友約會,你女朋友說:如果你早來,,我沒來,,你等著;如果我早來,,你沒來,,你等著,! 這個機器就比較難理解了,,但人都懂。所以你和女朋友約會,,是不敢遲到的,。 教給機器知識 因此,僅僅告訴機器嚴格的推理是不夠的,,還要告訴機器一些知識,。但告訴機器知識這個事情,一般人可能就做不來了,??赡軐<铱梢裕热缯Z言領域的專家或者財經(jīng)領域的專家,。 語言領域和財經(jīng)領域知識能不能表示成像數(shù)學公式一樣稍微嚴格點呢,?例如語言專家可能會總結出主謂賓定狀補這些語法規(guī)則,主語后面一定是謂語,,謂語后面一定是賓語,,將這些總結出來,并嚴格表達出來不就行了嗎,? 后來發(fā)現(xiàn)這個不行,,太難總結了,,語言表達千變?nèi)f化。就拿主謂賓的例子,,很多時候在口語里面就省略了謂語,,別人問:你誰啊,?我回答:我劉超,。 但你不能規(guī)定在語音語義識別時,要求對著機器說標準的書面語,,這樣還是不夠智能,,就像羅永浩在一次演講中說的那樣,每次對著手機,,用書面語說:請幫我呼叫某某某,,這是一件很尷尬的事情。 人工智能這個階段叫做專家系統(tǒng),。專家系統(tǒng)不易成功,,一方面是知識比較難總結,另一方面總結出來的知識難以教給計算機,。 因為你自己還迷迷糊糊,,覺得似乎有規(guī)律,就是說不出來,,又怎么能夠通過編程教給計算機呢,? 算了,教不會你自己學吧 于是人們想到:機器是和人完全不一樣的物種,,干脆讓機器自己學習好了,。 機器怎么學習呢?既然機器的統(tǒng)計能力這么強,,基于統(tǒng)計學習,,一定能從大量的數(shù)字中發(fā)現(xiàn)一定的規(guī)律。 其實在娛樂圈有很好的一個例子,,可窺一斑: 有一位網(wǎng)友統(tǒng)計了知名歌手在大陸發(fā)行的 9 張專輯中 117 首歌曲的歌詞,,同一詞語在一首歌出現(xiàn)只算一次,形容詞,、名詞和動詞的前十名如下表所示(詞語后面的數(shù)字是出現(xiàn)的次數(shù)): 如果我們隨便寫一串數(shù)字,,然后按照數(shù)位依次在形容詞,、名詞和動詞中取出一個詞,連在一起會怎么樣呢? 例如取圓周率 3.1415926,,對應的詞語是:堅強,,路,飛,,自由,,雨,埋,,迷惘,。 稍微連接和潤色一下:
是不是有點感覺了?當然,,真正基于統(tǒng)計的學習算法比這個簡單的統(tǒng)計復雜得多,。 然而統(tǒng)計學習比較容易理解簡單的相關性:例如一個詞和另一個詞總是一起出現(xiàn),兩個詞應該有關系,;而無法表達復雜的相關性,。 并且統(tǒng)計方法的公式往往非常復雜,為了簡化計算,,常常做出各種獨立性的假設,,來降低公式的計算難度,然而現(xiàn)實生活中,,具有獨立性的事件是相對較少的,。 模擬大腦的工作方式 于是人類開始從機器的世界,反思人類的世界是怎么工作的,。 人類的腦子里面不是存儲著大量的規(guī)則,,也不是記錄著大量的統(tǒng)計數(shù)據(jù),,而是通過神經(jīng)元的觸發(fā)實現(xiàn)的。 每個神經(jīng)元有從其他神經(jīng)元的輸入,,當接收到輸入時,會產(chǎn)生一個輸出來刺激其他神經(jīng)元,。于是大量的神經(jīng)元相互反應,,最終形成各種輸出的結果。 例如當人們看到美女瞳孔會放大,,絕不是大腦根據(jù)身材比例進行規(guī)則判斷,,也不是將人生中看過的所有的美女都統(tǒng)計一遍,而是神經(jīng)元從視網(wǎng)膜觸發(fā)到大腦再回到瞳孔,。 在這個過程中,,其實很難總結出每個神經(jīng)元對最終的結果起到了哪些作用,反正就是起作用了。 于是人們開始用一個數(shù)學單元模擬神經(jīng)元,。 這個神經(jīng)元有輸入,,有輸出,輸入和輸出之間通過一個公式來表示,,輸入根據(jù)重要程度不同(權重),,影響著輸出。 于是將 n 個神經(jīng)元通過像一張神經(jīng)網(wǎng)絡一樣連接在一起。n 這個數(shù)字可以很大很大,,所有的神經(jīng)元可以分成很多列,,每一列很多個排列起來。 每個神經(jīng)元對于輸入的權重可以都不相同,,從而每個神經(jīng)元的公式也不相同,。當人們從這張網(wǎng)絡中輸入一個東西的時候,希望輸出一個對人類來講正確的結果,。 例如上面的例子,,輸入一個寫著 2 的圖片,輸出的列表里面第二個數(shù)字最大,,其實從機器來講,,它既不知道輸入的這個圖片寫的是 2,也不知道輸出的這一系列數(shù)字的意義,,沒關系,,人知道意義就可以了。 正如對于神經(jīng)元來說,,他們既不知道視網(wǎng)膜看到的是美女,,也不知道瞳孔放大是為了看的清楚,反正看到美女,,瞳孔放大了,,就可以了。 對于任何一張神經(jīng)網(wǎng)絡,,誰也不敢保證輸入是 2,,輸出一定是第二個數(shù)字最大,要保證這個結果,,需要訓練和學習,。 畢竟看到美女而瞳孔放大也是人類很多年進化的結果。學習的過程就是,,輸入大量的圖片,,如果結果不是想要的結果,,則進行調(diào)整。 如何調(diào)整呢,?就是每個神經(jīng)元的每個權重都向目標進行微調(diào),,由于神經(jīng)元和權重實在是太多了,所以整張網(wǎng)絡產(chǎn)生的結果很難表現(xiàn)出非此即彼的結果,,而是向著結果微微地進步,,最終能夠達到目標結果。 當然,,這些調(diào)整的策略還是非常有技巧的,,需要算法的高手來仔細的調(diào)整。正如人類見到美女,,瞳孔一開始沒有放大到能看清楚,,于是美女跟別人跑了,下次學習的結果是瞳孔放大一點點,,而不是放大鼻孔,。 沒道理但做得到 聽起來也沒有那么有道理,但的確能做到,,就是這么任性,! 神經(jīng)網(wǎng)絡的普遍性定理是這樣說的,假設某個人給你某種復雜奇特的函數(shù),,f(x): 不管這個函數(shù)是什么樣的,,總會確保有個神經(jīng)網(wǎng)絡能夠對任何可能的輸入 x,,其值 f(x)(或者某個能夠準確的近似)是神經(jīng)網(wǎng)絡的輸出。 如果在函數(shù)代表著規(guī)律,,也意味著這個規(guī)律無論多么奇妙,,多么不能理解,都是能通過大量的神經(jīng)元,,通過大量權重的調(diào)整,,表示出來的。 人工智能的經(jīng)濟學解釋 這讓我想到了經(jīng)濟學,,于是比較容易理解了,。 我們把每個神經(jīng)元當成社會中從事經(jīng)濟活動的個體。于是神經(jīng)網(wǎng)絡相當于整個經(jīng)濟社會,,每個神經(jīng)元對于社會的輸入,,都有權重的調(diào)整,做出相應的輸出。 比如工資漲了,、菜價漲了,、股票跌了,我應該怎么辦,、怎么花自己的錢,。這里面沒有規(guī)律么?肯定有,,但是具體什么規(guī)律呢,?很難說清楚。 基于專家系統(tǒng)的經(jīng)濟屬于計劃經(jīng)濟,。整個經(jīng)濟規(guī)律的表示不希望通過每個經(jīng)濟個體的獨立決策表現(xiàn)出來,,而是希望通過專家的高屋建瓴和遠見卓識總結出來。但專家永遠不可能知道哪個城市的哪個街道缺少一個賣甜豆腐腦的,。 于是專家說應該產(chǎn)多少鋼鐵,、產(chǎn)多少饅頭,往往距離人民生活的真正需求有較大的差距,,就算整個計劃書寫個幾百頁,,也無法表達隱藏在人民生活中的小規(guī)律。 基于統(tǒng)計的宏觀調(diào)控就靠譜多了,,每年統(tǒng)計局都會統(tǒng)計整個社會的就業(yè)率,、通脹率、GDP 等指標,。這些指標往往代表著很多內(nèi)在規(guī)律,,雖然不能精確表達,但是相對靠譜,。 然而基于統(tǒng)計的規(guī)律總結表達相對比較粗糙,。比如經(jīng)濟學家看到這些統(tǒng)計數(shù)據(jù),可以總結出長期來看房價是漲還是跌,、股票長期來看是漲還是跌,。 如果經(jīng)濟總體上揚,房價和股票應該都是漲的,。但基于統(tǒng)計數(shù)據(jù),,無法總結出股票,物價的微小波動規(guī)律,。 基于神經(jīng)網(wǎng)絡的微觀經(jīng)濟學才是對整個經(jīng)濟規(guī)律最最準確的表達,,每個人對于自己在社會中的輸入進行各自的調(diào)整,并且調(diào)整同樣會作為輸入反饋到社會中,。 想象一下股市行情細微的波動曲線,,正是每個獨立的個體各自不斷交易的結果,,沒有統(tǒng)一的規(guī)律可循。 而每個人根據(jù)整個社會的輸入進行獨立決策,,當某些因素經(jīng)過多次訓練,,也會形成宏觀上統(tǒng)計性的規(guī)律,這也就是宏觀經(jīng)濟學所能看到的,。 例如每次貨幣大量發(fā)行,,最后房價都會上漲,多次訓練后,,人們也就都學會了,。 人工智能需要大數(shù)據(jù) 然而,神經(jīng)網(wǎng)絡包含這么多的節(jié)點,,每個節(jié)點又包含非常多的參數(shù),,整個參數(shù)量實在是太大了,需要的計算量實在太大,。 但沒有關系,,我們有大數(shù)據(jù)平臺,可以匯聚多臺機器的力量一起來計算,,就能在有限的時間內(nèi)得到想要的結果,。 人工智能可以做的事情非常多,例如可以鑒別垃圾郵件,、鑒別黃色暴力文字和圖片等,。 這也是經(jīng)歷了三個階段的:
由于人工智能算法多是依賴于大量的數(shù)據(jù)的,,這些數(shù)據(jù)往往需要面向某個特定的領域(例如電商,,郵箱)進行長期的積累。 如果沒有數(shù)據(jù),,就算有人工智能算法也白搭,,所以人工智能程序很少像前面的 IaaS 和 PaaS 一樣,,將人工智能程序給某個客戶安裝一套,,讓客戶去用,。 因為給某個客戶單獨安裝一套,客戶沒有相關的數(shù)據(jù)做訓練,,結果往往是很差的,。 但云計算廠商往往是積累了大量數(shù)據(jù)的,于是就在云計算廠商里面安裝一套,,暴露一個服務接口,。 比如您想鑒別一個文本是不是涉及黃色和暴力,直接用這個在線服務就可以了,。這種形勢的服務,,在云計算里面稱為軟件即服務,SaaS (Software AS A Service) 于是工智能程序作為 SaaS 平臺進入了云計算,。 基于三者關系的美好生活 終于云計算的三兄弟湊齊了,,分別是 IaaS、PaaS 和 SaaS,。所以一般在一個云計算平臺上,,云、大數(shù)據(jù),、人工智能都能找得到,。 一個大數(shù)據(jù)公司,積累了大量的數(shù)據(jù),,會使用一些人工智能的算法提供一些服務,;一個人工智能公司,也不可能沒有大數(shù)據(jù)平臺支撐,。 所以,,當云計算、大數(shù)據(jù),、人工智能這樣整合起來,,便完成了相遇、相識,、相知的過程,。 |
|