隨著企業(yè)開始指望人工智能來推動(dòng)其數(shù)字化轉(zhuǎn)型,軟件開發(fā)也將發(fā)生巨大變化。
公司已經(jīng)準(zhǔn)備好讓開發(fā)人員跟上機(jī)器學(xué)習(xí)算法和神經(jīng)網(wǎng)絡(luò)的速度,并期待著看到人工智能將如何使許多開發(fā)和測(cè)試功能自動(dòng)化。
但許多企業(yè)沒有注意到的是軟件本身的性質(zhì)也在發(fā)生著變化。
今天,應(yīng)用程序是確定的。它們是圍繞循環(huán)和決策樹構(gòu)建的。如果應(yīng)用程序不能正常工作,開發(fā)人員就會(huì)分析代碼并使用調(diào)試工具來跟蹤邏輯流程,然后重寫代碼以修復(fù)這些錯(cuò)誤。
而當(dāng)系統(tǒng)是由人工智能和機(jī)器學(xué)習(xí)驅(qū)動(dòng)時(shí),應(yīng)用程序就不是這樣開發(fā)的。雖然,有些公司有時(shí)會(huì)為算法本身編寫新的代碼,但是大部分工作是在其他地方完成的,因?yàn)樗麄儠?huì)從開源庫中選擇標(biāo)準(zhǔn)算法,或者從他們的人工智能平臺(tái)中選擇可用的選項(xiàng)。
然后,通過選擇正確的訓(xùn)練集并告訴算法哪些數(shù)據(jù)點(diǎn)(或特征)是最重要的以及它們應(yīng)該被加權(quán)多少,這些算法最終被轉(zhuǎn)換成了工作系統(tǒng)。
這種將數(shù)據(jù)作為開發(fā)軟件系統(tǒng)核心的轉(zhuǎn)變,使得領(lǐng)先的公司不僅需要重新思考他們將如何開發(fā)軟件,還要重新思考他們成功駕馭這種范式轉(zhuǎn)變時(shí)所需的工具和流程。
對(duì)“軟件2.0”的介紹
在去年的Spark+AI峰會(huì)上,特斯拉人工智能總監(jiān)Andrej Karpathy談到,這家自動(dòng)駕駛汽車公司正在向這種新的代碼開發(fā)方式過渡,他稱之為軟件2.0。
人工智能驅(qū)動(dòng)的優(yōu)化算法,如神經(jīng)網(wǎng)絡(luò),可以針對(duì)一個(gè)問題,嘗試各種解決方案的評(píng)估標(biāo)準(zhǔn),直到找到他們所認(rèn)為的最佳的解決方案。因此,例如,該系統(tǒng)可以通過數(shù)百萬張標(biāo)簽圖像來學(xué)習(xí)區(qū)分汽車和行人。
“我們?cè)O(shè)計(jì)得更少了,事情也做得更好了,”他說。
但是當(dāng)這種方法不起作用時(shí)會(huì)發(fā)生什么呢?例如,當(dāng)特斯拉的自動(dòng)駕駛汽車在通過隧道時(shí)無法確定是否需要打開擋風(fēng)玻璃雨刷時(shí),解決辦法不是深入研究機(jī)器學(xué)習(xí)算法,找出它們的不足之處。
相反,該公司會(huì)發(fā)現(xiàn)其訓(xùn)練數(shù)據(jù)中沒有足夠的汽車通過隧道行駛的例子。解決辦法是從隧道里拍攝的汽車中提取更多的圖像,并發(fā)送給人類進(jìn)行分類。
“作為一名博士生,我花了很多時(shí)間來研究模型和算法,以及該如何訓(xùn)練這些網(wǎng)絡(luò),”Karpathy說。“但是在特斯拉,我大部分時(shí)間都在整理數(shù)據(jù)集。”
但管理訓(xùn)練數(shù)據(jù)并非只是讓人類看到一組圖像并給它們貼上標(biāo)簽?zāi)敲春唵巍J紫?,開發(fā)人員需要對(duì)數(shù)據(jù)本身有深刻的理解。例如,一個(gè)觀察汽車變道靜態(tài)圖像的系統(tǒng)很難判斷出汽車的轉(zhuǎn)向信號(hào)燈是否正在閃爍。解決這個(gè)問題需要回到訓(xùn)練圖像上,并對(duì)它們進(jìn)行不同的標(biāo)注。
但是現(xiàn)在改變圖像的標(biāo)記方式可能意味著許多以前分類的圖像現(xiàn)在也必須重新標(biāo)記。
此外,人類在給圖像貼標(biāo)簽時(shí)也可能會(huì)出錯(cuò),或者彼此有不同看法,或者圖像本身也可能會(huì)有問題。這意味著必須有一個(gè)逐步升級(jí)和跟蹤問題的過程。
特斯拉開始這項(xiàng)工作時(shí),管理這種新的軟件開發(fā)方法的流程和工具并不存在。
“在軟件1.0中,我們有IDE來幫助我們編寫代碼,”karpathy說。“但是現(xiàn)在我們沒有顯式地編寫代碼,而是在不斷地積累和修改數(shù)據(jù)集,它們實(shí)際上就是代碼。數(shù)據(jù)集的IDE是什么?”
從代碼到數(shù)據(jù)
Alex Spinelli在去年成為LivePerson的首席技術(shù)官之前,曾領(lǐng)導(dǎo)過亞馬遜的 Alexa,他親眼目睹了開發(fā)過程的這種轉(zhuǎn)變。
“以前,會(huì)有決策樹、路徑、案例陳述,”他說,而現(xiàn)在開發(fā)人員必須知道要有足夠的數(shù)據(jù),有正確的例子,以確保算法有繼續(xù)工作所需的燃料。“我們實(shí)際上正在為我們所支持的行業(yè)創(chuàng)造新的算法。”
20多年來,LivePerson一直在幫助Home Depot、Adobe、匯豐銀行和歐萊雅等公司與其客戶溝通。2016年,它開始向人工智能聊天機(jī)器人轉(zhuǎn)變。
為了開發(fā)聊天機(jī)器人,該公司首先從帶有人類標(biāo)簽的例子開始,比如說,客戶問題。“我有10萬種不同的人們想要表達(dá)‘我想付賬’的方式,”他說。“這就是開始。”
一旦有了足夠的數(shù)據(jù),下一個(gè)挑戰(zhàn)就是找出哪些屬性是重要的,他說。例如,自動(dòng)化系統(tǒng)可以提取相關(guān)性,但可能無法確定因果關(guān)系。雖然時(shí)鐘經(jīng)常會(huì)在日出時(shí)響起,但這并不意味著鬧鐘會(huì)導(dǎo)致太陽升起。
“決策是在如何衡量數(shù)據(jù)的某些屬性或特征方面做出的,”他說。“你需要能夠花大量時(shí)間來思考這些問題的專家。”
如今,根據(jù)客戶的不同,LivePerson已經(jīng)可以理解65%到90%的客戶問題了,公司正在不斷嘗試通過使用人工智能技術(shù)(如無監(jiān)督學(xué)習(xí)和轉(zhuǎn)移學(xué)習(xí))以及人工輸入來提高這一比例。
偏見是新的錯(cuò)誤
當(dāng)人工智能系統(tǒng)不起作用時(shí),有三種主要的方法來解決這個(gè)問題。
首先,問題可能出在算法本身。但這并不意味著開發(fā)人員需要深入代碼。通常,問題在于為這項(xiàng)工作選擇了錯(cuò)誤的算法。
“必須有人做出決定,認(rèn)為這個(gè)算法比那個(gè)更好,”Spinelli說。“這仍然是人類所面臨的挑戰(zhàn)。”
接下來是算法的調(diào)整。算法關(guān)注的是哪些特性,以及每個(gè)特性的權(quán)重是多少?在算法有自己特點(diǎn)的情況下,這可能會(huì)非常復(fù)雜。
預(yù)測(cè)某人是否有良好信用風(fēng)險(xiǎn)的系統(tǒng)可以查看固定數(shù)量的數(shù)據(jù)點(diǎn),并且可以提取和分析其推理過程。但是,比如說,一個(gè)在圖像中識(shí)別貓的系統(tǒng)可能會(huì)產(chǎn)生一個(gè)人類完全無法理解的過程。這可能會(huì)給金融服務(wù)公司帶來合規(guī)性問題,或者可能會(huì)在醫(yī)療保健應(yīng)用和自動(dòng)駕駛汽車方面危及人們的生命。
然后是數(shù)據(jù)本身所引起的問題。“你從哪里收集你的數(shù)據(jù),它來自什么群體--這些都是會(huì)產(chǎn)生偏見的地方,”Spinelli說。“這可能是對(duì)種族或性別的偏見,也可能只是一種有負(fù)面商業(yè)結(jié)果的偏見。”
要弄清楚問題是出在算法上、參數(shù)上還是在數(shù)據(jù)中可能非常具有挑戰(zhàn)性,他說。“我認(rèn)為我們還沒有真正解決這個(gè)問題。”
Spinelli補(bǔ)充道,當(dāng)今的世界正處于一個(gè)獨(dú)特的境地當(dāng)中,技術(shù)正在從研究實(shí)驗(yàn)室中走出來,并直接投入了生產(chǎn)。
“你可以看到很多來自科學(xué)家的東西,他們沒有運(yùn)行關(guān)鍵任務(wù)系統(tǒng)的豐富經(jīng)驗(yàn),”他說,并補(bǔ)充道,缺乏標(biāo)準(zhǔn)和最佳實(shí)踐。“它們正在進(jìn)化,但這是一個(gè)大問題?,F(xiàn)在還不夠成熟。”
例如,大多數(shù)現(xiàn)成的算法都沒有能力解釋為什么會(huì)做出特定的決定。
LivePerson使用了百度的Ernie和谷歌的Bert開源自然語言處理算法。“他們有不錯(cuò)的審計(jì)和可追溯性能力,”Spinelli說。“但是,總的來說,它是透明的。”
他說,當(dāng)LivePerson需要構(gòu)建自己的系統(tǒng)時(shí),這種功能就是必須的。“我們構(gòu)建算法的方式是有可追溯性的,所以你可以問算法,‘你為什么要做出這個(gè)回答?’它會(huì)告訴你,‘這是我所看到的,這是我如何閱讀它和如何評(píng)分的。’”
AI的版本控制是關(guān)于數(shù)據(jù)的
在人工智能系統(tǒng)中發(fā)現(xiàn)和修復(fù)問題已經(jīng)足夠困難了。但是修復(fù)、持續(xù)改進(jìn)和對(duì)模型漂移的修正--所有這些也都是對(duì)系統(tǒng)的頻繁更改。
傳統(tǒng)的軟件開發(fā)過程有版本控制來跟蹤哪些代碼行被更改了以及誰進(jìn)行了更改。但是,如果更改不在代碼中,而是在數(shù)據(jù)或參數(shù)中時(shí),又會(huì)發(fā)生什么?又或者當(dāng)系統(tǒng)內(nèi)置了持續(xù)學(xué)習(xí)的反饋回路?
技術(shù)咨詢和系統(tǒng)集成公司Insight的數(shù)據(jù)和人工智能首席架構(gòu)師Ken Seier表示:“你不能因?yàn)闆]有可重現(xiàn)的結(jié)果而讓訓(xùn)練數(shù)據(jù)發(fā)生變化。
傳統(tǒng)的DevOps工具對(duì)此無能為力,他說。“你需要在數(shù)據(jù)管道中添加額外的步驟。”
他說,構(gòu)建人工智能模型新實(shí)例的開發(fā)團(tuán)隊(duì)需要能夠?qū)λ褂玫臄?shù)據(jù)進(jìn)行快照,并將其存儲(chǔ)在存儲(chǔ)庫中。“然后進(jìn)入一個(gè)測(cè)試環(huán)境,在這個(gè)環(huán)境中,他們將針對(duì)已知的場景運(yùn)行它,包括審計(jì)場景和合規(guī)性場景,以及測(cè)試數(shù)據(jù)集,以確保它們具有一定的準(zhǔn)確性。”
他說,大多數(shù)公司都在自己構(gòu)建這些工具,主要的云人工智能平臺(tái)供應(yīng)商正在將許多這種功能放在適當(dāng)?shù)奈恢茫匀蝗鄙訇P(guān)鍵部分。
同樣,你必須開發(fā)一個(gè)自動(dòng)化的過程來改變模型的調(diào)整方式,并測(cè)試各種算法,以了解哪種算法在特定情況下會(huì)表現(xiàn)更好。
他說,理想情況下,如果一個(gè)算法偏離了軌道,自動(dòng)化過程就可以重新訓(xùn)練模型,這樣一切都可以恢復(fù)正常了。“如果你不能讓模型再次可用,你就需要提前有一系列的回滾選項(xiàng)。”
對(duì)于傳統(tǒng)的軟件開發(fā),這可以簡單地恢復(fù)到軟件的先前工作版本。但是隨著人工智能會(huì)因環(huán)境變化而偏離軌道,這可能是無法做到的。
“當(dāng)軟件不起作用而他們又不能重新訓(xùn)練它時(shí),會(huì)發(fā)生什么?”他問道。“你讓他退出來,依靠人工操作嗎?你有一個(gè)允許人類做出這些決定的業(yè)務(wù)流程嗎?對(duì)于自動(dòng)駕駛汽車,這是否意味著他們會(huì)關(guān)掉汽車?”
處理數(shù)據(jù)漂移
訓(xùn)練數(shù)據(jù)通常是時(shí)間的快照。當(dāng)條件改變時(shí),模型就變得不那么有效了。為了應(yīng)對(duì)這種趨勢(shì),公司需要不斷地根據(jù)真實(shí)數(shù)據(jù)測(cè)試他們的模型,以確保系統(tǒng)仍然有效。
“如果他們用30天的時(shí)間來訓(xùn)練模型,那么每兩周他們就應(yīng)該設(shè)置一個(gè)新的30天的時(shí)間來識(shí)別是否出現(xiàn)了問題,”Seier說。
當(dāng)人工智能系統(tǒng)改變它正在觀察的行為時(shí),這可能會(huì)變得非常復(fù)雜。
例如,使用人工智能系統(tǒng)來查看歷史數(shù)據(jù),看看工廠設(shè)備何時(shí)最有可能損壞。如果工廠隨后使用了這些預(yù)測(cè)來改變修理計(jì)劃,那么這些預(yù)測(cè)將不再有效---但是在新數(shù)據(jù)上重新訓(xùn)練模型又將導(dǎo)致一系列的問題,因?yàn)闄C(jī)器將在沒有人工智能干預(yù)的情況下再次開始損壞。
“無人駕駛汽車面臨的挑戰(zhàn)之一是如何應(yīng)對(duì)其他無人駕駛汽車,”Seier說。“他們是在有人駕駛汽車的環(huán)境中接受訓(xùn)練的,自動(dòng)駕駛汽車的行為也有所不同。”
可解釋的人工智能公司Fiddler Labs的聯(lián)合創(chuàng)始人兼首席執(zhí)行官Krishna Gade表示,他希望看到人工智能和機(jī)器學(xué)習(xí)系統(tǒng)的集成開發(fā)環(huán)境能夠以數(shù)據(jù)為中心。
“我們需要一個(gè)IDE,它可以方便地導(dǎo)入和探索數(shù)據(jù),以及清潔和整理表格,”他說。“Jupyter筆記本有些用處,但它們也有自己的問題,包括缺乏版本控制和審查工具。”
他說,隨著越來越多的模型被投入生產(chǎn),能夠管理各種版本變得越來越重要了。“Git也可以用于模型管理。然而,它無法擴(kuò)展到大型數(shù)據(jù)集。”
數(shù)據(jù)安全的挑戰(zhàn)
隨著公司轉(zhuǎn)向以人工智能為動(dòng)力的軟件開發(fā)實(shí)踐,他們也面臨著一系列新的安全挑戰(zhàn),許多人對(duì)此毫無準(zhǔn)備。
例如,當(dāng)系統(tǒng)由數(shù)據(jù)科學(xué)家而不是傳統(tǒng)的軟件工程師創(chuàng)建時(shí),安全性可能是事后才想到的。第三方和開源人工智能算法也可能有自己的問題,包括漏洞和不安全的依賴關(guān)系。
“讓開發(fā)人員及時(shí)使用最新的、最近修補(bǔ)過的代碼是至關(guān)重要的,”為科技行業(yè)服務(wù)的全球公共政策公司Access Partnership的全球數(shù)據(jù)和信任主管Michael Clauser表示。
第三方供應(yīng)商的專有代碼通常是專有的,無法分析。
“可以肯定的是,大型數(shù)據(jù)密集型互聯(lián)網(wǎng)公司和其他藍(lán)籌股在自己開發(fā)和部署人工智能的過程中,都會(huì)為網(wǎng)絡(luò)安全這一小事絞盡腦汁,”Clauser說。“對(duì)于資源緊缺的早期初創(chuàng)企業(yè)來說,情況可能并非如此,他們更感興趣的是展示自己的人工智能能做什么,能解決什么問題,而不是擔(dān)心有一天黑客會(huì)讓自己的人工智能成為問題本身。”
人工智能算法還必須與傳統(tǒng)系統(tǒng)對(duì)接,包括數(shù)據(jù)庫和用戶界面。當(dāng)安全專家沒有預(yù)先參與安全過程時(shí),錯(cuò)誤是很常見的,甚至是很可能的。
此外,人工智能系統(tǒng)通常會(huì)建立在新的云人工智能平臺(tái)上。這里的安全風(fēng)險(xiǎn)尚不清楚。但是人工智能所面臨的最大安全挑戰(zhàn)是數(shù)據(jù)。人工智能系統(tǒng)需要訪問操作數(shù)據(jù),以及訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)。公司經(jīng)常會(huì)忘記鎖定最后兩組操作。此外,數(shù)據(jù)科學(xué)家也更喜歡在構(gòu)建他們的人工智能模型時(shí)使用清晰的測(cè)試數(shù)據(jù),而不是使用加密或標(biāo)記化的數(shù)據(jù)。一旦這些系統(tǒng)投入運(yùn)行,缺乏加密就成為了一個(gè)主要的漏洞。
一家目前正在處理其人工智能系統(tǒng)潛在安全風(fēng)險(xiǎn)的公司是在線文件共享供應(yīng)商Box。
“我們告訴客戶,給我們那些你最珍貴的內(nèi)容吧,那些能讓你謀生的內(nèi)容,”該公司的CISO Lakshmi Hanspal說。
Box現(xiàn)在正致力于使用人工智能來從內(nèi)容中提取元數(shù)據(jù),以改進(jìn)搜索、分類和其他功能。例如,Box可以自動(dòng)從合同中提取條款和價(jià)格,她說。
為了構(gòu)建新的人工智能系統(tǒng),Box正在小心翼翼地確保自己不要繞過其傳統(tǒng)的安全控制級(jí)別。
“無論是人工智能還是非人工智能,我們都有一個(gè)安全的開發(fā)流程,”她說。“它符合ISO安全標(biāo)準(zhǔn)。Box中有許多管道,但是它們都遵循一個(gè)類似的過程,通過內(nèi)置的設(shè)計(jì)來實(shí)現(xiàn)安全性。”
其中包括加密、日志記錄、監(jiān)控、認(rèn)證和訪問控制,她說。
然而,Deloitte & Touche的首席云策略官David Linthicum表示,大多數(shù)公司并沒有在人工智能的開發(fā)過程中加入安全性。
事實(shí)上,大約75%的組織只是在事后處理安全問題,他說。“在事情發(fā)生后才這樣做就如同當(dāng)卡車沿著街道行駛時(shí)試圖更換卡車輪胎一樣。”