規劃 ML 專案與規劃一般軟體工程專案不同。機器學習專案的特性是非線性,且不確定性程度不一。這類問題需要採用迭代式方法和實驗心態。
專案不確定性
在專案初期進行規劃可能會很困難,因為在開始專案時,通常無法明確找出最佳做法。這種固有的不確定性,使得預估時間表變得難以掌握。
近期的 Kaggle 競賽說明瞭機器學習專案的不確定性。在比賽的前幾週,有 350 個團隊參與。表現最佳的隊伍將基準預測品質從 35% 提高至 65%。在接下來的兩週內,處理問題的團隊人數從 350 人增加到 1, 400 人。不過,最佳模型的預測品質僅達 68%。
圖 3 說明機器學習開發作業的不確定性,顯示投入的努力程度大幅增加,但模型品質僅略有提升。
圖 3. 在兩週的時間內,解決問題的團隊數量增加了 4 倍,但模型的品質幾乎沒有改變,這也凸顯了評估機器學習解決方案所需的努力程度有多困難。
換句話說,超過一千個團隊都嘗試過各種資料轉換、架構和超參數,但最終只能製作出預測準確率為 68% 的模型。
以下是業界的例子,說明 ML 專案的非線性特性,也就是輸出內容與輸入內容不成正比。兩個團隊花了好幾個月的時間,訓練出預測準確率達 90% 的模型。不過,多個團隊花了超過五年時間,才讓模型達到 99.9% 的預測品質,並準備好正式上線。
這些範例強調,可用於實際工作環境的機器學習是一項探索性過程,需要科學和工程的思維。
實驗方法
在大多數情況下,機器學習開發更像是進行實驗,而非實踐傳統軟體工程。機器學習需要測試不同的功能、嘗試多種架構,並調整超參數。實驗的結果不一定會成功。因此,建議您使用實驗架構進行規劃。
我們來看看典型的軟體工程計畫,瞭解它與機器學習專案計畫的差異。
規劃軟體工程專案
在一般軟體工程企劃書中,您會定義需求、概略說明元件、估算工作量,並安排工作。解決方案的路徑已明確定義。舉例來說,工程師通常會非常確定自己需要完成哪些工作,才能建構符合設計規格的應用程式。
當他們預測完成工作所需的時間時,可以根據類似專案來估算工作量。雖然難免會遇到挑戰 (例如未知的依附元件或變更的需求),導致估算難度增加,但通常還是有明確的解決方案。
相較之下,機器學習專案通常沒有明確的成功路徑。
規劃機器學習專案
對於大多數機器學習專案,您可以透過嘗試/錯誤法,嘗試多種方法,找出最佳解決方案。在嘗試解決問題之前,您通常不會知道問題的最佳解決方案。舉例來說,最佳解決方案的架構可能是簡單的線性模型、神經網路,或許也是決策樹。只有嘗試每種方法,才能找出最佳解決方案。
這種模稜兩可的情況會讓規劃工作變得困難。如先前所述,預測 ML 專案所需的努力程度並不容易。只有嘗試解決問題,才能更準確地掌握解決方案可能需要的時間和資源。
以下是規劃機器學習工作的建議策略:
將工作納入時間表。設定明確的時間範圍,以便完成工作或嘗試特定解決方案。舉例來說,您可以分配兩週的時間,判斷是否可以存取正確類型的資料。如果您可以取得資料,建議您再花兩週時間,看看簡單的模型是否顯示機器學習解決方案可行。如果簡單的模型失敗,您可以再試用神經網路兩週。在每個時間範圍結束時,您將獲得更多資訊,以便判斷是否值得繼續將資源用於解決問題。
縮小專案需求範圍。如果 ML 解決方案看似很有潛力,但對您的產品或服務而言並非必要功能,請縮小其範圍。舉例來說,在規劃下一季的工作時,您可以嘗試採用非常簡單的解決方案。然後在後續季度,您可以規劃逐步改善解決方案。許多團隊都是透過在較長時間內逐步改善,實作機器學習解決方案,進而開發出具影響力的機器學習解決方案。
實習生或新進員工專案。指導實習生或新進員工嘗試使用機器學習解決方案,是探索未知結果的新領域的好方法。專案結束後,您將更能掌握 ML 解決方案所需的努力程度,以及可能值得採用的方法,或是是否應將資源用於其他地方。
無論採用何種策略,都建議採用快速失敗策略。首先嘗試成本最低但可能回報率最高的做法。如果這個做法有效,表示您找到了合適的解決方案。如果不是,您就不會浪費大量時間和資源。
隨著團隊累積執行實驗的經驗,他們就能更準確地估算實驗可能需要的努力程度,讓規劃更容易預測。不過,實驗結果幾乎無法預測,因此無法事先估算出找到最佳解決方案所需的實驗次數。
以實驗的角度規劃做法,有助於讓團隊取得成功。如果某種方法導致死路,團隊成員不必灰心,因為他們瞭解這是尋找機器學習解決方案的過程之一。更重要的是,與利害關係人討論機器學習開發作業中固有的不確定性,有助於您設定更切合實際的期望。
隨堂測驗
注意事項
要學習如何以機率規劃多種機器學習方法,需要時間和經驗。您的專案計畫可能需要經常更新。您可以將其視為一項動態文件,隨著團隊嘗試多種方法,這份文件也會不斷演進。只要著重於下列重點,就能提高成功機率:
- 估算每種方法的成本和成功機率。
- 嘗試使用多種方法。
- 找出可從中學習的經驗,並嘗試一次改善一個系統。
- 為失敗做好準備。
有時,早期採用的方法可能會帶來突破。有人可能會在資料產生管道或訓練/驗證分割中發現錯誤。透過妥善的規劃和完整的文件,您將更有可能在預期時間內找到可解決業務問題的模型。