跳到主要內容

機器學習的五大實務問題:對企業的影響與相應的化解方式

Appier 首席機器學習科學家 林守德博士

正如 Jason Jennings 及 Laurence Haughton 在《以快吃慢–如何藉速度在商戰中克敵制勝》一書中指出──未來,不是大公司吃掉小公司,而是速度快的公司吃掉速度慢的公司。

從現在開始,唯有善用適當的資訊快速做出決策的企業,才能成為戰場上的贏家。

機器學習技術驅動了這場變革。無論企業是嘗試向顧客提出建議、改進生產製造流程或應對市場的變動,都能運用機器學習技術處理大量的資料,進而提高自身的競爭優勢。

然而,機器學習雖能創造大好機會,卻也同時帶來了相應的挑戰。機器學習系統需要大量的資料,以及執行複雜的運算能力。顧客期望改變、出乎意料的市場波動等等外部因素,都意味著機器學習模型的運作並不是百分之百的自動,往往仰賴許多外部的資源來作監控及維護。

此外,機器學習也有不少尚待解決的實務問題。以下將深入探討機器學習的五大實務問題,以及這些問題對企業應用會產生的影響。

1. 資料品質

機器學習系統仰賴資料進行訓練,而訓練資料在廣義上可分為「特徵」及「標籤」兩種類別。

「特徵」是輸入機器學習模型的資料,像是來自感測器、顧客問卷、網站 cookie 或歷史資訊等等。

然而這些特徵的品質可能良莠不齊。舉例而言,顧客在填寫問卷時可能會隨便填寫,或對題目略而不答;感測器可能因失靈而回傳錯誤資料;即使使用者的網頁行為明確,網站 cookie 回報的資訊也可能不完整。

此外,資料也可能包含雜訊,當無謂的資訊夾雜其中時,機器學習模型將會受到誤導而做出不正確的預測。

相較於「特徵」,「標籤」的正確性與穩定度更為重要。標籤是機器學習模型最後輸出的結果。所以需要在訓練的時間利用正確的結果教導機器學習模型。標籤的稀疏性也是個問題,這是當系統已掌握大量輸入的資料卻對輸出的結果沒有把握時出現的現象。在這樣的情況下,將難以針對該模型偵測其特徵與標籤之間的關聯性優化,甚至需要耗費額外的人力干預,將標籤與輸入資料關聯起來。

機器學習需仰賴輸入與輸出資料的關聯,才能具備足夠的泛化能力以預測未來行動並提供相關建議。因此,如果輸入資料過於雜亂、殘缺或有所偏差時,將可能難以理解某輸出/標籤的產出原因。近年來機器學習也開發出許多先進的方法如半指導式學習,轉移學習來處理這樣的問題。

2. 複雜性與品質的取捨

建立強大的機器學習模型需要大量的計算資源來處理特徵和標籤,編寫複雜的模型更需要AI科學家和軟體工程師投入大量心力,同時也需要強大的計算能力、較長的執行時間,才能夠得出可用的結果。

而企業必須在這樣的情況下權衡利弊。可以選擇較快的開發速度或響應速度,但是結果可能不夠精確;或是可以接受較慢的速度或使用比較多的資源,但是獲得相對精準的產出。不過,無論是以較高成本換得精確模型或選擇以速度取勝,整體而言仍需視應用的情況而定,企業未必會因取捨而吃虧。

舉例而言,由於零售購物網站對顧客進行推薦需要即時應對,則此時成果即使出現意料外的變化,也仍在可接受範圍。然而,金融交易系統則會需要較可靠的判定結果。由於不需要即時產出結果,系統能運用更多資料讓模型執行更精密的計算,以便產出更理想的結果。

隨著「機器學習即服務」(Machine Learning as a Service,簡稱「MLaaS」)進入市場後,模型複雜性和品質間的利弊權衡開始受到更多關注。芝加哥大學的研究人員深入分析機器學習即服務的成效後,發現「如果能為關鍵決策(如分類器和特徵選擇)產出足夠的洞察,則其所能達到的效益相當於另一個獨立的分類器。」

