《AI時代:碼農的涅盤重生》第85章 學習強化學習(1)

作者:Flint8·6小時前

窗外的深圳灣在晨光中泛著細碎的金光,林晨卻無暇欣賞。書房的窗簾拉上了一半,三塊螢幕亮著,映著他專注的臉。距離上次黃金期貨盈利已經過去一週,賬戶裡的數字又往上跳了跳,穩定在七萬八左右。短暫的喜悅過後,一種更深層的渴望在他心裡滋長——現有的系統,本質上還是基於規則和傳統機器學習模型(預測價格走勢)的“半自動”系統。它聰明,但還不夠“智慧”。

“如果能訓練出一個真正懂得在複雜金融市場裡‘生存’和‘狩獵’的智慧體呢”?這個念頭一旦冒出,就再也壓不下去。

他點開收藏夾裡標記已久的幾篇論文和開源專案。《Playing Atari with Deep Reinforcent Learning》、《Deep Reinforcent Learning for Trading》。強化學習(Reinforcent Learning, RL),這個讓AI在遊戲裡從零開始擊敗人類冠軍的技術,其核心思想深深吸引了他:智慧體(Agent)透過與環境(Environnt)互動,根據行動(Action)獲得的獎勵(Reward)來學習最優策略(Policy)。這不正是一個交易員在市場中摸索、試錯、最終形成自己交易體系的抽象過程嗎?

“把市場看作環境,把買賣操作看作行動,把盈虧看作獎勵……”林晨喃喃自語,手指在鍵盤上無意識地敲擊著。這個類比讓他興奮。傳統的量化策略,往往是人類設計好規則(比如“金叉買,死叉賣”),或者用監督學習預測未來價格然後制定策略。而強化學習,是讓AI自己從海量歷史資料中探索,找出能最大化長期累積收益的“行為模式”。它可能發現人類根本想不到的微妙特徵和時機。

但興奮很快被現實的複雜性沖淡。金融市場的“環境”極其複雜、非穩態、充滿噪聲,獎勵訊號(盈虧)稀疏且延遲,還存在高昂的“試錯成本”(真金白銀的虧損)。這比Atari遊戲裡控制一個小方塊吃豆子難了無數個數量級。

“先從概念和經典演算法啃起”。林晨定了定神,打開了Notion筆記,新建了一個頁面,標題寫上“強化學習入坑筆記(量化交易視角)”。

他給自己規劃了三天的基礎理論學習。第一天,搞懂馬爾可夫決策過程(P)、價值函式(Value Function)、策略梯度(Policy Gradient)這些核心概念。厚厚的PR(Pattern Recognition and chine Learning)書和相關部落格文章成了他主要的精神食糧。三十五歲的大腦重新像海綿一樣吸收這些略顯抽象的數理知識,有時一個公式要推導好幾遍,在草稿紙上寫滿才豁然開朗。

“狀態(State)、動作(Action)、獎勵(Reward)、策略(Policy)……”他像唸經一樣重複著這些術語,試圖將它們烙印在思維裡。理解到一定程度後,他開始嘗試用Python寫一些最簡單的模擬環境,比如一個簡化的“股票賭大小”遊戲,來驗證最基本的Q-learning演算法。

第二天和第三天,他集中火力攻克兩個當下最主流的深度強化學習演算法:DQN(Deep Q-Network)和PPO(Proxil Policy Optization)。

DQN算是深度強化學習的開山之作之一,用深度神經網路來近似Q值函式(評估在某個狀態下采取某個動作的長期價值)。林晨仔細研究了其核心技巧:經驗回放(Experience Replay)和目標網路(Target Network)。經驗回放就是把智慧體與環境互動的經歷(狀態、動作、獎勵、新狀態)儲存起來,然後隨機抽樣進行訓練,打破資料間的相關性,提高穩定性。目標網路則是單獨用一個更新較慢的網路來提供Q值目標,緩解訓練震盪。

“這思路妙啊”,林晨看著程式碼實現,忍不住讚歎,“就像人不能只盯著最近一筆交易的得失,要時不時回顧總結過去的各種交易情況(經驗回放)。也不能因為今天賺了點就立刻飄了,得有個相對穩定的自我評價基準(目標網路)”。

而PPO則屬於策略梯度家族,直接最佳化策略函式本身。它透過一個“裁剪”技巧,限制每次策略更新的幅度,確保訓練更加穩定。林晨發現,PPO在連續動作空間(比如決定買賣多少比例倉位)或者更復雜的策略建模上往往比DQN更有優勢。

“DQN更像是在學習‘在什麼情況下做什麼動作最好’的查表,而PPO是在學習一套‘行為準則’本身”。他嘗試用自己理解的語言總結。

理論學習告一段落,林晨摩拳擦掌,準備動手將RL融入他的投資系統。這才是真正的挑戰。

