機器學習與傳統軟體開發的衝突與融合 - alepiad
在過去的幾年裡,我一直在用機器學習和資料科學的想法來顛覆傳統的軟體公司,這些想法直接來自我團隊的核心研究。我發現大多數問題來自三個關鍵領域。
大部分障礙可以歸為以下三類之一:
- 語言
- 開發過程
- 預期結果
統一語言
學術界和工業界之間的大多數衝突是由於語言障礙造成的:
- 我們談論實驗、模型和假設。他們談論功能、業務規則和使用者體驗。
- 我們根據我們擁有的資料、我們可以提取的特徵以及我們可以訓練的模型來定義一個問題;他們根據使用者故事和功能來定義它。
這不僅僅是使用不同的行話的問題。
我們談論我們想要解決的問題的方式與行業談論同一問題的方式完全不同。
減少這種阻抗需要找到一種共同語言:
我們需要學習的是,產品是為使用者製造的,一個沒有人關心的預測的模型是沒有用的。
我們發現,有助於建立這種共同語言的一個方法是混合團隊,來自雙方的人在同一個程式碼庫中一起工作,並且每天互相交流。
但這說起來容易做起來難。
大多數人,無論是在學術界還是在業界,都不願意離開他們的舒適區。
這些都是專業人士,他們非常擅長做他們的工作,他們不想在被迫做或談論他們沒有受過訓練的事情時感到愚蠢。
作為一個團隊或專案的領導者,你的工作是創造一個環境,讓每個人都感到安全,承認他們不知道的東西,並且他們可以互相學習。
這可能是你最重要,也是最難的任務。
開發過程
開發過程是另一個痛點,因為研究和軟體生產之間的目標存在著根本性的差異。
我們想測試假設;而他們工業界想交付功能:
- 我們的反饋環路很長,也很複雜:我們必須建立一個資料處理管道,和一個交叉驗證環路,然後我們繼續對我們的模型進行HPO。
我們的成功指標通常是以一個模型和一個測試資料集來定義的,不需要外部驗證。此外,它們往往是定量的和客觀的。 - 軟體行業有一個更緊密的反饋迴路,關鍵是,它往往涉及到交付一個新功能,並檢視使用者如何與之互動。
而評估往往比簡單的損失指標更有質量和細微差別。
這就產生了一個緊張點,研究人員不斷要求有更多的時間來調整他們的模型和提高效能,而工業界則不斷要求有更多的功能,而這些功能昨天就應該開始工作了。
我們發現,一個好的策略是在非常短的端到端週期內工作,從資料收集到模型部署。
從最簡單的基線開始,儘快將其部署到生產中。然後進行評估和迭代。
不過這說起來容易做起來難。如果你沒有一個好的MLOps管道,僅僅將一個簡單的基線投入生產就需要幾個星期。
所以,在最初的幾個迭代中,要投資於讓管道變得更順暢。
你需要能夠從測試一個新的模型(或調整一些超引數)並與當前部署的模型進行比較,到在短時間內將其序列化並部署在生產中,最好是在CI/CD管道中。
一旦你有了基本的管道,然後專注於建模、特徵工程、超引數調整。
預測結果
最後,痛苦的另一個關鍵來源是對效果不切實際的期望。
在傳統軟體中,每一個錯誤都是由於程式設計錯誤造成的。但在機器學習中,錯誤只是解決方案的一個基本部分。
當業界看到一個錯誤的分類時,他們自然認為你的方法是錯誤的。
你必須說服他們,有一個最低的、非零的、不可減少的錯誤率,他們必須接受並忍受。
我們發現,有助於解決這個問題的方法是用機會成本而不是錯誤率來衡量。
你每次犯錯會花費多少錢,而有了這個額外的ML-powered功能,你會賺多少錢?這值得嗎?
在這種情況下,是行業必須控制其期望值,而你作為專案負責人的工作就是要傳達這種心態。
對預期要誠實。不要過度承諾。
總結
根據我的經驗,與行業合作,特別是與剛剛開始部署機器學習解決方案的公司合作,對雙方來說都是一個巨大的機會,只要雙方願意相互學習。
相關文章
- 融合與衝突:當電子遊戲遇到大眾傳媒遊戲
- 思泉軟體開發平臺與傳統軟體開發的優勢
- 滑鼠控制軟體有可能和虛擬機器軟體產生衝突虛擬機
- 機器學習與移動應用開發的未來機器學習
- DevOps與傳統的融合落地實踐dev
- 談談機器學習與傳統程式設計之間的區別機器學習程式設計
- javamelody與swagger註解衝突JavaSwagger
- 淺談《刺客信條》的敘事:刺客和聖殿騎士的衝突與融合
- 【機器學習】整合學習——Bagging與隨機森林機器學習隨機森林
- Github Fork倉庫的衝突與同步管理Github
- 超智慧體S01:高考與機器學習智慧體機器學習
- 機器學習的未來——深度特徵融合機器學習特徵
- 【機器學習】深度學習與經典機器學習的優劣勢一覽機器學習深度學習
- 超融合架構與傳統IT架構的區別架構
- 機器學習與比特幣示例機器學習比特幣
- .NET資料探勘與機器學習開源框架機器學習框架
- 異構記憶體及其在機器學習系統的應用與優化記憶體機器學習優化
- underscore 系列之防衝突與 Utility FunctionsFunction
- statistics_level與SGA_TARGET衝突
- 如何解決 touchstart 事件與 click 事件的衝突事件
- 【大型軟體開發】淺談大型Qt軟體開發(四)動態連結庫的宏衝突問題、COM元件開發的常見問題QT元件
- Xflow軟體與傳統CFD軟體比較有哪些優勢
- 2018自然語言處理與機器學習論文發表統計自然語言處理機器學習
- iOS 開發中遇到的手勢衝突iOS
- 史丹佛大學-機器學習的動機與應用機器學習
- 【大型軟體開發】開發日誌(五).net框架與C++的融合:CLR——C++呼叫C#的DLL框架C++C#
- 什麼是 AI、機器學習與深度學習?AI機器學習深度學習
- 什麼是AI、機器學習與深度學習?AI機器學習深度學習
- Delphi:傳統與現代交織的開發利器
- Anno微服務引擎與傳統應用相融合微服務
- 機器學習之Numpy與張量機器學習
- 模式識別與機器學習(二)模式機器學習
- openGauss備庫wal-replay與query衝突
- [20190515]熱備份模式與rman衝突.txt模式
- PtrClassicFrameLayout與viewpager橫向滑動衝突的問題Viewpager
- 機器學習,詳解SVM軟間隔與對偶問題機器學習
- 解決Oracle XDB與Tomcat等的8080埠的衝突OracleTomcat
- 深度學習與機器學習之間區別 - javaworld深度學習機器學習Java