3. 資料的樣本偏差

許多企業會借助機器學習的演算法進行員工招聘。不過,Amazon卻發現用於輔助挑選適任應徵者的演算法其實並不公正。此外,普林斯頓的研究人員也指出,有些系統彷彿像人類般擁有好惡,傾向選擇帶有歐洲色彩的姓名。

這不僅是模型發生問題,更多來自用以訓練模型的資料本身帶有偏見。幸好,在察覺資料出現偏差後,科學家便能設法將其導正,或盡可能降低偏差對資料的影響。

第一項挑戰便是判定資料是否含有偏見,這表示須執行額外的前置作業。雖然不可能將資料的偏見全數消除,但仍可藉由導入人類知識將影響降至最低。近年來也有許多帶有公平性原則的機器學習模型被提出,希望能夠處理這樣的問題。

而在部分情況下,也可能需要限制模型中可以使用的特徵數量。例如,在模型產出結果時,忽略某些特徵(如種族或膚色)將有助於減少偏差資料的影響。

4. 變化多端的顧客期望與概念漂移

機器學習模型會在特定情境下運作,而顧客追求的也不一定一樣。以數位廣告為例,有些客戶在乎的是點擊率,有些客戶在乎的是購買數量,有些客戶在乎總營收,有些客戶甚至有更複雜的評估機制。如果機器學習模型無法與時俱進地跟上顧客需求,則可能被淘汰。

模型可能因不同原因而出現衰退的現象。當新資料引入模型時發生漂移,即稱為「資料漂移」。或者,當人們對資料的解讀以及需求有所改變時也會發生漂移,即為「概念漂移」。

而為了適應上述的漂移現象,模型必須善用不斷新增的資料持續自我更新和進步。這也意味著必須定期對於模型作一些偵測與測試,讓機器學習的模型有「自我修正」的能力。

持續收集特徵及標籤並即時應對變化,才能讓模型適時更新並維持最佳狀態。雖然模型能夠自動執行某些層面的再訓練,但有時候人為的介入還是有其必要性,例如常常我們需要考慮新的特徵,或是更換學習的目標函數。

5. 監測與維護

建模其實不難,甚至可以將整個流程自動化。然而,許多模型的維護及線上服務需要完善的計畫與相應的資源。

機器學習模型只是系統產生結果流程中的一部分,這個流程包含前端的資料蒐集與校正,以及模型結果產生後的後製與顯示,再加上對於模型結果的回饋也需要重新回到模型本身來調整。這整個系統中任何一個環節都可能出錯,尤其是當企業有數以千計甚至萬計的模型在線上服務的時候。

所以在MLaaS的使用情境下,當模型產出的結果出乎預期時,有時不是源於機器學習的模型預測錯誤,而是作業鏈中出現問題。舉例而言,推薦引擎需與線上網頁建立連結以向顧客展示商品;而當連結中斷或是有延遲的時候,客戶的點擊率就會被影響。這樣的結果並不是模型推薦錯誤造成的,而且往往要花上一段時間才能找出錯誤。所以,如何能夠快速的找出可能的問題所在,反而是MLaaS相關企業非常需要的能力。

機器學習可為企業帶來不少益處。預測未來結果以推斷並影響顧客行為,以及協助企業運作等等,都是機器學習能提供的實質效益。然而,機器學習同時也為企業帶來了不少挑戰。企業應對相關挑戰有所了解並發展因應的解決策略,準備周全之下才能安心地運用機器學習。

強力徵求

Machine Learning Scientist

Responsibilities

  1. Use machine learning and analytical techniques to build prediction models for advertising/enterprise solutions.
  2. Experience in analyzing and extracting valuable information from large amounts of business data.
  3. Design, develop and test advanced models for predictive consumer behavior.
  4. Co-operate with software engineering teams to drive real-time model implementations and new feature creations.
  5. Design efficient, scalable, automated processes for large scale data analyses, model development, model validation and model implementation.
  6. Research and evaluate pioneering machine learning and statistical models.

