不論在學習或是工作常常都經歷過一段知其然不知其所以然的階段,是否能突破其實就是看有沒有這個機運和決心去突破,話說之前在翻譯 Spark ML 那本書時,看到 Grid Search (網格搜尋) 和 Random Search (隨機搜尋) 的時候其實是一頭霧水,只知道是用來搜尋Hyperparameter 的演算法,但是原理和如何使用卻是一無所知,直到最近開始利用Spark 開發Machine Learning 專案,就慢慢開始有感覺了。
訓練每個Machine Learning 演算法都會有專屬於他的參數可以做調整,舉Word2Vector 為例,就至少有兩個參數:
- Vector Size
- Window
雖說 Grid search 最直觀也最好實作,但是有兩大缺點:
- 如果參數少那還好,一個參數就是一維 Grid O(n),兩個參數就是二維 Grid O(n^2),也就是說每增加一個參數就等於是增加一個維度,超過三圍以上的Grid 就很難想像和視覺化。
- 此外如果資料量小,Train 一個 model 不用花太多時間還可以接受,但是只要資料量一大,這個方法就會變的曠日費時。
當然學術界不會因此就滿意,後來又研究出 Bayesian optimization,有興趣的可以參考下面的投影片。
最近的感想就是一旦開始玩Machine Learning 就會不斷的在工程與學術間切換,一方面要考量工程的議題:如何快速開發,如何模組化,如何調教效能...,一方面又要開始看論文研究有什麼更好的演算法,或是更好的方法。
說實在還蠻享受這種每天都有腦漿燒乾的感覺,但是不知道還有多少可以燒...XD
Reference:
[1] Bayesian Optimization for Hyperparameter Tuning[2] What methods do you prefer when performing hyperparameter optimization?
沒有留言:
張貼留言