Dcard Tech Blog

Written By ML team lead Bruce

這個系列想要分享在 Dcard 裏面機器學習專案在開發途中的一些經驗,希望可以在分享的途中也跟各位業界的同好們一起討論切磋。

作為系列文的第一篇文章,今天這篇文想分享的事情是在 Dcard 裏面做機器學習的工程師們,在開發一個新的專案或是接一個關於機器學習的新需求之前,運作的流程大概是怎麼樣子,進而讓整個機器學習的專案進行更加順利,也可以讓機器學習的成果跟專案想要交付的價值更加緊密。

一開始會想先寫這個主題的原因是,其實我們平常在機器學習課程裡面,已經學到很多關於各式各樣機器學習演算法的知識以及技巧 / 思考模式。而實際在工作或是應用在專案上面的時候,時常團隊會遇到結果跟產品想要的似乎有一些出入,難以很自然融入產品的狀態。這個狀態其實並不是演算法不夠好或是不夠熟悉演算法,我們自己常常追根究底之後發現,問題的核心常常是在前期需求釐清或是定義問題的時候不夠完善,導致一頭洗下去做到中後期才發現牛頭不對馬嘴的狀態。

在 Dcard 裡,我們在初始一個新的機器學習專案的時候,會切成以下 6 個步驟去做討論跟思考,前 2 個步驟會跟需求方大量的來回討論,中間 3 個步驟會跟同專案的同事們一起做大量的討論,凝聚共識之後再開始開發和迭代整個專案。

圖一:機器學習專案流程

本篇會先著重於如何跟需求方收斂共識及轉化問題的過程(也就是 Step1, 2),在下一篇探討實際開發專案之前,需要先做大量思考,讓後續專案走得更順暢。

Step 1. 思考產品目標

在 Dcard,機器學習專案的產生常常會是由需求方(通常是 PM)帶著他們想要解決的問題或是預設的解法來跟 ML 團隊討論,而討論新專案時,我們首先會反覆跟需求方釐清目標,確認做哪些事情能幫助他們達成目的。以下為假設情境:

PM:嗨嗨我們想要做個文章推薦系統,讓使用者能夠看到他喜歡的文章

ML Team:做推薦系統想要達成的目的是什麼?

PM:希望使用者都能夠在這個 App 找到自己喜歡的文章

ML Team:那會用什麼指標來定義「使用者喜歡」這件事情?

PM:🤔 🤔 🤔 🤔 🤔,應該是點擊率或是日活躍率吧?覺得看越多或越常上線應該會越喜歡這個產品

ML Team:那對 PM 來說,這兩個指標哪一個會比較重要呢?

PM:可能是點擊率

ML Team:那我們做推薦系統的話就會以提高點擊率為目標優先

在 PM 提出需求的過程中,我們跟 PM 去共同探討做推薦系統這個專案的目的,從比較 high level 的「希望使用者可以在 App 裡找到自己喜歡的文章」進到比較指標層級的「優化點擊率」的過程。而在比較進階的專案程度裡,討論的深度會越來越深入,例如上面在 PM 點出他們現階段比較重要的是點擊率的同時,可能會順便做一些資料分析去幫助我們更確定最佳化點擊率,可以跟我們想最佳化的使用者體驗掛上勾。

另外值得注意的是在和 PM 來回討論時,除了釐清需求外,更重要的是排序這些需求的重要程度(像是在例子裡一開始會提到多個指標)。在同時有很多個目標的情況下,不太可能兩全其美,我們會依據現況去跟 PM 討論,並探索真的對目前最重要的指標,專門去最佳化這個指標。

Step 2. 把產品目標轉化成機器學習問題

釐清目標需求之後,我們會怎麼將需求轉化成機器學習可以解決的問題?

在上一步裡,我們確認了當前最想最佳化的指標是點擊率,接下來會把最佳化指標去轉換成機器學習較為擅長解決的問題。這邊以提升推薦系統點擊率為例,通常我們會去觀察使用的情境,進而設計問題。例如在文章推薦的狀況下(以圖二為例),通常使用者如果對推薦文章的其中一篇感興趣的話會去點擊,自然而然就可以把這 6 篇文章當成是 5 個曝光和 1 個點擊。

Dcard Tech Blog

Dcard Tech Blog

Binding Generations. Breaking Limitations. Building with Passion.