Backend Engineer

Responsibilities

  1. Developing and operating scalable, reliable and maintainable service-based softwares and related components.
  2. Cowork with team members to design system architecture, choose proper technologies and plan development.
  3. Design & develop server-side architecture & function logic of new services.
  4. Design and maintain database schemas for new services.
  5. Ensures the scalability of the system.
  6. Ensure the high performance of responsiveness to requests from the front-end.
  7. Integrate the front-end modules built by your coworkers into new services.
  8. Responsible for laying the foundation for the platform as well as proposing solutions to ease software development, monitoring of software, etc.
  9. Profiling and performance tuning of critical components.
  10. Deploy system to production and monitor service health.
  11. Participate in idea brainstorming and contribute ideas to technology, algorithms and products.
  12. Participate on-call rotation within the Backend team to ensure product reliability and scalability.

Frontend Engineer

Responsibilities

  1. Design & develop front-end architecture & interactive user interfaces.
  2. Integrate the back-end modules built by your coworkers into new services.
  3. Ensures the flexibility of front-end architecture.
  4. Ensure the high performance of responsiveness.
  5. Build reusable code and libraries for future use.
  6. Build unit tests and test automation.
  7. Perform code reviews to ensure existing code stays high-quality, fast, and flexible.
  8. Handle and resolve issues escalated from the production operational environment.
  9. Participate in idea brainstorming and contribute ideas to technology, algorithms and products.

其他職缺更多職缺資訊,請見 Appier網站

  • Data Backend
  • Technical Program Manager
  • Product Manager
  • QA Engineer
  • Mobile Development
  • DevOps Engineer
  • Technical Solution Engineer

留言

這個網誌中的熱門文章

實戰 Vibe Coding:利用 Amazon Q Developer CLI 打造經典平台跳躍遊戲

本篇文章將介紹如何透過 Amazon Q Developer CLI 建構一款完整的 2D 平台跳躍遊戲,從初始生成、功能增強,到最終打造出具備多關卡、多樣互動元素的遊戲體驗。特別的是,過程中開發者並未撰寫任何一行程式碼,僅透過自然語言指令與 CLI 對話完成所有工作,實踐「Vibe Coding」( 氛圍編碼 )。 本文作者為 Haowen Huang, AWS Senior Developer Advocate. 擁有 20 年以上電信、互聯網以及雲端運算等行業架構設計、技術及創業管理等豐富經驗,曾任職於 Microsoft、Sun Microsystems 等企業,專注為遊戲、電商、媒體和廣告等企業客戶提供 AI/ML、數據分析和企業數字化轉型等解決方案諮詢服務。 引言 本篇文章 ( English Version ) 將介紹如何使用 Amazon Q Developer CLI ,以 無需撰寫任何程式碼 的方式,打造一款經典的 2D 平台跳躍遊戲。透過「Vibe Coding」( 氛圍編碼 ) 的開發流程,開發者可以藉由簡單的語言提示詞 (prompt),逐步完成從遊戲雛型、功能擴充到完整關卡設計的開發流程。 整體開發流程將分為三個步驟: 1. 生成遊戲雛型 2. 功能擴充強化與畫面調整 3. 導入參考架構建立完整遊戲 環境建置 使用者需先安裝並設定 Amazon Q Developer CLI 。對於 macOS 使用者,可透過下列步驟完成安裝: 下載並安裝 Amazon Q Developer CLI 登入 Builder ID 完成認證 開啟終端機控制與無障礙設定 執行 q doctor 指令檢查 Amazon Q Developer CLI 是否安裝成功: 遊戲開發方面,建議使用 Python 語言與 Pygame 套件,可透過下列指令完成安裝;Pygame 提供以下功能支援: 畫面與動畫渲染 音效播放 鍵盤與搖桿輸入控制 物理模擬與碰撞偵測 多種媒體格式支援(圖片與音效) $ q doctor $ pip install pygame 第一步驟:初步生成遊戲雛型 透過簡單的一句 prompt,Amazon Q Developer CLI 結合 Pyg...

