사실 제가 인공지능과 머신러닝에 대한 부분은 제가 비전공자이기때문에 잘은 모르는 분야이지만. 끝말잇기(이하 쿵쿵따)를 계속 반복하여 학습하면서 쿵쿵따를 잘하는 인공지능 정도는 한번 만들어볼 수 있지 않을까 하는 생각에서 시작했는데요. 개인PC의 속도 한계상 학습 알고리즘을 충분히 돌려보지는 못했지만 이게 결과물이 잘 나오고 있는건지 좀 아리송한면이 있어서 알고리즘 부분에서 개선이 필요한 부분이 있을까 하여 질문해보기 위함입니다.ㅋ
게임의 기본적인 룰은
1.무조건 3글자만 사용 2.방어단어가 없거나 너무 적은 단어는(일단은 5개 이하)사용금지.(즉 해질녘=방어단어가 없으므로 사용불가/고칼슘=방어단어가 슘패터 하나 뿐이므로 사용불가) 3.두음법칙 적용 4.무조건 승패가 결정되어야 함.
입니다.
그리고 우선 대략적인 순서도는 다음과 같습니다.
1.플레이어1,플레이어2(이하 p1,p2)는 더이상 이어나갈 단어가 없어질 때까지 무작위로 선택되는 단어(물론 끝말과 첫말은 두음법칙 포함해서 같은)를 이용해서 쿵쿵따를 해 승패를 가른다. 이때 처음 게임시작은 무조건 p1이 시행한다.
2.승자가 사용한 모든 단어와 패자가 사용한 모든 단어를 종합하여 각각의 단어에 [선택횟수/승리한 횟수/패배한 횟수/승리 확률]의 정보를 [p1,p2]의 단어 데이터베이스에 저장한다. 만약 각 플레이어가 학습중에 해당 단어를 선택하지 않았거나 너 무 적게 선택하였다면 승리확률의 기본값=0.5로 설정한다. 즉 플레이어들은 총 단어의 숫자는 동일하지만 확률에 대한 정보는 다른 각자의 사전을 사용한다.
3.학습이 점차 진행되면서 [p1,p2] 각각의 단어장의 단어에 대한 확률값이 변하는 경우 각 플레이어는 승리할 확률이 높은 단어를 우선하여 사용하면서 게임을 계속해서 진행한다.
4.이러한 식으론 굉장히 많은 게임이 시행되는 경우 [p1,p2]의모든 단어값에 대해 승리확률이 부여되고 더 많은 시뮬레이션을 거칠수록 각 단어에 대한 승리확률은 더욱 정확해질 것이다.
------------------
결과적으로 아주 오랜시간이 지나는 경우 [p1.p2]의 거의 모든 단어들은 개개의 승리할 확률값을 가지게되고 이 확률분포는 0.5를 기준으로 정규분포를 이루게 될 것이고 실제 매인게임을 수행할때 프로그램은 조건에 맞는 단어 중에서 가장 승리할 확률이 높은 단어를 선택하는 방식으로 작동할 것이다. 라는게 저의 생각입니다.
그런데 제가 곰곰히 생각해본 결과로는 문제가 있다고 생각하는 부분이 있는데
1.처음 무작위 선택시 게임 자체가 아주아주 길게 시행되는데 해당 경로의 처음부터 끝까지 동일한 가중치를 주는게 과연 옳은일인가. 라는 부분이고
2.어떤 단어가 승리확률이 높게 기록된다고 하더라도 실제로는 몇가지의 그것을 파훼하는 필승루트가 있어서 실제로는 그 확률이라는게 별 의미가 없는것이 아닐까?
라는 부분입니다. 사실 쿵쿵따도 경우의수가 엄청나게 많다보기 모든 경로를 탐색하는건 절대적으로 불가능하고 더욱이 노골적인 공격이 금지된다면 경우의 수는 더더욱 많아지겠죠..
오유분들은 궁금점 1과2에 대해 어떻게 생각하시고, 제 생각에 어떤 문제가 있다고 생각하시는지 답변 달아주시면 이 은혜 잊지않겟습니다.ㅎㅎ