Game AI 39

GAME AI - LOD

2024.02.25 - [Game AI] - AI 스케줄링 AI 스케줄링 AI Scheduling 게임이 균등한 프레임을 뽑기 위해서는 다양한 작업들이 제한된 시간 내에 수행되어야 한다. AI역시 마찬가지인데, 이를 제한된 시간 내에 처리하기 위해서는 다음의 3가지 요소가 필 tsyang.tistory.com 개요 게임 그래픽에 LOD를 적용하듯, AI에도 LOD를 적용할 수 있다. 가령 어떤 캐릭터는 복잡하고 정교한 행동을 하고 어떤 캐릭터는 단순한 행동을 하도록 할 수 있다. 그러나 게임 AI의 LOD는 그래픽처럼 단순히 거리만으로 처리할 수 없다. 그래픽과 달리 AI 캐릭터들이 우리가 보고 있지 않을 때도 항상 행동하길 기대하기 때문이다. AI의 LOD는 그 캐릭터가 게임에서 어떤 역할을 하냐에 따..

Game AI 2024.03.03

AI 스케줄링

AI Scheduling 게임이 균등한 프레임을 뽑기 위해서는 다양한 작업들이 제한된 시간 내에 수행되어야 한다. AI역시 마찬가지인데, 이를 제한된 시간 내에 처리하기 위해서는 다음의 3가지 요소가 필요하다. AI 작업들에 적절한 시간을 분배하는 것 AI 작업을 여러 프레임에 걸쳐서 수행할 수 있는 알고리즘 AI 작업간에 우선순위 Frequency 작업을 스케줄링하는 가장 간단한 방법 중 하나는 빈도(frequency)를 이용하는 것이다. 스케줄러는 매 프레임마다 어떤 작업을 수행할 것인지를 결정한다. 이때 작업들은 각자 frequency를 가지고 있으며 스케줄러는 이 값을 이용하여 작업을 수행한다. 가령 어떤 작업의 frequency가 5프레임이라면, 스케줄러는 해당 작업을 5프레임마다 한 번 수행한..

Game AI 2024.02.25

의사 난수

의사 난수 프로그래밍에서 난수란 세 가지 카테고리로 나눌 수 있다. (거의) 진짜 난수 : 특별한 하드웨어로 만드는 난수들. 각종 물리 실험이나 장비등에 쓰임 암호학 난수(해시값 등) : 사실 난수는 아니지만 예측불가능하고 충분히 잘 분포됨. 보통의 의사난수 : Seed가 필요하며, 생성되는 난수들이 결정적(deterministic)임. 생성되는 난수들을 이용하여 역으로 Seed를 구할 수 있음 의사 난수 생성기는 Seed값에 따라 생성되는 난수들이 결정적이기 때문에, 이를 잘 활용하면 유용하다. 때로는 게임 전체에서 단 하나의 난수 생성기를 사용하기 보다는 분야별로 여러 개의 난수 생성기를 사용하는 것이 좋을 수 있다. 가령 절차적인 맵을 생성하는 게임에서 단 하나의 난수 생성기만 사용한다면 플레이어가..

Game AI 2024.02.18

인공 신경망

기초 인공 신경망의 핵심은 한 네트워크에 있는 인공 뉴런들이 다른 인공 뉴런의 부분 집합과 상호작용 하는 것이다. mulit layer perceptron(MLP)은 인공 신경망 아키텍쳐 중 하나인데, perceptron은 인공 신경망에서 사용되는 인공 뉴런을 뜻한다. MLP는 이전 레이어의 모든 노드로부터 인풋을 받아 다음 레이어에 있는 모든 노드에 아웃풋을 전달한다. 이런 네트워크를 feedfoward 네트워크라 부른다. 프로그래머로부터 입력을 받는 레이어를 input layer로, 그리고 네트워크를 통해 쓸만한 정보를 출력하는 레이어를 output layer라 부른다. feedfoward 네트워크 내부의 레이어들끼리 루프가 있을 수 있는데 이런 경우 recurrent network라 부르며, 매우 ..

Game AI 2024.02.04

강화학습_Q-Learning #2

2023.12.19 - [Game AI] - 강화학습_Q-Learning #1 강화학습 튜닝 이전 글에서 Q러닝의 공식은 다음과 같다고 했다. $$Q(s,a) = (1-{\alpha})Q(s,a)+{\alpha}(r+{\gamma}max(Q(s',a'))$$ 여기서의 ${\alpha}$와 ${\gamma}$에 더하여, 임의의 상태를 가질 확률 ${\nu}$(뉴)와 임의의 행동을 취할 확률 ${\rho}$(로)를 인자로 더 추가할 수 있다. 알파 : 학습율 학습율은 현재 데이터가 저장된 Q-Value에 얼마나 영향을 미칠지를 결정한다. [0, 1]값을 갖는다. 0이면 학습이 아예 되지 않는다. 0.3정도로 시작해볼 수 있다. 그러나 피드백의 편차가 클 때에는 이 값이 더 낮아지는게 좋다. 반면에, 학습 반..