Navicat 17:AI 驅動資料管理的未來

在快速變化的資料管理領域,Navicat 始終站在創新與效率的最前沿。作為領先的資料庫管理與開發解決方案提供商,Navicat 再次以其最新版本 Navicat 17.2 展現了其在業界的卓越實力,讓使用者在資料管理中更具競爭優勢。 Navicat 17 推出標誌著資料庫管理技術的一次重要飛躍。該版本引入了一系列人工智慧 (AI) 驅動的功能,旨在進一步簡化操作流程並提升工作效率。這些功能讓使用者能夠輕鬆處理複雜的資料分析,並實現更智能的商業決策。 Navicat Premium 一直以來都是資料庫管理的佼佼者,該工具支援多達九種資料庫,包括 MySQL、PostgreSQL、MongoDB、MariaDB、SQL Server、Oracle、SQLite、Redis,以及 Snowflake。這樣的綜合性設計不僅消除了多平台切換帶來的困擾,還極大化了使用者的工作效率。 為提供更高效的協作工具,Navicat 雲端功能 (Navicat Cloud) 進一步提升了團隊合作的靈活性。使用者可以在雲端實現即時協作,讓團隊成員無論身處何地,都能共同編輯與管理項目,從而實現更高效的工作流程。 自創立以來,Navicat 已累積超過 500 萬次下載,並擁有超過 18 萬名使用者,包括多家知名的 Fortune 500 公司,如 Apple、Google、JP Morgan 等。這些成就不僅體現出 Navicat 的產品實力,更說明其在業界的深厚信譽。 Navicat 始終秉持創新與使用者導向的理念,致力於為資料管理提供最可靠、高效的解決方案。未來,我們將持續推出更多令人興奮的新功能,幫助使用者應對不斷變化的商業需求。 現在就探索 Navicat 17.2,感受 AI 技術帶來的全新資料管理體驗吧!欲了解更多資訊,歡迎造訪我們的官方網站: https://www.navicat.com.tw

利用 Jitsi 建立個人化的視訊會議平台

  近期因為疫情的關係,越來越多企業開始實施分流或在家工作,視訊會議的需求也日益增加。 在商用解決方案選擇上,有不少企業會選擇知名品牌的產品,例如  Cisco Webex 、 Google Meet 、 Microsoft Teams 、 Zoom  都是很不錯的方案。 KKBOX 集團在去年便試行及做好充分 work from home 的準備,今年五月也因應疫情升溫,全員 work from home 至今兩個月有餘。 當然,取之 Open Source,也要對社群有些貢獻。在這一屆 COSCUP,我們要來介紹 Open Source 圈中也很知名,效果也很不錯的一套視訊會議平台: Jitsi 。 除了基本的視訊會議功能外,在最後我們也會示範如何透過 Jitsi 畫面輸出到 YouTube/Twitch 或其他支援 RTMP 的平台進行直播。 由於篇幅有限,且 Jitsi 可以調整的細節非常多。今天我們純粹很快速的示範,如何簡單的建置出一個 Jitsi 環境,並提供單場會議內容錄影或直播。 Jitsi 的文件可以在 這裡 找到。 今天透過 AWS Lightsail 的 $10/month instance(1 core CPU + 2GB RAM + 60GB SSD),作業系統則是 Ubuntu 20.04 來示範。當然,使用其他 VPS 亦可,大同小異,這邊直接跳過 VPS 相關的建置過程。 *firewall 相關資料參考 這裡 及 這裡 。 針對系統做必要的更新 基本的 apt repository 更新: $ sudo apt update 因為後面要示範的會議錄影及直播需要使用 ALSA loopback device,如果是 EC2 or Lightsail 則需要額外安裝 generic kernel( 註 ): $ sudo apt install linux-image-generic linux-headers-generic linux-image-extra- virtual 接著做系統套件們的更新: $ sudo apt dist-upgrade $ sudo apt autoremove 如果是 AWS EC2 or Lightsail 則需要另外再將預設的 AWS optimized kernel...