Deep Learning|用Python進行深度學習的基礎理論實作(Deep Learning from Scratch,Saito kouki)
"Deep Learning",看到這個書名,可能衍生許多不同的想法,主要是深度學習範圍太大,有Ian Goodfellow 那本全範圍式的大部在前,又有各種套件如Tensorflow,Keras等為主體發展出的其他著作,這一本比起來範圍鎖定的較小,簡單說就是用一個範例,辨識手寫數字圖卡0~9的範例,來說明神經網路,神經網路的學習,與卷積神經網路的概念,同時佐以相關的Python程式碼,讓讀者透過一個例子的施作,來理解深度學習中的重要觀念與課題.
這一本對我而言很剛好,接續的是前面"Python演算法交易",那本的目的是建立整個交易系統,但對於深度學習與機器學習的交易系統只是提出一個簡單的例子與概念,即使當時我以台指期歷史資料餵進去,能夠在SVM等簡單系統下算出粗略的效用,但那終究不是我考慮Python來寫交易系統的原因,因為早就有既有軟體能夠提供這項功能,不需要自己從頭造工具.要使用Python就是為了深度學習的功能,不管是使用Tensorflow,Karas,或是如日本作者齋藤康毅寫的這本書.本書的特點就是城市碼清楚,簡易,從步驟中理解深度學習,比起死記更容易讓人理解,當然前提還是需對Python語法有基本的認識.
此書所用的是一個手寫數字的資料集mnist dataset,其中有60000筆訓練圖片與10000筆測試圖片,圖片上都是用手寫的0~9的數字,書籍的目的就是如何透過神經網路模式找出能夠正確辨識手寫圖片是哪一個數字的權重參數的方式,藉由梯度法反覆逼近求解,導入誤差函數的反向傳播法來做為改善權重與權值的學習標準.這些東西其實在講基本的神經網路概念的書籍都會提到,但本書採取了說明,計算圖,與程式碼三方互映,對於理解上提供了相當的助益,且未曾取用當前市面上已發展出的的框架進入程式,單純的以Python中的numpy來發展數值計算的程式碼,對理解基本其實挺有幫助的,不是單純的套模式輸入輸出.基本的概念理解了,再及於其他與學習有關的課題,比如有哪些找出最佳參數的手法,權重參數該如何預設,藉此提高辨識準確度.最後才是與影像辨識相關的卷積神經網路,雖然只是一個駔簡單的說明,但搭上前面的內容,更容易簡單的架構出一個識別模組,並從中理解批次常態化(batch Normalization)學習,Deprout,隨機梯度下降法(SGD,Stochastic gradient sescent)等衍生的觀念,唯一花點時間的就是誤差的反向傳播法,書藉由逐步地計算圖展現,降低了理解上的困難.
接下來可能要看的就是Chollet的基於keras框下的深度學習或是Aurélien Géron精通機器學習,兩著都有Python程式碼為輔助,應該算是適合的下一步吧,只是可能得花更多的時間.不過並不打算在深度學習開闊的領域中試圖東衝西突的全部嘗試,當下先鎖定CNN,即卷積神經網路為主軸,讓圖形辨識作為當前個人切入的重心,畢竟當初要做這個主要還是要與個人實際的交易系統做配合,讓原來人工的判別法看能不透過CNN轉化成機器判讀.這裡頭還有許多未解之謎,如個人還須研究是否能將每日股價或指數的走勢圖化為類似Mninst手寫辨識資料及那樣的資料型態以利後續處理,想要自己動手做,恐怕那又是另一個小領域了,加上都還沒查到是如何做到那樣的,難度也將提升,只是後面應該就沒有類似本書這樣的逐步解析說明算是清楚的書籍了吧.以上.
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。