테스트 실행, 성능에 대한 질문입니다.
안녕하십니까, 테스트 하는 와중에 궁금한게 생겨 질문 드립니다.
-
테스트시에 관망만 하는 에이전트가 가끔 관측되는데 올바른 학습결과라고 볼 수 있을까요?
-
초판 책에서는 테스트시 할인률을 0으로 두었는데 dev에서는 0으로 두지 않는 차이에 특별한 이유가 있을까요?
-
테스트시 학습된 신경망을 가져오는데 같은 종목, 같은 신경망인데도 실행시마다 결과(PV)가 달라지는 증상을 발견했습니다.(이런 결과가 일반적인가요?)
-
dev 모듈에서 테스트 실행시 신경망이 저장되지 않았다는 오류가 계속 뜨는데 검토 부탁드립니다! (학습할 때와 다르게 save_model 하는 부분에서 경로가 잘 안잡히네요)
질문이 다소 두서없고 많았습니다만... 항상 답변해주셔서 정말 감사드립니다.
건강유의하십시오. jaylee4274 드림.

- 학습시에도 관망만 하지는 않았는지 확인해볼 필요가 있습니다. (학습이 제대로 되지 않아 매도만 하는 방향으로 된다면 보유 주식이 없는 상황에서 매도만하므로 관망만 하게 됩니다.)
- 초판에서는 PG(...에 가까운) 방식으로 강화학습을 해서 할인율을 특별히 두지 않았고 개정판에서는 Q 계산을 위해 할인율을 두었습니다.
- ... 뭔가 이상하군요;;
- 3번과도 연관이 있을것 같습니다. 이슈는 파악해 보겠습니다.
@jaylee4274 테스트 하실때 사용하신 커맨드(옵션들)를 알려주시면 감사하겠습니다.
이번에도 답변해주셔서 감사합니다. ! ^^
답변이 다소 늦어 죄송합니다.
저는 데이터를 일부 다르게 구성하고, 일부 옵션은 기본 값을 주고 했습니다. 먼저 선생님께서 올려주신 버젼에서 실행한 커맨드 입니다.
-
dev와 동일한 코드를 실행, 005930, 19년에 활용 #Test005930DQN-50
!pythonmain.py --stock_code 005930 --rl_method dqn --net lstm --num_steps 5 --output_name test2_005930 --num_epoches 1 --start_epsilon 0 --start_date 20190101 --end_date 20191231 --reuse_models --value_network_namedqn_lstm_value_005930_50

-
제가 만든 버전 2년 학습, 19년 활용, 실행코드에 종목번호(결과출력, 종목코드, 신경망 이름 등)만 다르게 입력해주며 실험했습니다.
-
파라미터

-
실행 코드 (학습)
#DQN !python main.py --stock_code --rl_method dqn --output_name --learning #PG !python main.py --stock_code --rl_method pg --output_name --learning #AC !python main.py --stock_code --rl_method ac --output_name --learning #A2C !python main.py --stock_code --rl_method a2c --output_name --learning #A3C !python main.py --stock_code --rl_method a3c --output_name --learning -
실행코드(테스트) #TestDQN
!pythonmain.py --stock_code --rl_method dqn --output_name test_ --num_epoches 1 --start_epsilon 0 --start_date 20190101 --end_date 20191231 --reuse_models --value_network_name dqn_lstm_value_`
#TestPG
!python main.py --stock_code --rl_method pg --output_name test_ --num_epoches 1 --start_epsilon 0 --start_date 20190101 --end_date 20191231 --reuse_models --policy_network_name pg_lstm_policy_
#TestAC
!python main.py --stock_code --rl_method ac --output_name test_ --num_epoches 1 --start_epsilon 0 --start_date 20190101 --end_date 20191231 --reuse_models --value_network_name ac_lstm_value_ --policy_network_name ac_lstm_policy_`
#TestA2C
!python main.py --stock_code --rl_method a2c --output_name test_ --num_epoches 1 --start_epsilon 0 --start_date 20190101 --end_date 20191231 --reuse_models --value_network_name a2c_lstm_value_ --policy_network_name a2c_lstm_policy_`
#TestA3C
!python main.py --stock_code --rl_method a3c --output_name test_ --num_epoches 1 --start_epsilon 0 --start_date 20190101 --end_date 20191231 --reuse_models --value_network_name a3c_lstm_value_ --policy_network_name a3c_lstm_policy_ `
혹시 모델 파일 참조가 안된건지 확인이 필요할것 같습니다.
학습시에도 --value_network_name와 --policy_network_name를 주면 학습된 모델이 models 폴더에 저장됩니다.