본문 바로가기
무모한 도전-주식 인공지능 만들기

강화학습에 걸린 시간 측정하기-코드가 실행에 걸린 시간의 측정part2

by 인터넷떠돌이 2018. 12. 19.
반응형

안녕하세요?


지난번 포스팅에서 강화학습에 걸린 시간을 측정하고자 했습니다만, 시도했는 방법이 에러가 나면서 실패하는 것을 볼 수 있었습니다. 그래서 이번 포스팅에서는 다른 시도를 하였고, 실제 1000에포크 강화학습을 하는데 걸린 시간을 측정한 결과까지 올려 보고자 합니다.



일단 에러에도 불구하고 startTime은 나오는 것은 볼 수 있었습니다. 다만 이게 보기가 조금 안 좋기는 하지만, 아무튼 성공은 성공인데, 문제는 relativedelta는 제대로 되지 않았다는 것을 볼 수 있습니다.



그래서 해결책을 찾아보는 중에 위 스크린샷에 보이는 것처럼, timeit이라는 모듈을 가지고 오도록 합니다. 앞서 시도한 모듈과 마찬가지로 파이썬 내장 모듈이라서 따로 설치할 필요는 없었습니다.



일단 시작부분은 default_timer()라는 것으로 강화학습의 시작 부분에서 타이버를 켜 주도록 합니다.




그리고 강화학습이 끝나는 부분에서 위 스크린샷과 같이 stop 함수를 주어서 타이머를 끄고, 시작과 끝의 값을 계산한 다음에 각각 시간과 분등에 맞도록 계산을 하는데, 나중에야 알았지만, 계산이 잘못 되어서, 분과 초만 맞고, 시간의 계산은 틀렸습니다.



일단 여기서 분은 제대로 2분 22초로 나와서 당장은 알아차리지 못했습니다. 아무튼 분 단위까지는 제대로 나왔으니, 다음 작업에 들어가 보도록 합니다.



이제 본격적으로 1000에포크의 반복적인 강화학습에 들어가 보도록 합니다. 당연 강화학습에 해당하는 부분에서 10으로 수정이 되었는 값을 1000으로 바꾸어 주도록 합니다.



그래서 일단 장시간의 기다림 끝에 강화학습 1000에포크가 끝나는 것을 볼 수 있었습니다. 이 학습의 결과에서는 시간이 잘못되기는 했지만 392분.......... 거의 6시간 32분 10초가 걸렸다는 것을 알 수 있었습니다.




그래서 먼저 시간을 계산하기 위해서는 60 X 60 = 3600 이라는 숫자로 나누어 주도록 하고, 나머지를 구하는 산술 연산자인 %를 사용해서 나머지 분을 60으로 나누는 식으로 처리를 화도록 수정을 했습니다.


아무튼 수익 모델이 나와서 한번 백테스트에 들어가 보도록 해 봅니다. 방법 자체는 이전과 차이점이 없으나, 단지 모델만이 방금 생성한 모델이라는 차이점이 있습니다.



이렇게만 보면 수익이 나온 좋은 모델로 보이나, 문제는 주식을 사기만 하고, 전혀 팔지 않았다는 것을 볼 수 있었습니다. 이게 과정 좋은 모델인가는 저도 자세히는 잘 모르겠습니다. 하지만 한가지 확실한 것은 다량의 모델을 서로 비교해 봐야 하는데, 제가 가지고 있는 컴퓨터의 CPU로는 6시간 넘게 걸려서 하루에 3개 정도가 거의 한계가 아닌가 합니다.

반응형