古往今來的人類是怎樣有女朋友的?
根據(jù)2015年的數(shù)據(jù),世界上每天大約有37萬人出生,算下來平均每秒有4.3人出生,扣除掉男孩子后,大概每半秒有一個妹紙出生,當然這時候的她還沒能成為一個合格的女朋友。在接下來的大概五年里,她必須一邊使勁折騰父母一邊慢慢學會走路,說話,寫自己的名字,還有改掉隨地大小便的壞習慣。這樣在大概二十年后的某個大學的圖書館里,某個想不勞而獲的年輕人才能偷偷瞄到她寫在作業(yè)本上的名字,和她搭訕,陪她出去逛街,還有不會因為女朋友在公眾場合隨地大小便而讓他陷入難堪。在接下去的十五年,她還必須進入幼兒園,小學,中學學習,熬過“三年起步,最高死刑”的年紀,漸漸具備和人相處的能力,習得關于自然科學與社會科學常識。由于某些男性同胞的苛刻要求,她們當中的某些人還必須學會化妝,服裝搭配,詩詞歌賦,琴棋書畫等一些非必需的技能和具備所謂“相合”的三觀??偠灾覀兊氖澜缫馁M至少十幾年的時間、大量的自然和社會資源才能培養(yǎng)出一個合格的女朋友。然而在這之后,在某個不明所以的晚上,那個想要不勞而獲的年輕人,心不在焉對她說一句類似“今夜月色真美”這樣不知所謂的話,她就傻傻地成為了他的女朋友,而對自己"歷經(jīng)苦難才變得像現(xiàn)在這樣聰明可愛,他根本沒有一點功勞”這樣一個事實不知不覺。
然而這大概就是人類幾百萬年來擁有女朋友的唯一方式。
這樣培養(yǎng)女朋友的方式存在什么問題?
在程序設計中存在著類似“不要重復造輪子”以及”Don't Repeat Yourself“的思想。意思大概是,比如你想制造一輛車,你不必從怎么造輪子想起,而可以利用前人已經(jīng)造好的輪子?!驹诔绦騿T的開源世界中,假設現(xiàn)在全人類想要一起造一輛會飛的汽車,其中程序員拉里佩奇帶領了100人的團隊率先成功地制造了飛行汽車的輪子,那么他就會把這個制造方法公開,這樣全世界的其他人只要復制粘貼一下他的代碼,大家也就會造飛行汽車輪子了,之后全人類就可以在這基礎上繼續(xù)研究飛行汽車的其他部分如發(fā)動機等,而不需要在造輪子上繼續(xù)浪費時間。所以全人類是在齊心協(xié)力一起推動科技的發(fā)展。當然也有某些公司比如蘋果、微軟等,因為商業(yè)利益等原因不愿意接受開源。這也是我們能用到本土化(被中國人改造過)的安卓(比如MIUI),而卻用不到本土化的IOS的原因?!克詫τ诔绦騿T來說,很容易就能發(fā)現(xiàn)在培養(yǎng)女朋友的這個過程中,一直在重復造輪子和repeat yourself。不知道在幾百萬年前直立人就學會了走路,不知道在幾千年前人類就擁有了文字和語言。以及可能一兩百年前某些利益熏心的歐洲商人就強行發(fā)明了化妝、噴香水的技能,以及提出服飾具有時尚與否的概念。然而現(xiàn)在剛出生的女孩子卻不是生下來用一秒復制粘貼一下就能繼承這些走路,說話,化妝,欣賞等有人類早已經(jīng)就掌握的技能。這無疑是一個十分低效的事,也是導致目前供求不平衡,也就是大多數(shù)程序員找不到女朋友的原因之一。對此,我們感到非常angry。我們呼吁全天下的程序員一起來努力創(chuàng)造一個人人都有女朋友的美好世界。
那么怎樣去解決這個問題?答:我們自己動手造一個。
怎么無中生有造出女朋友呢,程序員首先想到的當然是”電腦“。
計算機剛被發(fā)明制造的時候是單純被當作計算器來用,但是后來有一些聰明可愛的女孩子,比如美海軍準將及計算機科學家葛麗絲·霍普(1906-1992),世界上最早一批的程序員,也是最早的女性程序員之一。她告訴我們計算機不僅能算數(shù),還能做其他事,并且動手創(chuàng)造了第一個編譯器系統(tǒng)。人們不得不相信計算機還能做其他事。
目前我對計算機程序的理解是,你給它一個輸入,它經(jīng)過一些你預先寫好的處理過程,然后返回一個輸出。比如說,我們在百度上搜索一個詞,它返回給你一堆網(wǎng)頁。我們在優(yōu)酷上點擊播放,它給你展示一段視頻,還有比如我們扔給它一個生雞蛋,它返回你一個煮雞蛋。
什么?你說程序不能用來煮雞蛋?
這就未免太侮辱人類的智慧了。實際上,從廣義上講,我們接觸到的大部分機器,都可以稱為計算機。像煮蛋器,電磁爐,電視機,冰箱這類的電器,它們與電腦的不同之處只在于它們是只能按照特定的程序實現(xiàn)特定的功能,而電腦可以通過編程這一活動來創(chuàng)造更多的功能而已。就像淘寶上簡易的煮蛋器,他的程序可能類似于【當(有水)時,接通電烙鐵】所以在沒水的時候他會自動斷開。所以要讓”狹義上“的電腦實現(xiàn)煮雞蛋的功能,只需要在筆記本旁外接一個電烙鐵就行了。(或者直接試試小米的產品?)順便說一句,現(xiàn)在被媒體熱炒的”智能硬件“以及”物聯(lián)網(wǎng)“之類的概念與此有一定關系。比如我們給冰箱加個攝像頭,編寫一段實現(xiàn)自拍功能的程序,那么冰箱就有了自拍的功能,即所謂“智能冰箱”。之后我們再給冰箱接上家里的WIFI(物聯(lián)網(wǎng)),然后比如你下班的時候想著回家喝啤酒,又因為忘了家里有沒有啤酒這件事而猶豫去不去超市買的時候,就可以給家里的冰箱發(fā)條微信”嘿,給我發(fā)張自拍“,然后就可以看到里面有沒有啤酒了。
所以現(xiàn)在,我們的電腦已經(jīng)具有煮雞蛋和給我們發(fā)自拍的功能了,是不是.....開始有點像女朋友了?
當然,你可能會說,“啊,女朋友不應該是一個接著鍵盤電烙鐵冰箱的怪物”。確實是這樣的,不過慶幸的是,我們也不用女朋友來打字,煮雞蛋,儲藏食物。
所以我們首先應該思考,人造女朋友應該是怎么樣的,應該會點什么。
首先我們當然希望她和人類一樣有身體發(fā)膚,這不是計算機科學的范疇,我們只能將希望寄托于材料科學的發(fā)展,即使目前為止,我們也已經(jīng)有了許多優(yōu)質的可選材料,比如可以用碳纖維之類的材料來制作頭發(fā),用鈦合金來制作骨架,用氧化鋯來制作牙齒,以及硅膠之類的來做**,(似乎現(xiàn)實中的不少女朋友也在某些地方含有這種成分)。在這方面,我們不是專家,所以應該拉攏日本某些產業(yè)的專家來參與這個項目。
到目前為止我們已經(jīng)有了一具高仿人類的肉體,其實這已經(jīng)滿足某些死宅對女朋友的要求了。當然我想絕大多數(shù)人所想要的不絕于此。
除了擁有一具肉體,我對人類的理解是它們至少要具備對外界不同的情況,條件做出一些不同的反應。麻煩的是人類具有各種不同的性格,特別是“女朋友”這種群體,有時候餓了卻說不餓,不愛的時候自欺欺人,愛的時候卻說“我放棄了”。當然這可能讓世界變得更加豐富多彩,但對計算機科學家來說卻可能是件難事,程序必須具有確定性,在特定的輸入下應該有特定的輸出。所以對于我們而言,造一個誠實的女朋友可能要容易一些?!痘魜y時期的愛情》里對誠實的定義是:誠實的生活方式其實是按照自己身體的意愿行事 餓的時候才吃飯 愛的時候不必撒謊。
好了,所以我們現(xiàn)在的目標就是造一個誠實的女朋友,他能對外界不同的條件做出誠實的回應。
我們首先來觀察一下自古以來人類培養(yǎng)女朋友的方式,比如,蹣跚學步,牙牙學語什么的。我們現(xiàn)在可以從一些現(xiàn)有的科技獲得一些啟發(fā)。比如谷歌無人駕駛汽車的項目,我們可以從中獲得“讓女朋友學會走路”的一些啟發(fā)。牙牙學語對應的則是計算機科學火熱的研究領域自然語言處理(Natural Language Processing)?!菊Z言產生的目的是為了人類之間的通信,實際上人說出一句話,是對大腦的思想做一次編碼,聽的人獲取了這串編碼后,再在大腦中解碼以此獲得信息。這是語言的數(shù)學本質,不同的語言實際上則是不同的編解碼方式。編程語言是人類與計算機通信的方式,它和自然語言有著許多共通的地方,這也是它也能被稱為語言的原因。自然語言經(jīng)過幾百萬年的淘汰和發(fā)展,已經(jīng)具有許多優(yōu)良的特性,它在無意中也竊合了計算機編碼中的某些思想,(例如:哈夫曼編碼,大概即出現(xiàn)越頻繁的詞語用越短的位來存儲)比如要表示自己“中文:“我” 英文:“I” 日語是“私(わたし)”人類不會造出一個有十幾個漢字或者假名來表示一個這么頻繁使用的單詞”。目前為止計算機已經(jīng)掌握了大概一百多種語言(c,c++,python.java...)。所謂自然語言處理,大概就是讓計算機再多學會一門語言(漢語,英語之類)。當然很顯然這不是一件容易的事。我們的大腦比計算機聰明靈活一萬倍,對于我們而言,學會一門新的語言也沒有那么容易。更何況,編程語言和自然語言還存在很多區(qū)別,例如自然語言具有二義性,模糊性。即使人類的大腦也不一定總是能正確理解自然語言。而且我們在之前說過了計算機喜歡確定性。當然目前她聽得懂編程語言,不過我相信沒人會樂于和女朋友用編程語言溝通的,所以現(xiàn)在的問題是我們怎么教會我們的人造女朋友說漢語?在解決這個問題上,科學家們曾經(jīng)走過一些彎路。在20世紀50年代至70年代,人們把學習語言的思想局限在規(guī)則和語法之中,它們教給計算機例如(名詞+動詞+名詞)這樣的規(guī)則以避免計算機說出“play basketball I”這樣錯誤的語句,但是計算機仍然無法分辨是“I play basketball”還是"basketball play I"。我在想我們曾經(jīng)在學習英語的過程中也陷入過分重視語法和規(guī)則的誤區(qū)。在當時,包括信息論的鼻祖香農也陷入了這樣的誤區(qū),人類在這二十年之間幾乎一無所獲。70年代后,人們依靠數(shù)學模型和統(tǒng)計解決了這個問題,人類慢慢教會了計算機自然語言,很明顯Siri之類的產品依賴了這一基礎,至于數(shù)學模型和統(tǒng)計如何解決這一問題,我覺得實際上這很接近于我們小時候學習母語的方式(通過輸入大量的語言材料,然后建立一定的獎賞機制)。我待會再講】
現(xiàn)在我們的人造女朋友已經(jīng)掌握了漢語,具備了表達思想和接受信息的能力。這是一個巨大的進步。當然這僅僅只是一個成型女朋友的一小小小部分。學會語言并不代表她已經(jīng)會運用語言,她現(xiàn)在已經(jīng)學會了說我愛你,但是我們當然只希望他在見到你的時候才說這句話,而不是見到隔壁老王也說。所以我們需要讓她擁有視覺,我們很容易想到攝像頭,我們確實發(fā)明了高清高速的攝像頭,在未來的某一時刻,他可能會趕上并超過人眼的頻率和分辨率。但是擁有視覺并不意味著能理解事物,就像我們小的時候,也是每見到一個陌生的東西,就吵著媽媽問“這是什么,這是什么”,日積月累慢慢認識了世間萬物。怎樣教會計算機理解東西?這與計算機視覺以及機器學習這兩個計算機科學前沿領域是有關系的。在教會計算機識別圖像的時候計算機科學家也陷入過誤區(qū),同自然語言處理一樣,因為囿于規(guī)則和語法,在較長時間內沒有取得進展,科學家試圖教給計算機這樣的規(guī)則(有兩個三角形的耳朵,圓圓的頭,還有胖乎乎的棕色的身子)就是貓,這同樣不是一個聰明的方法,因為可能它見到狗,熊也會說是貓。有些科學家比如李飛飛教授就改變了思路,通過給計算機看一堆圖片并告訴它這就是貓,在參數(shù)足夠多樣本足夠大的情況下,計算機慢慢學會了識別貓。在這方面,可以看李飛飛教授在TED上的演講(網(wǎng)易公開課上有)。她比我講得要清楚的多。并且她的研究已經(jīng)取得了巨大的進展。在TED中她也提到了她開源了這些數(shù)據(jù),所以我們沒有必要重復造輪子。可以放心地把這項任務交給她,然后去關心下一部分。
現(xiàn)在在世界各地上的不同實驗室,有各種各樣的頂尖科學家在教會計算機不同的事,比如前不久轟動棋壇的阿法狗,所以如果Deepmind肯開源自己的代碼,我們就會擁有一個圍棋世界冠軍級女朋友。當然,我們的祖國也為此做出了許多貢獻,比如說我們教會了機器人怎么做刀削面。比起下圍棋,這可能是個實用得多的技能。
機器學習這門科學將幫助我們很多。教機器如何學習,那么在造女朋友的這個過程中很多難題就可以靠這個技術去解決(當然具體的操作以及實現(xiàn)仍然困難重重)。不會的想會的就去學習。學習學習學習我們生命中最重要的兩個字,現(xiàn)在機器也會學習了,那么我想:在開源的世界下,大家齊心協(xié)力地去完善這么個項目。在不久的將來,我們就能創(chuàng)造一個人人都有女朋友的和諧幸福的世界了。
有些人可能會認為,人造的女朋友再怎么黑科技高智能也沒法真正趕上自然人。確實。人類絕不僅僅是是一臺給他一個輸入返回一個輸出的機器,絕不僅僅是為了具有幾個特定的功能,為了做事而生。人類有情緒,情感,有創(chuàng)造力。至少目前為止,我們沒有思路去讓計算機也具有這些東西。然而根據(jù)李飛飛教授所言,人類的眼睛和大腦經(jīng)過5億多年的時間才慢慢有了理解所見的能力。所以我相信我們需要的只是時間。
最后,我想,在人類真正具有造女朋友能力的時候。必然會出現(xiàn)一些“難以接受”的倫理問題之類的。人們常常高舉緬懷過去,崇尚自然的旗幟,來給反抗科技的發(fā)展,做些無謂的掙扎。就像通信網(wǎng)絡四通八達的今天,文學家會說“從前的日色變得慢,車,馬,郵件都慢,一生只夠愛一個人”。搞得好像,是因為有了發(fā)達的互聯(lián)網(wǎng)才讓年輕人失去純情,而不是它們心里早就埋下了想不勞而獲的種子,才有了互聯(lián)網(wǎng)。