作者:探碼科技, 原文鏈接: http://nbbskj.com/blog/463
AI正在逐漸的改變所有業務功能,軟件開發也不例外。機器學習技術不僅可以用于加速傳統的軟件開發生命周期(SDLC),也為技術創新提供了一種全新的范例。
傳統上,開發計算機程序要求我們事先準確指定系統要做的事情,然后手工設計技術的所有功能。以明確的方式編碼許多任務。然而隨著時代的發展需求的不斷提高,有許多任務和決定太復雜,無法以嚴格的,基于規則的方式教給計算機。即使是像識別互聯網上的照片或視頻是否屬于貓這樣看似簡單的活動,也是傳統軟件開發無法實現的。鑒于貓照片可以采取的巨大排列,沒有任何工程師團隊可以列舉所有能夠可靠地識別貓的規則以及可能出現在媒體中的所有其他可能的對象。
機器學習從根本上改變了軟件開發模式
進入人工智能技術,如機器學習和深度學習。在這些方法中,軟件開發人員不會為如何制定決策和采取行動提供計算機規則。相反,他們會策劃并準備特定領域的數據,這些數據被輸入到學習算法中,這些算法經過迭代訓練并不斷改進。機器學習模型可以從數據中推斷出哪些特征和模式是重要的,而無需人類明確地編碼這些知識。ML模型的輸出甚至可以給人類帶來驚喜,并突出我們自己沒有想到的觀點或細節。
因此,人工智能對計算機編程的最深刻影響是揭示人類如何感知,定義和執行軟件開發。
現任特斯拉人工智能總監的OpenAI研究科學家安德烈·卡爾帕西(Andrej Karpathy)表示,“未來很大一部分程序員不會維護復雜的軟件存儲庫,編寫錯綜復雜的程序或分析他們的運行時間。他們將會收集,清理,操作,標記,分析和可視化為神經網絡提供數據的數據。“Karpathy用一種高度可引用的見解來描述海洋變化:”神經網絡不僅僅是另一種分類器,它們代表了我們如何從根本上轉變的開始編寫軟件。它們是軟件2.0 。 “
他將Software 1.0的“經典堆棧”描述為計算機的明確指令,由程序員使用Python或C ++等語言編寫。傳統的軟件開發生命周期通常從需求定義(即技術規范)開始,然后轉向設計和開發。一旦構建了可行的原型,就會進行QA測試。最后,一旦產品通過集合,它將被部署到生產中并且必須持續維護。敏捷流程可以使這個周期變得更快,因為工程師將選擇較小的功能集來專注于2-4周的沖刺,而不是試圖一次性構建整個軟件。無論是敏捷還是瀑布,這個過程基本上是相同的。
隨著時間的推移,這些系統變得異常復雜,需要多個依賴關系和集成以及層功能和接口層。所有這些組件必須由人工手動管理和更新,從而導致不一致和無法解決的錯誤。
相比之下,機器學習模型推斷出數據中的重要特征和模式。用Karpathy的話來說,軟件2.0是以“神經網絡權重”的形式編寫的代碼,不是由人類編寫的,而是通過機器學習方法,如反向傳播和隨機梯度下降。更新模型需要使用新數據重新訓練算法,這將改變模型的行為和執行方式。
雖然機器學習開發有其自身的調試和維護挑戰,但Karpathy強調了這樣一個事實,即軟件2.0已經變得非常可行和有價值,因為“很大一部分現實問題具有收集數據更容易的特性”(或者更一般地說,確定一個理想的行為,而不是明確地編寫程序。“從軟件2.0中受益最多的領域包括計算機視覺,語音識別,機器翻譯,游戲,機器人和數據庫。
Karpathy還引用了新范式的好處:
然而,傳統的軟件開發并沒有消失。培養高性能機器學習模型只是產品化AI技術的一個步驟。正如一篇受歡迎的谷歌論文所斷言的那樣,只有一小部分真實世界的機器學習系統由機器學習代碼組成。
數據管理,前端產品接口和安全性等關鍵組件仍需要由常規軟件處理。但是,使用傳統SDLC開發的技術仍然可以通過以下方式受益于機器學習方法:
根據Forrester Research關于AI對軟件開發影響的報告,將AI應用于軟件開發中的主要作用總結為在于自動化測試和錯誤檢測工具。
實際上,我們已經看到AutoML解決方案的巨大增長,這些解決方案旨在實現機器學習模型培訓流程的自動化,減少數據科學家和工程師的工作量,并使領域專家能夠培訓生產質量模型。
諸如H2O.ai的無人駕駛AI,Google Cloud的AutoML和Amazon Sagemaker等解決方案可自動化或簡化關鍵組件,例如數據準備,模型搜索和調整以及模型部署和擴展。
總結:隨著人工智能技術的不斷發展將會顛覆我們傳統的軟件制作,軟件開發智能化不在是個趨勢而是必然性的體現,探碼科技作為新時代的軟件技術商將利用更多新技術賦予軟件制造更多智能化的可能!
?