강화학습 재미있습니다.

   조회 3156   추천 0    

강화학습을 구현 해 보고 있습니다.


데이터는 자체 데이터를 사용했고

인풋 데이터 숫자는 10200개 였습니다.


아타리 벽돌 부수기 게임 학습 코드를 수정하여

DQN 을 먼저 돌려보니

한 스텝 마다 학습하는 시간이 병목이 되더라고요.

제 데이터는 게임 한판 도는데 720 스텝가 소요 되는데

이 720 스텝을 돌며 학습하는 시간이 시간이 360초가 소요되어

원하는 수 만큼 돌리기에는 무리가 있더군요.


(글 쓰다 보니 여기에 이렇게 병목이 있는 원인을 찾아 봐야 겠네요.

아타리 게임 데이터가 오히려 더 많은데 (84X84X4)

더 느린건 생각해 보니 이상하네요.)


아무튼 이걸 수정할 생각은 못하고 다른 방법이 있나 보다가

A3C를 찾아서 돌려 봤습니다.

이건 Thread를 늘여서 action을 해서 환경을 먼저 모으다 보니

동시에 여러개가 되긴 하는데 한 스텝 도는 시간은 1초로 증가 했습니다.


24스레드로 돌리니 원래보다 12배 정도 빨라지긴 했는데 여전히 느립니다.

(CPU는 4코어 8스레드 인데 병목이 GPU 연산쪽이어서 그런지 24쓰레드로 돌려도 크게 문제가 없었습니다.)


A3C 다음에 새로 나온 더 좋은게 있으면 소개 부탁드립니다.

그리고 원래 강화학습에서 뉴럴넷을 쓰는 부분이 병목인가요?

GPU는 gtx1080ti 1개를 사용했고 cpu는 4코어 8스레드 CPU입니다.


리소스는 넉넉한지 아예 별도의 다른 학습을 하나 더 돌려도 잘 돌아갑니다. 

1개 돌릴 때는 cpu 40%, GPU 20%

2개 돌릴 때는 cpu 90%, GPU 40%


리소스를 더 사용할 수 있게 만드려면 어떤 방법이 있을까요?

쓰다 보니 질문 글이 되어 버렸네요.


지금도 돌아가고 있는데 그래도 그래프가 상향 해 가고 있는 것을 보면 신기하고 재미 있습니다.

물론 의미가 있으려면 제 경우에는 total reward/episode가 0이 넘어야 합니다. ㅎㅎ





김제연 02-14
흠... 한글이긴 하나 ... 이해가 ㅜㅜ
보이는건 cpu gpu 뿐..ㅋ
부럽습니다.. 저도 해보고 싶은 분야긴 한데..
     
재미있습니다. 자료가 많이 있어서 구현은 쉽게 하실 수 있습니다.
(성과가 날 정도로 성능이 나오기는 쉽지 않지만요)
해 보고 싶은  데이터가 있으시다면 한번 해 보세요!!
          
김제연 02-14
나중에 간단한 강좌라도.. 하나 써주세요 ..
저는 그냥 간단한 웹캠 + 이미지로 .. 불량품 선별 하는걸 하고 싶은데
어떤걸 배워야 할지 .. 간단히 알려주실 수 있으신가요 ?
외관에 특정한 불량이 있으면.. 걸러내는걸 기구 + 소프트웨어로 만들고 싶습니다.
               
하고 싶으신 부분은 보통 컨볼루션 네트워크를 사용하면
성능이 좋다고 알려져 있습니다.

툴은 케라스+텐서플로우 를 사용하시면 됩니다.

느낌을 알고 싶으시면
강좌게시판에 머신러닝으로 검색하시면
제가 숫자 인식 예제로 만들어 놓은 게시물을 참조 하시면
도움이 되실 듯 합니다.

제 강좌에는 컨벌루션 네트웍 까지는 안 가고 그냥
Deep neural net 까지만 갔지만
그것만 가지고도 90% 이상의 숫자가 인식 됩니다.
컨벌루션까지 하면 99.XX 까지 되는것으로 기억하고요
                    
김제연 02-14
감사합니다.. 케라스 + 텐서 플로우는 amd 도 지원 되는거 같던데 이번에 rx470 으로 바꾸었는데
잘되었네요 ..
제가 자유게시판과 QNA와 장터만 왔다갔다 해서 .. 게시판에 소홀했나봅니다.. 글 잘 보겠습니다.
종종 좋은 정보 부탁 드립니다.

참 저 일산인데 .. 이런거 .. 안가르쳐 주시더라도 .. 그냥 가서 구경이라도 하고 싶은데 ..
어디 구경이라도 해볼데 없을까요 .. 당최 딥러닝 머신러닝은 감이 안잡혀서 ..
                         
실제로 제작 하신다고 하면
아래의 과정을 거치시면 될 것 같습니다.

1. 데이터 수집 (사진)

2. 데이터 라벨링
  가. 사진을 보고 사람이 합/불 판단하여 입력하여
        입력 데이터 + label 을 제작

3. 머신러닝
    train : 데이터의 70%정도를 가지고 학습 validation 이 saturation 될 때 까지 학습   
    validation : 데이터의 20% 정도를 가지고 검증 (이 데이터는 학습시 사용 하지 않습니다.)
  test : 최종 만들어진 모델을 가지고 성능을 검증

4. test 의 성능이 원하는 만큼 나올 때 까지 파라메터 튜닝 및 데이터 수집

5. test 성능이 나오면 해당 모델을 가지고 분류기를 제작

데이터가 많이 있으시면 좋은 성과 있을것 같습니다.
제온프로 02-18
멋진데요..
초보자도 한번 따라 해 볼 수 있게
간단한 강좌 형식으로 올려봐 주시면...
..
..
복받으실 겁니다...




제목Page 2/7
2014-04   2594993   회원K
2014-05   2891777   정은준1
07-29   2927   deepdi
07-29   1755   워터보이
07-20   2194   김지철
07-04   3362   crom1024
07-03   2632   worrma
07-03   2296   worrma
07-02   1899   TeslaK40
06-28   2922   MOONL
06-27   1609   김지철
06-17   2362   물렁곈
06-13   2562   물렁곈
05-30   2535   DeepBoy
05-23   1854   김버리
05-14   2443   JW마르니
03-30   3378   시오훅이
03-26   3262   불량사장
03-12   3249   영가설
03-04   4552   영가설
02-19   4100   인천이승현
02-14   3157   백만스물하나