본문 바로가기

Data & AI

TradingGPT (Decision Transformer: Reinforcement Learning via Sequence Modeling)

 

안녕하세요. 

 

JeTech Lab을 소개하고, 이제 첫 화면을 그려나가면서

 

첫 모델로 어떤 것들을 선보일까 고민하면서 

 

오랜만에 논문을 읽고 트레이딩에 활용할 수 있는 방법들에 대해서 이야기를 해보려고 합니다. 

 

오늘은 Decision Transformer 라는 논문을 리뷰하고 Trading 모델에 대한 이야기를 해보려고 합니다. 

 

Decision Transformer 논문은 Berkeley, Facebook, Google에서 공동 연구한 내용으로 2021년에 나온 논문입니다. 

 

논문이 긴 편은 아니었는데 시각적 자료가 적고 기발한 방식 자체만을 중점을 둔 논문이라 

 

시각화 자료를 활용해서 논문 리뷰를 해주신 DSBA 연구실의 Paper Review 자료를 많이 참고했습니다. 

 

제가 아주 애정하는 연구실입니다. 따로 교수님이나 연구원분들과 친분이 있는건 아니지만 

 

연구방향과 다루는 주제가 저의 관심영역과 아주 밀접해서 늘 많이 배우고 있습니다. 

 

이번 Paper Review 에 참고한 링크는 아래 추가해 드리겠습니다. 

 

http://dsba.korea.ac.kr/seminar/?mod=document&pageid=1&keyword=decision&uid=1801

 

[Paper Review] Decision Transformer: Reinforcement Learning via Sequence Modeling

1. Topic 강화 학습에 Transformer를 접목시킨 Decision Transformer 모델을 소개합니다. Decision Transformer 논문은 버클리대, Facebook AI Research, Google Brain에서 공동연구하여 2021년 6월에 arxiv에 올라온 논문입니

dsba.korea.ac.kr

https://jalammar.github.io/illustrated-transformer/

 

The Illustrated Transformer

Discussions: Hacker News (65 points, 4 comments), Reddit r/MachineLearning (29 points, 3 comments) Translations: Arabic, Chinese (Simplified) 1, Chinese (Simplified) 2, French 1, French 2, Italian, Japanese, Korean, Persian, Russian, Spanish 1, Spanish 2,

jalammar.github.io

 

 

 

강화학습 트레이딩의 한계점

 

제가 강화학습을 가끔씩 다루곤 했었는데

 

사실 강화학습의 연구 역사를 보면 

 

Bellman Equation에 기반하여, 특정 상태에 행동을 가하면 변화하는 상태와 그 상태천이 확률분포 그에 따른 보상에 기반합니다. 

 

이에 상태 가치함수 그리고 행동 가치 함수를 근사화 하는 것을 목표로 학습을 하는데, 

 

에이전트가 환경에 행동을 가하면 그 상태가 행동에 의해서 변한다는 것을 가정하고 있습니다. 

 

하지만 중요한것은 트레이딩에선, 우리가 시장에서 매수 혹은 매도를 한다고 해도 

 

우리의 행동에 따라 시장이 바뀌진 않습니다. 본인이 시장을 움직일 만큼의 큰 자금을 운용하지 않는 이상 말이죠

 

그래서 사실 강화학습에서 가장 중요한 행동에 의해 시장이라는 환경이 주는 상태의 변화라는 게 무의미해져서

 

어떠한 행동을 하더라도 나의 행동에 의해 변화하는게 아닌 상태들을 보면서 학습이 잘 되지 않을 수 있습니다. 

Q-learning에 대한 알고리즘

 

위 알고리즘에서 기존 강화학습의 Q-learning 에서 상태 S에서 행동 A를 하고

 

보상 R과 행동으로 인해 바뀐 상태 S'을 관찰하는데

 

A와 S'이 상관성이 없기 때문에 알고리즘 자체가 의미없어지게 되는 현상이 발생합니다. 

 

그러면서 저는 이를 해결하기 위해 유전알고리즘을 추가해서

 

기존 강화학습 트레이딩에서 행동과는 상관없이 변화하는 상태를 갖는 시장이라는 특수성이 있지만

 

유전알고리즘, 무작위로 생성되는 모델들의 적자생존 전략으로 결국 상태의 변화 추이를 잘 예측하고 근사화할 수 있는 방법으로

 

연구를 진행할 수 있겠다는 영상을 올린 적 있는데, 핵심은 트레이딩에 강화학습을 적용하기에는 

 

강화학습의 근본인 벨만 방정식의 가정이 통하지 않는 분야라는것입니다. 

 

그래서 저는 이런 상태에 대한 순서를 Sequence 데이터로 보고 

 

