資料科學家 James:數位產品讓人上癮的秘密是推薦系統

全文

現代人的生活似乎已經遠離不了數位工具,每天一起床就打開手機,滑開 Facebook 或 Instagram 動態牆,看到有興趣的主題再到 Google 搜尋相關資料,或是連到 YouTube 看更多深入的影片,再回過神來可能是一兩個小時之後了。社群平台讓人們那麼著迷的原因到底是什麼?為何現代人愈來愈離不開網路世界?

答案可能是社群媒體背後的推薦系統及演算法 —— 不僅比爸媽更了解你,甚至比你自己更了解自己。它們總是推薦你最關心的朋友動態,牆上出現的總是符合你胃口的音樂、電影或是政治人物的貼文,甚至在你意識到自己感興趣的商品前,先推薦相關廣告給你,不知不覺間你也開始搜尋這支產品的更多資訊。

推薦系統透過搜集使用者行為,預測使用者是哪種人

畢業於台大電機所電腦科學組,曾任台積電 Data Scientist、Yahoo! Software Engineer 的 James 在 Hahow 新開的課程《Python 推薦系統入門: 打造令人上癮的產品》就揭露了科技巨頭如 Google、Facebook、YouTube、Instagram 是怎麼透過強大的推薦系統讓使用者黏著在他們的科技產品上。

一、Google

Logo, Google Sydney

透過許多免費的服務大量搜集使用者資料,如 Google Search、Gmail、Google Map、Android 系統等,不斷優化廣告推薦系統,讓 Google 的廣告成效比其他競品更為精準。舉例來說,Gmail 是許多人每天都在使用的工具,Google 可以透過機器學習的程式去讀取使用者在 Gmail 的信件,進而知道使用者在『線上』的各種行為,像是從網購平台如 Amazon 買了哪些商品、最近在哪些網站如 Tinder 註冊新會員等。另外,Google Map 則是整合了『線下』資訊,透過好用的 Google 導航功能, 知道使用者喜歡在哪些時段去哪種類型的餐廳,像是週末偏好去酒吧喝一杯,以及在哪些商店停留多久。透過整合大量『線上』及『線下』資訊精準掌握使用者輪廓,並用強大的機器學習程式去推薦使用者可能感興趣的廣告。

二、Facebook

facebook.com mobile page on a mobile Safari browser

Facebook 用戶小馬有 500 位好友、追蹤 100 個粉絲專頁、參加 50 個社團,在登入 Facebook 的瞬間,可能有 1,000 個候選消息等著小馬。若是沒有推薦系統,這 1,000 則消息可能是以時間序列或是隨機的方式來展示動態消息,然而這樣的方式展示往往會造成使用者體驗不佳,無法有效延長使用者停留時間。

這 1,000 則消息存在著「好壞」或是「優先順序」的關係,但要怎麼定義『好壞』或是『優先順序』則是所有推薦系統最重要的第一步, Facebok 的公開演講 Serving a Billion Personalized News Feeds 中曾提出,動態消息的『好壞』是根據使用者的點擊率、按讚、留言、分享以及隱藏貼文這些行為分數,經由專家綜合評出一個權重來決定排序。

這些互動行為可以建立一個網狀圖形,利用現有的 Graph 算法,Facebook 可以很容易找到與你相似的一群人,並從這群人的行為來預測你的行為

舉例來說,假設今天你跟友人聊到馬保國最近的惡搞影音非常好笑,不久後打開 Facebook 發現竟被推薦了馬保國的相關影片,這並不是 Facebook 偷聽,而很有可能是你周圍的朋友(與你相似的一群人)已經事先看了很多馬保國的惡搞影片,Facebook 藉此精準預測你對這類型的影片有興趣。

social-media-3846597_1280

三、YouTube

Photo by Christian Wiediger / Unsplash

YouTube 的影片推薦清單被譽為是推薦系統中的經典。以往 YouTube 在做推薦時很直覺地採用 CTR (點閱率)作為指標,點擊愈高代表影片愈好,但後來 YouTube 發現若將這些影片放在推薦清單的前面,會變相鼓勵更多影片變成配上聳動標題與圖文的「標題黨」,讓使用者點進影片後很快就跳出,這與 YouTube 的盈利模式大有衝突(YouTube 的廣告收益在使用者觀看影片最久時收益最大),因此,YouTube 資料科學團隊將指標從點擊率改為使用者看影片時間的長短

而 2016 年 YouTube 發布的技術文件也詳細說明了 YouTube 如何在短時間內從幾十億部短片中篩選出使用者可能喜歡的 50 部,他們採用的是「導入兩階段模型」。

