LINE Corporation 於2023年10月1日成爲 LY Corporation。LY Corporation 的新部落格在這裏。LY Corporation Tech Blog

Blog


資料工程團隊 TECH FRESH 實習生活分享

介紹

嗨大家好,我是Eric Su,是在 LINE 台灣 Data Dev Team 的一名 TECH FRESH。LINE 台灣在 TECH FRESH 的計畫中投入相當多的心力來幫助同學提早面對真實世界的挑戰、開發出有效的解決方案、並能針對結果進行分析。我不僅有機會可以跟許多擁有豐富經驗的工程師們一起合作,也有許多跟其他團隊交流的機會。當解決方案能夠有效提升各種服務的指標時,我很高興能夠參與其中,也更有動力繼續提供更好的解案。我在 LINE 台灣學到了很多、認識了很多朋友、也參與了許多專案,我也想藉由這個機會跟大家分享這段美好的經歷。那我就從最初的投履歷階段開始講起了。

求職階段

招募資訊

LINE 台灣都會定期舉辦一些 Meetups,其中有一些就是專門針對學生的校園 Meetups。但我其實是在進到 LINE 台灣實習之後才知道有這些活動的。我自己本身是從同學以及求職網站上認識到這個實習機會的。

當我看到 LINE 台灣有在徵 Data 相關的實習生,我就開始把過去在學期間的專案整理了一遍,並希望能夠為自己爭取到這個學習的機會。我從以前就在思考大企業要怎麼管理並運用自己的資料,LINE 台灣擁有這麼多的使用者,絕對是一個絕佳的學習場所。我也藉由這個機會重新審視一下這幾年來相關的專案並著手撰寫我的履歷。透過相關課程表現、專案、以及研究,我展示了對這個領域的熱誠。而過了幾個禮拜後,我也順利收到了 HR 的來信,正式進入下一個階段。

小型程式專案

許多公司的面試往往會透過出白板題,或是請你線上完成幾道程式題目來測試申請者的程式能力。然而,LINE 台灣卻是請大家透過一週的時間完成一個小型的專案。

而本次的專案是請大家開發一個 LINE Chatbot 來介紹自己。我原本沒有開發聊天機器人的經驗,因此本次的專案可以說是從頭開始學習。我透過這個專案學到了很多,我花了不少時間研究 LINE Chatbot 有什麼功能可以增進使用者體驗,也因此暸解到聊天機器人不僅僅是個偵測到某些關鍵字就給予一些預設文字回覆的工具而已,而我也相信一個好的聊天機器人是需要使用者回饋的。

因此,我也收集了一些朋友的回饋,並針對一些功能或介面進行優化。當中,我認為讓我的專案進步很多的回饋是覺得可以添加一個Rich Menu,不僅介面上更加優美,也讓使用者體驗大幅提升。因此,我快速地開發出修正版的專案,而結果也比我原本預期的還要好很多。過了幾個禮拜以後,我也成功收到了 LINE 台灣的面試邀請。

面試

在面試前,我準備了自我介紹並把我履歷上的專案及研究內容都稍微在看過一遍,確保我很清楚我在每一個專案之中扮演的角色、遇到的困難、以及如何克服難關。滿特別的是面試當天同時有三個團隊在面試我。我向他們說明了幾個他們比較感興趣的專案以及研究,其中,自然語言處理相關的研究被問了最多的問題,而這也滿理所當然的,因為我進到 Data Dev Team 之後發現他們其實花滿多心力要開發一個自然語言處理平臺的。

大部分的面試時間都用來讓我詳談一些自身的專案與研究的經驗,很有可能因為同時有三個團隊在面試,時間比較緊湊,我沒有被問到其他額外的問題。每一個團隊的 Team Lead 也都花了一些時間介紹他們近期在做的專案,而我也把握了這個機會問了不少問題。我對也些專案滿感興趣的,我也不想浪費這個可以詢問的機會,暸解團隊在進行開發時的思維模式以及他們如何去解決這些問題。這是一次相當有趣的面試體驗,而最後反而比較像是在針對專案進行討論。我很喜歡大家願意接受別人的想法但同時也會發表自己看法的感覺,我在進入 LINE 台灣之後也深刻體會到他們其實滿看重這一點的。我之後也成功了獲得了錄取通知並展開了我在 LINE 台灣的全新旅程。

