Maria Korolov
隨著企業(yè)開始尋求利用人工智能來推動數(shù)字化轉(zhuǎn)型,軟件開發(fā)也將發(fā)生巨大變化。
企業(yè)已做好了開發(fā)人員必須加快機(jī)器學(xué)習(xí)算法和神經(jīng)網(wǎng)絡(luò)速度的準(zhǔn)備,他們期待看到人工智能推動許多開發(fā)和測試功能實現(xiàn)自動化。但是許多企業(yè)忽視了一件事情,那就是軟件性質(zhì)本身正在發(fā)生變化。
今天,應(yīng)用程序是確定性的。它們的構(gòu)建圍繞的是循環(huán)和決策樹。如果應(yīng)用程序無法正常工作,那么開發(fā)人員將分析代碼并使用調(diào)試工具來跟蹤邏輯流程,然后重寫代碼以修復(fù)這些錯誤。
當(dāng)系統(tǒng)由人工智能和機(jī)器學(xué)習(xí)提供支持時,應(yīng)用程序的開發(fā)方式就不再是上述方式了。誠然,部分企業(yè)有時確實會自己為算法編寫新代碼,但是大多數(shù)工作是以另外的方式完成的,如從開源庫中選擇標(biāo)準(zhǔn)算法或從其人工智能平臺中選擇可用的選項。然后再通過選擇正確的訓(xùn)練集,告訴算法哪些數(shù)據(jù)點或特征最重要以及應(yīng)加權(quán)多少,將這些算法融入到工作系統(tǒng)中。
作為軟件開發(fā)系統(tǒng)的核心,這種以數(shù)據(jù)為導(dǎo)向的轉(zhuǎn)變不僅正促使領(lǐng)先的企業(yè)重新思考他們的開發(fā)軟件方式,同時還促使他們重新思考成功應(yīng)對這種范式轉(zhuǎn)變所需的各種工具和流程。
引入“軟件2.0”概念
在去年的Spark+人工智能峰會上,特斯拉人工智能總監(jiān)Andrej Karpathy談到了自動駕駛汽車企業(yè)如何過渡到這種新的代碼開發(fā)方式,他將這種新的開發(fā)方式稱之為軟件2.0。
人工智能驅(qū)動的優(yōu)化算法(例如神經(jīng)網(wǎng)絡(luò))會針對一個問題嘗試與評估標(biāo)準(zhǔn)相關(guān)的各種解決方案,直到找到最佳解決方案。例如,該系統(tǒng)會瀏覽數(shù)百萬個被標(biāo)記過的圖像,以學(xué)習(xí)區(qū)分汽車和行人。他說:“我們的設(shè)計工作正在減少,但是事情卻做得越來越好。”
但是如果這種方法不起作用會發(fā)生什么事情呢?例如,當(dāng)特斯拉的自動駕駛汽車無法確定是否在穿越隧道時打開雨刮器時,解決方案并不是繼續(xù)深入研究機(jī)器學(xué)習(xí)算法以找出問題所在。
相反,該公司發(fā)現(xiàn)其訓(xùn)練數(shù)據(jù)中關(guān)于汽車在隧道中行駛方面沒有足夠的示例。解決方案只能是從隧道中拍攝的汽車圖像中提取更多圖像,然后將其發(fā)送給人類進(jìn)行分類。
Karpathy說:“在讀博時,我花了很多時間在模型、算法以及如何實際訓(xùn)練這些網(wǎng)絡(luò)上。但是在特斯拉,我的大部分時間都花在了處理數(shù)據(jù)集上?!?/p>
管理訓(xùn)練數(shù)據(jù)并不是像人們想像的那樣讓開發(fā)人員看著一組組圖像并標(biāo)記它們那樣簡單。首先,開發(fā)人員需要對數(shù)據(jù)本身有一個深刻的了解。例如,一個查看汽車變道的靜態(tài)圖像的系統(tǒng)將很難確定汽車的轉(zhuǎn)向信號燈是否閃爍。解決該問題的辦法是回到訓(xùn)練圖像并對其進(jìn)行不同的標(biāo)記。
但是現(xiàn)在更改圖像的標(biāo)記方式意味著必須重新標(biāo)記許多以前已經(jīng)被分類過的圖像。
此外,人們在標(biāo)記圖像時可能會犯錯誤,或者彼此標(biāo)準(zhǔn)不同,亦或是圖像本身可能就有問題。這意味著必須有一個流程來逐步升級并跟蹤問題。當(dāng)特斯拉開始著手這項工作時,用于管理這種創(chuàng)建軟件新方法的流程和工具并不存在。
Karpathy說:“在軟件1.0中,我們有IDE來幫助我們編寫代碼。但是現(xiàn)在,我們不是在進(jìn)行準(zhǔn)確意義上的代碼編寫工作,而是在累積和批量處理數(shù)據(jù)集,但它們實際上又是代碼。那么針對數(shù)據(jù)集的IDE是什么樣子呢?”
從代碼到數(shù)據(jù)
在去年跳槽成為LivePerson的首席技術(shù)官之前,曾負(fù)責(zé)亞馬遜Alexa項目的Alex Spinelli親眼目睹了這一開發(fā)過程的轉(zhuǎn)變。
他說:“以前有決策樹、路徑和案例陳述?,F(xiàn)在開發(fā)人員必須要知道需要有足夠的數(shù)據(jù)和正確的示例,以確保算法工具能夠保持工作。實際上,我們正在為我們支持的行業(yè)創(chuàng)建一些全新的算法?!?/p>
20多年來,LivePerson一直在幫助Home Depot、Adobe、HSBC和L'Oreal等公司與客戶進(jìn)行溝通。2016年,他開始使用由人工智能驅(qū)動的聊天機(jī)器人對原有范式進(jìn)行轉(zhuǎn)型。
為了開發(fā)聊天機(jī)器人,公司首先從由人工標(biāo)記的客戶問題示例著手。他說:“我有十多萬種表達(dá)‘我想買單的說話方式。那就從這里開始?!?/p>
一旦有了足夠的數(shù)據(jù),下一個挑戰(zhàn)就是弄清楚哪些屬性是重要的。例如,自動化系統(tǒng)可以提取相關(guān)性,但可能無法確定因果關(guān)系。鬧鐘經(jīng)常會在日出時響起,但是并不意味著鬧鐘響起會引起太陽升起。
他說:“如何加權(quán)數(shù)據(jù)的某些屬性或特征要由人來做出。你需要能夠花費大量時間思考這些問題的專家?!?/p>
今天,根據(jù)客戶的不同,LivePerson可以理解65~90%的客戶問題,同時公司正在不斷嘗試?yán)脽o監(jiān)督學(xué)習(xí)和遷移學(xué)習(xí)等人工智能技術(shù)以及人工輸入來提高這一比率。
偏見成為了新漏洞
當(dāng)人工智能驅(qū)動的系統(tǒng)無法正常工作時,可以采用三種主要方法來解決這一問題。
首先,問題可能出在算法本身上。但這并不意味著開發(fā)人員需要深入研究代碼。通常,問題的原因是選擇了錯誤的算法。
Spinelli說:“人們必須做出一個決定,即該算法要優(yōu)于其他算法。這仍然是人類面臨的一項挑戰(zhàn)?!?/p>
其次是算法的調(diào)整。算法著眼于哪些功能,每個功能是多少權(quán)重?如果算法本身擁有自己的功能,那么這一工作將異常復(fù)雜。
預(yù)測某人是否具有良好信用的系統(tǒng)可以查看固定數(shù)量的數(shù)據(jù)點,并且其推理過程可以被提取和被分析。但是一個可以識別圖像中貓的系統(tǒng)可能會提出一個人類完全無法理解的過程。這可能導(dǎo)致金融服務(wù)公司的合規(guī)性問題,或者可能使人們的生命安全受到醫(yī)療保健應(yīng)用和自動駕駛汽車的威脅。
數(shù)據(jù)本身也會導(dǎo)致一些問題。Spinelli說:“在哪里收集的數(shù)據(jù),數(shù)據(jù)來自什么群體,都可能造成偏見。其有可能是針對種族群體或性別的偏見,也有可能只是針對業(yè)務(wù)結(jié)果的偏見?!?/p>
他說,弄清楚問題出在算法上、調(diào)整上還是數(shù)據(jù)上,可能是非常具有挑戰(zhàn)性的。“我認(rèn)為我們并沒有真正地解決這一問題?!盨pinelli補充道,當(dāng)前的情況非常特殊,技術(shù)出現(xiàn)在研究實驗室里并被直接應(yīng)用到了生產(chǎn)當(dāng)中。
“我們看到科學(xué)家提出了很多東西,但是這些科學(xué)家沒有運行關(guān)鍵任務(wù)系統(tǒng)的豐富經(jīng)驗。目前業(yè)內(nèi)也幾乎沒有什么標(biāo)準(zhǔn)和最佳實踐。這是一個大問題。也就是說目前它們還不成熟?!崩?,大多數(shù)現(xiàn)成的算法都沒有能力解釋為什么會做出某個特定決策。
LivePerson使用了百度的Ernie和谷歌的Bert開源自然語言處理算法。Spinelli說:“它們具有不錯的審核和可追溯性。但是從總體上看,這還不夠?!?/p>
當(dāng)LivePerson自己構(gòu)建算法時,他們將這種功能列入了需求?!拔覀兪且砸环N可追溯性的方式構(gòu)建算法的,所以當(dāng)你問算法‘為什么給出這個答案?它們會告訴你‘這是我所看到的,這里是我的閱讀方式和評分方式?!?/p>
人工智能的版本控制與數(shù)據(jù)密切有關(guān)
在人工智能系統(tǒng)中查找和修復(fù)問題非常困難。修復(fù)、正在進(jìn)行中的改進(jìn)以及模型漂移的校正等所有這些工作導(dǎo)致對系統(tǒng)的修改更加頻繁。
傳統(tǒng)的軟件開發(fā)流程都有版本控制,以跟蹤哪些代碼行已更改以及誰進(jìn)行了更改。但是當(dāng)更改不是在代碼中而是在數(shù)據(jù)或調(diào)整中時,情況會是什么樣?當(dāng)系統(tǒng)內(nèi)置了針對持續(xù)學(xué)習(xí)的反饋回路時,情況又是什么樣呢?
技術(shù)咨詢和系統(tǒng)集成公司Insight的數(shù)據(jù)與人工智能首席架構(gòu)師Ken Seier表示:“你無法自行更改訓(xùn)練數(shù)據(jù),因為你沒有可重復(fù)的結(jié)果。”
他說,傳統(tǒng)的DevOps工具存在不足?!澳阈枰跀?shù)據(jù)管道中添加其他步驟?!?/p>
構(gòu)建人工智能模型新實例的開發(fā)團(tuán)隊需要能夠快照使用的數(shù)據(jù)并將其存儲在存儲庫中。“然后進(jìn)入測試環(huán)境。在該環(huán)境中,他們將針對已知的方案(包括審計方案和合規(guī)性方案)以及測試數(shù)據(jù)集來運行它們,以確保它們具有一定的準(zhǔn)確性。”
大多數(shù)企業(yè)都在自行構(gòu)建這些工具,雖然主要的云人工智能平臺供應(yīng)商已將許多此功能部署到位,但是仍然缺少關(guān)鍵要素。
能夠用于調(diào)整模型的自動化流程也必須要開發(fā)出來,以測試各種算法并查看哪種算法在特定情況下效果更好。
理想情況下,如果算法偏離了軌道,那么自動化流程可以重新訓(xùn)練模型,從而使一切重新運行。如果無法使模型再次恢復(fù)正常,那么則需要提前預(yù)備一系列后備選項。
使用傳統(tǒng)的軟件開發(fā),恢復(fù)到該軟件的先前工作版本非常簡單。但是由于環(huán)境的變化,人工智能已經(jīng)偏離了軌道,那么恢復(fù)或許已經(jīng)變成了不可能的事情。
他問道,“如果軟件無法運行并且無法重新訓(xùn)練,那會發(fā)生什么?你是否淘汰它們并依靠人類操作人員?你是否擁有可以讓人類做出這些決定的業(yè)務(wù)流程?在使用自動駕駛汽車時,是否意味著它們會讓汽車熄火?”
處理漂移
訓(xùn)練數(shù)據(jù)通常是即時快照。當(dāng)條件改變時,該模型的有效性就會降低。為了應(yīng)對這種漂移,企業(yè)需要針對真實數(shù)據(jù)不斷對模型進(jìn)行測試,以確保系統(tǒng)仍可正常工作。Seier稱:“如果他們以30天為一個窗口來訓(xùn)練模型,那么他們應(yīng)該每兩周抓住一個新的30天窗口,并確定是否出現(xiàn)了問題?!?/p>
當(dāng)人工智能系統(tǒng)更改了其正在觀察的行為,那么情況很快就會變得復(fù)雜起來。舉例來說,人工智能系統(tǒng)會查看歷史數(shù)據(jù),以查看工廠設(shè)備何時最有可能損壞。如果工廠隨后使用這一預(yù)測結(jié)果來更改維修計劃,那么這一預(yù)測結(jié)果在后面將不再有效,但是在新數(shù)據(jù)上對模型進(jìn)行再訓(xùn)練將導(dǎo)致另外的問題發(fā)生,因為在沒有人工智能干預(yù)的情況下,機(jī)器將再次開始損壞。
Seier說:“自動駕駛汽車面臨的挑戰(zhàn)之一是與其他自動駕駛汽車打交道。它們在人工駕駛汽車的環(huán)境中接受培訓(xùn),而自動駕駛汽車的行為方式是不一樣的?!?/p>
Fiddler Labs的聯(lián)合創(chuàng)始人兼首席執(zhí)行官Krishna Gade說,他希望看到一個針對以數(shù)據(jù)為核心的人工智能和機(jī)器學(xué)習(xí)系統(tǒng)的集成開發(fā)環(huán)境。他說:“我們需要一個能夠輕松導(dǎo)入和瀏覽數(shù)據(jù)以及清理表單的IDE。Jupyter備忘錄有些用處,但是它們也存在其他的問題,如缺少版本控制和檢查工具?!?/p>
隨著越來越多的模型投入到生產(chǎn)中,管理各種版本變得越來越重要。他說:“Git可以在模型中重用,但是它們不能擴(kuò)展到大型數(shù)據(jù)集中?!?/p>
數(shù)據(jù)安全挑戰(zhàn)
隨著企業(yè)轉(zhuǎn)向由人工智能驅(qū)動的軟件開發(fā)實踐,他們還將面臨著許多新的安全挑戰(zhàn),而這是許多人無法預(yù)料的。
例如,當(dāng)系統(tǒng)由數(shù)據(jù)科學(xué)家而不是傳統(tǒng)軟件工程師創(chuàng)建時,安全性可能事后才被想起。第三方和開源人工智能算法可能有其自身的問題,包括漏洞和不安全的依賴關(guān)系。
全球公共政策企業(yè)Access Partnership的數(shù)據(jù)和信任業(yè)務(wù)全球負(fù)責(zé)人Michael Clauser說:“開發(fā)人員使用最新修補的代碼至關(guān)重要?!?/p>
第三方供應(yīng)商提供的專有代碼通常是專利性的并且無法分析。
Clauser說:“可以肯定的是,數(shù)據(jù)量繁重的大型互聯(lián)網(wǎng)企業(yè)和其他藍(lán)籌股企業(yè)在自己的人工智能開發(fā)和部署中正遇到了網(wǎng)絡(luò)安全麻煩。對于為資源而苦惱的初創(chuàng)企業(yè)來說,情況可能并非如此,他們更關(guān)注的是展示自己的人工智能可以做什么,可以解決什么問題,而不是擔(dān)心有一天黑客會把他們的人工智能系統(tǒng)變成問題?!?/p>
人工智能算法還必須與傳統(tǒng)系統(tǒng)進(jìn)行交互,包括數(shù)據(jù)庫和用戶界面。如果安全專家沒有提前介入安全流程,那么出現(xiàn)錯誤將是非常常見的事情。
此外,人工智能系統(tǒng)通常建立在新的云人工智能平臺上。此處的安全風(fēng)險尚不為人所知。盡管如此,人工智能的最大挑戰(zhàn)還是來自于數(shù)據(jù)。人工智能系統(tǒng)需要訪問操作數(shù)據(jù),訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)。企業(yè)通常會忘記鎖定后兩組數(shù)據(jù)。此外,數(shù)據(jù)科學(xué)家更喜歡構(gòu)建自己的人工智能模型以使用非加密的測試數(shù)據(jù),而不是使用加密或標(biāo)記化的數(shù)據(jù)。這些系統(tǒng)一旦運行,缺乏加密就會成為一個嚴(yán)重的漏洞。
在線文件共享供應(yīng)商Box是一家當(dāng)前正在解決其人工智能系統(tǒng)潛在安全風(fēng)險的公司。該公司的首席信息安全官Lakshmi Hanspal表示:“我們要告訴客戶,請放心地將最寶貴的內(nèi)容交給我們,我們將讓這些內(nèi)容給企業(yè)帶來強(qiáng)大的生產(chǎn)力?!?/p>
Box現(xiàn)在正致力于使用人工智能從這些內(nèi)容中提取元數(shù)據(jù),以改善搜索、分類等功能。她舉例說Box能夠自動從合同中提取條款和價格。
對于構(gòu)建新的人工智能系統(tǒng),Box仍然非常謹(jǐn)慎地保留了其傳統(tǒng)級別的安全控制。她說:“對于任何產(chǎn)品,無論是人工智能還是非人工智能,我們都有一個安全開發(fā)流程。它們與ISO安全標(biāo)準(zhǔn)保持一致。雖然Box內(nèi)部有很多條線,但是它們都遵循著一個相似的流程,并通過內(nèi)置的設(shè)計實現(xiàn)安全性?!逼渲邪思用?、日志記錄、監(jiān)視、身份驗證和訪問控制等措施。
德勤會計師事務(wù)所首席云戰(zhàn)略官David Linthicum指出,大多數(shù)企業(yè)并未將安全性納入其人工智能開發(fā)流程當(dāng)中。實際上大約有75%的企業(yè)都是在事后處理安全問題。他說:“事后再做這一工作,就像當(dāng)卡車在道路上行駛時試圖更換它們的輪胎一樣?!?/p>
本文作者M(jìn)aria Korolov在過去二十年中長期關(guān)注新興技術(shù)和新興市場。
原文網(wǎng)址
https://www.cio.com/article/3437436/rethinking-software-development-in-the-人工智能-era.html?nsdr=true