ML model pitfalls:
問題一: 使用同一個模型每次訓練時的結果不同:
很正常的! 因為loss並不是一個convex surface,也就是說不一定只有一個最低點,很多時候都是有global min , 很多local min, 而這些local min可能靠得很近,因此每次predict時可能結果會不同. 另外很多時候找到的最低loss也不一定是global Min,沒有人知道是不是,只能盡可能地去接近,在實用端上看起來結果令人滿意就行了! 或是可以用momentum的概念幫助克服local min,這邊就不岔出去.
問題二:model training 太慢:
這一般來說training 分成3個步驟
a.calculate derivative
b.take a step
c.check loss
我們可以從這些步驟中著手:比方來說可以使用mini batch的概念來解決訓練太慢,mini batch的意思是我們一次training不丟入所有的data給Model訓練,而是丟一小部分的trainning data,那這樣為甚麼比較快呢? 你想看看,如果total training data是10000筆,我丟入10000筆data進去model,他算完才更新一次參數,而我如果一次是mini batch丟入100筆,這樣我100筆data就更新1次參數,10000筆資料就更新100次,因此這樣可以加快,並且mini-batch還可以進行GPU平行運算加速.
另外我們還可以減少check loss frequency:
有些loss function是time based or step based, 可以減少check的次數來增加訓練的速度.
明天介紹lab 0 google tensorflow playground~