實習週記(二)

我對演算法一無所知發表於2020-11-08

這周是算是實習的第二週,很多工具、命令逐漸熟悉了起來,但是也發現了更多的問題。上週更多的工作是熟悉業務,瞭解任務的流程以及專案需求,所以更多是做一些資料上的瞭解,暴露出的問題是對工具、linux等等方面不瞭解,這周開始上手正式的專案,接觸了更多工程上的任務。

首先對一些基本概念的理解浮於表面,理解不到位,比如測試集,訓練集,驗證集的概念,劃分時分佈應該如何處理,為什麼這樣選擇等等,有的時候這些細節關係到對模型效果的評估,以及評估的準確性,十分重要。除此之外還有對與模型評價指標的理解,精確、準確、召回、損失,還有一些綜合指標例如fbeta等等,每個指標能從不同維度上體現模型的優劣,應該學會從指標數字的變化反推模型的問題出在哪,進而做出改進,這涉及到對模型的理解以及對各個指標的理解,還有對資料的理解。

其次對於資料處理方面缺乏經驗,遇到不同型別資料,例如非結構化資料、網格資料、序列資料,應該如何處理;遇到不均衡的資料應該採用哪種增強方法,不同增強方法對指標的改變應該如何反推出原因,從而能夠進一步改進。遇到標註情況不好的資料應該如何處理;以及遇到標註量少的資料應該如何處理等等。資料是整個流程中最關鍵的一環,資料之於模型就像資料結構之於演算法,資料結構選的好,演算法效率一定不會太差,同樣,資料處理的好,模型效果一定不會太差。

之後是對理論理解上的欠缺,對於模型的效果提升上,除了對模型引數的調整外,對模型結構的調整同樣重要,如何調整模型結構,才能使得模型更好的學到資料上的資訊,這體現了對理論的理解。同時,將理論轉化為程式碼是體現工程能力最終的部分,這要求對框架的要熟練,對模型每一層的輸入輸出要理解,以及對模型的每個元件都要了解,卷積層池化層、kernal組數、池化大小、attention、啟用函式的理解、反向傳播的過程等等,以便去魔改出API中沒有的模型結構,來提升效果。邏輯不夠清晰,如何一步一步去推理原因,再思考改進的想法。

然後是一些工程上的小細節,在想出改進辦法之後,不應該立刻去改進,一次模型的迭代耗費的人力物力是巨大的,應該是先去調研、做對比實驗,用資料證明,確認這個方法確實有較大的提升後,再去對模型做迭代,這才是比較正確的思路。如何做一個準確的對比實驗也是一個比較重要的部分,應該避免一些在模型訓練時的錯誤,比如特徵穿越等等,還有一些在模型評估上的錯誤,比如測試機驗證集訓練集的一些分佈上的問題,還有兩個實驗的控制邊練等等。

最後也是最重要的是程式碼能力,寫程式碼效率太低,歸根到底還是對框架以及理論不熟悉,希望魔鬼訓練一波能夠得到改善。

相關文章