專案

MarTech

我在整個實習生涯中投入最多心力的就是 MarTech(Marketing Technology) 了。MarTech 就是希望透過科技的力量或大數據分析來提升行銷的成效。在面試期間我就對這個領域很感興趣了,而我也很慶幸在加入這個團隊之後能有機會參加一個這麼有趣的專案。

而我剛接觸這個專案時就遇到了一個滿大的問題,就是資料不均衡的問題。雖然學校專案中也遇過類似的問題,但現實世界中的資料不均衡遠比我想像中的嚴重。要克服這個問題,就要使用不同的取樣方法並使用另外一個損失函數來比較他們的效果。

雖然 Downsampling 以及 Upsampling 都是讓資料樣本數更加趨於均衡的常見方式,然而,Upsampling 會導致資料量大幅增加並進而拉長訓練時長。Downsampling 不僅可以縮短訓練時間,也可以達到與 Upsampling 近似的效果。考量到資料量本來就已經很大了,因此最後選用了 Downsampling 作為取樣的方式。另外,透過將損失函數改成 Focal Loss Function,模型的表現更是可以獲得顯著的提升。

在另外一個專案中,分群方法也被用來將用戶區分成不同的類別。雖然我們目標是想根據用戶的特性將他們區分成八群,但卻很難界定分界點應該要劃分在哪裡才比較適當。我透過常用的 K-means clustering 並結合 Hierarchical Clustering 的方式,提出了一個在 offline evaluation 取得不錯表現得分群方式。透過這些 MarTech 相關的專案,我學習到了如何將客戶資料做有趣的應用並進一步根據這些結果去更改策略。

自然語言處理應用

LINE 台灣的 Data Dev Team 開發了許多自然語言處理相關的應用,而我參與了 fine-tune GPT2 模型來實踐換句話說的專案。這樣的模型可以幫助未來在開發自然語言處理模型時遇到訓練資料不足的問題,先透過換句話說的模型進行 data augmentation,一併將資料拿來訓練可以提升主要模型的表現。

雖然我開始著手進行這個專案的時候就已經有一個訓練好的模型了,但這個模型會有一直不斷重複產生文字不會停下來的問題存在。我透過資料前處理,甚至將 attention 進行了視覺化,來試圖解決這個問題。

但經過了這麽多的嘗試,我才發現這個問題的主因是因為程式邏輯上的錯誤,並不是模型訓練得不好。雖然我最後花了過多的時間才解決這個問題,我也協助完成了視覺化 attention 的功能,這項功能可以幫助使用者暸解模型是根據什麼去產生下一個文字的。另外,我也藉由了這個機會暸解 fine-tune GPT2 模型的程式架構,有助於之後運用 GPT2 進行更多類似的開發。

可解釋性 AI

我一直都知道機器學習模型往往可以做出不錯的決策,然而有時候他會為了優化表現而做出一些不符合社會期待的決策。為了偵測出這些決策,可解釋性 AI 就成了一個我們必須關注的主題,而我也有幸能在我實習期間參與這樣的專案。此專案我們主要運用了 SHAP 這個套件,我與另外一位 TECH FRESH 合力將此套件運用在團隊過去訓練好的模型上。雖然第一次使用時遇到了很多問題,花了很多時間才研究好要如何套用在我們的模型上。但第一次成功之後,套用到其他模型上就快了許多了。我們主要把這項應用用在自然語言處理的模型上。透過輸出結果,使用者可以看出模型是根據句子中的哪一部分才做出這樣的決策的,也可以依此作為衡量模型表現或是發現模型訓練時遭遇到的問題。雖然此專案還在起步的階段,但我期待它未來可以用來協助開發更公平的機器學習模型專案。 

