从实习生到算法专家,他只用了2年!
寫在前面的話
大家好,我是DOTA,我是朱翔宇。
回想這幾年走過的路感慨良多。于是乎提起筆,寫一下我這幾年的經(jīng)歷、感悟、收獲。給自己做一個階段性的總結(jié),同時也記錄一下我是怎么從“水暖建材行業(yè)子弟”重回“計算機行業(yè)”,又是怎么由一個“數(shù)據(jù)算法競賽小萌新”一步步成長,并取得一些成績的。
2015:回歸 | 回歸校園
2017:起始 | 開始于這個夏天
2018:入世 | 加入京東的第一年
2019:突破 | 突破自我 擁抱變化
2020:挑戰(zhàn) | 當打之年 一往無前
2015:回歸 | 回歸校園
2015年對我來說是一個特殊的年份。
這一年,我父親去世了。
這一年,我放棄了父親留下的公司和水暖建材生意。
這一年,我在本科畢業(yè)兩年之后,選擇了重回學校。
正如《平凡之路》中樸樹唱的一樣,我曾經(jīng)擁有著的一切,轉(zhuǎn)眼都飄散如煙。但人生本就如此,我們總歸會遇到一些自己不愿面對的事情,這也正是成長的意義。
在北科大讀研期間,有著明確目標和想要什么的我,從研一泡在圖書館到研二常駐實驗室,拋棄了所謂的生活與社交,并且最后畢業(yè)典禮我也沒去參加。在那時的我看來,我需要的是時間去彌補曾經(jīng)的空白,需要的是提升我對領(lǐng)域的全面認知,需要的是用忙碌來讓自己少胡思亂想。整個過程看起來很極端,但是對空白狀態(tài)的我來說,卻是極其有效的。
同時,我遇到了一個好導師,在陽小龍教授那里我學會了三件終身受益的事情。
(1)通過對文章一次次反復的修改、批注、修改、在批注的過程中,我看到了自己邏輯上所存在的問題,并逐漸形成了對全局和對細節(jié)的把控能力;
(2)相較于放養(yǎng)模式,從進入實驗室的那一刻,每周分享、總結(jié)、陳述的周會,養(yǎng)成了良好的自學和表達能力。在一種只有階段性目標,沒有細節(jié)控制的實驗室氛圍下,有了更多思考思辨的時間,也讓完成目標的方式有了無數(shù)種可能?!爸欢繕?#xff0c;不做計劃” 這一點也成了我沿用至今的前進方式;
(3)我曾經(jīng)有個階段是負能力爆棚的人,對看不慣的人和事,時常有負能力的表達,但正如后來陽老師提醒我的那樣,一個連自己情緒都控制不了的人,又能在未來走多遠呢?
2017:起始 | 開始于這個夏天
2017年的夏天,偶然的機會我接觸到了數(shù)據(jù)競賽,本科階段參加大學生數(shù)學建模競賽的我,對這種新的數(shù)據(jù)競賽形式充滿了好奇,于是,在一種好奇與自信的情緒下,我參加了2017年的“中國高校計算機大賽——大數(shù)據(jù)挑戰(zhàn)賽”。
賽題描述:鼠標軌跡識別當前廣泛運用于多種人機驗證產(chǎn)品中,不僅便于用戶的理解記憶,而且極大增加了暴力破解難度。但攻擊者可通過黑產(chǎn)工具產(chǎn)生類人軌跡批量操作以繞過檢測,并在對抗過程中不斷升級其偽造數(shù)據(jù)以持續(xù)繞過同樣升級的檢測技術(shù)。我們期望用機器學習算法來提高人機驗證中各種機器行為的檢出率,其中包括對抗過程中出現(xiàn)的新的攻擊手段的檢測。
數(shù)據(jù)層面,給出了鼠標移動軌跡(x,y,t),目標坐標(x,y)和類別標簽:1-正常軌跡,0-機器軌跡。通過建模預測某條軌跡屬于正常軌跡還是機器軌跡。
2017年的我,在算法模型層面還是個小白,雖然經(jīng)過兩年的積累有了不少基礎,但是在真正的實際問題面前,你會發(fā)現(xiàn)之前學習到的東西有多理想化。不過有一點我還是清楚的,特征決定模型的上限,而算法模型在無限的逼近這個上限。
因此,我開始自己的特征工程之路,由原始數(shù)據(jù)(x,y,t)數(shù)據(jù)對x-y、x-t、y-t進行可視化分析。同時我的特征設計理念是:特征描述“人”,而非用特征描述“機器”,尋二者之異,以達泛化目的。突出XYT各自特征細節(jié)及有效的利用組合特征,特征提取時分別將X、Y、T進行歸一化處理;同時,結(jié)合規(guī)則由橫向特征(X),縱向特征(Y),時間特征(T)三個角度提取特征。
模型層面只選擇了單模XGBoost模型,在沒有做交叉驗證的情況,拿到了決賽全國第6名的成績,可見在特征構(gòu)建和對問題的理解層面,做的還是可以的。如果你要問我為啥不做CV,不做融合呢?那我只能告訴你,因為我無知呀,那時的我還是個小白。
現(xiàn)在回憶起來,第一次參加數(shù)據(jù)競賽期間,還是有蠻多有記憶的小插曲的。比如換了好多次隊名,最后因為研究生宿舍三人都玩DOTA,所以用了這個ID;比如因為比賽期間文超的開源而噴過他,后來也算不打不相識的認識了他,并在一段時間里通過交流學到了很多東西;比如認識了很多圈內(nèi)選手都熟悉的 清華大學 劉強老師,也正是因為劉老師的鼓勵,沒有中途放棄比賽,并一路打到了決賽,兌現(xiàn)了跟劉老師之前的約定,去深圳拿到了清華百年紀念郵票。
2018:入世 | 加入京東的第一年
競賽不僅可以讓自己保持一種戰(zhàn)斗狀態(tài),還可以認識一波志同道合的朋友。從深圳回到北京之后,在本次比賽冠軍選手潘坤同學的“忽悠”之下,我來到了京東,開始了算法實習生之路,并在畢業(yè)之后留在了這里。
首先,我選擇的是團隊,一個純粹的工作氛圍在我的選擇里排第一位。實習讓我對團隊的氛圍有了了解,同時接受了兩年社會毒打的我,自認為看人上還是挺準的,當然事實也驗證了我的判斷。其次,我選擇的是方向,“扎根數(shù)據(jù),貼近業(yè)務”,是我對自己的定位,因為沒有數(shù)據(jù)的算法就只是一堆公式,同時沒有業(yè)務背景的依托,算法就只是自嗨。最后,我選擇的是相信自己,亂世出梟雄,我喜歡從0到1的過程。
1. 工作成長:金融場景下的推薦
這一年,我的主要工作是在金融場景下的推薦任務。之前沒有過推薦經(jīng)驗,也沒人帶的經(jīng)緯度算法小隊開始了從數(shù)據(jù)收集、數(shù)據(jù)清洗、特征加工、算法建模的全流程探索。基于當時的算法工程師的能力素質(zhì),現(xiàn)在回想還好當時沒人帶,不然可能早就完犢子了。“塞翁失馬,焉知非?!贝蟾湃绱?。
回過頭來,聊一下金融場景下的推薦問題。推薦在某種程度上可以簡化為用戶和物品之間的匹配問題,為合適的用戶匹配上合適的物品。但只做算法模型,脫離業(yè)務背景的打法是毫無意義的。畢竟推薦是離業(yè)務很近的一門技術(shù)。
因此,在基金推薦這個任務中,經(jīng)過和業(yè)務方等多次溝通,我們盡可能多的列出了可能會影響用戶申購行為的因素,并將其量化為算法模型可以識別的特征。同時確定建模目標,減少運營人工配置產(chǎn)品工作量。通過甄選給用戶推薦長中短期業(yè)績表現(xiàn)較優(yōu)質(zhì)的基金,讓用戶能夠切實賺到收益,嘗試將非權(quán)益類基金偏好型的用戶向權(quán)益類基金引導,以增加業(yè)務收入。
特征上,除了用戶行為特征、屬性特征以為,增加市場熱度特征維度,增加alpha值衡量用戶獲得超過市場平均回報的能力,增加beta值衡量用戶能獲得市場平均盈利的能力。
在召回階段,基金商品和零售商品不同的地方在于金融商品的量級要小的很多,相較于傳統(tǒng)的多路召回的方式,在基金推薦中,我們首先對用戶基金類型偏好進行預測。同時基于業(yè)務理解我們增加了一路“4433選基法”召回,該選基方法關(guān)注基金的長中短期業(yè)績表現(xiàn),篩選標準十分嚴格。精選出來的基金在盈利能力、市場業(yè)績、抵抗風險等方面都有不俗的表現(xiàn)的基金。
在排序階段,在召回到的基金類型偏好的基礎上,對多種用戶類型進行分開建模,用LR+LightGBM進行排序。
最終在相較于之前的線上模型和并行PK的其他團隊,CTR層面提高了12%左右,GMV提高了70%左右。很幸運,自己的思考產(chǎn)生了實際的線上效果。
2. 突破瓶頸:亮劍深度學習
2018年,我開始了自己第一個用深度學習的數(shù)據(jù)算法競賽,因為在工作中基于業(yè)務理解、特征工程層面的方法優(yōu)化要優(yōu)于深度模型的投入成本,同時考慮到業(yè)務可解釋性和GPU建模環(huán)境問題,如何快速且有效的由業(yè)務建模成了工作中的主旋律。這也讓我產(chǎn)生了一種危機感,因此,在個人能力突破上,我選擇了NLP類深度學習競賽進行亮劍。
關(guān)于賽題:達觀數(shù)據(jù)提供了一批長文本數(shù)據(jù)和分類信息,結(jié)合當下最先進的NLP和人工智能技術(shù),深入分析文本內(nèi)在結(jié)構(gòu)和語義信息,構(gòu)建文本分類模型,實現(xiàn)精準分類。
解決方案:對于這個文本分類任務,有個小的操作其實都可以達到很高的分數(shù),即使模型不夠優(yōu)秀。通過對于詞向量做一個增強,即利用word2vec與glove的差異性,構(gòu)建一個魯棒性更高的詞語向量表征。我們試試word2vec+glove+faxttext的組合,對于我來說,效果并不是很好,我覺得可能的原因是faxttext與word2vec的相似性很高,弱化了glove的向量表征,同時,對于glove單獨的詞向量我也沒有嘗試過,大家也可以嘗試一下。對于模型的話,賽后我們開源了一個雙層的biGRUModel模型和rnnCapsuleModel。
最終,首次使用純深度學習模型構(gòu)建的算法解決方案取的了季軍的成績。通過這次比賽我和提莫(何從慶)也成了很好的朋友,同時,在他那里也讓我在近幾年交流學習到了很多知識。
2019:突破 | 突破自我 擁抱變化
2019年是動蕩的一年,這一年我經(jīng)歷了兩次組織架構(gòu)的調(diào)整,同時團隊里除了我以外的其他同期入職的校招生也在這一年全部選擇了離開。雖然我也想過離開,但本著擁抱變化的心態(tài),我還在繼續(xù)戰(zhàn)斗。因為我當年入職之時,我就給自己設了一道墻,那就是,未來3年無論如何變化,無論經(jīng)歷什么,我都要守住3年期限。只有在不斷變化的環(huán)境中茁壯成長,才是最有力量的。
1. 工作成長:多目標任務的推薦
在變化中,2019年在工作上最大的收獲,是完成了多目標任務場景的推薦,同時也是在算法建模層面,我覺得比較有意思的一個場景挑戰(zhàn),以至于在問題最初期,我認為它是一個偽命題。當然這個過程中,我還做過返利商品推薦、眾籌商品推薦、數(shù)據(jù)挖掘等工作,就不展開說了。
在這個多目標任務場景的推薦任務中,根據(jù)業(yè)務背景的特點,我用了Random Walk和Deep Walk,對核心指標進行了拆分,因為交叉轉(zhuǎn)化這個概念,在模型層面是沒法建模的,但我們換個思路,怎么通過基于A指標的建模,使得B指標有所提升呢?我的解決方案是基于業(yè)務建模,通過細致化的拆分用戶群體,單獨建模的方式對不同人群的特點采取分步建模。具體實現(xiàn)形式因為涉及到的業(yè)務場景太多,不方便介紹,但基本思想是“隨機游走,分而治之”。
2. 突破瓶頸:技術(shù)沉淀
這一年我經(jīng)歷了很多負能量的事情,但陽老師的教誨我還是深深的記得的。人之不如意之事,十有八九。但你依舊需要抬頭向前,有了之前深度學習的初次嘗試,我決定繼續(xù)邁向?qū)<抑?#xff0c;畢竟取得一次好成績不代表什么,可能是只是運氣好而已。
第一次的深度學習嘗試之后,我做了很多思考,比如每一層都在抽取什么要的特征,又是怎么發(fā)揮作用的,我還能通過什么樣的方式抽取什么樣的特征表達。也正是基于這些思考,我領(lǐng)悟到了一套煉丹方法,并逐漸形成了自己的一本煉丹筆記。
2.1 Attention與Capsule初體驗
之后我參加了JDATA絕對語義識別挑戰(zhàn)大賽,預測廣告宣傳語是否違規(guī)。在這個比賽中,對Attention、Capsule也有深入的理解。
當序列越長時,RNN在捕捉序列長期依賴關(guān)系時就顯得越弱。而從分析attention函數(shù)我們可以發(fā)現(xiàn),Attention是將進行序列的每一個元素與其他元素的對比,在這個過程中每一個元素間的距離都是1。因此,我們在BI-GRU和Bi-LSTM模型中引入attention機制,去靈活的捕捉全局和局部的聯(lián)系。
Capsule是通過向量的方式來建模,它利用向量輸出代替標量輸出,捕捉空間結(jié)構(gòu)信息,最初由深度學習之父hinton提出應用在圖像領(lǐng)域。由于NLP是通過詞的向量的方式構(gòu)建的,所以Capsule方式在NLP領(lǐng)域有著得天獨厚的優(yōu)勢,在這個比賽中,我們將Capsule方式由圖像領(lǐng)域遷移到了NLP領(lǐng)域,并進行了應用與實踐。因為Capsule本質(zhì)上是一種并行注意力模型,能把信息提取的注意力集中到下一層更加活躍的Capsule,同時忽略掉那些不活躍的。所以,我們將RNN的輸出作為low-level Capsule,同時通過動態(tài)路由的方式構(gòu)建高層語義表征得到high-level Capsule,得到的空間特征作為后續(xù)Dense層的輸入。
2.2 BERT初體驗
BERT作為橫掃NLP各項任務的一個大殺器,在本次比賽中我也做了相應的應用。
BERT與最近的其他語言表示模型不同,BERT旨在通過聯(lián)合調(diào)節(jié)所有層中的上下文來預先訓練深度雙向表示。因此,用12層Transformer捕捉全局語義信息,通過next perdiction 預測下句話,可以構(gòu)建上下文的語境詞向量。預訓練的BERT表示可以通過一個額外的輸出層進行微調(diào),適用于廣泛任務的最先進模型的構(gòu)建。
在此次比賽的決賽答辯中,有些選手提出BERT模型在使用時,不如Bi-LSTM效果好,其原因大概有兩種,一是BERT模型的使用在訓練過程中未收斂;而是直接套用原始模型,而針對該實際問題進行相應的優(yōu)化和參數(shù)調(diào)整。
2.3 技術(shù)文章沉淀
認識許多志同道合的小伙伴,這也正是我參加數(shù)據(jù)競賽的原因之一吧。2019年我和 阿水 成為了小伙伴,一個帥氣的小伙,富有激情,很有想法。在很多方面都是我學習的榜樣。同時工作兩年和學習上的積累,讓我開始對實戰(zhàn)進行總結(jié),并慢慢了養(yǎng)成了技術(shù)文章沉淀的習慣。以上方案,如果有興趣的同學,可以看我之前的分享的詳細方案,鏈接如下:
DigSci科學數(shù)據(jù)挖掘大賽-亞軍方案分享:https://zhuanlan.zhihu.com/p/88257675.
JDATA絕對語義識別挑戰(zhàn)大賽-季軍方案: https://zhuanlan.zhihu.com/p/86868102.
2020數(shù)字中國創(chuàng)新大賽-冠軍方案分享: https://zhuanlan.zhihu.com/p/147049432.
2020:挑戰(zhàn) | 當打之年 一往無前
2020年,新冠改變了很多,也改變了很多工作和生活模式,也改變了我很多。一如既往,今年又經(jīng)歷了一次組織架構(gòu)的變動,不過幸運的是,無論是我離開的直屬團隊,還是我現(xiàn)在加入的直屬團隊,都是很nice的,只是因為個人職業(yè)規(guī)劃和部門職能的改變,我做出了自己的選擇。
1. 第一本書
2020年春節(jié)期間,一次機緣巧合巧合和Cookly他們一起完成國內(nèi)第一本針對競賽實操的圖書:《阿里云天池大賽賽題解析——機器學習篇》。第一次寫書,春節(jié)期間完成了初稿,幕后發(fā)生了一些小故事,不僅感嘆緣分的奇妙,一往無前,挺好。
為了讓更多人以更低的成本接觸到競賽,更快的參與競賽,天池團隊開發(fā)了提供免費算力的DSW平臺,與競賽頭部選手、機構(gòu)合作分享了一系列可免費學習視頻課程,為了讓大家更方便的參與到數(shù)據(jù)競賽,天池團隊將7年內(nèi)舉行的200多場競賽相關(guān)內(nèi)容進行沉淀、優(yōu)化,再優(yōu)化,最終聯(lián)合電子工業(yè)出版社出版了國內(nèi)第一本針對競賽實操的圖書:《阿里云天池大賽賽題解析——機器學習篇》。
本書包含四大經(jīng)典競賽案例,通過七個維度詳細解析每個賽題,讓你清晰知道這個賽題在說什么,為什么會有這個賽題,如何用現(xiàn)有技術(shù)解決這個問題以及如何去優(yōu)化解決方案等內(nèi)容,每個賽題案例都包含N大知識點,攬括機器學習全流程,學到的不只是技術(shù),更是一種解決問題的思維方式。
從200多場競賽中篩選了最典型的四大競賽——工業(yè)蒸汽預測、天貓用戶重復購買預測、O2O優(yōu)惠券預測和阿里云安全惡意程序檢測,每個競賽都從賽題理解、數(shù)據(jù)探索、特征工程、模型訓練、模型驗證、特征優(yōu)化、模型融合7個步驟展開講解、層層遞進,解析競賽內(nèi)容和解決方案。
如果你想開始你的算法學習和競賽之路,如果你想在競賽中取得更好的成績,如果你想知道普通選手和優(yōu)秀選手的差距,如果你也想通過競賽拿到更好的offer···作為小白,這是一本很適合的競賽入門書,也是一本很好的算法學習實踐圖書;作為大神,你可以通過本書實戰(zhàn)內(nèi)容梳理自己的競賽知識點和技能圈,查漏補缺,更上一層樓。
2. 數(shù)字中國創(chuàng)新大賽
因為疫情原因,原本5月份舉行的 數(shù)字中國建設峰會 推遲到了10月份,讓本來3月就結(jié)束的一場智能算法比賽,在10月份數(shù)字中國創(chuàng)新大賽數(shù)字政府賽道總決賽的舞臺上進行了延續(xù)。
如果說這次比賽最大的收獲,那應該是和魚佬,杰少,林有夕,糖糖的組隊,工作后還繼續(xù)參加數(shù)據(jù)競賽,說的積極一點是讓自己保持一種戰(zhàn)斗狀態(tài)和激情,說的實在一點呢,應該是我是一個很無趣的人,告別了dota游戲之后,我大部分休息時間是宅著的,所以讓自己忙起來,仿佛是從研究生期間帶來的慣性。但數(shù)據(jù)競賽給我?guī)碜畲蟮臉啡?#xff0c;應該是結(jié)識隊友,個人的人生經(jīng)歷使然吧。
在本次數(shù)字中國創(chuàng)新大賽中,我們的方案共由四部分組成。首先是數(shù)據(jù)基石部分,由數(shù)據(jù)探索和特征工程組成,對收集到的數(shù)據(jù)進行分析整理提取有效信息;算法內(nèi)核部分是系統(tǒng)的智慧大腦,能夠提供多種算法模型,如預測作業(yè)類型預測、預測相似度匹配、防碰撞預警等;工程骨架部分將算法內(nèi)核與可視化平臺進行關(guān)聯(lián),幫助實現(xiàn)算法封裝和平臺搭建;可視化平臺部分由數(shù)據(jù)驅(qū)動、算法支撐,進行實時監(jiān)管和智能決策,輔助海事人員進行海洋建設和管理。
在智慧海圖云系統(tǒng)的架構(gòu)設計,我們在構(gòu)思整個系統(tǒng)方案時,秉承快速建設、多次迭代、小步快跑的模式,強調(diào)數(shù)據(jù)的多渠道采集,同時注重形成以海事、漁業(yè)場景為核心的智能化體系。系統(tǒng)架構(gòu)分為四個部分,數(shù)據(jù)采集、數(shù)據(jù)存儲、數(shù)據(jù)模型和智慧應用。完備的系統(tǒng)架構(gòu)由強大的技術(shù)支撐,系統(tǒng)完成前后端分離設計,保證代碼和數(shù)據(jù)安全,可視化部分使用GPU引擎完成前端百萬軌跡點秒級渲染。
3. 個人總結(jié)與感悟
(1)工作與學習并行,任何時候都不能丟掉提升自己的機會,人是懶惰的,如果你不甘于平庸,那你就得努力。
(2)工作習慣的養(yǎng)成,無論是讀研還是剛參加工作的時候,我就有記筆記的習慣,善于總結(jié)才能進步。分享一下我的部分工作筆記目錄。
(3)人生目標的設定,每三年一個大目標,每一年有個小目標。但是我從來不給自己制定具體計劃,因為計劃沒有變化快。當你有了目標的時候,你所有的選擇都會偏向你的目標。
(4)戰(zhàn)斗意志——逢敵必亮劍。我最喜歡的一部戰(zhàn)爭題材電視劇的臺詞,逢敵必亮劍,狹路相逢勇者勝,倒在敵人的劍下不丟人。人生的不如意之事太多,不要玻璃心。
(5)擁抱變化。工作之后,你就會發(fā)現(xiàn),變化時時刻刻的存在,學會擁抱變化并成長。
(6)志同道合的小伙伴。有伙伴的感覺真的很好。
4. 主要技術(shù)沉淀經(jīng)歷
- 科研論文、發(fā)明專利共20余項
- 《阿里云天池大賽賽題分析——機器學習篇》
- 數(shù)字中國創(chuàng)新大賽 數(shù)字政府賽道 算法賽 冠軍
- Microsoft DiggSci 科學數(shù)據(jù)挖掘大賽 亞軍
- ICDM Knowledge Graph Contest 亞軍
- “達觀杯”文本智能處理挑戰(zhàn)賽 季軍
- 京東JDATA算法大賽 絕對語義識別挑戰(zhàn)賽 季軍
- “中國法研杯”司法人工智能挑戰(zhàn)賽 三等獎
- 數(shù)字中國創(chuàng)新大賽 數(shù)字政府賽道 銅獎
- 其他數(shù)據(jù)競賽Top10 若干
5. 給畢業(yè)生的建議
感謝一路走來,leader們對我信任。作為一名技術(shù)面的面試官,截至目前我面試過的候選人應該有60多個了。給應屆畢業(yè)生一些我的建議吧。
如果你沒有項目的磨煉,那你應該有著扎實的基本功,并且在基礎知識之上你應該有些自己的思考,大多數(shù)面試官是在發(fā)現(xiàn)你的優(yōu)點,這也是由你簡歷入手去了解你的一個過程,初始分50分,每次回答與對問題的理解,為你加減分,所以扎扎實實,拿出你最好的一面,展示自己。
最后,好好刷LeetCode!LeetCode!LeetCode!
寫在最后的話
感謝一路走來所有幫助我的小伙伴們,感謝我這幾年我陸續(xù)遇到的貴人,陽老師、興東哥、光叔、磊哥、文文、芬姐、雪姨、雪姐,還有智能不要臉群的小伙伴。感謝你們。
還有一起戰(zhàn)斗過的坤、鴻麟、從慶、阿水、杰少、魚佬、有夕、雨琨,路還很長,未來可期。
最后,完成對畢業(yè)后這3年的總結(jié),開啟下一個3-5年目標。未來見~
本文作者:京東數(shù)科 朱翔宇
更多技術(shù)干貨歡迎關(guān)注“京東數(shù)科技術(shù)說”微信公眾號,我們只憑技術(shù)說話!
總結(jié)
以上是生活随笔為你收集整理的从实习生到算法专家,他只用了2年!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人生感悟2
- 下一篇: SmartUplod中文乱码问题(已解决