시장의 상태 Sequence에 대한 데이터 분포만 가지고 있어도 추후에 나오는 에이전트가 이를 활용할 수 있겠다고 생각을 했었고

 

시계열 Clustering을 통해서 시장 상태에 대한 라벨 데이터를 만들 수 있는 시계열 분석 SOTA 모델들을 확보해나가고 있었습니다. 

 

 

 

Decision Transformer Method

 

논문 이야기를 하자면, 

 

핵심은 기존의 강화학습이 TD Learning에 기반한

 

즉, 상태가치함수나 행동가치함수를 근사화하는 방법이 아니라

 

Sequence 데이터를 다루는 Transformer에 적합하게 강화학습의 학습 구조를 바꾼데 있습니다. 

 

해당 논문에서는 GPT2 모델을 기반 구조에서

 

여러 강화학습 벤치마크에서 기존 TD Learning 보다 우수한 성과를 보여준다고 하고 있습니다. 

 

자세한 매커니즘으로 넘어가기 전, Transformer와 GPT 모델에 대해서 이해하고 넘어가겠습니다. 

 

 

Transformer

 

 

Transformer Architecture (Vaswani, Ashish, et.al "Attention is all you need")

 

인류가 머신러닝/딥러닝을 발전시키며 데이터를 다루면서 RNN, CNN, LSTM 등 다양한 구조의 계층들을 갖는 모델들이 많았으나

 

Transformer는 많은 데이터들 사이에서 데이터 간 중요도를 파악하면서

 

많은 데이터들 사이에서도 효율적으로 목적으로 하는 작업을 잘 수행할 수 있는

 

Attention 매커니즘으로 특히 시퀀스 데이터에서 유의미한 관계를 파악할 수 있게 되었습니다. 

 

Transformer는 Encoder-Decoder 구조를 가지고있습니다. 

 

Encoder는 입력 시퀀스를 처리하여 Representation을 생성하고

 

Decoder는 Representation vector를 바탕으로 출력시퀀스를 생성합니다. 

 

시퀀스 Token 들이 순차적으로 입력되는 것이 아니라 행렬로 변환되어서 모델로 들어가기 때문에

 

우리가 인지하는것처럼 순서를 모델이 기억해주지 못합니다.

 

그래서 입력에 대한 순서에 대한 정보를 Positional Encoding을 통해 지정합니다. 

 

Encoder 각 레이어는 자체적인 Multi-Head Attention Head를 포함하고 있어서

 

입력 시퀀스 내 다양한 부분에 주목할 수 있고

 

시퀀스에서 중요한부분이나 시그널을 감지하고 흐름상 더 큰 가중치를 부여하는데 도움을 줍니다. 

 

Decoder도 비슷한 구조를 가지고 있지만 출력 시퀀스를 생성하기 위한 추가 메커니즘이 포함되어 있습니다.

 

Masked Multi-Head Attention은 Decoder의 각 단계에서 이전에 생성된 모든 토큰들에만 주목하도록 합니다.

 

이는 모델이 아직 생성하지 않은 토큰을 예측할 때 현재 생성된 토큰에만 영향을 받도록 보장합니다.

 

Decoder의 어텐션 레이어는 Encoder의 최종 벡터 표현을 키(Key)와 값(Value)으로 사용하고,

 

이전 Decoder 레이어의 출력을 쿼리(Query)로 사용합니다.

 

이는 Decoder가 입력 시퀀스의 흐름과 이미 생성된 출력 시퀀스의 정보를 결합하여 다음 시퀀스를 예측하는 데 필수적입니다.

 

여기서 시퀀스는 시장의 흐름, 쉽게 이야기하면 차트가 보편적으로 보였던 패턴들이라고 볼 수 있습니다. 

 

 

 

GPT

GPT2 모델 구조

 

GPT(Generative Pre-trained Transformer)는 Transformer를 기반으로 특정 데이터셋에서 사전 학습을 수행한 후

 

학습한 데이터 분포에 기반해서 Sequence Generation을 수행합니다. 

 

시퀀스 데이터의 생성 작업에 초점을 맞추기 때문에 만들어진 시퀀스 토큰은 다음 토큰을 예측하는

 

Auto-Regressive 방식으로 수행됩니다. GPT는 Transformer의 Decoder 구조를 사용하여

 

다음 토큰을 생성하는데 필요한 조건부 확률을 모델링합니다. 

 

위 사진의 GPT 구조에서 각 레이어 사이에 Layer Normalization이 적용되어 계층 간 학습을 안정화하고

 

Masked Self-Attention 방식으로 t 시점의 시퀀스 생성 시 t - 1 시점의 시퀀스 데이터만 이용할 수 있게 마스킹을 합니다. 

 

 

Training

 

논문에서 제시하는 학습 방향은

 

