機器之心專欄
機器之心經(jīng)授權(quán)轉(zhuǎn)載 這是 Kaggle 你問我答 (AMA) 的第一期活動,,本期請到的嘉賓是 SueTao,他研究生畢業(yè)于東南大學,,目前是騰訊的一名算法工程師,。 SueTao 擅長計算機視覺(Computer Vision),半年 5 戰(zhàn) 5 金,,也許是史上最快的 GrandMaster,。截至目前共斬獲 9 金 3 銀,kaggle 最高排名全球第 10,。Q1:如何搭建 kaggle data pipeline?A1:我目前的比賽還是集中在 cv,,也做過語音,還有前段時候的 PMP,,都是 DL 相關(guān)的競賽,。數(shù)據(jù)的 pipeline 其實是可以積累并且優(yōu)化的。我覺得可以參考一些前人的代碼,,尤其是蛙神的 code,。可以在蛙神的 code 基礎(chǔ)上,慢慢優(yōu)化跟積累出自己的數(shù)據(jù) pipeline,。DL 數(shù)據(jù) pipeline 中還有個很重要的部分就是數(shù)據(jù)增強,,這塊針對不同比賽可能有不同的做法。Q2:自己曾經(jīng)努力拿過銀牌,,但是覺得金牌好難,,特別是 solo 的情況,請問金牌和銀牌的差距在哪里,,如何突破,?A2:我還是從我參與比較多的 cv 競賽角度出發(fā)哈。首先,,如果你是 cv 新人,,在 kaggle 競賽上覺得拿金牌很困難,其實是很正常的,。目前 cv 賽基本被 cv 高手霸榜了,。如果你是已經(jīng)比較熟悉 cv 各個方向的模型,那你可能需要一個競賽好手來給你帶路,。畢竟競賽還是有很多套路的,。如果是新人,我的建議是堅持,,通過幾個 cv 競賽來積累對這個方向的認識,。了解不同模型不同任務(wù)。我覺得可以參考 padue,,大家如果看他競賽的成績的話,,開始他也只是銀牌水平,但是從前段時間的 protein 開始,,他現(xiàn)在在 cv 賽的水平基本就是 solo gold 了,。deep learning 實踐的積累還是很重要,一口吃不成胖子,。Q3:private sharing 這個問題時不時被人提起,,請問根據(jù)你的觀察,它是否已經(jīng)嚴重到影響 kaggle 的公平性,?A3:private sharing 太壞了,。這個我覺得大家都深有感觸,X5 事件,。我也不發(fā)表過多的評論了哈,,這塊確實 kaggle 平臺也需要多關(guān)注下。Q4:新出的 3d object 比賽是不是一種趨勢,,請問濤神對 computer vision 的發(fā)展有什么觀察和展望,?A4:cv 的話 3d 絕對是一個趨勢,包括學術(shù)界和工業(yè)界;sensor 的成本越來越低,,性能也越來越好,;就人臉識別來說,用 3d 來說安全性和可靠性就更高了,。其實我目前也算是退坑 computer vision 了,,也談不上對 cv 有深入的認識。大家從 kaggle 上 cv 賽的數(shù)量上可以發(fā)現(xiàn),,cv 對企業(yè)的價值還是非常高的,。前景是非常好,例如工業(yè)檢測之類的,,又談到了 steel。Q5:怎么判斷該改進網(wǎng)絡(luò)結(jié)構(gòu)還是調(diào)學習率,?A5:學習率和學習策略可能是搭建 baseline 里面最重要的部分,。這塊需要在比賽的前期優(yōu)化到最好,建議使用簡單的網(wǎng)絡(luò)作為 baseline,,然后仔細優(yōu)化學習策略,。沒有提升空間之后再考慮別的方向的優(yōu)化。Q6:是否應(yīng)該從分類錯誤的 sample 中提取靈感繼續(xù)改進,?如果是該怎么做,?A6:cv 最好的一點是可以看圖,非常直觀,。舉個例子:比如之前的鯨魚競賽,,baseline 模型的 bad case 大多是一些姿態(tài)較大,分辨率較差的圖像,。那么我們就可以考慮增加對應(yīng)的數(shù)據(jù)增強,。效果也很顯著。再舉個反面例子:剛剛結(jié)束的 nips 的 cellsignal 競賽,,是細胞的熒光成像,。整個比賽我完全沒有看 bad case。因為沒有 domain 知識,,圖像非自然,,很難觀察。但是也不妨礙比賽能拿名次,,只看 log 來調(diào)參,。Q7:請評價 cv 各項任務(wù)中 state of the art 模型的實用性,有何推薦,?A7:「試過才有發(fā)言權(quán)」,,這是我做 kaggle 之后的一個經(jīng)驗。沒做 kaggle 之前,我工作集中在輕量級的模型,,對于 sota 的大模型幾乎沒有嘗試,。所以我在競賽中會盡量去嘗試各種 sota,最終會有很多有意思的結(jié)論,。會發(fā)現(xiàn) kaiming 的 resnet 為什么強,,unet 為什么就是好用。有些很 fancy 的模型真的只是過擬合特定的數(shù)據(jù)集,。我也沒有嘗試過所有的 sota,,但是我覺得 paper 里的內(nèi)容看看就好,去偽存真,,實踐出真知,。Q8:作為一個新人從頭開始拿到金牌的最佳策略?比如選擇比賽的類型,?A8:哈哈 因為我 cv 一把梭,,只能給到 cv 的經(jīng)驗。如果新人想拿金牌的話,,最好就是找一個蛙神 all in 的比賽,,step by step follow 蛙神!只要比所有人都肝,,有足夠計算資源,,對齊 discussion report 出來的模型精度,solo gold 就有希望,!其實我第一個比賽 TGS 就是這么做的,。Q9:在 kaggle 學到的東西是否有應(yīng)用到別的地方?能否舉例說明,?A9:非常多,。舉個例子:模型集成(ensemble)??赡苡行┤苏f模型集成在實際工作中用不了,;工作中的場景有效率的要求;在計算資源受限的情況下,,3 個小模型集成的效果可能遠好于 1 個大模型的效果,。我之前的參與的人臉項目,其實就用了這樣的策略,,很好用,。但是如何去集成,怎么增大模型間 diversity,,這些技巧大家可以從 kaggle 上學習,。Q10:回頭看自己的經(jīng)歷,,對剛?cè)肟拥男氯耍惺裁聪胩嵝训慕?jīng)驗和教訓,?A10:教訓到?jīng)]有,,做比賽一年感觸還是蠻多的,投入越多收獲越大吧,。希望大家堅持,。真的只有投入去做了,才會有收獲,。Q11:CV 比賽假如遇到瓶頸會往哪些方向嘗試,?A11:數(shù)據(jù)層面絕對是提分收益最大的方向;還是要多看數(shù)據(jù),,多分析 bad case,;不看數(shù)據(jù)就調(diào)網(wǎng)絡(luò)結(jié)構(gòu)是不可取的。數(shù)據(jù)層面有些線索之后,,可以指導(dǎo)你對模型結(jié)構(gòu)本身做一些改進,。另外最重要的:多看 paper,paper 是 idea 的來源,。A12:過去很長一段時間內(nèi),,我積累的方式還是來自比賽 通過一個比賽,,我可以驗證很多 paper 的方法,實踐在工作中無法使用的模型,;幫助我深入理解一些數(shù)據(jù)上和模型上的問題 感覺從我個人而言,,比賽和工作相輔相成,給我工作提供了非常好的積累和儲備,。Q13:想知道打比賽的節(jié)奏是什么,,比如比賽結(jié)束前一個月,一周,,幾天主要干什么,?A13:基本上最后一周前,最終方案就要定了,??紤]最終的集成。Q14:有復(fù)現(xiàn)比賽 top solution 的習慣嗎,?有的話是一種怎樣的方式呢,?A14:會看,但是很少會跑,。因為一直忙著做新的比賽,。其實應(yīng)該仔細去研究下的,。Q15:分類比賽中的最后的 sub 的閾值應(yīng)該根據(jù)什么來選取呢,有什么選取技巧呢,?A15:我只能說可靠的 local validation 是最重要的,,所有涉及模型選擇,調(diào)參,;其實都需要一個依據(jù),,local validation 就是這個依據(jù)。這樣問題就變成如何建立可靠的 local validation 了,。Q16:分類比賽中最后的兩個 sub 一般會怎么樣選擇呢,,不同的方案的模型,還是其他,?A16:這個問題比較好,。前期幾個比賽的 sub 一般都是我選的,有幸抽中過金牌,。我個人的建議是,,差異一定要大,一個激進一個保守,。就 dl 比賽來說,,集成最穩(wěn)的是 weight ave,簡單有效,,一般來說我會選一個這個,;然后一些存在過擬合風險的方法,但是 lb 和 cv 都很可觀的方案,,我也會選擇一個,。Q17:請問經(jīng)常看到各位大佬同時參加好幾個比賽,,還能拿到很好的名次,,這是怎么做到的?A17:其實 kaggle 上的 top CVer 都會有自己積累下來的 pipeline,。競賽任務(wù)無非是這幾種,,迅速搭建一個可靠的 baseline,對 top 選手很容易,;看似在做多個競賽,,可能跑的是一套代碼。真的要最終比賽沖刺了,,會有針對性地去理解數(shù)據(jù)和優(yōu)化,。Q18:圖像比賽有什么通用的技巧嗎?厲害的選手一次提交就可以進到綠圈,,細節(jié)處理上有什么獨到之處,?A18:DL 調(diào)參的細節(jié)太多了,,需要很長時間的積累。同樣的數(shù)據(jù)+網(wǎng)絡(luò),,不同人的訓練結(jié)果可能相差巨大,。這是 top CVer 的核心競爭力 通用技巧的話,paper 上帶著「bag of tricks」的 都需要仔細閱讀 bag of tricks for image classification,,bag of tricks for object detection,。Q19:想問下之前說沒法做 bad case 的時候通過 log 調(diào)參是怎么調(diào)的,另外一般 bad case 怎么樣比較好的分析,?A19:其實很簡單: bias-variance trade off,,只看 log 的話,拿捏好這個,。比如 nips cellsignal 比賽,,baseline 效果是,training 擬合的非常好,,test 卻非常差,。其實是一種 train test consistency。從 1)數(shù)據(jù)層面,;2)網(wǎng)絡(luò)層面,,去分析可能的情況。1)數(shù)據(jù)層面:數(shù)據(jù)分布的問題,,2)網(wǎng)絡(luò)層面:batchnorm,。針對性地去做實驗,確定問題所在,,繼續(xù)觀察 bias-variance,要得出可靠結(jié)論,,再進行下一步,。Q20:我這邊自己寫了個基于 pytorch 的輪子, 每次基本上能跟上 public kernel 的步伐, 但是就是很難超越. 我估計是訓練資源和調(diào)參問題. 那么: 調(diào)參大部分用已經(jīng)訓練好的模型來調(diào), 還是每次改變參數(shù)都重新訓練個幾天, 哪種方法對 top CVer 比較實際?A20:建議解決計算資源問題,保證快速學習 訓練資源很重要,,其實最優(yōu)的實驗周期我個人感覺在半天,。半天能出一個實驗結(jié)果最好,中間可以干別的,。結(jié)果出得太快也不好,,要及時總結(jié)和記錄實驗。Q21:之前看到有新聞?wù)f模型會用貼紙識別面包機,,用膚色識別罪犯的這種過擬合的情況,,還有 aptos 存在模型通過圖片尺寸 leak 發(fā)現(xiàn) lable,有沒有什么好辦法避免這種情況,?A21:我感覺過擬合問題其實比大家想象的更嚴重,,之前做活體檢測基本就是這么個情況,,難以范化。目前的 DL 還比較『蠢』,,要說辦法的話,,加數(shù)據(jù)算不算?Q22:問一個技術(shù)性問題,,碰到一些受閾值影響的 metrics 時,,訓練的時候取最好的模型應(yīng)該依據(jù) val-metrics 還是 val-loss 呢?valid 的時候如果遍歷閾值,,可能會極大的影響效率,。不同模型/不同 epoch,用不同閾值取得的 metrics 比較,,會不會『不公平』,?A22:其實我也沒有很好的答案。是我的話,,最優(yōu)的 val-metrics 和 val-loss 模型我都會存,。其實最擔心的是優(yōu)化的 loss 和 metrics 不一致。Q23:還想問下對 warmRestart 這類的循環(huán)式的 scheduler 有什么看法,?和傳統(tǒng)的 ReduceLROnPlateau 相比有什么優(yōu)劣,?A23:最近發(fā)現(xiàn)這個真的很好用。如果用 step LR 的話,,很可能下降的位置就不夠好,。循環(huán)的學習策略,我的感受是既不會有太多過擬合,,也不需要很仔細調(diào)參,,基本會有個不錯的結(jié)果。原文鏈接:https://zhuanlan.zhihu.com/p/89476481 第三屆機器之心「Synced Machine Intelligence Awards」年度獎項評選正在進行中,。本次評選設(shè)置六大獎項,,重點關(guān)注人工智能公司的產(chǎn)品、應(yīng)用案例和產(chǎn)業(yè)落地情況,,基于真實客觀的產(chǎn)業(yè)表現(xiàn)篩選出最值得關(guān)注的企業(yè),,為行業(yè)帶來實際的參考價值。 參選報名日期:2019 年 10 月 23 日~2019 年 12 月 15 日評審期:2019 年 12 月 16 日~2019 年 12 月 31 日
|