Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

초보적인 AI의 모듈화? #33

Open
Bartleby2718 opened this issue Oct 8, 2018 · 2 comments
Open

초보적인 AI의 모듈화? #33

Bartleby2718 opened this issue Oct 8, 2018 · 2 comments
Labels
question Further information is requested

Comments

@Bartleby2718
Copy link
Owner

@gongdo
오랜만에 다시 질문 드립니다.

  1. AI끼리 게임을 붙여서 어떤 전략이 좋은 전략인지 알아낼 생각인데요. (GUI는 한국 가서 하고 그 전에 데이터 분석이나... ㅎㅎ) AI를 모듈화(?)하는 게 맞는 건지 잘 모르겠어서 여쭤봅니다.

일단 지금 계획은 이래요. 어떤 상황에서 어떤 행동을 할 건지를 함수들로 만들어 놓을 생각이예요. 예를 들어서 '조커의 값을 몇으로 할지'라는 상황이 있을 때, 1) 그 덱의 가장 큰 수와 같게와 2) 닥치고 13이라는 두 가지 행동이 있으면 (다른 건 다 똑같이 한 상태에서) AI1에는 1을 넣고 AI2에는 2를 넣어서 수천 번 시행을 반복하고, 그 게임들의 결과를 txt나 csv로 기록한 다음, 그걸 분석하는 별도의 파일을 만들어서 어떤 전략이 좋은 전략인지 알아내는 거예요.

모듈화라는 표현이 맞는지는 모르겠지만, 어쨌든 제가 의도한 건 이런 식으로 여러 상황으로 쪼개서 각 상황별로 여러 전략을 만들어 놓고, 어떤 AI에는 이걸 끼워넣고 다른 AI에는 저걸 끼워넣는다는 뜻이에요. 뭐 아직 딥러닝 같은 어려운 방법으로 AI를 만들 수준도 아니고, 그런 걸 하려고 해도 어차피 데이터가 많아야 하니, 간단한 수준의 AI만 만들려고 해요.

  1. AI를 넣으려다 보니까 게속 사람인지 AI인지에 따라 if else가 들어가서 코드가 지저분해지던데, 이건 제가 AI 여부를 field로 넣어서 그런 거죠? Player를 상속하는 HumanPlayer와 ComputerPlayer로 바꾸면 코드가 깔끔해지겠죠?

  2. 커밋된 거 기준으로는 아직 엉망이지만 로컬의 코드는 비교적 깔끔해졌어요. 이번 주 평일에는 폰을 못 써서 시간이 없어서 커밋은 못했지만...

@Bartleby2718 Bartleby2718 added the question Further information is requested label Oct 8, 2018
@Bartleby2718
Copy link
Owner Author

하면 할수록 state별 승리 가능성을 판단하는 잣대을 만들고 그걸 높이는 방향으로 만들어야겠다는 생각이 생기네요.

@gongdo
Copy link

gongdo commented Oct 15, 2018

저도 알고리듬이 아닌 AI 수준의 구현은 안해봐서 정확히는 모르겠지만, 이런 종류의 카드게임은 주어진 환경(덱의 상황)과 선택가능한 경우의 수가 제한적이이라 전형적으로 AI(딥러닝)가 효율적인 분야네요.
물론 먼저 발언을 한다는 요소는 별개겠지만요.

제 생각에 승리 알고리듬을 만들어가는게 재미는 있겠지만 효율을 생각하면 아주 간단하게라도 딥러닝 식으로 처리하는게 좋을것 같아요. 요새 딥러닝이나 강화학습 같은건 널리고 널린 주제라 딱히 공부도 안해본 주제에 더 길게 말하진 않을게요 ㅎㅎ

강화학습 관련해서 수박겉핥기를 하자면,
https://www.slideshare.net/deview/ai-67608549
이게 꽤 유용했던것 같아요. 현실적인 시나리오에 변수도 적어서요.

AI-playable 하게 프로그램을 구성했다면 다음 단계에 수동 알고리듬을 적용하든 딥러닝을 돌리든 차근차근 진행이 가능하겠죠. 이 모든 것의 근간은 게임내 특정 시점(프레임, 시간, 턴수 등)의 모든 상태를 기술하고 그 다음 입력을 코드로 처리할 수 있는가에 달려있죠.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants