AI 코딩! Street Fighter 2에 AI가 대결하는 방법
Table of Contents
- AI로 인한 아케이드 게임의 어두운 비밀을 파헤치다 🕵️♂️
- 나의 AI 개발 경험과 게임 AI 프로젝트
- 게임 AI 개발의 실제와 추상적인 개념의 대비
- AI 개발을 위한 GPT-4 모델의 업그레이드
- AI에 대한 플레이어의 역할
- AI의 성장과 훈련 과정
- 게임 화면을 읽고 결정을 내리는 복잡한 AI 프로젝트
- 신경망을 통한 게임 플레이
- AI를 위한 훈련 프로그램과 새로운 전략 학습
- AI의 고질적인 문제와 극복 방법
- GPT-4의 도움으로 언어 장벽 극복하기
- GPT-4의 언어 번역 및 이해력 향상 기능
- 빠른 학습과 이해를 위한 GPT-4의 역할
- AI 개발에서의 보상과 과적합
- 보상과 처벌 시스템의 역할
- GitHub COPILOT을 통한 코드 작성 도움
- AI의 학습과 이동성 문제 해결
- AI를 통해 언락된 어두운 비밀 밝혀지다
- AI의 뛰어난 반응 속도와 실행 능력
- 게임의 어두운 비밀과 AI의 엉터리 플레이
- 학습 과정의 역추적과 변경
- AI 훈련 중의 문제와 해결책
- 팀워크로 야기된 프로젝트 개선
- AI 시대에서의 미래 가능성과 도전
- AI 시대의 불확실성과 도전
- 계속된 도전과 함께 나아가는 자세
AI로 인한 아케이드 게임의 어두운 비밀을 파헤치다 🕵️♂️
안녕하세요, 제 이름은 이입니다. 오늘은 저와 함께 AI 개발에 대한 경험을 나누고, 게임 AI 프로젝트에 대해 이야기하려고 합니다. 이 프로젝트를 통해 우리는 낡은 AI가 지배한 '스트리트 파이터 II'라는 게임에서 사람들을 괴롭히던 어두운 비밀을 우연히 발견하게 되었습니다. 저는 모든 코드를 공개하여 저를 포함한 다른 사람들도 이 비밀을 해체해 볼 수 있도록 했습니다. 그럼 이 비디오를 보시고, 직접 컴퓨터에서 이 프로젝트를 시도해 보실 수 있습니다.
나의 AI 개발 경험과 게임 AI 프로젝트
이 비디오에서는 저의 경험을 바탕으로 실제로 AI 개발에 뛰어들어볼 것입니다. 이 게임 AI를 개발하며 AI 시대의 현실로 깊이 파고드는 기회를 갖게 되었습니다. 비디오의 끝에는 가장 최근 게임인 '스트리트 파이터 II'에서 우연히 발견한 비밀을 공유할 것입니다. 이 프로젝트 없이는 아이 시절에 얼마나 속아 넘어졌는지 알지 못했을 것입니다.
몇 개월 전 저는 '스트리트 파이터 II'를 어려운 난이도로 깨면 숨겨진 엔딩이 나온다는 것을 알게 되었습니다. 설정 난이도에서 얻는 단순한 엔딩과는 다른 엔딩이라고 합니다. 하지만 반년 동안 여러 번 시도하고 컨트롤러를 고장낼 정도로 조작한 끝에 완전히 클리어하지 못했습니다. 그래서 ChatGPT가 유명해지자 chatGPT로 AI를 생성하여 '스트리트 파이터 II'의 AI에 도전하고 이길 수 있는 AI를 만들어볼까 상상해보았습니다. chatGPT의 기본 모델은 GPT-4로 업그레이드되었으며, 이를 통해 놀랄만한 능력을 발휘합니다. 나는 chatGPT를 많이 사용하고, 현재 내 컴퓨터는 항상 chat 창이 열려 있습니다. 이 아이디어를 떠올리고 나서 내가 해야 할 일은 몇 가지 키 스트로크를 입력하는 것뿐이었습니다. 솔직히 말해서, 나는 장난스럽게 기대를 했지만, chatGPT의 답변을 보고 나면서 놀라움을 감출 수 없었습니다. 항상 chatGPT가 작은 스크립트와 프로그램 작성에 뛰어나다는 것은 알고 있었지만, 이렇게 복잡한 AI 프로젝트를 다룰 수 있다는 생각은 전혀 하지 못했습니다. 응답 길이를 제한하기 위해 GPT-4는 기존 오픈 소스 코드 라이브러리를 사용하기로 선택했습니다. 몇 가지 명령어로 작성 된 다른 사람들이 작성한 수천 줄의 코드를 호출할 수 있게 되었습니다. chatGPT는 나에게 스크립트뿐만 아니라 실행 방법과 개선이 필요한 부분에 대한 지침도 제공했습니다. 이후 과정은 GPT-4의 코드를 내 컴퓨터에서 실행하고, 발생한 오류 메시지를 GPT-4에게 보내 개선을 요청하는 것이었습니다. 솔직히 말하자면, 나는 조금 불필요한 일을 하는 기분이 들었습니다. PC에 직접적으로 연결하여 GPT-4가 직접 컴퓨터와 통신할 수 있다면, 나는 이 모든 과정에서 어떤 역할을 해야 할까요? 사실, 바로 이 프로젝트를 끝내고 나서부터 Auto-GPT를 사용할 수 있었습니다. 하지만, 이후에 설명할 것처럼, 나는 이 활기찬 전투 AI의 효력에 기여했습니다. 하지만, 이에 대해서는 조금 뒤에 설명하도록 하겠습니다. 어쨌든 첫 번째 버전은 GPT-4가 직접 조금씩 쓴 것이 맞습니다. 이 모든 채팅 로그를 내 오픈 소스 프로젝트에 업로드했습니다. GPT-4가 만든 최종 작품은 여러 코드 파일을 포함한 복잡한 전투 게임 AI 프로젝트였습니다. 이 게임 AI는 게임 화면을 읽고, 시각적인 정보를 기반으로 신경망 내에서 결정을 내리고, 버튼을 누르는 방식으로 게임을 플레이합니다. 본질적으로, 그것은 사람처럼 게임을 플레이하며, 화면을 응시하고 컨트롤러를 사용합니다. 물론, 전문 플레이어와 같은 숙련자와 저와 같은 초보자 사이에는 큰 차이가 있습니다. 그것은 바로 AI의 "두뇌"의 역할입니다. AI의 두뇌에 지식을 주입하기 위해 GPT-4는 훈련 프로그램도 작성했으며, 수많은 전투를 통해 신경망을 점진적으로 개선했습니다. AI는 모든 것을 처음부터 학습해야 했습니다. 다양한 색상의 그래픽을 이해하고, 그 목적을 이해하고, 어떤 캐릭터를 조작하고, 상대가 누구인지 알아야 했습니다. 상대의 동작이 무엇을 의미하는지, 상대가 충돌했을 때 무엇을 해야 하는지, 게임에서 어떻게 이기는지 등을 배워야 했습니다. 그러나 AI가 학습을 시작한 지 얼마 후 문제가 발생했습니다. 저는 최종 보스 배틀 바로 전에 게임을 저장하고, 전투 AI의 훈련은 이 붉은 옷을 입은 고대 AI에게 도전하는 것으로 이루어졌습니다. 그러나 실시간 훈련 결과를 통해 볼 수 있었던 것처럼, 우리 전투 AI의 평균 점수는 감소하고, 각 라운드의 평균 기간은 증가하고 있었습니다. 왜 그러한지 추측해 볼 수 있을까요? 이것은 간단합니다. AI는 "겁쟁이"가 되었습니다. 이 단계에서 AI를 테스트하면 보스에 대한 두려움을 명확히 볼 수 있습니다. 그것은 계속해서 후퇴하고 점프만 하며, 가까이 다가가는 것도 망설이며 상대방의 얼굴에 주먹을 던질 용기도 없었습니다. 공격조차 할 수 없다면, AI는 어떻게 싸울 방법을 배울 수 있을까요? 예상대로, 900만 가지 훈련 단계 이후, 평균 전투 기간은 눈에 띄게 감소했으며, 아무것도 배우지 못한 AI는 완전히 졌습니다. 저는 GPT-4에게 저희 가업 AI의 상황에 대해 얘기했지만, 구체적인 코드 개선 제안은 없이 우리 "아이"의 패배를 보기만 할 뿐이었습니다. 그러나 나는 가만히 서 있는 것만은 마음에 들지 않았습니다. 코드를 직접 작성하지는 않았지만, 메시지를 주고받는 데 많은 시간을 보냈으며, 그 AI "아이"와 어떤 연관성을 느꼈습니다. 게다가, 저는 '스트리트 파이터 II'에서 AI에게 반년 동안 이겨진 경험을 함께하였기 때문에 이긴다던지 내가 아이로 이기는 것은 상관 없었습니다. 아래에서는 사람이 아닌 AI의 영웅적인 귀환 이야기를 목도합니다. 이번에는 사람이 아닌 AI가 주인공입니다. AI가 최종적으로 전설적인 숨겨진 엔딩을 찾아냈으며, 게임 역사의 어두운 비밀을 우연히 밝혀냈을 때, 나는 더 중요한 역할을 했습니다. 전투 AI를 창조하기 위한 열쇠는 AI의 "두뇌"였습니다. AI의 신경망에 지식과 경험을 주입하는 방법을 이해하는 것이기 때문입니다. 이는 나의 익숙하지 않은 강화 학습 분야에 속하며, 다행히도 GPT-4가 있어서 많은 도움을 받을 수 있었습니다. GPT-4는 이미 많은 것을 가르쳐줬고, 완벽하고 작동 가능한 프로젝트의 시작점을 제공했습니다. 이로 인해 학습 과정이 훨씬 쉬워졌습니다. GPT-4는 언어 장벽을 완전히 제거해 주었습니다. 마침내, 저는 모국어인 중국어로 학문적 연구를 하게 되었습니다. 컴퓨터의 파일 타임스탬프에 따르면, 4월 1일부터 4일 동안 휴일 동안 11개의 영어 기사를 읽었습니다. 그 중 6개는 학술 논문이었습니다. GPT-4가 없다면, 중국어를 사용하는 사람으로서 한 편의 영어 논문을 철저하게 읽는 데에는 4일이상이 걸렸을 것입니다. 내 영어 발음은 이상할지 모르겠지만, 나의 독해능력은 꽤 뛰어납니다. 나는 GRE시험의 Verbal Reasoning 섹션에서 160점을 받았습니다. 대학교 시절부터 나의 학문적 언어, 독해 및 글쓰기는 영어였습니다. 하지만 GPT-4는 나에게 내 모국어를 사용하여 학습할 수 있는 기회를 제공했습니다. 꼼꼼히 살펴보면, 대화 로그에서는 러시아어와 터키어 기사도 찾을 수 있습니다. AI 시대에서는 언어 장벽은 더 이상 존재하지 않습니다. 우리는 효율적인 언어를 사용할 수 있으며, 나는 학습을 위해 중국어로 돌아왔습니다. 물론, GPT-4의 도움은 언어 장벽을 허무는 데 그치지 않았습니다. GPT-4에게 어려운 개념을 쉽게 이해할 수 있도록 요청했습니다. 만약 이해되지 않으면 질문을 할 수 있었고, GPT-4는 원본 논문을 바탕으로 신뢰할 수 있는 답변을 제공했습니다. GPT-4와 함께하면 학습 속도는 6에서 8배 빨라지며, 프로젝트 자체를 개선하는 데도 시간을 보냈습니다. 전체 6편의 논문 중에서 특히 AI 훈련 과정에 대한 논문은 AI의 처벌과 보상 시스템에 대해서 다뤘습니다. 최종적으로 저는 code Rewriter인 GitHub Copilot과 AI 개발에서 많은 도움을 받게 되었습니다. 이번에는 코드 창에서 이전과는 다른 방식으로 GPT-4와 상호작용하였습니다. 각 단계를 개요로 제시하고, GPT-4는 빠르게 코드 청크를 생성했습니다. 어떤 코드 라인이 완전히 내가 작성한 것인지 정확히 파악하는 것이 어려웠습니다. 겨우 하루 만에 GPT-4와 나는 전투 AI의 코드 전체를 수정했습니다. 남은것이 정말 많지는 않았습니다. 새롭게 보상 시스템을 포함한 전체 코드를 재작성해야 했지만, 이 작업에서 나는 거의 스스로 코드를 작성하지 않았습니다. GitHub Copilot 때문입니다. GitHub Copilot는 코드를 자동으로 작성하는 AI로, 또한 GPT-4의 기술을 사용합니다. 이번에는 채팅 창이 아닌 코드 편집기 안에서 GPT-4와 상호작용하였습니다. 그저 각 단계를 설명하면서 GPT-4는 나에게 대량의 코드 청크를 빠르게 생성해 주었습니다. 완전히 내가 진정 작성한 코드의 라인을 정확히 지목하는 것은 어려웠습니다. 겨우 하루만에 GPT-4와 함께 전투 AI의 코드를 처음부터 끝까지 개편했습니다. 공정한 보상을 받은 AI로 인해 전투 AI는 곧 강력한 모드로 전환되었습니다. 나는 진정한 의미에서 AI의 놀라운 능력을 목격했습니다. 수정된 전투 AI는 한 번에 16개의 게임 창에서 훈련할 수 있으며, 7배 빠른 속도로 실행됩니다. 1시간 43분 동안 실제 전투 경험 194시간을 축적했습니다. 이는 그래픽 카드 하나로 이루어진 상황에서의 결과입니다. 100개, 심지어 10000개를 사용한다면 어떨까요? AI는 사람처럼 "똑똑하지" 않지만, 어떤 사람도 AI의 "부지런함"에 대항할 수 없습니다. 전투 AI를 테스트한 결과는 완전히 역전되었습니다. 시각적으로, 저희 전투 AI는 적을 완전히 압도하며, 연쇄적인 공격을 이어갔으며, 상대방이 공격할 기회조차 주지 않았습니다. 경험상 저를 반년 동안 괴롭힌 이 레트로 게임 AI가 그정도로 약해져버리다니, 정말로 만족스러웠습니다. 그러나, '스트리트 파이터 II'에서는 진정으로 전진하려면 세 라운드 중 두 번을 이겨야만 합니다. 두 번째 라운드에서 우리 AI는 상당한 피해를 줬지만, 첫 번째 라운드의 가속도만큼의 기세는 없었고 마지막으로는 졌습니다. 훈련 곡선을 돌아보면, "과적합"의 문제였습니다. 간단히 말해, AI는 "너무 전문화"되었습니다. 최종 보스는 반년 동안 나에게 악몽이었지만, 고대 AI는 여전히 너무 약해서 우리가 최근 업그레이드한 AI의 강력한 학습 능력에게 쉽게 해독당할 수 있었습니다. 더욱 나쁜 것은, 훈련에 처음 라운드의 최종 스테이지 세이브 게임을 사용했습니다. AI는 항상 상대방이 같은 동작으로 시작한다고 가정하고, 이 라운드를 반복하여 연습했습니다. 훈련 곡선은 약 40분 경에서 250만 단계에서 이 후 진행된 이 1시간 동안 AI가 최종 전략을 발견했음을 보여주었습니다. 이후 1시간 동안 AI는 이 전략을 완벽하게 향상시켰으며, 콤보의 성공률을 지속적으로 향상시켰습니다. 그러나, 이 과정에서 상대방의 반응은 점점 한 가지로 단순화되었습니다. AI는 이 구체적인 전략에만 의존하고, 다른 상황에서 적의 복잡한 행동을 잊어버렸습니다. 그래서 라운드가 변경되고 상대방이 새로운 동작으로 시작하면 우리 AI는 당황스럽게 됩니다. 그러나,이 문제에 대한 해결책은 간단합니다. 훈련을 되돌린다는 것입니다. 예를 들어, 370만 번째 단계인 37분 시점으로 돌아갑니다. 이 시점에서 AI의 콤보는 형성되었으며, 첫 번째 라운드에서 높은 승률을 보여줄 때, 여전히 복잡한 상황을 다루는 방법을 기억하고 있습니다. 이를 통해 두 번째와 세 번째 라운드에 대한 적응력을 갖출 수 있었습니다. 나는 AI를 두 번 플레이 했고,두 번째 시도에서 AI는 두 번 중 두 번의 라운드를 성공적으로 이겨 진출하게 됐습니다. 첫 번째 라운드에서 우리 전투 AI의 콤보는 보스의 마무리 동작에 의해 중단되었지만, 딱 10초 후에 완벽한 어깨 던지기(shoulder throw)를 통해 상대방을 무찌를 성공을 거두었습니다. 두 번째 라운드에서는 우리 작은 AI가 이상하게 구석에 붙어있었으며, 이는 스트리트 파이터 II에서 큰 실수입니다. 종종 "구석 비극"이라고 불릴 정도로 상황이 어려워집니다. 실제로도 저희 AI는 고난을 겪었습니다. 하지만 여전히 보스에게 상당한 피해를 줬으며, 뛰어난 코너 전투 기술을 보여줬습니다. 마지막 라운드에서 우리 AI는 다시 이상한 "자살 전략"을 택했습니다. 하지만 딱 15초 후에 이 이상한 전술의 이유를 완벽하게 밝혔습니다. AI는 이 이상한 전술에서 "어깨 던지기"를 사용하기 위해 보스를 유인했습니다. "어깨 던지기"는 정확한 타이밍과 위치를 요하는 기술이지만 난이도가 매우 높아 피해가 큽니다. 명백히, 저희 작은 AI는 코너에서 어깨 던지기를 실행할 비밀을 발견한 것입니다. 첫 번째 라운드에서 승리를 위한 승기로 어깨 던지기를 사용했으며, 이번 최종 라운드에서는 코너에서 연속으로 두 번의 어깨 던지기를 성공시키며 보스를 몸풀기만 남기고 무릎을 꿇었습니다. 세 번 동작이 필요한 이 상황에서는 AI의 기술력에만 기인할 수 있습니다. 우리가 상급 난이도에서 숨은 엔딩을 언락할 때까지 괴롭혔던 악몽과 최근 몇 개월 동안이 저 정도로 쉽게 패배한다니, 정말로 만족스러웠습니다. 그러나, '스트리트 파이터 II'에서는 진정한 전진을 위해 세 라운드 중 두 번을 이겨야 합니다. 두 번째 라운드에서 우리 AI는 상당한 피해를 줬지만, 첫 번째 라운드와 같은 기세를 유지하지 못하면서 결국 패배했습니다. 훈련 곡선을 돌아보면 이는 "과적합"의 문제였습니다. 다른 말로 하자면, AI는 "너무 전문화"되었기 때문이었습니다. 최종 보스가 절반정도의 피만 남게될 때, 보통 하나의 공격을 실행하는 데 적어도 2초가 걸려야 한다고 가정하면, 우리 AI는 이 공격을 단 4초만에 네 번 실행했습니다. 우리의 AI는 보스의 네 번의 공격을 피해갔으며, 그 네 번의 공격을 바로 마친 뒤에 정확한 순간에 치명적인 일격을 가했습니다. 이 레트로 게임 AI가 저와 나날이 악몽을 꾸게하고 최근 절반이상을 이김으로써 게임 AI가 속임이라는 이야기는 온라인에서 항상 있었습니다. 이번에는 이 이론이 AI의 기량을 통해 입증되었습니다. 최종 보스가 피가 거의 없어졌을 때에도 네 번의 마무리 동작을 발했습니다. 최소한 하나의 마무리 동작을 수행하는 데는 2초 이상이 필요한데, 이번 AI는 4초 동안에 네 번의 마무리 동작을 발했음에 주목해야 합니다. 저의 AI는 보스의 마무리 동작 네 번을 피했으며, 사람이 이해할 수 있는 속도를 뛰어 넘어 완벽한 타이밍에 치명적인 일격을 가했습니다. 이 AI에 자비가 없지만, 이 실험을 통해 게임 제작사의 속임수가 밝혀졌습니다. 온라인에서는 항상 게임회사가 게임을 더 힘들게 만들고 게임 AI를 속이도록 설계한다는 소문이 있었습니다. 이번에는 저희 작은 AI가 환상적인 성과를 통해 이 이론을 입증했습니다. 최종 보스가 피가 거의 없을 때, 2초 이상 걸릴 것 같은 하나의 마무리 동작을 4초 만에 네 번 실행했습니다. 저희 AI는 보스의 4개 마무리 동작을 회피하였으며, 사람으로서 이해하기 힘들 정도의 반응 속도를 보여줬습니다. 마지막으로 적에게 적시적으로 치명타를 입힐 수 있는 순간에 치명적인 일격을 가했습니다. '스트리트 파이터 II'의 숨겨진 엔딩을 보기 위한 저의 어린 시절 꿈을 이루어준 AI인 GPT-4와 함께 만든 작은 AI는 프로젝트의 모든 코드, GPT-4와의 대화를 포함해서 모든 것을 제가 공개 저장소에 업로드했습니다. 쉽게 말해 Apache-2.0 라이센스에 따라 누구나 무료로 사용할 수 있습니다. 이런 종류의 프로젝트를 더 많이 만들어 모든 사람들이 AI 시대에서 최신 정보를 받을 수 있도록 할 계획입니다. '스트리트 파이터 II'의 숨겨진 엔딩에서 주인공은 상을 요구하지 않고 다음 도전을 열망합니다. AI 시대는 많은 불확실성과 새로운 도전을 가져옵니다. 도전은 항상 있으며 끝이 없으며 두려워 할 필요가 없습니다. 항상 경계하면서 생각을 이어가며 함께 전진해 보겠습니다. 계속해서 함께 성장하며, AI 시대가 드러내는 풍경을 함께 보겠습니다.
장점 (Pros)
- AI 개발을 통해 어두운 비밀을 밝혀냄
- GPT-4의 업그레이드된 기능을 활용하여 AI 개발 프로젝트 수행
- GPT-4를 통해 빠르게 언어 장벽을 극복하고 학습 속도 증대
- AI의 훈련과정을 통해 전략 개선 및 상세한 학습 경험 프로그램 구현
- GitHub Copilot을 활용하여 코드 작성 과정 단축
단점 (Cons)
- 초기 AI 훈련 단계에서의 문제와 어려움
- 훈련 시에 발생하는 문제에 대한 GPT-4의 부족한 지원
- 코드 작성 및 개선 작업에서 AI의 역할이 크기 때문에 개발자의 역할이 제한적
FAQ
-
이 게임 AI 프로젝트에서 개발자의 역할은 무엇인가요?
- 개발자는 AI 개발 과정에서 AI와의 대화 및 메시지 전달을 통해 프로젝트를 추진하고, AI의 훈련 및 개선을 위한 도움을 제공하였습니다.
-
GPT-4 외에 다른 AI 모델을 사용할 수 있을까요?
- 비디오에서는 GPT-4를 사용하였지만, 다른 AI 모델을 사용하여도 게임 AI 개발이 가능합니다.
-
AI 개발에 얼마나 많은 시간을 투자하였나요?
- AI 개발에는 몇 개월에 걸친 시간과 많은 노력이 필요하였습니다. 정확한 시간을 제시하기는 어렵지만, 연구, 테스트 및 코드 개선을 위해 상당한 시간과 노력을 투자하였습니다.
-
게임 AI가 있는 다른 게임을 개발할 수 있을까요?
- 네, AI 개발에 AI 훈련 및 기타 필요한 작업을 수행할 수 있다면, 어떤 게임에서든지 AI를 개발할 수 있습니다.
-
GPT-4의 도움으로 언어 장벽을 극복할 수 있는 방법이 있을까요?
- GPT-4는 번역 및 언어 이해를 한계적으로 극복할 수 있는 기능을 제공합니다. 자연스러운 문장 구성을 통해 언어 장벽을 최소화하고 빠른 학습 과정을 제공할 수 있습니다.
하이라이트
- AI 개발을 통해 '스트리트 파이터 II'의 어두운 비밀을 파헤침
- GPT-4의 업그레이드된 기능을 활용한 AI 프로젝트 수행
- AI의 훈련과정을 통해 전략 개선 및 게임 경험 향상
- 언어 장벽을 극복하여 AI 개발과 학습 과정을 가능케 함
자원