給產品經理的AI開發指南#1/Bastiane Huang

為什麼管理機器學習(ML)產品比一般軟體困難?因為開發ML產品的不確定性和可變性更高;而一般軟體工程則是為機器編寫規則,原本就有高度的確定性。而ML系統可以自行學習,所以並不需要人來編寫規則。總之,「實驗」就是開發ML產品的關鍵。

關於管理AI產品,我認為最重要的幾件事是:

  1. 不確定性:機器學習(ML)產品管理比一般軟體更具挑戰性,因為它涉及更多的不確定性。不僅需要技術上的改變,還需要組織上的改變。

  2. 最適合的用途:ML最適合做出決策或預測。

  3. ML產品經理最重要的工作:明確定義問題,確定需求,設定衡量成功的標準,並為ML工程師提供足夠的空間和時間探索解決方案。

  4. 數據策略:從第一天就開始計畫數據策略(Data Strategy)。

  5. 跨領域:構建ML產品是跨領域的,不止是資料科學。

在先前的〈AI重新定義機器人〉一文中,提到ML帶來的最大不同是:

讓機器從依賴人工編寫程式,轉向真正的自主學習。

機器不需要人工指示,而是自行根據數據中識別出的模式,進行預測和改進;這就是為什麼ML特別適用於那些過去難以明確解釋定義的問題。這也代表ML可以使你的產品更個人化、更自動化、也更精確。

先進的演算法、大數據、和硬體價格下降,成為ML成長的主要驅動力。

AI已在各個領域逐漸被採用。麥肯錫(Mckinsey)顧問公司最近的報告中顯示,近一半的公司在其研發流程中整合了AI,另外有30%的公司正在試驗AI項目。

不難看出為什麼,許多人預期ML將比行動運算技術帶來更巨大的產業變革;但與此同時,企業引進ML的難度,也可能比當年採用行動運算技術更高上數倍。為什麼呢?在討論具體原因之前,讓我們先一起聊聊什麼是ML。

ML的三大類型:監督學習、無監督學習、強化學習

AI人工智能並沒有一個普遍被認同的定義,而且它的定義不斷在改變;一旦某項任務能夠成功由機器執行,該任務就不再屬於AI的範圍。

ML是AI的一部分。Carnegie Mellon大學教授湯姆.米切爾(Tom M.Mitchell)將機器學習定義為一種「允許程式根據經驗自動進行改進」的演算法。

機器學習有三種主要類型:

  • 監督學習(Supervised Learning):最常見和最被廣泛使用的類型。這些算法從事先標記好的數據(labeled data)中學習;大多時候被用以預測結果。例如給機器大量標記好的動物圖片,讓機器學習判斷貓和狗。

  • 無監督學習(Unsupervised Learning):無監督學習算法不需要事先標示,而是直接從數據學習判讀模式。它可以用於聚類(clustering)、關聯(association) 和異常檢測(anomaly detection)問題;另外還有半監督學習,是「監督學習」與「非監督學習」之間的混合體。

  • 強化學習(Reinforcement Learning,RL):演算法藉由得到環境中的回饋而學習;通常用於機器人技術、或是自動駕駛汽車等控制領域。例如將目標函數(Objective Funcion)設定為「成功從A點移動到B點」;當每次機器人成功到達B點,就會得到正面回應,然後如此反覆,直到機器人學會執行這項任務為止。

機器學習產品的類型

根據產品的類型和核心價值的來源,將會需要不同的技能、並專注於產品的不同面向。

  • 使用者是企業,還是一般消費者?

像Alexa或Google Assistant這樣的消費性ML產品,具有更強的社交互動成分;因此,用戶體驗(UX)在設計消費類ML產品中扮演著極關鍵的角色。而ML技術則往往是達成更理想用戶體驗的方式之一。

例如NLP(自然語言處理)被用於Alexa及用戶之間更自然的溝通;另一方面,以B2B企業市場為主、特別是工業用的ML產品(例如用於預測工廠儀器維護時程的演算法),核心價值往往來自預測的準確性,而不是UX。

這並不是說UX對企業用的ML產品不重要,而是當你的資源有限、並且需要集中精力優化產品的某些部分時,就需要考慮這個問題。

  • 你要設計的是ML產品?或是將ML應用到產品中?

如果你產品的核心價值來自ML模型,那麼你很可能正在設計一個ML產品;相反的,如果ML僅用於增強產品的用戶體驗或部分性能,那麼你很可能正在將ML應用於產品上。

在這種情況下,身為產品經理,你不應該花太多時間顧慮技術細節;像是「ML模型是以CNN(卷積神經網路)還是R-CNN為基礎」,而是應該花時間瞭解模型的輸入(input)和輸出(output)。

舉例來說,你要使用的這個ML模型,是否採用用戶的人口統計數據(input)來預測用戶在平台上的每月支出(output)?另一方面,設計ML產品通常需要技術能力更高的產品經理(PM),以幫助團隊確定關鍵決策和權衡取捨。

產品類型也會影響組織結構。對於研發機器學習產品的公司、或像Facebook和Google這類在ML上投入大量資金的的大型公司,通常會雇用相關領域的研究人員或資料科學家,並將他們與ML工程師組成團隊。

相反的,對於想將ML應用於產品上的公司、或是資源有限的小型公司,最好的策略是雇用跨領域的ML工程師、或是培訓軟體工程師學習ML,而不是僱用ML研究人員。

  • 構建ML產品通常是跨領域的。

研發機器學習產品時,很少會只涉及ML,通常都是跨領域的;涉及的不僅是ML模型的設計及訓練,還涉及軟體工程、後端結構、數據分析、UX/UI設計,甚至軟硬體整合等等。

