2019-04-16 12:24:37 發(fā)表閱讀:118
▌總結(jié)
到了這個(gè)階段,云計(jì)算基本上實(shí)現(xiàn)了時(shí)間靈活性和空間靈活性;實(shí)現(xiàn)了計(jì)算、網(wǎng)絡(luò)、存儲(chǔ)資源的彈性。
計(jì)算、網(wǎng)絡(luò)、存儲(chǔ)我們常稱為基礎(chǔ)設(shè)施 Infranstracture, 因而這個(gè)階段的彈性稱為資源層面的彈性。
管理資源的云平臺(tái),我們稱為基礎(chǔ)設(shè)施服務(wù),也就是我們常聽(tīng)到的 IaaS(Infranstracture As A Service)。
▌云計(jì)算不光管資源,也要管應(yīng)用
有了 IaaS,實(shí)現(xiàn)了資源層面的彈性就夠了嗎?顯然不是,還有應(yīng)用層面的彈性。
這里舉個(gè)例子:比如說(shuō)實(shí)現(xiàn)一個(gè)電商的應(yīng)用,平時(shí)十臺(tái)機(jī)器就夠了,雙十一需要一百臺(tái)。你可能覺(jué)得很好辦啊,有了 IaaS,新創(chuàng)建九十臺(tái)機(jī)器就可以了啊。
但 90 臺(tái)機(jī)器創(chuàng)建出來(lái)是空的,電商應(yīng)用并沒(méi)有放上去,只能讓公司的運(yùn)維人員一臺(tái)一臺(tái)的弄,需要很長(zhǎng)時(shí)間才能安裝好的。
雖然資源層面實(shí)現(xiàn)了彈性,但沒(méi)有應(yīng)用層的彈性,依然靈活性是不夠的。有沒(méi)有方法解決這個(gè)問(wèn)題呢?
人們?cè)?IaaS 平臺(tái)之上又加了一層,用于管理資源以上的應(yīng)用彈性的問(wèn)題,這一層通常稱為 PaaS(Platform As A Service)。
這一層往往比較難理解,大致分兩部分:一部分筆者稱為“你自己的應(yīng)用自動(dòng)安裝”,一部分筆者稱為“通用的應(yīng)用不用安裝”。
自己的應(yīng)用自動(dòng)安裝:比如電商應(yīng)用是你自己開(kāi)發(fā)的,除了你自己,其他人是不知道怎么安裝的。
像電商應(yīng)用,安裝時(shí)需要配置支付寶或者微信的賬號(hào),才能使別人在你的電商上買(mǎi)東西時(shí),付的錢(qián)是打到你的賬戶里面的,除了你,誰(shuí)也不知道。
所以安裝的過(guò)程平臺(tái)幫不了忙,但能夠幫你做得自動(dòng)化,你需要做一些工作,將自己的配置信息融入到自動(dòng)化的安裝過(guò)程中方可。
比如上面的例子,雙十一新創(chuàng)建出來(lái)的 90 臺(tái)機(jī)器是空的,如果能夠提供一個(gè)工具,能夠自動(dòng)在這新的 90 臺(tái)機(jī)器上將電商應(yīng)用安裝好,就能夠?qū)崿F(xiàn)應(yīng)用層面的真正彈性。
例如 Puppet、Chef、Ansible、Cloud Foundary 都可以干這件事情,最新的容器技術(shù) Docker 能更好的干這件事情。
通用的應(yīng)用不用安裝:所謂通用的應(yīng)用,一般指一些復(fù)雜性比較高,但大家都在用的,例如數(shù)據(jù)庫(kù)。幾乎所有的應(yīng)用都會(huì)用數(shù)據(jù)庫(kù),但數(shù)據(jù)庫(kù)軟件是標(biāo)準(zhǔn)的,雖然安裝和維護(hù)比較復(fù)雜,但無(wú)論誰(shuí)安裝都是一樣。
這樣的應(yīng)用可以變成標(biāo)準(zhǔn)的 PaaS 層的應(yīng)用放在云平臺(tái)的界面上。當(dāng)用戶需要一個(gè)數(shù)據(jù)庫(kù)時(shí),一點(diǎn)就出來(lái)了,用戶就可以直接用了。
有人問(wèn),既然誰(shuí)安裝都一個(gè)樣,那我自己來(lái)好了,不需要花錢(qián)在云平臺(tái)上買(mǎi)。當(dāng)然不是,數(shù)據(jù)庫(kù)是一個(gè)非常難的東西,光 Oracle 這家公司,靠數(shù)據(jù)庫(kù)就能賺這么多錢(qián)。買(mǎi) Oracle 也是要花很多錢(qián)的。
然而大多數(shù)云平臺(tái)會(huì)提供 MySQL 這樣的開(kāi)源數(shù)據(jù)庫(kù),又是開(kāi)源,錢(qián)不需要花這么多了。
但維護(hù)這個(gè)數(shù)據(jù)庫(kù),卻需要專門(mén)招一個(gè)很大的團(tuán)隊(duì),如果這個(gè)數(shù)據(jù)庫(kù)能夠優(yōu)化到能夠支撐雙十一,也不是一年兩年能夠搞定的。
比如您是一個(gè)做單車的,當(dāng)然沒(méi)必要招一個(gè)非常大的數(shù)據(jù)庫(kù)團(tuán)隊(duì)來(lái)干這件事情,成本太高了,應(yīng)該交給云平臺(tái)來(lái)做這件事情。
專業(yè)的事情專業(yè)的人來(lái)做,云平臺(tái)專門(mén)養(yǎng)了幾百人維護(hù)這套系統(tǒng),您只要專注于您的單車應(yīng)用就可以了。
要么是自動(dòng)部署,要么是不用部署,總的來(lái)說(shuō)就是應(yīng)用層你也要少操心,這就是 PaaS 層的重要作用。
雖說(shuō)腳本的方式能夠解決自己的應(yīng)用的部署問(wèn)題,然而不同的環(huán)境千差萬(wàn)別,一個(gè)腳本往往在一個(gè)環(huán)境上運(yùn)行正確,到另一個(gè)環(huán)境就不正確了。
而容器是能更好地解決這個(gè)問(wèn)題。
容器是 Container,Container 另一個(gè)意思是集裝箱,其實(shí)容器的思想就是要變成軟件交付的集裝箱。集裝箱的特點(diǎn):一是封裝,二是標(biāo)準(zhǔn)。
在沒(méi)有集裝箱的時(shí)代,假設(shè)將貨物從 A 運(yùn)到 B,中間要經(jīng)過(guò)三個(gè)碼頭、換三次船。
每次都要將貨物卸下船來(lái),擺得七零八落,然后搬上船重新整齊擺好。因此在沒(méi)有集裝箱時(shí),每次換船,船員們都要在岸上待幾天才能走。
有了集裝箱以后,所有的貨物都打包在一起了,并且集裝箱的尺寸全部一致,所以每次換船時(shí),一個(gè)箱子整體搬過(guò)去就行了,小時(shí)級(jí)別就能完成,船員再也不用上岸長(zhǎng)時(shí)間耽擱了。
這是集裝箱“封裝”、“標(biāo)準(zhǔn)”兩大特點(diǎn)在生活中的應(yīng)用。
那么容器如何對(duì)應(yīng)用打包呢?還是要學(xué)習(xí)集裝箱。首先要有個(gè)封閉的環(huán)境,將貨物封裝起來(lái),讓貨物之間互不干擾、互相隔離,這樣裝貨卸貨才方便。好在 Ubuntu 中的 LXC 技術(shù)早就能做到這一點(diǎn)。
封閉的環(huán)境主要使用了兩種技術(shù):
看起來(lái)是隔離的技術(shù),稱為 Namespace,也即每個(gè) Namespace 中的應(yīng)用看到的是不同的 IP 地址、用戶空間、程號(hào)等。
用起來(lái)是隔離的技術(shù),稱為 Cgroups,也即明明整臺(tái)機(jī)器有很多的 CPU、內(nèi)存,而一個(gè)應(yīng)用只能用其中的一部分。
所謂的鏡像,就是將你焊好集裝箱的那一刻,將集裝箱的狀態(tài)保存下來(lái),就像孫悟空說(shuō):“定”,集裝箱里面就定在了那一刻,然后將這一刻的狀態(tài)保存成一系列文件。
這些文件的格式是標(biāo)準(zhǔn)的,誰(shuí)看到這些文件都能還原當(dāng)時(shí)定住的那個(gè)時(shí)刻。將鏡像還原成運(yùn)行時(shí)的過(guò)程(就是讀取鏡像文件,還原那個(gè)時(shí)刻的過(guò)程),就是容器運(yùn)行的過(guò)程。
有了容器,使得 PaaS 層對(duì)于用戶自身應(yīng)用的自動(dòng)部署變得快速而優(yōu)雅。
▌大數(shù)據(jù)擁抱云計(jì)算
在 PaaS 層中一個(gè)復(fù)雜的通用應(yīng)用就是大數(shù)據(jù)平臺(tái)。大數(shù)據(jù)是如何一步一步融入云計(jì)算的呢?
▌數(shù)據(jù)不大也包含智慧
一開(kāi)始這個(gè)大數(shù)據(jù)并不大。原來(lái)才有多少數(shù)據(jù)?現(xiàn)在大家都去看電子書(shū),上網(wǎng)看新聞了,在我們 80 后小時(shí)候,信息量沒(méi)有那么大,也就看看書(shū)、看看報(bào),一個(gè)星期的報(bào)紙加起來(lái)才有多少字?
如果你不在一個(gè)大城市,一個(gè)普通的學(xué)校的圖書(shū)館加起來(lái)也沒(méi)幾個(gè)書(shū)架,是后來(lái)隨著信息化的到來(lái),信息才會(huì)越來(lái)越多。
首先我們來(lái)看一下大數(shù)據(jù)里面的數(shù)據(jù),就分三種類型:
數(shù)據(jù)本身沒(méi)有什么用處,但數(shù)據(jù)里面包含一個(gè)很重要的東西,叫做信息(Information)。
數(shù)據(jù)十分雜亂,經(jīng)過(guò)梳理和清洗,才能夠稱為信息。信息會(huì)包含很多規(guī)律,我們需要從信息中將規(guī)律總結(jié)出來(lái),稱為知識(shí)(Knowledge),而知識(shí)改變命運(yùn)。
信息是很多的,但有人看到了信息相當(dāng)于白看,但有人就從信息中看到了電商的未來(lái),有人看到了直播的未來(lái),所以人家就牛了。
如果你沒(méi)有從信息中提取出知識(shí),天天看朋友圈也只能在互聯(lián)網(wǎng)滾滾大潮中做個(gè)看客。
有了知識(shí),然后利用這些知識(shí)去應(yīng)用于實(shí)戰(zhàn),有的人會(huì)做得非常好,這個(gè)東西叫做智慧(Intelligence)。
有知識(shí)并不一定有智慧,例如好多學(xué)者很有知識(shí),已經(jīng)發(fā)生的事情可以從各個(gè)角度分析得頭頭是道,但一到實(shí)干就歇菜,并不能轉(zhuǎn)化成為智慧。
而很多的創(chuàng)業(yè)家之所以偉大,就是通過(guò)獲得的知識(shí)應(yīng)用于實(shí)踐,最后做了很大的生意。
所以數(shù)據(jù)的應(yīng)用分這四個(gè)步驟:數(shù)據(jù)、信息、知識(shí)、智慧。
最終的階段是很多商家都想要的。你看我收集了這么多的數(shù)據(jù),能不能基于這些數(shù)據(jù)來(lái)幫我做下一步的決策,改善我的產(chǎn)品。
例如讓用戶看視頻的時(shí)候旁邊彈出廣告,正好是他想買(mǎi)的東西;再如讓用戶聽(tīng)音樂(lè)時(shí),另外推薦一些他非常想聽(tīng)的其他音樂(lè)。
用戶在我的應(yīng)用或者網(wǎng)站上隨便點(diǎn)點(diǎn)鼠標(biāo),輸入文字對(duì)我來(lái)說(shuō)都是數(shù)據(jù),我就是要將其中某些東西提取出來(lái)、指導(dǎo)實(shí)踐、形成智慧,讓用戶陷入到我的應(yīng)用里面不可自拔,上了我的網(wǎng)就不想離開(kāi),手不停地點(diǎn)、不停地買(mǎi)。
很多人說(shuō)雙十一我都想斷網(wǎng)了,我老婆在上面不斷地買(mǎi)買(mǎi)買(mǎi),買(mǎi)了 A 又推薦 B,老婆大人說(shuō),“哎呀,B 也是我喜歡的啊,老公我要買(mǎi)”。
你說(shuō)這個(gè)程序怎么這么牛,這么有智慧,比我還了解我老婆,這件事情是怎么做到的呢?
▌數(shù)據(jù)如何升華為智慧
數(shù)據(jù)的處理分以下幾個(gè)步驟,完成了才最后會(huì)有智慧:
▌數(shù)據(jù)收集
首先得有數(shù)據(jù),數(shù)據(jù)的收集有兩個(gè)方式:
比如說(shuō)新浪有個(gè)新聞,你拿百度搜出來(lái),你不點(diǎn)的時(shí)候,那一頁(yè)在百度數(shù)據(jù)中心,一點(diǎn)出來(lái)的網(wǎng)頁(yè)就是在新浪的數(shù)據(jù)中心了。
▌數(shù)據(jù)傳輸
一般會(huì)通過(guò)隊(duì)列方式進(jìn)行,因?yàn)閿?shù)據(jù)量實(shí)在是太大了,數(shù)據(jù)必須經(jīng)過(guò)處理才會(huì)有用。可系統(tǒng)處理不過(guò)來(lái),只好排好隊(duì),慢慢處理。
▌數(shù)據(jù)存儲(chǔ)
現(xiàn)在數(shù)據(jù)就是金錢(qián),掌握了數(shù)據(jù)就相當(dāng)于掌握了錢(qián)。要不然網(wǎng)站怎么知道你想買(mǎi)什么?
就是因?yàn)樗心銡v史的交易數(shù)據(jù),這個(gè)信息可不能給別人,十分寶貴,所以需要存儲(chǔ)下來(lái)。
▌數(shù)據(jù)處理和分析
上面存儲(chǔ)的數(shù)據(jù)是原始數(shù)據(jù),原始數(shù)據(jù)多是雜亂無(wú)章的,有很多垃圾數(shù)據(jù)在里面,因而需要清洗和過(guò)濾,得到一些高質(zhì)量的數(shù)據(jù)。
對(duì)于高質(zhì)量的數(shù)據(jù),就可以進(jìn)行分析,從而對(duì)數(shù)據(jù)進(jìn)行分類,或者發(fā)現(xiàn)數(shù)據(jù)之間的相互關(guān)系,得到知識(shí)。
比如盛傳的沃爾瑪超市的啤酒和尿布的故事,就是通過(guò)對(duì)人們的購(gòu)買(mǎi)數(shù)據(jù)進(jìn)行分析,發(fā)現(xiàn)了男人一般買(mǎi)尿布的時(shí)候,會(huì)同時(shí)購(gòu)買(mǎi)啤酒。
這樣就發(fā)現(xiàn)了啤酒和尿布之間的相互關(guān)系,獲得知識(shí),然后應(yīng)用到實(shí)踐中,將啤酒和尿布的柜臺(tái)弄的很近,就獲得了智慧。
▌數(shù)據(jù)檢索和挖掘
檢索就是搜索,所謂外事不決問(wèn) Google,內(nèi)事不決問(wèn)百度。內(nèi)外兩大搜索引擎都是將分析后的數(shù)據(jù)放入搜索引擎,因此人們想尋找信息的時(shí)候,一搜就有了。
另外就是挖掘,僅僅搜索出來(lái)已經(jīng)不能滿足人們的要求了,還需要從信息中挖掘出相互的關(guān)系。
比如財(cái)經(jīng)搜索,當(dāng)搜索某個(gè)公司股票的時(shí)候,該公司的高管是不是也應(yīng)該被挖掘出來(lái)呢?
如果僅僅搜索出這個(gè)公司的股票發(fā)現(xiàn)漲的特別好,于是你就去買(mǎi)了,其時(shí)其高管發(fā)了一個(gè)聲明,對(duì)股票十分不利,第二天就跌了,這不坑害廣大股民么?所以通過(guò)各種算法挖掘數(shù)據(jù)中的關(guān)系,形成知識(shí)庫(kù),十分重要。
▌大數(shù)據(jù)時(shí)代,眾人拾柴火焰高
當(dāng)數(shù)據(jù)量很小時(shí),很少的幾臺(tái)機(jī)器就能解決。慢慢的,當(dāng)數(shù)據(jù)量越來(lái)越大,最牛的服務(wù)器都解決不了問(wèn)題時(shí),怎么辦呢?
這時(shí)就要聚合多臺(tái)機(jī)器的力量,大家齊心協(xié)力一起把這個(gè)事搞定,眾人拾柴火焰高。
對(duì)于數(shù)據(jù)的收集:就 IoT 來(lái)講,外面部署著成千上萬(wàn)的檢測(cè)設(shè)備,將大量的溫度、濕度、監(jiān)控、電力等數(shù)據(jù)統(tǒng)統(tǒng)收集上來(lái);就互聯(lián)網(wǎng)網(wǎng)頁(yè)的搜索引擎來(lái)講,需要將整個(gè)互聯(lián)網(wǎng)所有的網(wǎng)頁(yè)都下載下來(lái)。
這顯然一臺(tái)機(jī)器做不到,需要多臺(tái)機(jī)器組成網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng),每臺(tái)機(jī)器下載一部分,同時(shí)工作,才能在有限的時(shí)間內(nèi),將海量的網(wǎng)頁(yè)下載完畢。
對(duì)于數(shù)據(jù)的傳輸:一個(gè)內(nèi)存里面的隊(duì)列肯定會(huì)被大量的數(shù)據(jù)擠爆掉,于是就產(chǎn)生了基于硬盤(pán)的分布式隊(duì)列,這樣隊(duì)列可以多臺(tái)機(jī)器同時(shí)傳輸,隨你數(shù)據(jù)量多大,只要我的隊(duì)列足夠多,管道足夠粗,就能夠撐得住。
對(duì)于數(shù)據(jù)的存儲(chǔ):一臺(tái)機(jī)器的文件系統(tǒng)肯定是放不下的,所以需要一個(gè)很大的分布式文件系統(tǒng)來(lái)做這件事情,把多臺(tái)機(jī)器的硬盤(pán)打成一塊大的文件系統(tǒng)。
對(duì)于數(shù)據(jù)的分析:可能需要對(duì)大量的數(shù)據(jù)做分解、統(tǒng)計(jì)、匯總,一臺(tái)機(jī)器肯定搞不定,處理到猴年馬月也分析不完。
于是就有分布式計(jì)算的方法,將大量的數(shù)據(jù)分成小份,每臺(tái)機(jī)器處理一小份,多臺(tái)機(jī)器并行處理,很快就能算完。
例如著名的 Terasort 對(duì) 1 個(gè) TB 的數(shù)據(jù)排序,相當(dāng)于 1000G,如果單機(jī)處理,怎么也要幾個(gè)小時(shí),但并行處理 209 秒就完成了。
所以說(shuō)什么叫做大數(shù)據(jù)?說(shuō)白了就是一臺(tái)機(jī)器干不完,大家一起干。
可是隨著數(shù)據(jù)量越來(lái)越大,很多不大的公司都需要處理相當(dāng)多的數(shù)據(jù),這些小公司沒(méi)有這么多機(jī)器可怎么辦呢?
▌大數(shù)據(jù)需要云計(jì)算,云計(jì)算需要大數(shù)據(jù)
說(shuō)到這里,大家想起云計(jì)算了吧。當(dāng)想要干這些活時(shí),需要很多的機(jī)器一塊做,真的是想什么時(shí)候要就什么時(shí)候要,想要多少就要多少。
例如大數(shù)據(jù)分析公司的財(cái)務(wù)情況,可能一周分析一次,如果要把這一百臺(tái)機(jī)器或者一千臺(tái)機(jī)器都在那放著,一周用一次非常浪費(fèi)。
那能不能需要計(jì)算的時(shí)候,把這一千臺(tái)機(jī)器拿出來(lái);不算的時(shí)候,讓這一千臺(tái)機(jī)器去干別的事情?
誰(shuí)能做這個(gè)事兒呢?只有云計(jì)算,可以為大數(shù)據(jù)的運(yùn)算提供資源層的靈活性。
而云計(jì)算也會(huì)部署大數(shù)據(jù)放到它的 PaaS 平臺(tái)上,作為一個(gè)非常非常重要的通用應(yīng)用。
因?yàn)榇髷?shù)據(jù)平臺(tái)能夠使得多臺(tái)機(jī)器一起干一個(gè)事兒,這個(gè)東西不是一般人能開(kāi)發(fā)出來(lái)的,也不是一般人玩得轉(zhuǎn)的,怎么也得雇個(gè)幾十上百號(hào)人才能把這個(gè)玩起來(lái)。
所以說(shuō)就像數(shù)據(jù)庫(kù)一樣,還是需要有一幫專業(yè)的人來(lái)玩這個(gè)東西。現(xiàn)在公有云上基本上都會(huì)有大數(shù)據(jù)的解決方案了。
一個(gè)小公司需要大數(shù)據(jù)平臺(tái)的時(shí)候,不需要采購(gòu)一千臺(tái)機(jī)器,只要到公有云上一點(diǎn),這一千臺(tái)機(jī)器都出來(lái)了,并且上面已經(jīng)部署好了的大數(shù)據(jù)平臺(tái),只要把數(shù)據(jù)放進(jìn)去算就可以了。
云計(jì)算需要大數(shù)據(jù),大數(shù)據(jù)需要云計(jì)算,二者就這樣結(jié)合了。
▌人工智能擁抱大數(shù)據(jù)
機(jī)器什么時(shí)候才能懂人心
雖說(shuō)有了大數(shù)據(jù),人的欲望卻不能夠滿足。雖說(shuō)在大數(shù)據(jù)平臺(tái)里面有搜索引擎這個(gè)東西,想要什么東西一搜就出來(lái)了。
但也存在這樣的情況:我想要的東西不會(huì)搜,表達(dá)不出來(lái),搜索出來(lái)的又不是我想要的。
例如音樂(lè)軟件推薦了一首歌,這首歌我沒(méi)聽(tīng)過(guò),當(dāng)然不知道名字,也沒(méi)法搜。但是軟件推薦給我,我的確喜歡,這就是搜索做不到的事情。
當(dāng)人們使用這種應(yīng)用時(shí),會(huì)發(fā)現(xiàn)機(jī)器知道我想要什么,而不是說(shuō)當(dāng)我想要時(shí),去機(jī)器里面搜索。這個(gè)機(jī)器真像我的朋友一樣懂我,這就有點(diǎn)人工智能的意思了。
人們很早就在想這個(gè)事情了。最早的時(shí)候,人們想象,要是有一堵墻,墻后面是個(gè)機(jī)器,我給它說(shuō)話,它就給我回應(yīng)。
如果我感覺(jué)不出它那邊是人還是機(jī)器,那它就真的是一個(gè)人工智能的東西了。
讓機(jī)器學(xué)會(huì)推理
怎么才能做到這一點(diǎn)呢?人們就想:我首先要告訴計(jì)算機(jī)人類推理的能力。你看人重要的是什么?人和動(dòng)物的區(qū)別在什么?就是能推理。
要是把我這個(gè)推理的能力告訴機(jī)器,讓機(jī)器根據(jù)你的提問(wèn),推理出相應(yīng)的回答,這樣多好?
其實(shí)目前人們慢慢地讓機(jī)器能夠做到一些推理了,例如證明數(shù)學(xué)公式。這是一個(gè)非常讓人驚喜的一個(gè)過(guò)程,機(jī)器竟然能夠證明數(shù)學(xué)公式。
但慢慢又發(fā)現(xiàn)這個(gè)結(jié)果也沒(méi)有那么令人驚喜。因?yàn)榇蠹野l(fā)現(xiàn)了一個(gè)問(wèn)題:數(shù)學(xué)公式非常嚴(yán)謹(jǐn),推理過(guò)程也非常嚴(yán)謹(jǐn),而且數(shù)學(xué)公式很容易拿機(jī)器來(lái)進(jìn)行表達(dá),程序也相對(duì)容易表達(dá)。
然而人類的語(yǔ)言就沒(méi)這么簡(jiǎn)單了。比如今天晚上,你和你女朋友約會(huì),你女朋友說(shuō):如果你早來(lái),我沒(méi)來(lái),你等著;如果我早來(lái),你沒(méi)來(lái),你等著!
這個(gè)機(jī)器就比較難理解了,但人都懂。所以你和女朋友約會(huì),是不敢遲到的。
教給機(jī)器知識(shí)
因此,僅僅告訴機(jī)器嚴(yán)格的推理是不夠的,還要告訴機(jī)器一些知識(shí)。但告訴機(jī)器知識(shí)這個(gè)事情,一般人可能就做不來(lái)了??赡軐<铱梢?,比如語(yǔ)言領(lǐng)域的專家或者財(cái)經(jīng)領(lǐng)域的專家。
語(yǔ)言領(lǐng)域和財(cái)經(jīng)領(lǐng)域知識(shí)能不能表示成像數(shù)學(xué)公式一樣稍微嚴(yán)格點(diǎn)呢?例如語(yǔ)言專家可能會(huì)總結(jié)出主謂賓定狀補(bǔ)這些語(yǔ)法規(guī)則,主語(yǔ)后面一定是謂語(yǔ),謂語(yǔ)后面一定是賓語(yǔ),將這些總結(jié)出來(lái),并嚴(yán)格表達(dá)出來(lái)不就行了嗎?
后來(lái)發(fā)現(xiàn)這個(gè)不行,太難總結(jié)了,語(yǔ)言表達(dá)千變?nèi)f化。就拿主謂賓的例子,很多時(shí)候在口語(yǔ)里面就省略了謂語(yǔ),別人問(wèn):你誰(shuí)???我回答:我劉超。
但你不能規(guī)定在語(yǔ)音語(yǔ)義識(shí)別時(shí),要求對(duì)著機(jī)器說(shuō)標(biāo)準(zhǔn)的書(shū)面語(yǔ),這樣還是不夠智能,就像羅永浩在一次演講中說(shuō)的那樣,每次對(duì)著手機(jī),用書(shū)面語(yǔ)說(shuō):請(qǐng)幫我呼叫某某某,這是一件很尷尬的事情。
人工智能這個(gè)階段叫做專家系統(tǒng)。專家系統(tǒng)不易成功,一方面是知識(shí)比較難總結(jié),另一方面總結(jié)出來(lái)的知識(shí)難以教給計(jì)算機(jī)。
因?yàn)槟阕约哼€迷迷糊糊,覺(jué)得似乎有規(guī)律,就是說(shuō)不出來(lái),又怎么能夠通過(guò)編程教給計(jì)算機(jī)呢?
算了,教不會(huì)你自己學(xué)吧
于是人們想到:機(jī)器是和人完全不一樣的物種,干脆讓機(jī)器自己學(xué)習(xí)好了。
機(jī)器怎么學(xué)習(xí)呢?既然機(jī)器的統(tǒng)計(jì)能力這么強(qiáng),基于統(tǒng)計(jì)學(xué)習(xí),一定能從大量的數(shù)字中發(fā)現(xiàn)一定的規(guī)律。
其實(shí)在娛樂(lè)圈有很好的一個(gè)例子,可窺一斑:
有一位網(wǎng)友統(tǒng)計(jì)了知名歌手在大陸發(fā)行的 9 張專輯中 117 首歌曲的歌詞,同一詞語(yǔ)在一首歌出現(xiàn)只算一次,形容詞、名詞和動(dòng)詞的前十名如下表所示(詞語(yǔ)后面的數(shù)字是出現(xiàn)的次數(shù)):
如果我們隨便寫(xiě)一串?dāng)?shù)字,然后按照數(shù)位依次在形容詞、名詞和動(dòng)詞中取出一個(gè)詞,連在一起會(huì)怎么樣呢?
例如取圓周率 3.1415926,對(duì)應(yīng)的詞語(yǔ)是:堅(jiān)強(qiáng),路,飛,自由,雨,埋,迷惘。
稍微連接和潤(rùn)色一下:
是不是有點(diǎn)感覺(jué)了?當(dāng)然,真正基于統(tǒng)計(jì)的學(xué)習(xí)算法比這個(gè)簡(jiǎn)單的統(tǒng)計(jì)復(fù)雜得多。
然而統(tǒng)計(jì)學(xué)習(xí)比較容易理解簡(jiǎn)單的相關(guān)性:例如一個(gè)詞和另一個(gè)詞總是一起出現(xiàn),兩個(gè)詞應(yīng)該有關(guān)系;而無(wú)法表達(dá)復(fù)雜的相關(guān)性。
并且統(tǒng)計(jì)方法的公式往往非常復(fù)雜,為了簡(jiǎn)化計(jì)算,常常做出各種獨(dú)立性的假設(shè),來(lái)降低公式的計(jì)算難度,然而現(xiàn)實(shí)生活中,具有獨(dú)立性的事件是相對(duì)較少的。
模擬大腦的工作方式
于是人類開(kāi)始從機(jī)器的世界,反思人類的世界是怎么工作的。
人類的腦子里面不是存儲(chǔ)著大量的規(guī)則,也不是記錄著大量的統(tǒng)計(jì)數(shù)據(jù),而是通過(guò)神經(jīng)元的觸發(fā)實(shí)現(xiàn)的。
每個(gè)神經(jīng)元有從其他神經(jīng)元的輸入,當(dāng)接收到輸入時(shí),會(huì)產(chǎn)生一個(gè)輸出來(lái)刺激其他神經(jīng)元。于是大量的神經(jīng)元相互反應(yīng),最終形成各種輸出的結(jié)果。
例如當(dāng)人們看到美女瞳孔會(huì)放大,絕不是大腦根據(jù)身材比例進(jìn)行規(guī)則判斷,也不是將人生中看過(guò)的所有的美女都統(tǒng)計(jì)一遍,而是神經(jīng)元從視網(wǎng)膜觸發(fā)到大腦再回到瞳孔。
在這個(gè)過(guò)程中,其實(shí)很難總結(jié)出每個(gè)神經(jīng)元對(duì)最終的結(jié)果起到了哪些作用,反正就是起作用了。
于是人們開(kāi)始用一個(gè)數(shù)學(xué)單元模擬神經(jīng)元。
這個(gè)神經(jīng)元有輸入,有輸出,輸入和輸出之間通過(guò)一個(gè)公式來(lái)表示,輸入根據(jù)重要程度不同(權(quán)重),影響著輸出。
于是將 n 個(gè)神經(jīng)元通過(guò)像一張神經(jīng)網(wǎng)絡(luò)一樣連接在一起。n 這個(gè)數(shù)字可以很大很大,所有的神經(jīng)元可以分成很多列,每一列很多個(gè)排列起來(lái)。
每個(gè)神經(jīng)元對(duì)于輸入的權(quán)重可以都不相同,從而每個(gè)神經(jīng)元的公式也不相同。當(dāng)人們從這張網(wǎng)絡(luò)中輸入一個(gè)東西的時(shí)候,希望輸出一個(gè)對(duì)人類來(lái)講正確的結(jié)果。
例如上面的例子,輸入一個(gè)寫(xiě)著 2 的圖片,輸出的列表里面第二個(gè)數(shù)字最大,其實(shí)從機(jī)器來(lái)講,它既不知道輸入的這個(gè)圖片寫(xiě)的是 2,也不知道輸出的這一系列數(shù)字的意義,沒(méi)關(guān)系,人知道意義就可以了。
正如對(duì)于神經(jīng)元來(lái)說(shuō),他們既不知道視網(wǎng)膜看到的是美女,也不知道瞳孔放大是為了看的清楚,反正看到美女,瞳孔放大了,就可以了。
對(duì)于任何一張神經(jīng)網(wǎng)絡(luò),誰(shuí)也不敢保證輸入是 2,輸出一定是第二個(gè)數(shù)字最大,要保證這個(gè)結(jié)果,需要訓(xùn)練和學(xué)習(xí)。
畢竟看到美女而瞳孔放大也是人類很多年進(jìn)化的結(jié)果。學(xué)習(xí)的過(guò)程就是,輸入大量的圖片,如果結(jié)果不是想要的結(jié)果,則進(jìn)行調(diào)整。
如何調(diào)整呢?就是每個(gè)神經(jīng)元的每個(gè)權(quán)重都向目標(biāo)進(jìn)行微調(diào),由于神經(jīng)元和權(quán)重實(shí)在是太多了,所以整張網(wǎng)絡(luò)產(chǎn)生的結(jié)果很難表現(xiàn)出非此即彼的結(jié)果,而是向著結(jié)果微微地進(jìn)步,最終能夠達(dá)到目標(biāo)結(jié)果。
當(dāng)然,這些調(diào)整的策略還是非常有技巧的,需要算法的高手來(lái)仔細(xì)的調(diào)整。正如人類見(jiàn)到美女,瞳孔一開(kāi)始沒(méi)有放大到能看清楚,于是美女跟別人跑了,下次學(xué)習(xí)的結(jié)果是瞳孔放大一點(diǎn)點(diǎn),而不是放大鼻孔。
沒(méi)道理但做得到
聽(tīng)起來(lái)也沒(méi)有那么有道理,但的確能做到,就是這么任性!
神經(jīng)網(wǎng)絡(luò)的普遍性定理是這樣說(shuō)的,假設(shè)某個(gè)人給你某種復(fù)雜奇特的函數(shù),f(x):
不管這個(gè)函數(shù)是什么樣的,總會(huì)確保有個(gè)神經(jīng)網(wǎng)絡(luò)能夠?qū)θ魏慰赡艿妮斎?x,其值 f(x)(或者某個(gè)能夠準(zhǔn)確的近似)是神經(jīng)網(wǎng)絡(luò)的輸出。
如果在函數(shù)代表著規(guī)律,也意味著這個(gè)規(guī)律無(wú)論多么奇妙,多么不能理解,都是能通過(guò)大量的神經(jīng)元,通過(guò)大量權(quán)重的調(diào)整,表示出來(lái)的。
人工智能的經(jīng)濟(jì)學(xué)解釋
這讓我想到了經(jīng)濟(jì)學(xué),于是比較容易理解了。
我們把每個(gè)神經(jīng)元當(dāng)成社會(huì)中從事經(jīng)濟(jì)活動(dòng)的個(gè)體。于是神經(jīng)網(wǎng)絡(luò)相當(dāng)于整個(gè)經(jīng)濟(jì)社會(huì),每個(gè)神經(jīng)元對(duì)于社會(huì)的輸入,都有權(quán)重的調(diào)整,做出相應(yīng)的輸出。
比如工資漲了、菜價(jià)漲了、股票跌了,我應(yīng)該怎么辦、怎么花自己的錢(qián)。這里面沒(méi)有規(guī)律么?肯定有,但是具體什么規(guī)律呢?很難說(shuō)清楚。
基于專家系統(tǒng)的經(jīng)濟(jì)屬于計(jì)劃經(jīng)濟(jì)。整個(gè)經(jīng)濟(jì)規(guī)律的表示不希望通過(guò)每個(gè)經(jīng)濟(jì)個(gè)體的獨(dú)立決策表現(xiàn)出來(lái),而是希望通過(guò)專家的高屋建瓴和遠(yuǎn)見(jiàn)卓識(shí)總結(jié)出來(lái)。但專家永遠(yuǎn)不可能知道哪個(gè)城市的哪個(gè)街道缺少一個(gè)賣甜豆腐腦的。
于是專家說(shuō)應(yīng)該產(chǎn)多少鋼鐵、產(chǎn)多少饅頭,往往距離人民生活的真正需求有較大的差距,就算整個(gè)計(jì)劃書(shū)寫(xiě)個(gè)幾百頁(yè),也無(wú)法表達(dá)隱藏在人民生活中的小規(guī)律。