ubuntu에서 스크린 사용하기 위해서는 apt-get 이용하여 screen 설치하여야 한다.

sudo apt-get install screen

 

주요 사용법은 아래와 같다.


스크린 들기 

1. 특정 이름으로 생성

screen -S [이름] 


2. 임의의 이름으로 생성

screen

스크린 나오기

ctrl + a d 

스크린으로 돌아가기

screen -r [이름] 

스크린 리스트

screen -list 

스크린 종료

(스크린 안에서) exit 






Proto Type(v01)

 

V00에서 negative reward 받을수 있도록 수정

내가 마지막 state action q_values 기억하고 있다가, 상대가 승리하게 되면 negative_reward 주도록 로직 추가

10000 training 결과 7171 건의 state 대한 training진행 (v00 유사)

 

결과 아래와 같이 x 입장에서 o 좌상과 중앙을 상태에서 일부 칸의 경우 두면 안된다는게 학습이 ..

다만 학습이 충분치 않아서 해당 state일때 모든 경우의 수가 학습되지 않을 경우 아래예제 처럼 막아야 할곳을 막지 못하는 상황이 생김

(===> 학습이 충분히 되면 아래 상황에서는 우하를 제외하고는 모두 negative reward 받게 될것이므로 max 함수에 의해서 우하를 선택하게 으로 예상)

=============

= o = x =   =

=============

=   = o =   =

=============

=   =   =   =

=============

RUN >> player:2

RUN >> trained index: 1101 qv: [-9.984     -9.999872  -0.8333312 -0.8       -9.92       0.        -0.83328          -0.8333312  0.       ]

RUN >> action:5 qvalue: 0.0

RUN >> action:5 reward: 0

=============

= o = x =   =

=============

=   = o = x =

=============

=   =   =   =

=============

 

얼토 당토 않게 아래와 같은 상황도 발생

첫번째 상황에서 x 아래 중간칸에 두어서 o 3칸을 만드는걸 막아야 하지만…

Learning과정에서 해당 state일때 좌하를 두어서 이겼던 적이 있었는지 좌하 칸에 qvalue 0.06666667로 가장 높아 좌하칸에 두는 경우가 발생

역시 어설픈 learning 결과로 충분한 learning횟수가 중요하다고 생각됨

 

=============

= x = o =   =

=============

=   = o =   =

=============

=   =   =   =

=============

RUN >> player:2

RUN >> trained index: 5639 qv: [-9.6        -9.6         0.          0.          0.          0.          0.06666667  0.          0.        ]

RUN >> action:6 qvalue: 0.0666666666667

RUN >> action:6 reward: 0

=============

= x = o =   =

=============

=   = o =   =

=============

= x =   =   =

=============

 

 

 

마찬가지로 10000번으로는 택도 없음, 사람 근처에도 못감

우리 옆집에 중학생 꼬마가 잘둘 같다




의문점......

v00와 v01모두 learning의 횟수가 충분치 못하다고 생각이 드는데... 

둘다 충분히 learning을 한다면 negative reward가 있는 경우, 없는 경우 승부를 보게 하면 어떻게 될까??



2017년 1월 26일 추가

총 60000번의 학습...... 여전히 답답하다-_-

사람이 학습시키면 답답한 케이스에 대해서 집중적으로 학습시키면서 그렇게 하면 진다는걸 학습시킬텐데 인공지능 둘이 계속 붙이니

유치원생 둘이서 시합시켜두는 느낌?

'Development > MachineLearning' 카테고리의 다른 글

Tic Tac Toe 인공지능 구현  (0) 2017.02.01
Tic Tac Toe 인공지능 구현 v00  (0) 2017.01.24

Python 3 버전대에는 정식 지원되어 있음


https://docs.python.org/3/library/enum.html

>>> from enum import Enum
>>> class Color(Enum):
...     RED = 1
...     GREEN = 2
...     BLUE = 3
...


Python 2 버전대에는 아래와 같이 우회 구현해야 함

http://egloos.zum.com/mcchae/v/11027030

 def enum(*sequential, **named):

    enums = dict(zip(sequential, range(len(sequential))), **named)
    reverse = dict((value, key) for key, value in enums.iteritems())
    enums['reverse_mapping'] = reverse
    return type('Enum', (), enums)


>>> Numbers = enum('ZERO', 'ONE', 'TWO')
>>> Numbers.ONE
1
>>> Numbers.TWO

2 


'Development > Python' 카테고리의 다른 글

list에서 중복을 제거하는 방법  (0) 2017.02.02
Python 에서 ++ --  (0) 2017.02.02
Python Random number  (0) 2017.02.01

ctrl + shift + l 단축키 설명보기

 

ctrl + shift + f 자동줄맞춤

ctrl + l 원하는 라인으로 이동

 

ctrl + shift + o : 자동으로 import 정리

ctrl + shift + g : method field reference하고 있는곳으로 이동

F3 : Reference 이동

 

ctrl + / : 주석추가 제거

개인 프로젝트로 Reinforcement 기반으로 Tic Tac Toe 인공지능 개발 중


Prototype으로 10000번 training 후 결과 총 7017 건의 state에 대한 training진행 됨


단순히 승리할 경우 reward 1을 가지고 규칙을 learning시키기 위해서 둘수 없는 곳에 둘려고 할 경우 negative reward -10을 주고 둘수 있는 곳 둘때까지 반복

 

특정 state에서 특정 action을 취하게 될 때의 reward에 대해서 Q값을 구하게 되는데, 두개의 object가 서로 시합을 할경우

이기는 쪽은 능동적으로 수를 두어서 이기게 되어서 정상적으로 reward를 받게 되지만, 지는 object는 수동적으로 상대방이 먼저 이겼기 때문에 지게 된다. 따라서 지는 순간에 action을 취한 것이 아니므로 패배에 대한 negative reward를 받을 수가 없음

===> 실제 play를 해보면 상대방이 2칸을 먼저 만든 상황에서 남은 한 칸을 막아서 패배를 막는 방향으로 paly하지 않음

 

물론 충분히 많은 training이 된다면 승리에 대한 reward가 많이 퍼져서 반대급부로 패배에 대한 상황에 대해서는 reward가 없으므로 상대적인 개념으로 negative reward를 받을 수 있으나, 좀더 확실한 negative reward가 필요할 것으로 보임

 

10000번으로는 택도 없음, 사람 근처에도 못감



'Development > MachineLearning' 카테고리의 다른 글

Tic Tac Toe 인공지능 구현  (0) 2017.02.01
Tic Tac Toe 인공지능 구현 v01  (0) 2017.01.25

+ Recent posts