又是一年「金三銀四」,在此為今年校招的同學準備了一份筆面試經驗大禮包。
去年我發過一篇 論機械狗如何硬卷算法崗,主要是機械轉網際網路的經驗分享。
本文主要面向搜推廣nlp崗位的同學。
總體而言,個人認為算法崗要找的好,除了本身的長期積累沉澱的硬實力之外(Paper,比賽,實習,項目),主要考核的就是兩個方面的能力:基礎紮實程度和前沿知識廣度。
文章内容包括四個部分:基礎能力(基礎紮實程度)、搜推知識(前沿知識廣度)、nlp知識(前沿知識廣度)、總結。其中,基礎部分變化不大,前沿知識部分相較于我當年校招時變化較大,在此做了更新,希望能夠幫助到大家。
1. 基礎能力
1.1 Coding基礎
Leetcode刷200題+劍指offer(可在牛客網刷),尤其是連結清單、樹、動規。做資訊競賽的可忽略。這部分其實在筆試階段和一面階段都會涉及,是考核基礎能力的關鍵一環。尤其是一面的時候,如果沒有做出來代碼題,其實挺影響面試官給分的。題目難度視具體情況而變,大部分情況下"中等題"即可,當然實習和校招、不同公司都會有所差别。如果是博士,這個環節可能不會做硬性要求。
1.2 機器學習基礎
機器學習基礎變化不大。當年我主要看的李航老師的統計學習方法(LR,SVM,EM,最大熵,內建學習等)),值得反複看好幾遍,每一遍都會加深了解;尤其是學習理論:貝葉斯決策理論/假設空間概念/經驗風險, 結構風險/各類損失函數之間的差別與聯系/極大似然估計, 最大後驗估計, 貝葉斯估計的差別與聯系。此外,還涉及一些通用的基礎能力,例如:
- 樹模型系列論文深入了解,gbdt,xgboost,lightgbm,catboost;
- 深度學習基礎:過拟合問題、收斂性問題,dropout,bn,ln等;學習器,各種optimizer原理及對比;BP原理;各種激活函數等,最好用numpy手寫一遍MLP,包括train+infer。
- 評估體系:Precision, RecallF1, AUC, ndcg,涉及如何選擇、名額的内涵、名額和樣本分布關系、離線驗證等。
這個部分重點關注原理+推導。
關于面試重點:
- 樹模型知識:很愛問的知識。推薦wepon大神的總結:GBDT算法原理與系統設計簡介:http://wepon.me/files/gbdt.pdf,這份資料似乎連結打不開了。
- 貝葉斯決策理論個人覺得非常重要,是機器學習/深度學習等各類學科的基礎。這裡頭最重要的MLE, MAP, 貝葉斯估計的差別與聯系,參考李文哲老師的總結:機器學習中的MLE、MAP、貝葉斯估計
1.3 數學基礎
數學題,比如貝葉斯公式算後驗機率(求機率),優惠券收集問題(求期望),蓄水池問題(采樣)等。還包括一些偏智力的題。這類問題主要難在了解題意,對數學中的機率/期望/微積分/極限等知識點會有些要求。之前看到的部分機率題總結,排版有點問題,湊合着看一些題型。有時間可以複習下概統、線代等課程,沒時間可以看看别人的總結,比如: 網際網路面試機率題總結
1.4 工程/大資料基礎
如大資料處理或分布式系統原理等。對于大資料題,如:海量資料求中位數等,主要涉及到哈希,堆,bit等資料結構,外加map-reduce程式設計範式的靈活應用。這類題型的總結百度一下非常多。
2. 搜推廣知識
找搜尋推薦廣告崗位的同學,這部分的學習要同時關注工業界和學術界,盡量從工業界的應用入手,來看看都用了哪些學術界的成果。這部分在面試過程也是必考核的點。
2.1 按照模型演進
- 傳統的方法:LR+GBDT(facebook文章),FM,FFM,LambdaMART。
- 深度學習的方法:Youtube DNN,Wide & Deep,DeepFM,DIN等。
- 圖模型在推薦上的應用:GE、GNN。
可參考我的萬字推薦系統/排序學習和圖模型調研(推薦閱讀⭐)
- 推薦系統調研:http://xtf615.com/2018/05/03/recommender-system-survey/
- 排序學習調研:http://xtf615.com/2018/12/25/learning-to-rank/
- 萬字長文 | 圖表示學習中的Encoder-Decoder架構
2.2 按照系統漏鬥
筆者近年來閱讀過的經典文章,值得讀一讀,對面試很有幫助。
查詢了解:搜尋上重要子產品
- 業界盤點|Query了解在搜尋中的落地技巧
- 全面了解搜尋query:https://zhuanlan.zhihu.com/p/112719984
召回:主要涉及向量化召回、樣本選取的藝術、雙塔模型、多興趣召回,還涉及模型索引聯合模組化等
- 樣本構造:負樣本為王:評Facebook的向量化召回算法,召回模型中的負樣本構造
- 向量召回:KDD’21 | 揭秘Facebook更新版語義搜尋技術,KDD’21 | 淘寶搜尋中語義向量檢索技術
- 多興趣召回:推薦系統多興趣召回最新進展
- 雙塔召回:雙塔召回模型的前世今生(上),雙塔召回模型的前世今生(下)
- 模型索引聯合模組化:阿裡深度樹比對召回體系演進,位元組跳動Deep Retrieval召回模型筆記,TDM到二向箔:阿裡媽媽展示廣告Match底層技術架構演進
粗排:涉及全鍊路一緻性、雙塔粗排、對比學習、蒸餾等
- 阿裡廣告技術新突破:面向最終目标的全鍊路一緻性模組化
- 久别重逢話雙塔
- 張俊林:從對比學習視角,重新審視推薦系統的召回粗排模型
- 知識蒸餾在推薦系統中的應用
精排
- 阿裡媽媽搜尋廣告預估模型2021思考與實踐
- 萬字長文梳理CTR點選預估模型發展過程與關系圖譜
- 你真的懂CTR模組化嗎?
- 阿裡媽媽搜尋廣告瘦身之路?
重排
- 重排序調研
- KDD’20 | Airbnb搜尋多樣化重排序
可以關注一些公衆号:推薦道、阿裡媽媽技術、美團技術團隊、RUC BOX、DataFunTalk、機器學習與推薦算法、圖與推薦等,了解業界最新動向。
2.3 按照技術方向
特征工程
- 談推薦系統特征工程中的幾個進階技巧
特征互動
- 一文梳理基于Graph的特征互動在CTR預估中的應用
- 特征互動新路線|阿裡 Co-action Network論文解讀
多目标模組化:ESMM、MMoE、ESSM,PLE等。
- 多目标學習在推薦系統的應用: https://zhuanlan.zhihu.com/p/291406172
- 【推薦系統多任務學習MTL】ESMM 論文精讀筆記(含代碼實作)
- 【推薦系統多任務學習MTL】MMoE論文精讀筆記(含代碼實作)
長短期序列模組化:DIN、DIEN、SIM、MIMN等。
- 淺談行為序列模組化
- 使用者行為序列模組化方法調研
- Recsys’21 | 基于Transformers的行為序列模組化
多興趣模組化:MIND、ComiRec等。
- 推薦系統多興趣召回最新進展
圖模型
- 2W字長文:漫談圖神經網絡推薦系統
對比學習
- 談推薦場景下的對比學習
- 張俊林:從對比學習視角,重新審視推薦系統的召回粗排模型
冷啟動
- 新使用者冷啟推薦技巧總結
- 冷啟動系統優化與内容潛力預估實踐
多模态
- 十篇文章速覽多模态推薦系統的最新進展
因果推斷
- 快手因果推斷與實驗設計
- 清華崔鵬 | 因果推斷發展、思考和推薦系統應用
其它的方向:模型蒸餾,糾偏、跨域推薦、元學習、多模态等。
關于技術方向,推薦公衆号 ReadPapers。據我了解,能夠非常及時的推送最新的搜推廣新文,雖然隻是資訊的采集,沒有深入的解讀,但是對于想快速跟進前沿的同學來說很棒。
2.4 實戰
深度CTR模型開源項目:
- DeepCTR: https://github.com/shenweichen/DeepCTR,可以深入了解各類state of the art的模型以及實作代碼細節。
圖模型開源項目:
- DGL:Aws開源更新的更頻繁,支援多種深度學習架構,可能更值得關注;
- PyG:斯坦福開源的pytorch的架構;
- PGL:百度開源,PaddlePaddle寫的;
- Euler:阿裡開源的,可以細緻觀看各類Encoder實作 (如ShallowEncoder, SageEncoder等);node2vec實作;底層C++圖引擎可以關注random walk和alias sampling的實作。僅作為學習。這個架構維護的不夠及時,靈活性以及分布式實作上仍然存在很多不足。
各大Top賽事開源方案:
- KDD 2020 Debias推薦賽題冠軍方案
- KDD 2021 圖模型OGB-LSC開源方案:https://ogb.stanford.edu/kddcup2021/results/
可以關注一些競賽大佬的公衆号:比如”包包的算法筆記“、”kaggle競賽寶典“。
3. nlp知識
這部分新工作也是層出不窮,個人可能也沒有follow的很快,可能遺漏了一些,可以參考下。
- nlp常見的概念:詞法、句法、語義等;困惑度等。
- 了解重要的四大類nlp任務:分類任務、序列标注任務、句子關系判斷任務、生成式任務。
- 傳統的模型:語言模型、HMM、CRF、LDA等;當年會問,現在可能不一定會問。
- 深度學習模型:RNN, Seq2Seq,Transformer。
- 預訓練模型,涉及傳統非上下文感覺的word2vec系列 (如Glove和PPMI等)、上下文感覺的BERT系列、Prompt Tuning、大模型、多模态等。
- 邱錫鵬老師的survey:PTMs| 2020最新NLP預訓練模型綜述
- 從Word Embedding到Bert模型—自然語言進行中的預訓練技術發展史: https://zhuanlan.zhihu.com/p/49271699
- 放棄幻想,全面擁抱Transformer:自然語言處理三大特征抽取器比較: https://zhuanlan.zhihu.com/p/54743941
- Prompt Tuning:劉知遠老師的分享,Model Knowledge Stimulation with Prompts for Pre-trained Language Models:http://114.215.64.60/~lzy/talks/2021_prompt_tuning_en.pdf
- 大模型:清華劉知遠:大模型「十問」,尋找新範式下的研究方向
- 多模态預訓練:從頂會論文看多模态預訓練研究進展
- 預訓練在工業界的應用:相關性模型、互動式BERT/雙塔BERT、模型蒸餾、命名實體識别、查詢了解等。
- 對比學習:丹琦女神新作:SimCSE
- 近年來的其它熱點方向,知識圖譜,問答QA統一模組化,預訓練在圖像上的應用MAE;MLP/CNN/Transformers之争;
- 最後推薦一個從各個應用方向出發,follow最新SOTA的網站:http://nlpprogress.com/
可以關注一些nlp大佬的公衆号或部落格:蘇劍林的部落格、夕小遙的賣萌屋、李rumor、高能AI、NewBeeNLP等。
總結
最後總結下,個人認為算法崗要找的好,除了本身的長期積累沉澱的硬實力之外(Paper,比賽,實習,項目),4者至少取其二。
主要考核的就是兩個方面的能力:
- 基礎紮實程度(程式設計coding基礎;ML/DL算法的數學基礎):基礎紮實意味着圍繞某個知識點,面試官不管怎麼問,都難不倒。目标是應對筆面試過程中coding以及對知識深度的考察。
- 前沿知識廣度(follow時下科研趨勢,如GNN,BERT,知識圖譜,對比學習,因果推斷等;以及了解工業界中推薦/搜尋/nlp的整體應用和流程等)。以應對面試中的對知識廣度、開放性問題的考察。