第一階段先以簡單的模型,力求快速地過濾大部分不適合的影片,接下來則以較複雜的 Deep Learning (深度學習)模型,從少量如 200 部候選人影片中篩出更精準的 50 部影片,再輔以觀看時間長短排序,基本上這種做法也被各類型的科技公司採用,如阿里巴巴、Fabebook、Instagram 等。

「在實作時會發現在業界真實環境中模型常常都不是使用最好的那一個,模型的反應時間反而更為重要,譬如 YouTube 跑推薦影片,若反應時間超過 1 秒或更長,使用者可能就會不耐煩想要離開服務。」James 提醒。

推薦系統讓同溫層太厚,探索式推薦系統興起

目前主流的推薦系統偏向「讓使用者看到更多可能會喜歡/感興趣的東西」,這也造成現在為人詬病的同溫層太厚問題。

大家漸漸不知道自己舒適圈外的世界長什麼樣子,為解決這樣的問題,Instagram 「探索式的推薦系統」正在興起,這種系統能夠給使用者「有點相關但又不太相關」的內容。

聽起來有點抽象,舉例來說,某位使用者可能是長期吃美式料理的美國人,今天逛 Instagram 探索頁面時,系統可能會推薦他部分台式料理,但台式料理如果直接推薦到臭豆腐可能就不太適合,這種分寸、尺度的拿捏,Instagram 是透過使用者在平台上眾多的行為,如喜歡、儲存貼文、留言、或選擇再也不想看到這則貼文等配上不同的權重算出一個分數,利用這個分數去定義何為適合推薦的內容。這個指標是充滿彈性的,可能目前權重分佈所定義出來的分數為「用戶參與度」,產品團隊也隨時能依據商業策略做算法的調整,譬如讓按讚數的比重升高,造成「可能會被按讚」的貼文排序再更前面。(詳情可參考這篇 《Instagram 推薦系統介紹 - 分析IG探索頁面的個人化推薦算法》一文)

由於推薦系統發展迅速,各大科技公司皆投入大量優秀工程師、分析師不斷優化模型,使用者的行為愈來愈能夠被精準預測,歐美國家政府紛紛跳出來指責科技公司搜集太多使用者個資,並以此賺取巨額的商業利益,甚至去影響使用者的判斷、行為等。也因此,歐美國家紛紛祭出新的法律,像是歐盟的個資法規 GDPR 以及加州消費者隱私保護法 CCPA 等禁止瀏覽器在未經過使用者同意前透過 Cookie 追蹤行為,造成之後個人化的推薦系統可能因為 Cookie 的搜集過程有斷裂無法太準確

另外,像是最近熱議的假新聞傳播問題,Facebook 也調高政治類貼文下廣告的門檻等。同時,事實查核也是各大社群平台開始重視的機制,如 Facebook、Twitter,力求在讓使用者看到「真實」又「可能會喜歡」的內容。

一個好的資料科學工程師需要有強大的實作能力及好奇心

談完了頂尖軟體公司如何做推薦系統,James 開始分享自己是如何在資料科學領域中學習到一定程度的歷程。

「當初在學時我自己也是花了很多時間相關資料,幾乎市面上所有熱門的書籍還有線上課程我都有買回來看。透過大量閱讀這些資料再加上實際寫程式練習,才慢慢掌握機器學習以及推薦系統方面的知識。」

James 坦然表示當初決定要走機器學習領域是因為目前相關技術非常熱門,以職涯角度思考很適合好好投資,於是當時的他買了市面上非常多機器學習相關的課,包括著名教授林軒田、吳恩達老師開的課,但後來有感學校開的課仍偏理論,像是艱深的微積分數學推導及證明等,但就自己在業界一段時間後,發現工作上遇到的都是比較應用層面的技術,考驗的是要怎麼在短時間內套用現有的機器學習模型,並實作一個可接受的 prototype 讓同事或主管快速看到成果。

如目前有一堆晶圓報廢了,要如何快速預測是哪些站點或機台的問題,幫助減少前線製程工程師的除錯時間,或是該怎麼在短時間內做出一個的簡易的推薦算法以提升廣告的點擊率。

Notebook work with statistics on sofa business

學完資料科學的下一步:職涯方向規劃

學完資料科學的下一步可以考慮的職涯方向,James 指出目前相關職缺分為三大領域:

一、Business Intelligence Analyst (商業數據分析師)

