首先,本次題目應該就嚇跑不少人了哈哈,看起來十分像 【論文標題】 的題目打完之後十分後悔,因為才發現原來其他鐵人們打得都十分平近人,也說明了自己的學術氣息還是有點重又缺乏想像力。
目前個人任職於外商資產管理公司,從事類神經網路模型開發,由於公司將研究與開發分開來,個人身分更偏向「研究員」因此程式開發上是採用 Matlab 做演算法原型設計(Matlab 就是演算法的 Photoshop,拿來做設計和簡單 Parallel Computing 用的)在達到一定研究成果條件後,交付給工程師寫成 C 進一步投入實際場景。
講這麼大一串其實只是為了替自己的文章風格與使用 Matlab 找個合理藉口(誤)。
總而言之歡迎來到本系列的第0篇也就是前言部分,我會盡量保證後續文章內容不會過於生澀難懂,並且會輔助大量的圖片來做說明。文章中涉及到的程式碼大部分都是手刻寫死(hardcode)所以不用擔心我使用到的 Matlab 功能在其他程式語言中沒有對應的功能,假如你想將這個想法應用到例如 Python 中的 Theano 或 TensorFlow 等原則上都沒有什麼問題。
本次三十天的文章,我主要想帶給大家一個觀念就是,類神經網路訓練中的權重修正方法,傳統使用梯度下降法或用各種連續可微的目標函數,目的是讓類神經網路模型的誤差極小化,不一定能讓你的模型在實際應用場景中派上用場,這不單單只是樣本內外過擬合(Overfitting)的問題,因此你可以將目標函數完全用一種全新的方式來表示,而真正實務上的重心就會轉移到目標函數的設計上頭,我也會說明為什麼這樣子的方法在時間序列上的應用會比較好,同時會偶爾穿插台灣金融市場資料作為實際例子說明。
本次文章假設讀者有類神經網路的基礎知識,並且會撰寫簡單的類神經網路程式碼,重點將擺在啟發式演算法的介紹,以及如何和類神經網路演算法做融合,與實務上操作應用的小技巧。
目前文章將暫定為三個部分:
第一個部分也就是第1至10天,主要是建立一個簡單前饋式類神經網路,並探討他在時間序列應用上存在的瓶頸與困境,本次採用輻狀基底函數類神經網路作為例子,讀者都可以自由切換成各種更複雜的類神經網路模型,例如遞歸類神經網路、卷積類神經網路等。
第二個部分也就是第11至20天,將會建立一個簡單的啟發式演算法,並逐步將其整合到類神經網路中,並說明這為什麼能解決第一部分談到應用上的瓶頸與困難,本次採用粒子群演算法作為例子,讀者也都可以自由切換成各種其他啟發式演算法,例如差分進化法、蟻群演算法、免疫演算法等。
第三個部分也就是第21至30天,將會以台灣指數期貨作為資料範本,探討第一部分與第二部分在實際應用上的表現情況。本部分不會過於著墨金融市場或交易策略,而是將重心擺在如何從實際業務流程不斷測試目標函數,並從目標函數訓練結果修正訓練與測試樣本。讀者可以將方法延伸思考到其他領域,例如政治與經濟、商業需求分析、工業工程與生產鏈管理等。
雖然前言打的正式又嚴肅幾分,但內文會盡量打得生動活潑一些,希望能對有興趣的朋友有些許幫助。
有人要講heuristic algorithms了!!
我現在正要自己implement simulated annealing,想說是不是可以拿去訓練NN,一直想不到到底要怎麼套進去,期待大大的文章!
希望能幫上一點忙,歡迎討論~~
完全不懂這門學問
不過就這段話看起來
以台灣指數期貨作為資料範本,探討第一部分與第二部分在實際應用上的表現情況。本部分不會過於著墨金融市場或交易策略,而是將重心擺在如何從實際業務流程不斷測試目標函數,並從目標函數訓練結果修正訓練與測試樣本。
我覺得The Big Short應該就是這麼發明出來的
感謝大大,會努力把他弄得不那麼難懂