GPT가 만들어내는 시퀀스 데이터에 강화학습의 학습 요소였던

 

상태 S, 보상 R, 직전 행동 A를 포함하도록 합니다. 

 

GPT는 (S, R, A)를 하나의 시퀀스 데이터로 보고 상태, 보상, 다음 행동을 생성해 내도록 합니다. 

 

 

상태, 보상, 행동에 대한 값들은 행렬로 변환되고 

 

Transformer의 처리방식인 Q, K, V 입력값을 활용해 Attention 메커니즘으로 다음 행동을 반환합니다.

 

이런 GPT 모델이 기존 강화학습에서 에이전트 역할을 하고

 

Training Loop에서 전문가의 행동 데이터나 정답지로 선정할 참고 데이터셋에서 제공하는 행동 a와

 

GPT 모델이 만들어내는 a_preds 간 L2 loss를 손실함수로 정하여 학습을 진행하고 있고

 

강화학습 이후 시뮬레이션 환경에 투입시키는 의사코드를 확인할 수 있습니다. 

 

기존 TD learning 방식이 아니지만

 

GPT가 생성해 내는 시퀀스가 누적보상이 커질 수 있는 행동들을 반복하여 보여주면서 강화학습이 진행됩니다. 

 

Trading GPT

 

ChatGPT가 킬러앱으로 세상에 선보여지며

 

GPT는 언어를 생성해 내도록 Pretrained 된 Language Genreative Pretrained Transformer로 통용되고 있습니다. 

 

그리고 그에 파생돼서 여러 GPT 모델들이 나오고 있고

 

GPT Store 등의 여러 모델들도 결국엔 특정 분야의 대화를 잘 생성해 내도록 훈련된 모델인 것뿐이죠. 

 

GPT-4 정도에 와서야 Multi-Modal, 텍스트, 언어, 음성뿐 아니라 그림과 같은 시각적 자료로 소통할 수 있지만

 

기본적으로 GPT를 언어 모델을 위해 사용되고 있습니다.

 

저는 트레이딩과 AI를 모두 하는 입장에서

 

트레이딩 이야기를 하는 언어모델이 아니라 정말 트레이딩을 할 수 있는 AI모델, TradingGPT를 만드려고 합니다. 

 

GPT-1이 BookCorpus의 4.5GB 데이터에서, GPT-2는 웹 텍스트, 특히 레딧에서

 

GPT-3가 570GB plain text, 400억 개의 토큰으로 학습했듯

 

저의 TradingGPT는 여러 시장분야의 트레이딩을 학습시킬 예정입니다. 

 

추가로, 업계의 훌륭한 트레이더분들과 협업해서

 

트레이더분의 고유한 매매스킬과 관점에 의거한 트레이딩을 모사하는 GPT를 만들어

 

트레이더에게 수익 지분을 주고, 저는 다양하고도 상관성이 낮은 전략들을 모아가면 어떨까 생각하고있습니다. 

 

 

 

TODOs

 

1. GPT모델

 

트레이딩 환경을 학습할 에이전트 역할을 하는 모델이 필요합니다.

 

GPT 모델을 참고하여 트레이딩에 적합한 GPT로 변경하는 작업을 수행 할 예정입니다. 

 

GPT 입력으로 들어갈 시장 상태의 정의나 적절한 모델 구조를 살펴볼 예정입니다. 

 

 

2. 시계열 Clustering 모델

 

기존 SOTA 시계열 분석 모델들을 활용해서 

 

시계열 Clustering 모델을 활용할 예정입니다. 

 

우리가 보는 차트데이터를 그대로 에이전트가 보는 상태로 인지시킬 수 있지만

 

그런 성의없는 상태보다는 시계열데이터 분석에서 좋은 성능을 보이는 모델로

 

시장 상태에 대한 분석과 상태에 대한 정의를 해줄 수 있다면 좋겠다는 생각이 들었습니다. 

 

 

3. 시각화

 

결국 여러분들에 이런 에이전트의 성과, 시장을 어떻게 바라보는지 공유하기 위해서

 

첫 모델이 만들어지면 JeTech Lab에 공유할 수 있도록 하겠습니다. 

 

 

 

이렇게 오늘은 Decision Transformer 논문을 읽고

 

기존에 직면했던 문제점들을 개선해서 해결할 방향을 찾았습니다. 

 

아마 구현을 하면서도 많은 문제들에 직면할 수 있는데

 

새로운 지식들로 이것들을 극복해 나가는 과정이 저는 즐겁게 느껴집니다. 

 

다음 시간에는 Trading GPT의 구현과 강화학습 과정을 보여드리고

 

또 연구하면서 나오게된 데이터들과 경험들을 나눌 수 있도록 하겠습니다. 

 

감사합니다.