quantylab / rltrader

파이썬과 케라스를 이용한 딥러닝/강화학습 주식투자 - 퀀트 투자, 알고리즘 트레이딩을 위한 최첨단 해법 입문 (개정판)
https://contents.premium.naver.com/misoncorp/quantylab
MIT License
354 stars 360 forks source link

9장 모델활용하는 법 질문 #58

Open mncmncme opened 4 years ago

mncmncme commented 4 years ago

안녕하세요? 책사서 공부중인 초짜입니다. 9장 모델활용에 대해서는 책에 상세하게 설명이 되어있지 않은 것 같아, 따라가질 못하고 있습니다.

  1. 학습된 정책 신경망 모델 사용
  2. 학습기능을 비활성화 ... 등의 개념적으로만 접근하니 초짜인 저는 방향도 못잡겠습니다.

main.py에서 인자를 설정하면 실행이 가능한지요? 아님 다른 방법으로 진행해야하나요? 9.2.1 삼성전자 예제만이라도 어떻게 실행하면 되는지 부탁드립니다.

quantylab commented 4 years ago

1) 학습된 정책 신경망 모델 사용은 --reuse_models, --value_network_name, --policy_network_name 옵션을 활용하시면 되고, 2) 학습기능 비활성화는 --learning 옵션을 안주시면 됩니다.

예를들어 다음과 같이 설정할 수 있습니다.

python main.py --stock_code 005930 --rl_method a2c --net lstm --num_steps 5 --output_name test_005930 --num_epoches 1 --start_epsilon 0 --start_date 20180101 --end_date 20181231 --reuse_models --value_network_name a2c_lstm_policy_005930 --policy_network_name a2c_lstm_value_005930

학습한 a2c_lstm_policy_005930, a2c_lstm_value_005930 모델이 있다고 가정합니다. 학습 과정이 없으므로 --num_epoches는 1로, --start_epsilon은 0으로 주면 됩니다.

yoo2wo commented 4 years ago

학습후 위와같은 명령어로 모델을 사용하였는데 OSError: Unable to create file (unable to open file: name = 'C:\Users\wogud\Documents\rltrader-master\models/a2c_lstm_policy_train.h5', errno = 2, error message = 'No such file or directory', flags = 13, o_flags = 302) 라는 에러메세지가 떴습니다 그래서 models 라는 폴더를 만들고 h5 파일들을 넣어서 다시 수행한 결과 오류는 나지않았습니다. 제가 올바르게 모델을 사용한건가요?

spacecraft999 commented 3 years ago

2020년 9월23에 quantylab께서 답변주신 예대로 해도 모델활용이 안되는것 같습니다. 좀더 자세하게 설명과 예를 보여주시면 고맙겠습니다. 즉, 개정판 258쪽에 있는 9.2.1 학습된 모델적용1: 삼성전자의 결과를 도출하기 위해서, 학습된 정책 신경망 모델 사용방법과 학습기능을 비활성화 방법을 구체적으로 알려주시면 좋겠습니다. 감사합니다.

quantylab commented 3 years ago

@spacecraft999 모델 재사용 절차를 말씀드립니다.

학습 결과로 생성된 h5 파일을 확인합니다. 정상적으로 학습을 마치면 다음처럼 output 폴더 내에 결과물들이 존재합니다.

image

h5 모델 파일들을 models 폴더에 옮깁니다. actor-critic 모델들은 value, policy 두 개의 모델이 있겠습니다.

image

이 상태에서 다음과 같이 학습 기능을 끄고 실행하면 됩니다.

python main.py --stock_code 005930 --rl_method a2c --net dnn --output_name test_005930 --num_epoches 1 --start_epsilon 0 --start_date 20180101 --end_date 20181231 --reuse_models --value_network_name a2c_dnn_value_005930 --policy_network_name a2c_dnn_policy_005930

종목코드 005930에 대해서 a2c 강화학습 방법으로 신경망은 dnn을 사용하고 output 폴더 내에 생성되는 출력물 폴더명은 test_005930으로 하며 테스트할 데이터는 20180101에서 20181231로 1년치를 사용하고 재사용할 모델을 models 폴더 내에 있는 h5 파일 이름과 같이 a2c_dnn_value_005930, a2c_dnn_policy_005930로 정합니다.

여기서 --learning 옵션을 안줬으므로 학습을 수행하지 않고 --reuse_models 옵션을 줘서 지정한 모델을 재사용합니다.