주식투자 강화학습 과정 확인의 필요성
2020-03-28 • rltrader • stock, 주식투자, reinforcement learning, rl, 강화학습, visualize, 가시화 • 3 min read
주식투자 강화학습을 진행하면 정해진 환경에서 매순간 무작위로 행동을 결정하거나 신경망으로 행동을 결정한 다음, 에이전트가 결정된 행동을 수행하고 그 결과로 에이전트의 상태가 변경됩니다. 이번 절에서는 주식투자 강화학습 과정을 확인하는 방법을 다룹니다.
강화학습 과정 확인의 필요성
강화학습이 잘 진행되고 있는지를 판단하려면 신경망이 어떤 출력값을 반환하는지, 에이전트의 상태는 어떻게 변해가는지를 관찰해야 합니다.
강화학습으로 수백, 수천 에포크를 거치며 주식투자를 (제대로) 학습하다 보면 처음에는 투자 손실을 보다가 에포크를 거쳐 가면서 점점 수익을 내게 됩니다. 학습 시간은 인공 신경망의 복잡도, 학습 데이터의 크기, 에포크 수에 따라 수십 분에서 며칠까지도 걸릴 수 있습니다. 그렇기 때문에 제대로 된 학습을 진행하고 있는지 아닌지를 학습 과정이 진행되는 동안 관찰할 필요가 있습니다.
학습이 진행되어 가는데, 신경망의 학습이 제대로 되지 않아서 매수만 한다거나 매도만 하는 등의 이상 상황이 발생하면 중도에 학습을 멈추고 문제 파악 및 해결을 하고 다시 학습을 수행하는 것이 시간을 절약하는 길입니다.
강화학습 과정을 로그로 남기기
일반적으로 어떠한 과정을 텍스트로 기록한 것을 로그(log)라고 합니다. 로그는 (이미지보다) 상대적으로 작은 데이터 크기로 쉽게 기록할 수 있으며 상세한 정보를 담을 수 있다는 장점이 있습니다. 단점은 한눈에 기록을 파악하기 힘들다는 점입니다.
강화학습 과정에서 로그로 남기는 값들은 다음과 같습니다.
- 파라미터(parameter): 학습 속도(learning rate), 할인 요인(discount factor), 최소/최대 투자 단위(trading unit), 지연 보상 임계치(delayed reward threshold) 등의 파라미터를 기록해둬야 파라미터에 따라 결과가 어떻게 달라지는지를 확인할 수 있습니다.
- 에포크(epoch) 결과: 전체 에포크 중에서 몇 번째 에포크인지 먼저 기록하고 탐험률, 탐험 횟수, 매수 횟수, 매도 횟수, 관망 횟수, 보유 주식 수, 포트폴리오 가치, 긍정적 학습 횟수, 부정적 학습 횟수, 학습 과정에서 발생한 손실 등을 기록해 에포크가 진행되면서 이 값들이 어떻게 변해가는지 확인합니다.
- 최종 학습 결과: 학습 과정 중에서 달성한 최대 포트폴리오 가치, 수익 발생 횟수 등 전체 학습이 완료되고 나서야 알 수 있는 통계치 등을 확인합니다.
강화학습 과정을 이미지로 가시화하기
각 에포크마다 보유 주식 수, 행동, 인공 신경망의 출력값, 탐험, 수익과 손실을 관찰하기 위해 그림 4.6과 같은 가시화 방법을 사용합니다.
강화학습 과정 가시화 방법
가장 상위의 차트는 주식 종목의 일봉 차트를 보여줍니다. 즉, 강화학습의 환경(environment)이라고 할 수 있습니다.
두 번째 차트는 에이전트가 수행한 행동을 배경색으로 보여주고 보유 주식 수를 실선으로 보여줍니다. 매수했으면 보유 주식 수가 증가할 것이고 매도했으면 보유 주식 수는 줄어들 것입니다.
세 번째 차트는 가치 신경망의 출력값을 보여줍니다. 빨간 실선은 매수 행동에 대한 가치 신경망의 예측 가치를 보여주고 파란 실선은 매도 행동에 대한 예측 가치를 보여줍니다. 배경에는 매수 예측 가치가 높으면 빨간색, 매도 예측 가치가 높으면 파란색으로 표시해 줍니다.
네 번째 차트는 정책 신경망의 출력값을 보여줍니다. 빨간 실선으로 매수 행동에 대한 예측 확률을 보여주고 파란 실선으로 매도 행동에 대한 예측 확률을 보여줍니다.
정책 신경망이 있는 경우 정책 신경망의 예측 확률이 높은 행동을 택하게 됩니다. 수행한 행동에 대해 배경색으로 매수는 빨간색, 매도는 파란색으로 보여줍니다. 정책 신경망이 없는 경우 가치 신경망의 예측 가치가 높은 행동을 선택하고 수행한 행동을 이 차트의 배경으로 그려줍니다. 여기서 무작위 투자, 즉 탐험을 했으면 배경을 노란색으로 표시합니다.
마지막 차트는 포트폴리오 가치를 보여줍니다. 즉, 투자 결과인 손익을 보는 것입니다. 이 화면에서는 PV가 초기 자본금인 10,000,000원을 넘어서 수익이 발생한 것을 볼 수 있습니다. 여기서 빨간 수직선은 긍정 보상(positive reward)을 가지고 학습한 지점을, 파란 수직선은 부정 보상(negative reward)으로 학습한 지점을 표시한 것입니다.
이 화면을 에포크마다 한 번씩 생성해서 각 에포크에서 에이전트가 수행한 행동들, 인공 신경망의 출력, 투자 결과인 수익을 한눈에 볼 수 있습니다. 그림 파일을 에포크마다 생성하기에 부담이 있는 경우 10번의 에포크마다 한 번씩만 생성하는 등 일부 에포크에서만 생성할 수도 있습니다.