大半年沒寫東西了惠啄,寫寫前段時間在滴滴AI Labs實習(xí)的一些感想吧足淆。去年十一月初入職,今年三月底離職礁阁,時間不短但是具體的體驗經(jīng)歷用八個字便足以概括巧号,見本文標(biāo)題。
期間都做了哪些項目姥闭?
接觸了三個項目丹鸿,逐個說吧。
第一個項目——Dayone棚品,進(jìn)組的第一周就開始做的項目靠欢,終極目標(biāo)是提高用戶的留存率犬绒,思路是找到乘客和司機(jī)活躍度下降的原因诡曙,然后針對性地采取措施去解決問題。一開始做的時候一臉懵逼票髓,根本不知道自己在干什么锅纺,后來才逐漸意識到掷空,這本質(zhì)上是在做精細(xì)化運(yùn)營。滴滴平臺上的乘客和司機(jī)千千萬萬,行為模式和習(xí)慣偏好各不相同坦弟,不能一概而論护锤,要做精細(xì)化自然免不了要去聚類,即用戶分層酿傍。要做聚類烙懦,首先需要回答兩個問題——用什么特征來聚類;用什么算法來聚類赤炒。
針對后一個問題氯析,我們用的一直是NMF(非負(fù)矩陣分解)算法。針對前一個問題莺褒,起初用的是業(yè)界常見的RFM模型魄鸦,本質(zhì)上是用原數(shù)據(jù)生成hand-craft的特征,通過定義recency/ frequency/ monetary三個概念來從用戶的時間序列數(shù)據(jù)里依照最大值癣朗、最小值和平均值來生成特征拾因。在后期發(fā)現(xiàn)這種做法提取出來的信息過于粗糙,于是決定使用無監(jiān)督的Autoencoder來自動提取特征旷余,因為處理的數(shù)據(jù)具有時間序列屬性绢记,所以encoder和decoder的部分采用的都是LSTM模型。從這個項目起我意識到正卧,多數(shù)項目的思路其實都是「發(fā)現(xiàn)問題 >>> 采用業(yè)務(wù)抓手解決問題」蠢熄。
第二個項目——CPO看板,主要目的是降低CPO(cost per order)炉旷。滴滴平臺每天完成幾千萬訂單签孔,交易完成后有糾紛是非常正常的事情,可能是乘客投訴司機(jī)窘行,可能是司機(jī)投訴乘客饥追,也有可能是乘客司機(jī)對平臺不滿直接投訴滴滴客服,而人工處理這些投訴的成本是非常高的罐盔。針對這個問題但绕,CPO看板項目的思路有兩點:盡可能減少投訴的發(fā)生;盡可能地使用自動化的方式處理投訴而不必轉(zhuǎn)接人工服務(wù)惶看。
要做這件事情捏顺,首先得對所有的投訴工單進(jìn)行梳理和分類,進(jìn)行根因分析纬黎,然后針對每個場景下的投訴去找到相關(guān)的訂單特征表幅骄,最后用這些特征來預(yù)測每個訂單產(chǎn)生投訴的可能性。這個工作量是很大的本今,一方面是工單涉及的場景很多很雜(下面簡單列舉了一些)拆座,另一方面是很難找到針對特定場景下的訂單特征(如果實在找不到就得從客服的聊天記錄里靠文本挖掘技術(shù)來提戎魑 ),即便找到了也可能因為各業(yè)務(wù)線之間的數(shù)據(jù)表沒有打通而使用不了懂拾。
第三個項目——招行排班系統(tǒng),這個和滴滴的業(yè)務(wù)沒什么關(guān)系杭抠,是招商銀行的人花錢請我們組去設(shè)計一個智能的排班系統(tǒng)脸甘,其中的一個任務(wù)是預(yù)測未來的業(yè)務(wù)流量大小。拋開業(yè)務(wù)邏輯不說偏灿,這是一個單變量時間序列預(yù)測問題丹诀,需要使用當(dāng)前的數(shù)據(jù)去一次性預(yù)測未來一個月內(nèi)每隔半小時的流量,典型的multi-step forecasting翁垂。
這任務(wù)的難點有兩個铆遭,一是這個時間序列的波動非常劇烈,在每個交易結(jié)算時間點都能明顯看到曲線的激增沿猜,二是模型可以使用的特征只有一個枚荣,雖然可以加入是否為周末這樣的變量,但對于性能提升幫助不大啼肩。我和隔壁組同事一塊做這個項目橄妆,他主要用Facebook的Prophet模型,我主要用TensorFlow寫seq2seq LSTM祈坠。兩個人都挺辛苦的害碾,有一次半夜兩點多我給他發(fā)去消息“你覺得這擬合得怎么樣?”赦拘,以為他已經(jīng)睡了蛮原,沒想到對方秒回,“我覺得還行”另绩。儒陨。
我參與的這三個項目都沒能做到有始有終,第一個項目是因為業(yè)務(wù)方的同學(xué)把精力放到了其他項目上笋籽,就把設(shè)計實驗做AB test給擱置了(不做實驗看反饋效果的話那我對數(shù)據(jù)進(jìn)行根因分析有啥意義蹦漠??)车海;第二個是因為項目沒有正式立項(說服公司高管這件事情值得做)笛园,并且當(dāng)時滴滴正在大規(guī)模裁員隘击,大家都沒什么心情好好做事;第三個是因為我要回學(xué)校準(zhǔn)備畢業(yè)論文了就沒有再跟下去研铆÷裢總的來說很遺憾,實習(xí)結(jié)束后棵红,沒有一項完整的成果可以拿出手凶赁,也沒法說我給公司創(chuàng)造了多大多大的價值(收益評估是一件很重要但也很困難的事情)。
「人工智能實驗室」聽起來好像很厲害逆甜?
追趕潮流而已虱肄。滴滴AI Labs是去年一月份成立的,這些年AI很火交煞,BATJ聯(lián)想華為科大都有自己的AI實驗室咏窿,滴滴不成立個名字里帶有AI的部門真是說不過去。其實滴滴從誕生的那天起就天然地是一家人工智能公司素征,乘客發(fā)單前的預(yù)測目的地和推薦上車點集嵌,發(fā)單后的智能派單、預(yù)估到達(dá)時間和路徑規(guī)劃御毅,都大量地使用了人工智能技術(shù)根欧,只不過以前沒有專門起AI這個名字罷了。
我粗略的理解是亚享,人工智能約等于深度學(xué)習(xí)加強(qiáng)化學(xué)習(xí)咽块。Python語言的易學(xué)以及各種好用的開源框架的推出,讓人工智能的準(zhǔn)入門檻變得很低欺税,讓包括我在內(nèi)的大批人涌入到這個行業(yè)里侈沪,不過最終一個人能夠走得多遠(yuǎn),還是得看綜合實力晚凿。
滴滴的資源怎么樣亭罪?
- 數(shù)據(jù)資源〖呋啵「數(shù)據(jù)驅(qū)動」一直是滴滴的信條应役,數(shù)據(jù)是滴滴最重要的資源,公司的數(shù)據(jù)倉庫和數(shù)據(jù)平臺建設(shè)得很完善燥筷,倉庫里大概存了十萬張Hive表箩祥,覆蓋專車快車豪華車企業(yè)級代駕公交等各個業(yè)務(wù)線,訂單表肆氓、工單表袍祖、軌跡表、乘客表谢揪、司機(jī)表等各種各樣的表建立起龐大的上下游依賴關(guān)系蕉陋,多數(shù)Hive表以日作為分區(qū)每天更新捐凭。所以現(xiàn)在關(guān)鍵的問題便是,怎么從這海量的數(shù)據(jù)里挖掘出價值凳鬓?
- 計算資源茁肠。這可能是我離開滴滴之后最想念的東西了。滴滴的服務(wù)器集群非常龐大缩举,我們組人均配備一臺20核CPU/ 256G內(nèi)存/ NVIDIA Tesla P40顯卡的高性能機(jī)器垦梆,有特別需求的話還可以申請4顯卡環(huán)境,每天在這樣優(yōu)越的物理環(huán)境里處理數(shù)據(jù)好不快活蚁孔,20G的CSV表用pandas一口氣讀進(jìn)來毫不費(fèi)勁奶赔,在GPU上跑TensorFlow快得飛起惋嚎。離職以后便一貧如洗杠氢,自己只剩得一臺筆記本,拿來跑深度學(xué)習(xí)可以說是白日做夢了另伍。
- 講座分享鼻百。滴滴學(xué)院每隔一段時間就會請業(yè)界和學(xué)界的大咖來做專題分享,上班的時候大家常見的反應(yīng)是“鞍诔ⅰ温艇?今天又有講座啊堕汞?我前兩天才聽了一場”勺爱。印象中我參加了四場,聽深度學(xué)習(xí)三巨頭之一的Yoshua Bengio(上個月剛拿了圖靈獎)講意識讯检、認(rèn)知和因果琐鲁,聽亞馬遜AWS的工程師講大規(guī)模計算機(jī)視覺的應(yīng)用,聽南加大的教授講帶可解釋性的前饋神經(jīng)網(wǎng)絡(luò)人灼,聽滴滴地圖部的算法工程師同學(xué)講強(qiáng)化學(xué)習(xí)围段。我覺得聽講座倒不是為了學(xué)到什么干貨硬知識(不如自己看書),而是為了看看前沿領(lǐng)域都在做些什么投放、在思考些什么奈泪,聽聽行業(yè)資深人士的觀點和他們的趣聞軼事,以及調(diào)節(jié)放松一下自己灸芳,找找靈感涝桅,還有便是為了在未來的某一天里突然想起“噢這玩意兒我以前聽過接觸過,我有印象”烙样。
團(tuán)隊成員怎么樣冯遂?
我在統(tǒng)計學(xué)習(xí)組,同級的有數(shù)據(jù)挖掘組误阻、認(rèn)知架構(gòu)組和強(qiáng)化學(xué)習(xí)組债蜜,都是統(tǒng)計認(rèn)知組下的分組晴埂。絕大多數(shù)員工都是碩士以上學(xué)歷,博士很常見寻定,專業(yè)大多是CS和統(tǒng)計儒洛,我是為數(shù)不多的本科生(除我之外只知道還有一個清華數(shù)學(xué)系的妹子),經(jīng)濟(jì)學(xué)這個專業(yè)也不太對口狼速,所以能進(jìn)組里全憑運(yùn)氣好琅锻。。
我們組總共十個人向胡,4個full-time和6個intern(3北大+2港科大+我)恼蓬。老板在美國念了十年書,拿了數(shù)學(xué)和統(tǒng)計兩個PhD僵芹,是個很有人格魅力的人处硬,聰明謙遜、風(fēng)趣幽默拇派,表達(dá)能力奇好荷辕,能從一堆亂七八糟的結(jié)果里很快地看出規(guī)律并給出一個合理的解釋,懂得和各類人群交流件豌,對技術(shù)同事講各種模型的原理應(yīng)用疮方,對非技術(shù)同事便講淺顯易懂的大白話,厲害又好相處茧彤,和老板下屬打成一片骡显。
有一次在小組分享的時候,他用幾行公式把PCA, SVD, NMF, Dictionary Learning和Auto-encoder這些概念和模型都給串聯(lián)起來曾掂,邏輯之順暢惫谤,鏈條之完備,令人贊嘆遭殉。問他怎么做到的石挂,答道“等你以后接觸得多了,你會發(fā)現(xiàn)這些東西其實都是一回事兒”险污,這讓我想起了張無忌在練成了九陽神功和乾坤大挪移之后說的痹愚,“天下武功,本是一家蛔糯,分門別派拯腮,乃是人為”,越是厲害的人越能看到事物的共性蚁飒。
我一直在自學(xué)數(shù)據(jù)科學(xué)动壤,有很多的盲區(qū)和死角。我老板算是我的第二位職業(yè)導(dǎo)師(第一位是學(xué)校里教我《數(shù)據(jù)挖掘》的馬老師)淮逻,倒不是教給了我很多的知識琼懊,而是指出我的不足和改進(jìn)調(diào)整的方向阁簸,提供方法論。他常說看到我像是看到了當(dāng)年的自己哼丈,轉(zhuǎn)專業(yè)启妹,底子薄,但是很好學(xué)醉旦,“你和我之間就差十年時間”饶米。不過十年后我究竟能進(jìn)步到什么程度,誰知道呢车胡。
除了老板之外檬输,同級里最厲害的應(yīng)該是隔壁組鄭嘉小哥哥和我們組宋歌小姐姐。對于嘉哥匈棘,我一直有三個疑惑丧慈,“他哪兒來的時間?羹饰?他哪兒來的精力伊滋?碳却?他怎么什么都會队秩??”昼浦。同時參與四個項目馍资,每周的產(chǎn)出量很大,寫代碼速度極快且整潔漂亮关噪,工程實現(xiàn)能力很強(qiáng)以至于其他組同事有工程上的問題都需要來拜托他幫忙鸟蟹;思維敏捷,基本上你剛提完一個問題他就能夠回應(yīng)好幾種可行的解決方案使兔。當(dāng)然最讓我印象深刻的還是他的工作狀態(tài)建钥,永遠(yuǎn)興奮而不知疲倦,永遠(yuǎn)熱情地和別人交流討論虐沥,用組里同事安瀾的話來說就是熊经,“感覺嘉哥每天都磕了藥來上班”。
每個同事都有值得學(xué)習(xí)的地方欲险,就不一一說了镐依。組里有時候會有下面這樣的對話,
小鄧 (北大統(tǒng)計科學(xué)中心妹子):你怎么不來北大學(xué)數(shù)學(xué)呀天试?
陳嶺 (清華數(shù)學(xué)系妹子):我也想去槐壳,可是我考不上耶。
我 (某知名211大學(xué)漢子):你們住嘴…
能不能做到邊上班邊學(xué)習(xí)喜每?
勉勉強(qiáng)強(qiáng)务唐,做得不好雳攘。基礎(chǔ)不牢,地動山搖枫笛。學(xué)到了一些東西来农,比方說入職第一周學(xué)了Linux的基本操作,懂得在隔離環(huán)境里用命令行操作機(jī)器了崇堰,對鼠標(biāo)的使用越來越少沃于;比方說TensorFlow和Keras的熟練程度提高了,對RNN的了解也比以前深了不少海诲;比方說對做聚類和降維更有經(jīng)驗了繁莹。但是總的來說還是學(xué)得不夠。
工作很繁瑣特幔,可支配的學(xué)習(xí)時間其實并不多咨演,學(xué)習(xí)的效率也并不高。因為我在大學(xué)里學(xué)的數(shù)學(xué)和統(tǒng)計已經(jīng)丟了大半了蚯斯,代碼功夫也處于初學(xué)者的水平薄风,所以有非常多的知識盲點。我覺得要想做到邊工作邊學(xué)習(xí)拍嵌,至少應(yīng)該掌握足夠的基礎(chǔ)知識才行遭赂,自己的知識體系得是完整的,哪怕很小很窄横辆,也至少得是自恰的撇他、邏輯完備的,而我目前空有一個破敗的框架狈蚤,沒有東西在里面困肩。
每天下班之后都很累(這很奇怪,明明這一天工作也沒干多少內(nèi)容)脆侮,好幾次在班車上睡著锌畸,回到家就是搞留學(xué)申請,所以也就沒有再接著學(xué)了靖避。是誰說的雞湯來著潭枣,“人和人之間的差距是從下班之后開始的”,反正我是做不到筋蓖。
為什么說是在小打小鬧沾沾自喜卸耘?
因為我非常輕易就感到滿足。寫出一個完整的小模型就能夠嘚瑟好一陣子粘咖,其實在旁人看來都是非常簡單幼稚的東西蚣抗;讀完了一篇<A Deep Semi-NMF Model for Learning Hidden Representations>,正得意,一扭頭看到了坐在身旁的小鄧起碼已經(jīng)讀了50篇paper翰铡,上面都是密密麻麻的筆記钝域;部門里另外一個組的實習(xí)生,甚至已經(jīng)發(fā)了篇頂會paper:
這感覺就像是锭魔,我作為一個門外漢對某個精致的東西說“哇例证,這個好厲害呀”,而身旁的人淡淡說了句“這個玩意兒太差勁了迷捧,我做了個更好的”织咧。我在淺水里撲騰了太久,根本不知道外面的世界都發(fā)生了些什么漠秋。
對于很多概念和模型都只有非常淺的認(rèn)知:survival analysis笙蒙,我不會;graph convolutional network庆锦,我連傅里葉變換都不懂怎么可能會這個捅位;deep reinforcement learning,每周都會有同學(xué)去做pre搂抒,而我連基本的數(shù)據(jù)怎么simulate都不會艇搀;recommendation system,大老板花了一星期梳理了這一領(lǐng)域里最重要的文獻(xiàn)求晶,而我沒有學(xué)焰雕;Spark/ Hadoop,周圍人每天都在反復(fù)地提及誉帅,我不會淀散;text mining/ topic model,除了知道要估計一個主題矩陣A以外我一無所知蚜锨。again,基礎(chǔ)不牢慢蜓,地動山搖亚再。
浸泡在一個整日都能聽到各種高大上的技術(shù)概念的環(huán)境里,讓我有了種莫名其妙的優(yōu)越感晨抡,但其實這都是虛的氛悬。只有自己踏踏實實地把技能給掌握了以后才是真正屬于自己的,到那個時候才有資格有底氣和別人談笑風(fēng)生耘柱。
對這份實習(xí)有什么遺憾或者對自己/對公司有什么不滿意的地方如捅?
有很多很多。
- 沒有和PM调煎、設(shè)計師們多進(jìn)行交流合作镜遣,自己一個人沉浸在模型算法的世界里,變得很偏激和狹隘士袄,以為技術(shù)至上悲关,實際上是在自以為是谎僻。
- 沒怎么讀paper,有問題都是直接Google查文檔和博客寓辱,然后東拼西湊地找出解決辦法艘绍,對問題沒有很深層次的認(rèn)識了解。
- 實習(xí)期間正好是出國申請季秫筏,太忙碌了诱鞠,要到處搜索信息去了解每個專業(yè)每個項目,改文書改推薦信改簡歷这敬,整體工作量很大(1月15日有六個項目同時deadline于是自己通宵到下午兩點這種苦逼經(jīng)歷就不多說了般甲。。)鹅颊,所以沒有一門心思地放到實習(xí)上敷存,還是兼顧不過來吧。
- 工作模式是我來之前沒想到的堪伍,原以為會是團(tuán)隊成員團(tuán)結(jié)協(xié)作一塊兒忙一個項目锚烦,但實際上是每個人負(fù)責(zé)一個項目,大家項目各不相同帝雇,所以日常是大家的交流并不多涮俄,各干各的。當(dāng)然可以簡單地聊聊項目進(jìn)度尸闸,用了什么方法和思路之類的彻亲,可是,參加過kaggle的都知道吮廉,The devil is in the details苞尝,機(jī)器學(xué)習(xí)相關(guān)的項目大體上都是「定義問題與指標(biāo)>>獲取數(shù)據(jù)>>特征工程>>構(gòu)建模型>>評估」這樣的思路,只聊框架上的問題并沒有太大的幫助宦芦,真正重要的是在親身參與項目進(jìn)行實踐時所遇到的細(xì)節(jié)問題宙址,這些都是書上看不來的,正是打磨細(xì)節(jié)才使得這份經(jīng)歷變得寶貴调卑。我在公司里感到最快樂的時刻抡砂,從來都是和別人討論的時候,但這樣的時刻并不太多恬涧。
- 上面說了注益,做的項目都沒能有始有終,沒有實際的能帶來收益的產(chǎn)出溯捆。
- 學(xué)會的東西太少丑搔,進(jìn)步太慢...
以后還會回滴滴工作嗎?
會考慮,但不是優(yōu)先低匙,主要還是想多體驗體驗不同的公司和工作環(huán)境旷痕。如果有機(jī)會回滴滴的話,希望能夠去地圖事業(yè)部顽冶、智能出行部欺抗、交易引擎部這樣的核心部門,在北京這種常住人口超過2000萬的特大城市里進(jìn)行平臺運(yùn)算處理强重,乘客發(fā)起訂單后怎么和司機(jī)匹配绞呈,怎么讓更多的人更快地打到車,怎么預(yù)測每個區(qū)域未來幾個小時內(nèi)的供需情況间景,怎么規(guī)劃行駛路徑佃声,怎么應(yīng)對海量的數(shù)據(jù)和復(fù)雜的路網(wǎng),都是很有挑戰(zhàn)的任務(wù)倘要。想起大老板朱老師的話:
只有challenging的東西才能夠讓我興奮起來圾亏。
實習(xí)還有哪些收獲和感想?
- 定義指標(biāo)很困難封拧,一個明確的問題永遠(yuǎn)比一個模糊的問題好解決志鹃,比如說Dayone項目想要找出用戶活躍度下降的原因,可實際上我們花了很多很多的時間在糾結(jié)和討論“到底該怎么定義用戶活躍度泽西?”曹铃。
- 要盡可能地做一個問題導(dǎo)向的人,時刻牢記自己當(dāng)前要解決的問題是什么捧杉,想要實現(xiàn)什么樣的效果陕见,不要把重心都放在自己將使用的模型和算法上,避免陷入到工具主義里味抖。
- 對于任何一個問題评甜,我們都沒法事先知道究竟什么模型才是有效的,盡管豐富的從業(yè)經(jīng)驗?zāi)軌蚋嬖V你哪一類模型很有可能管用非竿,但你終究還是需要把各式各樣的模型都給試一遍蜕着,所以老板常說“要盡可能多地去學(xué)習(xí)掌握模型”。
- 寫文檔很重要红柱。開會不做會議紀(jì)要等于沒開;做項目不寫文檔既不利于其他人參與分析蓖乘,又不利于自己的梳理總結(jié)锤悄。
- 表達(dá)能力極其重要,不管你是做RD還是做PM嘉抒。
- 最困難的事情零聚,同時也是一個人的核心競爭力,我認(rèn)為是multi-task的能力。這個世界上只有少數(shù)內(nèi)容是你無論如何努力和付出都無法理解和掌握的隶症,而絕大多數(shù)的內(nèi)容政模,都是只要你肯花時間愿意投入精力,便能夠摸著門道蚂会。那么問題來了淋样,你能學(xué)會,別人也能學(xué)會胁住,差距在哪兒呢趁猴?差距便在于在相同的時間內(nèi)誰能夠掌握更多的內(nèi)容。認(rèn)為別人一天有24小時彪见,我也有24小時儡司,其實是一種錯覺,在高效率的加持和對暗時間的開發(fā)下余指,別人一天的有效時間完全有可能是我的幾倍捕犬,總產(chǎn)出也因此遠(yuǎn)多于我。所以酵镜,表達(dá)能力要練碉碉,業(yè)務(wù)嗅覺要練,技術(shù)能力也要練笋婿,能夠都練出來的人誉裆,自然能走得很遠(yuǎn)。
后記
在滴滴實習(xí)了很長一段時間缸濒,要說實力有大幅度提升倒也沒有足丢,主要還是在體驗生活,提前感受未來的工作狀態(tài)庇配,確認(rèn)這是不是自己真正喜歡做的事情斩跌。很多東西都像是播下了一粒粒的種子,等著在未來的某一天里生根發(fā)芽捞慌。