3/24/2021

跨越深度學習技術產品化的障礙

徐宏民,跨越深度學習技術產品化的障礙,電子時報,2021-03-24

一般而言,攔阻這些研究成為產品的障礙包括:運算速度/耗能模型/演算法設計場域穩定度(正確率)訓練資料等。過去4年我們有機會在各式運算平台(雲端、Arm 、DSP、或是客製化的加速器上)實現各種智慧產品,希望這些經驗可以消除某些疑慮。

運算速度(耗能)是首要挑戰。基於成本考量,產品的運算資源以及耗能有諸多限制。大部分的學術研究專注在「技術創意」的面向,一般忽略這些偏工程應用的考量。產品設計上,我們建議先拉高正確率,接下來有諸多的技術可以降低運算量以及耗能,例如精簡網路、降低網路層數、簡化參數量,替換其他backbone、或是將浮點運算換為整數運算等。在之前的專欄文章中曾討論到多種做法,在此先忽略。

模型/演算法的設計是另一個常見的挑戰。因著諸多限制,無法將開源軟體直接成為產品,但是這些開源的資料集,程式碼,絕對可以做為產品開發的重要基石。產品開發上一定得修改(網路)模型,應用領域內的知識對於網路(演算法)設計大有幫助,儘量善用。除了深度學習技術,在實務上時常會混搭各種機器學習演算法,例如流型、資料降維、雜湊法、SVM等,所以研發團隊必須有人熟悉紮實的(整套)演算法工具,無法偏廢。

因為產品得落實在客戶端,所以穩定度、正確率、泛化能力是無法打折的。產品開發方式與研究非常類似,需要有(多個)測試資料集來瞭解任何演算法修改之後的變化,並能解釋各技術元件的影響,絕對不能黑箱作業,不然產品推出之後反而成為客戶的負擔。時常提醒開發團隊,這樣的技術推出之後,是不是能睡好覺?是不是心安?一般常會遇到正確率不足的問題,可以利用cascaded的做法,用數個演算法接力處理計算結果,確保正確率。過去Google Maps上的人臉/車牌偵測就是採用類似的策略。

訓練資料當然越多越好。儘量使用多個公開資料集,降低收集成本,但是這樣無法滿足產品落地的需要,還是得收集應用場域內的資料。為了降低資料標註的成本,可以使用類似Active Learning的方式來挑出關鍵的資料;這一年來也發現self-training的方式,也就是將其他資料上的能力逐漸轉移到未標註的資料上,在某些情境上,也有不錯的功效。至於其他訓練資料的問題,可以參考之前的專欄文章。

沒有留言:

張貼留言