他首先需要定義“環境”。他選取了A股市場某隻流動性較好的ETF(交易所交易基金)的分鐘級歷史資料,時間跨度三年。環境的狀態(State)設計為過去N分鐘的價格序列、成交量、以及一些技術指標(如RSI、CD)的向量。動作(Action)簡化為三個:買入(全倉)、賣出(清倉)、持有。獎勵(Reward)則定義為每次動作轉換後持倉市值的變化率(考慮手續費)。

接著是構建智慧體。他決定先用相對簡單的DQN試試水。在PyTorch框架下,他搭建了一個包含幾層全連線網路的Q網路,輸入是狀態向量,輸出是三個動作對應的Q值。

訓練開始。他讓智慧體在歷史資料上“回測”,一開始完全是隨機探索,買買賣賣。看著模擬賬戶曲線像過山車一樣上躥下跳,林晨哭笑不得。訓練過程極其緩慢,而且非常不穩定。有時智慧體似乎學到了一點東西,知道在下跌時賣出,但很快又會陷入瘋狂交易的怪圈,累積的手續費就把模擬利潤吃光了。

“獎勵稀疏……動作對收益的影響有延遲……市場狀態非馬爾可夫……”他一邊盯著訓練日誌裡幾乎不增長的累計獎勵,一邊揪著頭髮總結問題。經典的“稀疏獎勵”和“信用分配”難題活生生擺在眼前。一次成功的買入,可能得益於幾天前某個賣出動作避免了更大虧損,但智慧體很難建立起這種長程的因果關係。

他嘗試調整獎勵函式,加入一些基於技術面判斷的“塑形獎勵”(Shaping Reward),比如當價格突破均線時給予微小正獎勵,試圖引導學習。也嘗試了更復雜的網路結構,加入LST來處理時間序列特徵。

連續三天的除錯,每天對著螢幕超過十四小時。蘇婉晚上進來送水果,看到他眉頭緊鎖、螢幕上滿是曲折的損失函式曲線和亂七八糟的交易訊號圖,輕輕嘆了口氣,把水果放下,默默帶上門。

第四天深夜,林晨遇到了一個更棘手的問題:過擬合。智慧體在訓練資料(某一段歷史時期)上表現得似乎不錯,累計獎勵開始緩慢上升,但換到另一段“未見過的”歷史資料(驗證集)上測試,表現就一塌糊塗,甚至不如隨機策略。

“它在死記硬背特定歷史行情下的‘正確答案’,而不是學會通用的交易原則”。林晨靠在椅背上,感到一陣深深的疲憊和挫敗。窗外的燈火已稀疏,城市進入沉睡。螢幕的光映著他眼裡的血絲。

他關掉訓練程式,起身走到窗邊,做了幾個深蹲,活動了一下僵硬的脖頸。冷水洗了把臉,回來坐下,沒有繼續鑽牛角尖除錯引數,而是打開了另一個文件——他的求職簡歷。

簡歷上,“專案經驗”一欄已經更新了“基於機器學習的多市場量化交易系統(個人專案)”,並簡要描述了架構和實盤成績。現在,他思考著是否要把“探索強化學習在量化交易中的應用”也作為一個研究方向寫上去,哪怕目前還沒出成果。

“寫上去”,他對自己說,“至少表明我的技術視野和持續學習的態度。T廠或者那些金融科技公司,應該會看重這種前沿技術的探索能力”。

他簡要地在簡歷末尾的“技能與興趣”部分加了一句:“正在研究深度強化學習(DQN/PPO)在金融時序決策中的應用”。

做完這件事,他重新開啟程式碼。這一次,他沒有急於執行,而是從頭開始審視整個訓練框架。環境設計是否合理?狀態特徵是否真正具有預測性?動作空間是否太簡單或太複雜?獎勵函式是否真正引導智慧體關注長期收益?

“也許,我太心急了,總想讓它立刻學會‘賺錢’”。林晨反思,“或許第一步,應該先讓它學會‘不虧錢’,或者學會在模擬環境中達到某個基準策略(比如簡單均線策略)的水平”。

。境環雜複實真到移遷步逐再,效有的本法算演證驗先。列序格價機隨的特覆回值均和勢趨有個一擬模,如比。慧智練訓中境環擬模的特場市些某現能但化簡、的控可全完己自個一在先是而,料資格價史歷用接直再不,路思個一換定決他

。蓋覆索探的定堅更種一被已但,在仍敗挫。了來回又注專的戰挑知未對面、的悉種那,時碼式程行一第下敲上盤鍵在次再指手當。”rotaliS_gnidarT_LR“為名命,夾料資案專個一了建新他。些一了小乎似力,轉一路思

。山高座一的服征須必中涯生技人個他是也許或,躍一鍵關的統系資投升提是僅不這,航導主自中洋海的定確不在會學IA讓。的對是向方個這,他訴告音聲個有深心但。果用實到不看期短能可至甚,易容不路條這,道知他

。夜深的堅攻個一又進剛剛才,界世碼式程的他而,始開將即天一的新。白發微微已天,外窗

猜你喜歡

同題材或同分類的其他作品。