機器學習在實際工程應用上有哪些可以分享的經驗性結論?

時間 2021-05-31 09:07:07

1樓:LOMO

機器學習任務的時候無非就是在做表徵(Representation)+評估(Evaluation)+優化(Optimization)

提出以下幾點自己在學習過程中的經驗:

1.為了使模型泛化能力強,訓練模型的時候可以和自己知識相結合的時候,效果會很好(這指的是某些初始引數,或者超引數的選擇。很多人告訴我不能用啥經驗知識去做,但是個人感覺可以利用經驗知識,當作加持就好)

2.關於過擬合:所獲得的分類器並不是基於現實,只是對資料的隨機性進行編碼,所以需要用交叉驗證(CV)。

如,使用CV來選擇決策樹的最佳規模用於訓練。雖然沒有CV是萬萬不能的,但這也不是萬能的,因為如果用CV生成太多的引數選擇,它本身就會開始產生過擬合現象。

3.關於維度災難:在高維度當中,多元高斯分布的大部分資料並不接近平均值。

在維度很高的一些資料上(我見過算比較高的是有關電商的一類資料,達到了60w維,然而別人告訴我其實在工業界60w都不算高),就必須結合深度學習了,機器學習可以對高維資料進行適當降維處理,如PCA,LDA等。

4.關於資料量和演算法:資料量決定了模型的上限,而演算法只是去逼近這個上限。

5.整合模型永遠好於單一模型:在 boosting 中,訓練樣例有權重,而且這些權重各不相同,因此每個新分類器都把重點放在前面的模型會出錯的樣例上。

在 stacking 中,每個單獨的分類器的輸出作為「高層」模型的輸入,這些高層模型會以最佳方式組合這些模型。

6.對於深度學習而言,個人感覺Leaky-Relu與Relu區別不會太大,但是需要強調的是如果是工程問題,千萬不要用Sigmoid或者tanh。

7.劃分資料集的時候發現有幾種效果較好:若資料量很大,則7:2:1或者6:2:2較好,若資料量較小,比例可以設為8:1:1。

8.大多數引數選取除了專家經驗外,使用網格搜尋非常必要。

9.關於batch-size,在用CNN的時候一般會選取32,64,128,至於為啥這樣選取,可能是程式設計師都對2的指數次冪比較親切吧。

PS:其實在ML或者DL領域,很多時候你覺得你這些經驗性的結論很有用,但是很多情況下,也會打臉...

2樓:蟈蟈

1.mini-batch gradient decent中的size通常取64, 128, 512等等2的指數,這樣運算速度會更快。

2.梯度下降中,通常使用Adam演算法(動量梯度下降法結合RMSprop),其中有幾個超引數:β1,β2,ε,它們的公式是這樣的:

比較好的引數選擇是:

β1=0.9,β2=0.99,ε=10^-8

3.神經網路引數初始化的時候,不可以用0來初始化引數!會導致無法訓練。

推薦使用較小的隨機值,或者直接用He Initialization,就是隨機化引數然後乘以乙個跟當前層的維度相關的係數(具體可以查一查資料,或者看我的這個文章:【DL筆記】神經網路引數初始化的學問)

4.神經網路的啟用函式,一般不用sigmoid,因為訓練慢,效果也不好。稍微好一點的是使用tanh函式,但是業界更常用的著名的ReLU啟用函式,還有它的公升級版Leaky ReLU。

再碰到了再更新吧。。。

其實,引數這個玩意兒,跟場景是緊密相關的,資料集不一樣,我們一般都需要使用不同的引數,並且需要自己反覆試驗。

3樓:

深度學習在工業工程領域有哪些典型的應用?

不立危牆Amon 主要是機器視覺 缺陷檢測吧?有2d 有3d的。3d壁壘略高。3d手機 汽車精密製造 高鐵製造 飛機葉片製造等。深度學習目前創業公司很多,小程式 智慧型寫作 金 融服務 醫療影像 測序診斷 食品質檢 機器視覺 工業檢測等等,都接觸過一些。純演算法公司能落地的不多,總是測算不到正向現金...

機器學習模型在工業界的應用?

哈哈哈 參照另乙個回答 基於神經網路的現實中的應用?哈哈哈的回答 知乎 基於神經網路的現實中的應用?機器學習大多是應用在影象 語音和文字,也能用於旋轉機械故障診斷。在本質上,旋轉機械故障診斷是乙個分類的問題。例如,常見的機械故障包括軸承滾動體故障 外圈道故障 內圈道故障,齒根裂紋 齒麵點蝕 缺齒故障...

AngularJS 在實際應用中有哪些優缺點?

James Bjorn 說說我遇到的缺點吧 two way binding雖然很方便,但是一不小心就會弄出過多watcher,導致慢。ng repeat在IE上面特別慢 Google已經把angularjs交還給了community了,更新和bug fix估計都不會很穩定 總體來說,主要就是慢。學習...