高大上的 AI,如何在創(chuàng)業(yè)公司落地?
原創(chuàng)【51CTO.com原創(chuàng)稿件】
人工智能是由約翰·麥卡錫在 1956 年的達(dá)特矛斯會(huì)議上提出的:人工智能就是要讓機(jī)器的行為看起來就像是人所表現(xiàn)出的智能行為一樣。本文將為大家講解人工智能的發(fā)展階段和創(chuàng)業(yè)公司如何打造 AI 技術(shù)團(tuán)隊(duì)。
人工智能過渡到高層智能的3階段
目前,人工智能正從比較初級(jí)的計(jì)算智能向更高層次的智能過渡。更高層次的智能包括 3 個(gè)階段,第一個(gè)階段是感知(perception)智能,機(jī)器要聽得見、看得見。聽得見是我們常說的語音識(shí)別,機(jī)器把人說的一句話,由聲音信號(hào)轉(zhuǎn)化成文字信息。 然后,就是視覺,計(jì)算機(jī)視覺(computer vision),它能夠看到東西,能夠分辨一些人臉,或者是物體,甚至一些情緒之類的變化。 通過感知階段后,人工智能進(jìn)入下一個(gè)認(rèn)知(cognition)階段。機(jī)器開始能夠理解一些內(nèi)容。比如說語音識(shí)別,機(jī)器只是識(shí)別出了這個(gè)文字,但它不能真正知道人要表達(dá)什么信息。這里涉及對(duì)自然語言理解。對(duì)于機(jī)器來說,這是非常困難的一件事情。 認(rèn)知階段的另一個(gè)方向是分析判斷,機(jī)器根據(jù)當(dāng)前的情況去做一些主動(dòng)的判斷。比如棋局對(duì)弈,計(jì)算機(jī)本身不知道自己是在下棋,但是操作員定義好規(guī)則之后,通過幾個(gè)超級(jí)大的深度神經(jīng)網(wǎng)絡(luò),它能夠做出最優(yōu)的判斷。 只有當(dāng)人工智能在認(rèn)知上獲得了突破性的進(jìn)步之后,才可能談到下一個(gè)階段:創(chuàng)造(creation),這時(shí)計(jì)算機(jī)開始具有情感,能夠有自主意識(shí),能夠自己創(chuàng)造新的東西。這個(gè)階段離我們還非常遙遠(yuǎn),大家也不用太擔(dān)心計(jì)算機(jī)會(huì)毀滅人類的說法。 人工智能的大事件和穩(wěn)步發(fā)展 在 1997 年,IBM 深藍(lán)戰(zhàn)勝了國(guó)際象棋的人類世界冠軍,這是AI發(fā)展史上比較有標(biāo)志性的一件事情。但是國(guó)際象棋相對(duì)圍棋來說,還是簡(jiǎn)單很多,很久以來大家都不相信計(jì)算機(jī)能夠解決圍棋這個(gè)問題。 到 2011 年的時(shí)候,也是 IBM 在 Watson 在 jeopardy 的比賽中,計(jì)算機(jī)戰(zhàn)勝了人類。它在語言的一些理解和大規(guī)模查詢方面,體現(xiàn)出來計(jì)算機(jī)的優(yōu)勢(shì)。 2016 年,AlphaGo 擊敗圍棋世界冠軍之后,大家發(fā)現(xiàn)深度學(xué)習(xí)還有人工智能確實(shí)能解決很多、特別是確定性的問題。 最近幾年,人工智能有了長(zhǎng)足的進(jìn)步,主要是受 Geoffrey Hinton 的影響。他是最早提出神經(jīng)網(wǎng)絡(luò)的三個(gè)人之一,他一直堅(jiān)持不懈地做深度神經(jīng)網(wǎng)絡(luò)方面的工作。 一直到五年前,他發(fā)現(xiàn)計(jì)算能力足夠強(qiáng)了,因?yàn)橛辛?GPU,并且 GPU 在不同的機(jī)器上可以構(gòu)成一個(gè)集群,計(jì)算能力比十幾年前翻了百倍以上。以前解決不了的問題,現(xiàn)在都可以解決了,以前訓(xùn)練不了的模型現(xiàn)在都能訓(xùn)練了。 第二個(gè)方面就是有了海量的數(shù)據(jù),更多體現(xiàn)在像 Google、Facebook 這樣的大公司,他們有大量的用戶數(shù)據(jù)?,F(xiàn)在,使用大量的數(shù)據(jù),即使采用一些非常簡(jiǎn)單的模型,也可以獲得非常好的效果。也就是說數(shù)據(jù)往往比算法更有效。 在深度學(xué)習(xí)提出之后,首先是在語音識(shí)別領(lǐng)域獲得了突破,準(zhǔn)確率相對(duì)提高了百分之三四十,圖像識(shí)別和機(jī)器翻譯方面也獲得了很大的提高。 關(guān)于深度學(xué)習(xí),我們認(rèn)為它很好的一個(gè)方面就是簡(jiǎn)單實(shí)用。像我們做語音識(shí)別,最開始用到高斯混合模型及區(qū)分性訓(xùn)練算法,非常復(fù)雜。但是有了深度學(xué)習(xí)之后,相對(duì)來說更簡(jiǎn)單了,你只需要把數(shù)據(jù)準(zhǔn)備好,有一個(gè)足夠大的模型,把數(shù)據(jù)放進(jìn)去,就可以訓(xùn)練一個(gè)很好的系統(tǒng)直接使用了。這可能也是深度學(xué)習(xí)的一個(gè)優(yōu)勢(shì)吧! 另外一個(gè)方面,因?yàn)?strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;">深度學(xué)習(xí)可以在 GPU 集群上計(jì)算,所以你也不需要買大量的機(jī)器,就能夠完成大規(guī)模的訓(xùn)練。這也是為什么很多創(chuàng)業(yè)公司,也能夠訓(xùn)練出比較大的模型及高性能的系統(tǒng)。 創(chuàng)業(yè)公司如何搭建AI系統(tǒng) 上面討論了什么是 AI,接下來我們談?wù)勛鳛橐粋€(gè)創(chuàng)業(yè)公司,在資源非常有限的情況下,怎么去搭建一個(gè)高效的 AI 系統(tǒng)。AI 系統(tǒng)主要可以分為數(shù)據(jù)、算法和工程這 3 個(gè)部分。如果用人來打比方,數(shù)據(jù)相當(dāng)于是他的血液,算法是他的大腦,工程是他的骨骼。 沒有數(shù)據(jù)的話,算法只能是停留在課本里面。只有數(shù)據(jù)和算法這兩者結(jié)合起來,才能真正成為一個(gè)產(chǎn)品的雛形。如果缺少?gòu)?qiáng)有力的工程,那產(chǎn)品永遠(yuǎn)走不出實(shí)驗(yàn)室,只能處于演示的階段。所以這三者要非常緊密地結(jié)合在一起,才能夠做一個(gè)真正有用的人工智能的系統(tǒng)和產(chǎn)品。 當(dāng)你的產(chǎn)品做得還不錯(cuò)的時(shí)候,系統(tǒng)將會(huì)獲得更多用戶的數(shù)據(jù),把這個(gè)數(shù)據(jù)再用過來反哺系統(tǒng),這樣可以形成一個(gè)正循環(huán),不斷地提高這個(gè)系統(tǒng)的性能。人工智能產(chǎn)品跟別的產(chǎn)品可能不太一樣;別的產(chǎn)品一般做出來之后,功能做成了基本上就完成了,但是人工智能系統(tǒng)是一個(gè)不斷迭代,不斷優(yōu)化的一個(gè)系統(tǒng)。 關(guān)于數(shù)據(jù),怎么去獲得數(shù)據(jù)? 作為一個(gè)小的創(chuàng)業(yè)公司,特別是剛開始的時(shí)候,沒有數(shù)據(jù),公司怎么去獲得第一批數(shù)據(jù)?其實(shí)有各種各樣的辦法,比如我們做語音識(shí)別的時(shí)候,請(qǐng)了一個(gè)阿姨幫我們做飯。做完飯之后,我們給她一本菜譜,讓她給我們念上一個(gè)小時(shí),然后把這個(gè)聲音錄下來,錄了 1 個(gè)月,一天 1 個(gè)小時(shí),一個(gè)月之后就有 30 個(gè)小時(shí)的數(shù)據(jù)了。 這些數(shù)據(jù)基本可以做一個(gè)小系統(tǒng)了。我們就做了一個(gè)端到端的演示系統(tǒng),搭了一個(gè)服務(wù)器,然后用戶可以在 APP 中,詢問宮保雞丁等等菜,系統(tǒng)就可以識(shí)別出來。在這個(gè)基礎(chǔ)上,我們已經(jīng)可以開始做一些工程優(yōu)化、系統(tǒng)方面的工作。 這個(gè)事情做完之后,我們知道這條路是可行的。有了這個(gè)基本系統(tǒng),接下來就可以用更多方法,自動(dòng)化的數(shù)據(jù)采集方式來建立一個(gè)平臺(tái)。當(dāng)時(shí) Google 的 API 開放的時(shí)候,用戶可以把一批語音數(shù)據(jù)塞進(jìn)去,然后系統(tǒng)給用戶返回結(jié)果,這個(gè)結(jié)果不一定 100% 準(zhǔn)確,但是已經(jīng)有一些基本的數(shù)據(jù)可以去跑實(shí)驗(yàn)了。 什么樣的數(shù)據(jù)有價(jià)值? 顯然,真實(shí)用戶的數(shù)據(jù)是價(jià)值最高的。不過,還要看公司對(duì)這個(gè)產(chǎn)品的定義。作為初創(chuàng)公司,不能做一個(gè)大而全的系統(tǒng),而要更多專注在垂直領(lǐng)域上,做出自己的特色。比如出門問問,關(guān)注跟出行相關(guān)的一些垂直領(lǐng)域,涉及查詢地點(diǎn)、酒店、餐館、火車票、飛機(jī)票相關(guān)的信息,團(tuán)隊(duì)采集了大量這些領(lǐng)域的數(shù)據(jù)。這方面 1 個(gè)小時(shí)的數(shù)據(jù),相當(dāng)于采集 10 個(gè)小時(shí)甚至更多的通用數(shù)據(jù)。 系統(tǒng)需要采集多少數(shù)據(jù)? 搭建一個(gè)人工智能系統(tǒng)的時(shí)候,到底要采集多少數(shù)據(jù)?顯然數(shù)據(jù)量是越大越好,但是因?yàn)槌杀居邢?,采集基本夠用的?shù)據(jù)就行了。這里要做一個(gè)判斷,你可以畫一個(gè)曲線,比如在語音識(shí)別方面,再添加 1000 小時(shí),系統(tǒng)性能還能提高多少?一般系統(tǒng)達(dá)到一定數(shù)據(jù)量后,從數(shù)據(jù)上獲得的性能提升是越來越小的。到達(dá)一個(gè)拐點(diǎn)的時(shí)候,同樣的資源放在其他的方面,比如算法、工程方面,可能會(huì)帶來更大的效果。 有效利用開源算法讓你事半功倍 在學(xué)術(shù)界,算法的研究最開始是由美國(guó)國(guó)防部領(lǐng)導(dǎo)的一些項(xiàng)目,帶來的一些學(xué)術(shù)上的突破。但是近五年到十年,基本上都是一些大公司和研究所,比如微軟研究院,Google 這樣的公司,因?yàn)樗写罅康臄?shù)據(jù),大量的計(jì)算資源,它能夠在算法和技術(shù)方面帶來很大的提升。 作為一個(gè)創(chuàng)業(yè)公司,不希望再去重新制造輪子,所以盡量用一些開源的東西,比如語音識(shí)別用了Kaldi,還有 OpenFst、OpenGrm 這樣的一些開源軟件。語音合成、語義理解、深度學(xué)習(xí)這些方面基本上都是用開源的東西。因?yàn)橹饕€是用一些 Google 開源的軟件,整個(gè)公司的工程基礎(chǔ)、代碼庫(kù)還有代碼規(guī)范,都是跟隨 Google 的風(fēng)格。 技術(shù)團(tuán)隊(duì)的打造經(jīng)驗(yàn) 我們對(duì)代碼質(zhì)量的要求非常高,比如強(qiáng)調(diào) C++ 的編碼風(fēng)格。Google 有可讀性這樣一個(gè)指標(biāo),就是說一個(gè)新人進(jìn)入公司,無論之前有多么資深,假如沒有通過代碼可讀性測(cè)試的話,新人是不能夠直接把代碼提交到代碼庫(kù)里去,他必須要獲得 Readability 這樣一個(gè)證明。 所謂 Readability,就是要求程序員寫了一定量的代碼,然后代碼要提交到內(nèi)部的代碼委員會(huì),他們看到他的代碼之后,會(huì)提出大量的修改意見??赡茉摮绦騿T寫了 100 行代碼,他們給他提出了 500 行的建議,這是很正常的。然后通過這樣來來回回的幾個(gè)迭代、循環(huán),最后才能說這個(gè)程序員的代碼能力獲得了 Readability 證書。 還有,單元測(cè)試是非常必要的,特別是在一些關(guān)鍵的算法工程方面。短期內(nèi)單元測(cè)試可能是耗費(fèi)了很多時(shí)間,但是長(zhǎng)期來說,它是非常重要的。因?yàn)閷懘笠?guī)模的軟件系統(tǒng),相當(dāng)于搭積木,假如有一塊不是很穩(wěn)定的話,那可能搭起來的房子很快就會(huì)塌掉。特別是在特定情況下,比如人員發(fā)生流動(dòng)的時(shí)候,如果沒有單元測(cè)試的話,新來的人再去改這個(gè)代碼,就不能夠保證這個(gè)代碼能完成它以前的功能。 Code Review 也是非常重要的,包括我本人在內(nèi),也是花大量的時(shí)間做 Code Review 。特別是對(duì)剛來的一些同學(xué),我們能夠很快通過 Code Review 功能,讓他熟悉我們的代碼風(fēng)格,然后讓他能夠?qū)懗龈哔|(zhì)量的代碼。剛開始的時(shí)候,比如頭一兩個(gè)月的時(shí)候,可能花的時(shí)間比較多,但是他一旦進(jìn)入軌道之后,工作的效率會(huì)提高很多。但是,前端團(tuán)隊(duì)可能不太適合做這個(gè)事情。 還有代碼的提交,必須要有資深工程師的 LGTM,就是 Look Good To Me,這樣才能提交。一般情況下,如果沒有 LGTM 提交的代碼,是不符合流程的,通常我們會(huì)找他談話。 最后,需要一個(gè)比較高效的開發(fā)環(huán)境,就是要有一個(gè)強(qiáng)大穩(wěn)定的 base 庫(kù)。我們從比較大的開源項(xiàng)目中,抽出一些有用的東西放到我們 base 庫(kù)里面,然后在這個(gè)基礎(chǔ)上再添加我們自己的一些基礎(chǔ)庫(kù)。 強(qiáng)大穩(wěn)定的 base 庫(kù)是非常重要的。像 Google 的 base 庫(kù)里,大家可以看到其中很多都是最一流的工程師寫出來的,包括 Jeff Dean,這樣才能保證基礎(chǔ)庫(kù)的穩(wěn)定和高效。 人才招聘看重解決問題的能力 怎么招人?招什么樣的人?大公司和小公司實(shí)際上是很不一樣的,大公司希望招一個(gè)非常專業(yè)的人才,我們叫 specialist,就是說在某一個(gè)領(lǐng)域他能做得非常深,因?yàn)榇蠊静恍枰阋粋€(gè)人懂10個(gè)不同方面,只需把某一個(gè)方面做細(xì)、做透就行了。 而創(chuàng)業(yè)公司正好是相反的,因?yàn)樗偣簿湍敲磶讉€(gè)人,那這個(gè)人必須把這 10 件事情要全部給做掉。我們通常希望招人能夠招一個(gè)通才(generalist),就是說不需要太專,但是他的學(xué)習(xí)能力要很強(qiáng),并且也愿意去接觸更多的項(xiàng)目,這樣的話,才比較適合初創(chuàng)公司這樣快速的發(fā)展。 執(zhí)行力也很重要,一定要能夠按時(shí)把任務(wù)完成,當(dāng)然問題挑戰(zhàn)很多,我們希望員工最終能夠主動(dòng)想辦法完成任務(wù),而不要找各種各樣完不成的理由。 最后一個(gè)方面就是要有好的溝通能力,跟團(tuán)隊(duì)的成員要能夠溝通,才能夠很好的合作。 小公司 CTO 要做“全能型”人才 CTO 的主要職能是什么?首先是要給公司創(chuàng)造價(jià)值,這肯定是最重要的。公司最重要的是什么?首先是產(chǎn)品,產(chǎn)品要質(zhì)量好,能夠商業(yè)化,能夠賺錢,這是最重要的。CTO 更多負(fù)責(zé)技術(shù)方面,怎么把技術(shù)和產(chǎn)品更有機(jī)的結(jié)合在一起為公司創(chuàng)造更大的價(jià)值? CTO 不僅要想現(xiàn)在的技術(shù)怎么更好地跟產(chǎn)品結(jié)合在一起,也要想一些中長(zhǎng)期的計(jì)劃,就是以現(xiàn)有的團(tuán)隊(duì)和資源,要做什么樣的投入才能夠讓產(chǎn)品在今后一年、兩年時(shí)間內(nèi)能夠保持優(yōu)勢(shì),保持創(chuàng)新,能夠提高產(chǎn)品的競(jìng)爭(zhēng)力。這一點(diǎn)非常重要,它考驗(yàn) CTO 對(duì)于策略和戰(zhàn)略的把控。 第二個(gè)任務(wù)是要搭建團(tuán)隊(duì),要確定今后幾年,公司要向哪個(gè)方向或技術(shù)發(fā)展。接下來,就要實(shí)現(xiàn)資源到位。然后,CTO 要花很多的時(shí)間去招人。CTO 不可能什么事情都能做,他一定要招到很多在某一些方面比他強(qiáng)的人,有了這些人后,工程技術(shù)團(tuán)隊(duì)才能夠真正的有戰(zhàn)斗力,能夠做出一個(gè)人不可能做到的事情。 小公司在很多情況下,CTO 還扮演著救火隊(duì)員這樣的一個(gè)職能,就是有一些難題出現(xiàn)了,他要帶領(lǐng)大家沖上去把這些困難的問題解決。 作者:雷欣 雷欣 出門問問CTO,人工智能專家
編輯:吳叢叢、孫淑娟
本文選自《CTO說》
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】