產品經理需要能夠管理跨職能的團隊、並處理團隊之間的相互依賴和潛在衝突。 ML從根本上不同於其他學科,這點會在下一段進一步說明;如果你要設計和現實世界互動的ML產品(例如機器人或自動駕駛汽車),情況則會變得更加複雜。

PM需要知道使用ML可以做什麼、不能做什麼,何時應該使用ML、以及何時不應該使用ML。

其他需要理解的關鍵ML概念

  • 過擬合 (Overfit):是一種常見的錯誤類型,當機器學習模型過於匹配特定的數據集時發生。可靠的ML模型不僅在「訓練數據集」(training dataset),也在「驗證數據集」(validation dataset)上表現良好。但是,在過擬合的情況下,訓練數據的表現會變好,但對於沒有看過的數據,驗證的表現卻反而會變差。

  • 深度學習(DL):主要用於圖像分類。DL使用深度神經網路,並以標籤圖像作為輸入;神經網路的每一層,都會將輸入轉換為稍微抽象和複合的表現形式。最後,模型將能學會識別圖像中的內容。

  • 自然語言處理(NLP):這是電腦科學中的一個領域,目的是使機器可以理解人類語言,但不一定涉及ML。NLP通常用於聊天機器人、語音助手、或是預處理數據。

管理機器學習產品的挑戰

1. 實驗是機器學習的關鍵部分。

ML也會用到程式碼和數據,但若因此就認為ML與軟體工程本質相同,那就大錯特錯了。

與軟體工程不同的是,開發ML產品需要進行更多實驗,也涉及更多的不確定性和可變性。至於軟體工程,則是一種為機器編寫規則的確定性過程;另一方面,ML具有更高的機率性,因為它可以自行學習,而不需要我們來編寫規則。

例如,如果你想教機器識別貓:透過軟體工程,你可能會想出「一隻貓有四隻腿和兩個尖尖的耳朵」這樣的明確規則;但如果使用深度學習,要做的就不是提供明確的規則,而是為機器提供一堆貓照片(事先標記好這是貓的圖像),然後讓機器自行學習,摸索出規則。

你和團隊要做的是:定義問題、準備數據、建立機器學習模型、測試、迭代,直到擁有可以提供所需結果的模型為止。

這就是為什麼在開發ML產品時,通常需要承擔更多風險的原因。對於產品經理而言,重要的是要幫團隊建立正確的期望,以避免團隊之間可能發生的衝突;例如軟體工程師可能會覺得,ML團隊沒有給他們足夠明確的需求。

這並不一定是ML團隊的問題;因為在實驗階段,就連ML團隊也很難預測最後模型的表現是好是壞。所以,讓其他團隊瞭解ML產品的實驗本質就很重要。

此外,讓工程師與研究人員、科學家緊密合作也很重要,這樣他們才能彼此平衡,不讓產品研究失焦;更重要的是,最好早點開發出可供測試的產品,並且定期測試,以確保ML團隊所用的演算法與產品目標一致。

2. 開發ML是一個高度迭代(iterative)的過程。

正如前面提到的,ML非常適合解決人類無法明確定義的複雜問題;而模型則需要訓練、測試、和調整。

資料科學家在選擇令人滿意的方法之前,必須先測試好幾種方法;這也是為什麼通常很難定義ML產品的里程碑和時間表。

也因為如此,對於PM來說,明確定義需求、設定產品成功標準、並確保團隊經常根據所需標準來測試ML模型,都是相當重要的。

3. 除了技術挑戰外,還有更多的組織結構挑戰。

因為ML與軟體工程截然不同,所以更需要進行一些根本性的組織變革:例如尊重實驗文化、以數據分析推動思維方式、以及對不確定性的包容。

如果將機器學習視為純粹的技術問題,而忽略了相關的組織變革,公司很可能會面臨「創新者的困境」[footnote]編按:原文為「The Innovator’s Dilemma」,為提出「破壞性創新」理論的Clayton Christensen教授1997年出版的作品書名。[/footnote]。

這對機器人製造商等公司來說,尤其具有挑戰;因為它們過去一直追求產品的高精度;然而,ML技術雖然會隨著數據增加而進步,卻通常無法在一開始就達到100%精準。

此外,ML產品需要大量數據,所以業者必須建立自己的數據管道和基礎架構,以支持ML產品的擴展。對大多數的公司來說,這也是一個全新的課題。

4. 機器學習仍然是一個新領域,並且會不斷發展。

「軟體工程」一詞最早在1965年出現,也就是程式語言出現的15之年後;大約20年後,軟體工程學院才成立,以管理軟體工程開發流程。如今,我們已經找到了軟體工程的最佳典範(best practice)。

反觀機器學習,在1990年才開始成為一個獨立的領域、並且蓬勃發展。深度學習是ML的一部分,在圖像識別和NLP等領域創造了新的記錄;但直到2012年AlexNet出現之後,才被大眾廣泛討論。

與軟體工程相比,ML仍處於起步階段,因此仍缺乏產業標準、衡量指標、基礎架構、以及開發工具;因此,相關企業仍在探索最佳作法和熱門應用。

5. 機器學習產品的可解釋性和透明度。

機器學習算法就像一個黑盒子,它接受輸入(例如圖像)、並輸出預測(例如圖像中的人物是什麼);這可能會讓PM很難解釋ML模型如何運作、也很難從用戶和相關單位得到全面支持。

尤其是在醫療保健等關鍵領域,責任歸屬和透明度非常重要;在沒有清楚瞭解演算法實際工作原理的情況下,確保ML模型與產品目標之間的一致性,會是一項艱鉅的挑戰。

面對這些挑戰,我們應該如何管理機器學習產品?在第二部分中,筆者將分享自己所學習到的最佳作法。