這種類型的工作重視商業分析能力,不需要寫太多程式,但要有用 SQL 撈資料產出對應報表的能力,現在這個職位面試常會遇到白板程式面試的關卡,建議有興趣的同學可以多刷 LeetCode 上面 SQL 的題目。

二、Machine Learning Engineer(機器學習工程師)

機器學習工程師除了對機器學習的模型要夠熟悉外,這類職缺多半會強調工程背景,也就是 coding 的硬實力。

面試經常會直接考程式算法,因此也要多多刷題,但這多半只是第一關而已,迎面而來的可能還有後端系統設計、機器學習系統設計等問題,像是設計整個推薦系統、如何搜集資料、製作模型,或是怎麼訂立模型指標等,這也是 James 目前的工作。

「我當初準備面試時也是經歷過拼命刷題的時期,正常人要準備 3-6 月才會有基本的程度可以去求職,若想要再往上提升,可能要準備到一年才有可能在 30-60 分鐘的面試時間解完題目。」

有感於實作能力的重要,James 除了開始在 Medium 上分享自己的學習歷程外,也在 Hahow 一連開了兩門機器學習的課程《Python 資料分析&機器學習入門》及《Python 推薦系統入門: 打造令人上癮的產品》。透過課程讓大家可以直接跟著 James 的腳步透過業界第一線的觀察收納,掌握最實際的案例、技術。

三、Machine Learning Researcher (機器學習研究員)

相對於前面兩種職缺,這種類型的職缺是最少、也是門檻最高的,通常只收名校畢業的博士生,或是有發表過許多學術 Paper 的人。這種職缺通常是由頂尖科技公司的研究單位如 Google Brain, Facebook AI 所開設的,專門研發下一代的機器學習模型。

要怎麼當一個好的機器學習工程師?

以 James 的標準,有以下三項必備項目:

  • 有夠強的實作能力,這是硬實力,機器學習工程師的職位普遍都需要考算法題,題先刷起來就對了。
  • 機器學習相關知識,對於常見機器學習模型的原理以及機器學習系統設計有基本的了解
  • 好奇心,對資料分析結果延伸出來的商業邏輯需要感到好奇、想要理解,要知道市場機制是如何運作的,做出來的東西才能符合使用者需求。有時候工程師會發現數字指標突然下降或攀升,都要有主動找出原因的熱情。
Binary HTML/CSS Javascript source code for webdesign. Made with analog vintage lens, Leica APO Macro Elmarit-R 2.8 100mm (Year: 1993)

雖說資料科學的人才現在十分熱門,但 James 一針見血地說:「台灣以中小企業為主,員工數在 100 以下規模的公司可能比較沒有資源發展資料分析,因為資料分析帶來的成效就是比現有的成效再好一點點,大部分的問題套用現成模型可能就有 80 分了,今天養一個資料科學團隊可能可以進步到 90 分,但要在這 10 分的進步中取得巨大收益的話,重點還是公司規模要夠大,譬如說產品的會員數已到百萬等級或是公司年營收破億以上。」

若要在公司內由自身發起導入資料分析的話,「不要一開始就想用很厲害的深度學習模型,較好的做法是先導入最簡單的規則,譬如說推薦內容暫時用隨機的方法,先把資料流從搜集、分析串起來,通常這在正式產品環境中就會花掉很多時間了。串完後再去把前面的推薦內容從人訂的 rule based 算法改為比較簡單的機器學習模型,像是 logistic regression 或是 tree base 的模型(速度快、可解釋性高)。」Facebok 一開始的動態牆其實也只是用貼文發佈時間遠近排序,慢慢才加上愈來愈多的規則權重,後期導入機器學習以及深度學習模型,同時輔以大量的 A/B Testing 不斷優化模型才取代傳統的推薦做法,所以導入資料科學切勿想要一步登天。

以 James 的觀察,資料科學的下一步發展亮點應該是區塊鏈產業,主要是區塊鏈上的數據都是公開透明、不會有部分資料是隱藏起來的,因此可以做非常多的分析應用,目前有很多的公司開始在用區塊鏈的技術追蹤金流、分析鏈上的交易數據,獲得大量的營收。另外針對各種詐欺行為以及駭客攻擊也可以即時偵測到,若能及時分析到這些事件也能進行許多套利行為。

想要成為資料科學家嗎?從這門超級實用的《Python 推薦系統入門: 打造令人上癮的產品》開始,你也可以成為打造讓人上癮數位工具的幕後功臣!

採訪、撰稿編輯:Lika

--

延伸閱讀:

留言