Game AI 2024.01.07

강화학습_Q-Learning #1

개요 강화학습이란 경험에 기초하여 학습하는 기법들을 칭한다. 강화학습은 일반적으로 3가지 요소를 지닌다 탐색 전략 : 게임 중 다양한 행동을 시도함 강화 함수 : 취한 행동을 평가함. 학습 규칙 : 위 두 가지를 연결함. 강화학습은 신경망으로 할 수 있지만 게임에서는 Q-Learning을 쓰는 것이 좋은 시작점이 될 수 있다. Q-Learning은 구현이 쉽고 게임이 아닌 산업에서 많이 쓰여졌으며 이론에 대한 깊은 이해 없이도 사용할 수 있다. Q-Learning Q-Learning은 취할 수 있는 액션들을 탐색하며 관련된 정보들을 저장하고 업데이트한다 Q러닝은 게임 세계를 State machine으로 다룬다. 알고리즘은 항상 어떤 상태를 가지며, 상태는 캐릭터의 환경이나 내부 정보들을 기록한다. 당연하..

Game AI 2023.12.19

Decision Tree Learning - (3) incremental way

2023.12.03 - [Game AI] - Decision Tree Learning (2) Decision Tree Learning (2) 2023.11.26 - [Game AI] - Decision Tree Learning - 1 Decision Tree Learning - 1 2021.10.21 - [Game AI] - 의사 결정 - Decision Tree 의사 결정 - Decision Tree Decision Tree Decision Tree는 Decision Making 구현법 중 하나이다. 빠르고, 쉽게 tsyang.tistory.com Incremental Learning 지금까지는 온전한 데이터들이 들어오면 그걸로 Decision Tree를 만들어 냈다. 그러나 새로운 데이터들이 들어온다..

Game AI 2023.12.09

Decision Tree Learning (2)

2023.11.26 - [Game AI] - Decision Tree Learning - 1 Decision Tree Learning - 1 2021.10.21 - [Game AI] - 의사 결정 - Decision Tree 의사 결정 - Decision Tree Decision Tree Decision Tree는 Decision Making 구현법 중 하나이다. 빠르고, 쉽게 구현 가능하고 이해하기 쉽다는 장점을 가지고 있다. 위 트 tsyang.tistory.com ID는 연속적인 속성에서 동작할 수 없고 속성의 값들이 많을 경우에도 활용이 어렵다. 따라서 속성의 값들은 몇 개(주로 2개)의 이산적인 카테고리로 나뉘어져야 한다. Single Split 연속적인 값들은 역치(threshold) 를 정하..

Game AI 2023.12.03

Decision Tree Learning - 1

2021.10.21 - [Game AI] - 의사 결정 - Decision Tree 의사 결정 - Decision Tree Decision Tree Decision Tree는 Decision Making 구현법 중 하나이다. 빠르고, 쉽게 구현 가능하고 이해하기 쉽다는 장점을 가지고 있다. 위 트리에서 Leaf 노드는 실행할 액션(output)이 된다. input이 어떻게 들 tsyang.tistory.com 개요 Decision Tree는 효율적인 학습 대상이다. Strong Supervision(결과가 맞았는지 틀렸는지 피드백)을 통해 만들어진 행동들로 동적 생성이 가능하다. ID3 게임 AI에서 Decision Tree 학습에는 일반적으로 ID3라는 걸 쓴다. 산업적으로는 C4, C4.5, C5같은..

Game AI 2023.11.26

Decision Learning(1) - Naive Bayes Classifiers

개요 의사 결정 학습 중 가장 먼저 시도해야봐야 할 것은 나이브 베이즈 분류기(Naive Bayes Classifiers)이다. 이건 구현하기도 쉽고 성능도 좋아서 학문적인 연구에서도 sanity check용으로 씀. 심지어는 많은 머신 러닝 연구들이 얘보다 못하기도 하다. 데이터 운전 중 코너링을 할 때 브레이크를 어디서 밟을지 학습하는 경우를 생각해보자. 이 때 AI는 플레이어의 실제 주행 데이터를 가지고 학습할 수 있다. 플레이어의 실제 주행에서 (브레이크 여부 / 코너까지 거리 / 현재 속도)를 기록할 수 있고, 다음과 같은 데이터가 나왔다고 가정해보자. brake? distance speed ON 2 11 ON 4 70 OFF 65 80 ON 86 84 OFF 8.2 12.5 OFF 81 14...

Game AI 2023.11.12