2019年12月2日 星期一

網友來信:如何克服病態曲率?或是減少這樣狀況出現?

問題:在mopcon演講中,你有提到病態曲率是有機會可以克服的,是否代表只要優化演算法的參數選擇正確,就可以減少這樣的情況出現?  

基本上大多數的病態曲率會發生,代表你的:

1. 參數空間太大
2. 或是維度太高
3. 或是可以理解成資料高頻雜訊太高

最重要的事情是, 你必須充分的先把現實中可以擬真的條件都先考慮進來
考慮到你的計算成本太高了,再考慮優化

這是我們所謂的【啟發式搜索的四步驟】,這四步驟是:

1. 我們首先對我們定義的問題,採用精確的研究方法
如果過於複雜到我們無法找到精確方法,就進入第二步

2. 對目前問題採用啟發式演算法
假如在過程中無法得到好的穩健性、泛化能力的話,進入第三步

3. 對問題進行簡化,並採用精確方法
假設對問題進行了某種程度的簡化,排除了一些輸入參數組合
排除了一些控制因素,但如果精確方法還是無法,就進入第四步

4. 對簡化的問題,採用啟發式演算法
如果還是無法,回到第三步,不斷循環直到可以為止

這每一步,你都要有充足的證據和判斷依據,才能 簡化→搜索→簡化. 

如果你有看我的 MAE MFE 的影片,你會發現我有一段就再講
你優化 SL/TP 去卡到參數空間太裡面,就會很危險

這些就是你事先對問題的真正情況的掌握程度,然後讓你對參數先做一點限制



所以你講的參數選擇是沒錯,這部分有很多種作法

例如我可以把很多組參數先做某種程度的函數綁定

例如 A=2 那 B=4.005,也就是 A 的平方加減上一個隨機小值

基本上這可以先把各種參數先分群處理,接著在考慮優化過程

通常的做法就是你不應該一次優化一個點,而是應該一次優化一群

然後在一群中去把整群的移動方向和分布情況做更新

這樣基本上陷入病態曲率的,就可以選擇放生,不拖垮整群

這部分在優化過程中,我們可以設計(黏著牆、反彈牆、環狀牆)



也就是當參數跑到某一個危險範圍內,或是他優化到一個情況的時候,

妳可以讓這組參數往優化方向的相反方向調整(反彈)

或是降低調整力道(黏著)

或是讓他某一個參數跳到相反情況(環狀牆)

關於這些,都是屬於啟發式搜索的部分,你可以往這方面了解

就會掌握到很多當代優化的黑科技



但是關鍵!還是在於你把真實世界的問題掌握到多深

其次才是優化,通常病態就是你不想考慮現實情況

這也是我對目前 ML/AI 這些東西 applied 到金融持保守的態度

太多先烈死在沙灘上了(不是說不行,而是你要如何考慮,就是我提到的原創力!)



沒有留言:

張貼留言