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