活動

內部 AI 黑客松

LINE 台灣時常舉辦各式各樣的活動,而內部 AI 黑客松對我來說是一個特別的經驗。我不僅跟 Data Dev Team 的兩位資深工程師合作,也跟來自 Sticker 以及 BX 團隊的朋友一同完成專案。

我們開發出一個可以快速幫助使用者找出貼圖的系統。Sticker Team 常常會需要花費很多時間與心力解決客戶找不到貼圖的問題,這項專案不僅可以為他們大幅地節省時間,也可以透過推薦系統提升相關貼圖的銷售額。

我們在一個月的時間之內就完成了此項專案的所有主要功能,並配有良好的使用者互動介面。透過與不同專業的人合作,我暸解到團隊合作以及團隊內部成員多元性的重要性。我們的團隊在最後也拿下了第二名,而這也成為了我在 LINE 台灣相當寶貴的回憶之一。

TECH FRESH Monthly

TECH FRESH Monthly 也是一項我從中學到很多的活動。每個月都會邀請到講者來跟 TECH FRESH 們進行介紹。透過這些每月的聚會,我們不僅學習到公司內不同團隊所扮演的角色,也有機會向許多資深的工程師學習,其中甚至有待過很幾間科技公司的。

這些每月聚會提供了相當多很精彩的內容,而有其中兩次我認為對我的影響是較為深遠的。

  • 其中一次是 Sean Huang 的分享。他透過他豐富的工作經驗跟我們說明他在身為開發者的不同階段提升了自己哪方面的技能。而這些技能不僅僅是跟技術有關的,也有一些是跟溝通或是管理有關的技能。這也讓我想要多花一點時間從事開發以外的事並探索自己更多的可能性。
  • 另外一次讓我學到很多的是 Zephyr 的分享。他跟我們分享了 PM 所扮演的角色以及他在產品開發各個階段中的各種責任。透過他的分享,我學習到了身為資深 PM 所必須具備的能力。一位資深的 PM 不僅需要懂技術,也需要去暸解一項產品所能創造的價值。我一直都很喜歡產品設計與開發,而這場演講也讓我更加清楚地暸解到要讓產品開發過程更加順暢所必須培養的一些能力。

Meetups

因為疫情的緣故,我在 LINE 台灣的這段期間內並沒有舉辦很多場的 Meetups。然而,滿幸運的是在我最後的幾個月內,我有幸參加到其中一場活動。而我參加的那場活動主要是要向學生宣傳 TECH FRESH 這個實習計畫的。講者們幾乎都是現任的 TECH FRESH,介紹在 LINE 的生活以及可能可以先做好什麼準備才能踏上這段旅程。這項活動辦的很成功,會後也有很多人留下來問問題交流。透過這場 Meetup,我不僅認識到其他 TECH FRESH 的日常,也再次體認到 LINE 台灣在深入學生族群徵才這方面是做得多麽盡心盡力。

結尾

LINE 台灣提供了許多資源與機會給實習生們。從招募、培訓、到投入專案實作都是非常難忘的體驗。我也特別喜歡 Data Dev Team 的氛圍。透過每週的聚會,我發現 Data Dev Team 非常鼓勵大家踴躍分享自己的看法。每位團隊成員也都會在別人遇到問題時提供協助,而正因為如此,大家是一同在進步的。我非常慶幸在我大學生活的最後一年能夠加入一個這麼棒的團隊,我學到了很多在學校永遠都不可能學到的,而我也非常鼓勵大家可以把握這個機會嘗試看看自己是否也準備好面對並解決現實世界的問題了呢!

其他LINE TECH FRESH – 技術新星人才計劃相關內容可以參考其他的分享:

最後,如果對於加入 LINE 大家庭有興趣的各位,歡迎參考以下: