강화학습 모델의 성능평가 방법

AI주식자동매매|2025. 7. 13. 15:34
반응형

훈련 전·후 모델의 “성능이 정말 좋아졌는지”를 판단하려면, 단순히 “매도의견이 사라졌다” 수준이 아니라 다음의 정량적 지표들을 비교·분석해 보셔야 합니다.

1. 핵심 성능 지표

  1. 누적 수익률 (Cumulative Return)
    • 평가 구간 전체에서 에이전트가 얻은 총 보상합(또는 net_worth 변화량)
    • performance_metrics['cumulative_return'] 에 저장된 값
  2. 샤프 비율 (Sharpe Ratio)
    • (평균 수익률) ÷ (수익률의 표준편차)
    • 보상(수익) 대비 변동성(위험)을 같이 고려
    • performance_metrics['sharpe_ratio']
  3. 최대 낙폭 (Max Drawdown)
    • 최고 자산가치 고점 대비 최저 자산가치까지의 하락폭 비율
    • 큰 손실 구간이 얼마나 있었는지 파악
    • performance_metrics['max_drawdown']
  4. 정확도 (Accuracy)
    • 에이전트가 “이동 방향(익절/손절)”을 제대로 맞춘 비율
    • performance_metrics['accuracy']

이 네 가지 지표를 훈련 전, 훈련 후, 혹은 하이퍼파라미터(Optuna/Bayesian) 최적화 이전·이후 모델로 각각 계산해서 표로 비교해 보세요.


2. 지표 비교를 위한 간단한 워크플로우

  1. Baseline 기록
    • 현재 학습 로직으로 먼저 한 번 돌려서 performance_metrics 를 저장 (baseline_metrics).
  2. 변경 적용 후 재훈련
    • 학습률·스텝수·보상구조 등을 조정해서 재훈련 → new_metrics 기록.
  3. DataFrame으로 정리
  4. python
    복사편집
    import pandas as pd df = pd.DataFrame([ {'model':'baseline', **baseline_metrics}, {'model':'new', **new_metrics} ]) print(df)
  5. 비교 시각화
    • df.plot.bar(x='model', y=['cumulative_return','sharpe_ratio','max_drawdown','accuracy'])
    • 혹은 표 형태로 눈으로 빠르게 확인

3. 훈련 과정 로깅 활용

  • 이미 RewardLoggingCallback 에서 TensorBoard에 train/episode_reward, train/cumulative_return 등을 기록하도록 설정하셨으니,
    1. 터미널에서
    2. bash
      복사편집
      python -m tensorboard.main --logdir=./tensorboard_logs
    3. 브라우저에서 http://localhost:6006 접속
    4. Training → Scalars 탭에서 에피소드 리워드 곡선, cumulative return curve, 정책/가치 손실(policy_loss, value_loss) 등을 모니터링
  • 학습 곡선이 우상향하는지, 후반부에 흔들림(과적합) 없이 안정적인지를 체크하면 “학습이 잘 되고 있는지” 알 수 있습니다.

4. 검증용 데이터에 대한 평가

  • 학습 중 train_df 외에 검증용 eval_df 를 분리하셨으니,
    • 학습용 vs 평가용 지표를 각각 계산해 과적합 여부를 파악
    • 예를 들어 df_eval_metrics['sharpe_ratio'] < df_train_metrics['sharpe_ratio'] 처럼 평가 성능 하락 유무

요약

  1. 정량적 지표(누적 수익률·샤프·낙폭·정확도)를 훈련 전·후 비교
  2. TensorBoard훈련 곡선(episode_reward, loss 등)을 모니터링
  3. 학습 vs 검증 지표 차이로 과적합 여부 관찰
  4. 지표들을 표나 차트로 시각화해서 한눈에 비교

이 흐름을 통해 “매도의견이 없어졌다”가 아니라, “누적 수익률 +24% → +30%, 샤프 0.8 → 1.2, 최대 낙폭 15% → 10%, 정확도 52% → 60%” 와 같은 구체적 개선 수치를 얻을 수 있습니다.

 

반응형

댓글()

코인/주식 자동매수에 머신러닝 강화학습 PPO적용하기 1

AI주식자동매매|2024. 8. 9. 07:13
반응형

PPO (Proximal Policy Optimization)와 DQN (Deep Q-Network)은 강화 학습에서 널리 사용되는 두 가지 알고리즘입니다. 이 두 가지는 각각의 특성과 장단점이 있으며, 특정 상황에 따라 더 적합한 알고리즘이 달라질 수 있습니다.

PPO (Proximal Policy Optimization)

특징:

  • 정책 기반 (Policy-based) 알고리즘: PPO는 정책 기반 방법론을 따르며, 이를 통해 직접적으로 행동 정책을 업데이트합니다.
  • 클립핑: PPO는 정책 갱신 시 클리핑(clipping)을 사용하여 큰 갱신을 방지합니다. 이로 인해 학습 과정에서 안정성을 확보할 수 있습니다.
  • 샘플 효율성: PPO는 여러 번의 에포크 동안 샘플을 다시 사용하므로, 샘플 효율성이 높습니다.

장점:

  • 안정성: PPO는 클리핑을 통해 정책 갱신을 안정적으로 수행합니다.
  • 샘플 재사용: PPO는 여러 번의 업데이트 동안 샘플을 재사용할 수 있어, 데이터 효율성이 높습니다.
  • 연속적 액션 공간: PPO는 연속적이고 다차원적인 액션 공간에서 잘 동작합니다.

단점:

  • 복잡성: PPO는 상대적으로 복잡한 알고리즘이어서 구현과 조정이 어려울 수 있습니다.
  • 트레이닝 시간: PPO는 많은 트레이닝 시간을 필요로 할 수 있습니다.

DQN (Deep Q-Network)

특징:

  • 값 기반 (Value-based) 알고리즘: DQN은 Q-러닝을 심층 신경망으로 확장하여 상태-액션 값 함수를 추정합니다.
  • 에피소드 학습: DQN은 에피소드 단위로 학습을 수행하며, 학습에 사용되는 경험은 리플레이 버퍼에서 샘플링됩니다.
  • 이산적 액션 공간: DQN은 이산적 액션 공간에서 동작하며, 연속적 액션 공간에 대해 사용하기 어렵습니다.

장점:

  • 상대적으로 단순: DQN은 비교적 이해하고 구현하기 쉬운 알고리즘입니다.
  • 이산적 액션 공간: 이산적 액션 공간을 다루는 데 적합하며, 간단한 환경에서 매우 효과적입니다.
  • 연속된 상태에서 학습 가능: DQN은 특정 환경에서 좋은 성능을 보일 수 있으며, 환경이 안정적일 때 강력한 결과를 낼 수 있습니다.

단점:

  • 연속적 액션 공간에서의 한계: DQN은 연속적 액션 공간에 적용하기 어려우며, 이를 다루기 위해 추가적인 기법이 필요합니다.
  • 샘플 비효율성: DQN은 PPO에 비해 샘플 효율성이 낮으며, 많은 데이터를 필요로 할 수 있습니다.
  • 불안정성: 큰 상태 공간이나 복잡한 환경에서는 학습이 불안정할 수 있습니다.

일반적인 사용 사례:

  • PPO: 연속적 액션 공간, 복잡한 환경, 로봇 제어, 자율주행 등에서 많이 사용됩니다.
  • DQN: 이산적 액션 공간, 비교적 단순한 환경, Atari 게임 등에서 많이 사용됩니다.

요약:

  • PPO는 복잡한 환경에서 안정적이고 샘플 효율성이 높은 강화 학습을 원할 때 사용됩니다.
  • DQN은 단순하고 이산적인 액션 공간을 가진 환경에서 사용하기 쉬운 알고리즘입니다.

각각의 장단점을 고려하여, 특정 문제에 맞는 알고리즘을 선택하는 것이 중요합니다.

반응형

댓글()