手机看片欧美日韩,久久精品国产主播一区二区,欧美亚洲中日韩中文字幕在线

2019-AI技術帶給軟件開發的6種轉變

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還引用了新范式的好處:

  • 更加同質化,更易于管理
  • 可以輕松烘焙成硬件
  • 持續運行時間和內存使用
  • 高度的便攜性
  • 高度的敏捷性和可集成性
  • 更容易為未來的開發人員學習
  • 比某些功能/垂直(即圖像/視頻,聲音/語音和文本)中最好的人類編碼器更好
  • 然而,專業人士并非沒有缺點。許多機器學習方法的關鍵局限性是我們人類無法完全理解這些復雜系統的工作原理,導致它們在我們看來是“黑匣子”。由于缺乏理解和控制而產生的另一個挑戰是由于算法偏差和偏執機器人等有缺陷的模型而產生的意外和令人尷尬的后果。

傳統軟件從ML技術中獲得提升

然而,傳統的軟件開發并沒有消失。培養高性能機器學習模型只是產品化AI技術的一個步驟。正如一篇受歡迎的谷歌論文所斷言的那樣,只有一小部分真實世界的機器學習系統由機器學習代碼組成。

數據管理,前端產品接口和安全性等關鍵組件仍需要由常規軟件處理。但是,使用傳統SDLC開發的技術仍然可以通過以下方式受益于機器學習方法:
  • 快速原型制作:將業務需求轉變為技術產品通常需要數月甚至數年的計劃,但機器學習通過使技術領域較少的專家能夠使用自然語言或可視化界面開發技術來縮短此過程。
  • 智能編程助手:開發人員將大部分時間用于閱讀文檔和調試代碼。智能編程助手可以通過提供即時支持和建議(例如相關文檔,最佳實踐和代碼示例)來縮短這一時間。此類助手的示例包括Kite for Python和Codota for Java。
  • 自動分析和錯誤處理:編程助手還可以從過去的經驗中學習,以識別常見錯誤并在開發階段自動標記它們。一旦部署了技術,機器學習也可用于分析系統日志,以快速甚至主動地標記錯誤。將來,還可以使軟件在沒有人為干預的情況下動態地改變以響應錯誤。
  • 自動代碼重構:清潔代碼對團隊協作和長期維護至關重要。隨著企業升級技術,大規模的重構是不可避免的,往往這個過程是痛苦的。機器學習可用于分析代碼并自動優化代碼以實現可解釋性和性能。
  • 精確估計:眾所周知,軟件開發的過程中對于時間的把握相當的重要。然而可靠的估算需要深入的專業知識,對環境的理解以及對實施團隊的熟悉程度。機器學習可以訓練過去項目的數據 - 例如用戶故事,特征定義,估計和實際情況 - 以更準確地預測工作量和預算。
  • 戰略決策:花費大量時間來討論哪些產品和功能要優先考慮哪些以及哪些要削減。針對過去的開發項目和業務因素培訓的AI解決方案可以評估現有應用程序的性能,并幫助業務負責人和工程團隊確定最大化影響并最大限度降低風險的工作。

根據Forrester Research關于AI對軟件開發影響的報告,將AI應用于軟件開發中的主要作用總結為在于自動化測試和錯誤檢測工具。

實際上,我們已經看到AutoML解決方案的巨大增長,這些解決方案旨在實現機器學習模型培訓流程的自動化,減少數據科學家和工程師的工作量,并使領域專家能夠培訓生產質量模型。

諸如H2O.ai的無人駕駛AIGoogle Cloud的AutoMLAmazon Sagemaker等解決方案可自動化或簡化關鍵組件,例如數據準備,模型搜索和調整以及模型部署和擴展。


總結:隨著人工智能技術的不斷發展將會顛覆我們傳統的軟件制作,軟件開發智能化不在是個趨勢而是必然性的體現,探碼科技作為新時代的軟件技術商將利用更多新技術賦予軟件制造更多智能化的可能!
?

蜀ICP備15035023號-4

<rp id="pptpi"><xmp id="pptpi"><th id="pptpi"></th><dl id="pptpi"><pre id="pptpi"><noframes id="pptpi"><code id="pptpi"></code><kbd id="pptpi"><strong id="pptpi"><pre id="pptpi"></pre></strong></kbd>
  • <var id="pptpi"><dl id="pptpi"></dl></var>
    <menu id="pptpi"></menu>

    
    <rt id="pptpi"></rt>
  • <rp id="pptpi"><strong id="pptpi"><meter id="pptpi"></meter></strong></rp>
  • <p id="pptpi"></p>
    主站蜘蛛池模板: 五原县| 团风县| 儋州市| 龙井市| 哈尔滨市| 柳林县| 陈巴尔虎旗| 靖西县| 农安县| 玛曲县| 揭东县| 独山县| 惠东县| 上饶市| 四川省| 庆阳市| 潢川县| 平定县| 兴城市| 积石山| 镇雄县| 资溪县| 凌海市| 景洪市| 香格里拉县| 葵青区| 文登市| 高密市| 辽阳县| 遂溪县| 巴东县| 洛隆县| 双桥区| 盱眙县| 阜南县| 宜州市| 昭苏县| 山西省| 饶平县| 铜鼓县| 旅游|