문제

나는 테트리스를 아주 잘 플레이하는 테트리스 AI를 작성한 적이 있습니다.내가 사용한 알고리즘(이 문서에 설명된)은 2단계 프로세스입니다.

첫 번째 단계에서 프로그래머는 문제에 대해 "흥미로운" 입력을 추적하기로 결정합니다.테트리스에서는 간격을 최소화하면 향후 조각을 더 쉽게 배치하는 데 도움이 될 수 있으므로 연속으로 몇 개의 간격이 있는지 추적하는 데 관심이 있을 수 있습니다.또 다른 하나는 평균 열 높이일 수 있습니다. 왜냐하면 패배할 경우 위험을 감수하는 것은 좋지 않은 생각일 수 있기 때문입니다.

두 번째 단계는 각 입력과 관련된 가중치를 결정하는 것입니다.유전자 알고리즘을 사용한 부분입니다.결과에 따라 시간이 지남에 따라 가중치가 조정되는 한 모든 학습 알고리즘이 여기에서 수행됩니다.아이디어는 입력이 솔루션과 어떻게 관련되는지 컴퓨터가 결정하도록 하는 것입니다.

이러한 입력과 해당 가중치를 사용하여 조치를 취하는 가치를 결정할 수 있습니다.예를 들어 직선 모양을 오른쪽 열에 끝까지 배치하면 4개의 서로 다른 행의 간격이 제거되고 가중치가 높을 경우 이 작업은 매우 높은 점수를 얻을 수 있습니다.마찬가지로, 위에 평평하게 놓으면 실제로 간격이 생길 수 있으므로 해당 작업은 낮은 점수를 받습니다.

나는 "흥미로운" 잠재적 입력을 찾는 첫 번째 단계에 학습 알고리즘을 적용할 수 있는 방법이 있는지 항상 궁금했습니다.컴퓨터가 먼저 어떤 입력이 유용할지 학습한 다음 학습을 적용하여 해당 입력에 가중치를 두는 알고리즘을 작성하는 것이 가능해 보입니다.전에도 이런 일이 있었나요?이미 AI 애플리케이션에서 사용되고 있나요?

도움이 되었습니까?

해결책

신경망에서, 당신은 당신이 훈련하는 분류와 함께 가장 강력한 상관 관계, 긍정적 또는 부정적 인 입력을 찾아서 '흥미로운'잠재적 입력을 선택할 수 있습니다. 다른 상황에서도 비슷하게 할 수 있다고 생각합니다.

다른 팁

나는 학습 알고리즘에 더 원시적인 데이터를 공급함으로써 당신이 설명하는 문제에 접근할 수 있다고 생각합니다.예를 들어, 테트리스 게임 상태는 점유된 셀 목록으로 설명될 수 있습니다.이 정보를 설명하는 비트 문자열은 학습 알고리즘의 해당 단계에 적합한 입력이 됩니다.실제로 이에 대한 훈련은 여전히 ​​어렵습니다.그것이 유용한 결과인지 어떻게 알 수 있나요?전체 알고리즘을 단일 블롭으로 굴릴 수 있다고 가정합니다. 여기서 알고리즘은 연속적인 플레이 상태를 제공하고 출력은 블록 배치일 뿐이며 미래 세대를 위해 더 높은 점수의 알고리즘이 선택됩니다.

또 다른 선택은 다른 출처의 대규모 희곡 모음을 사용하는 것입니다.인간 플레이어의 녹음된 플레이 또는 손으로 제작한 AI와 같은 출력이 다음 10번의 동작 동안 얻은 점수와 같은 미래 플레이의 흥미로운 사실 ​​또는 다른 것과 강한 상관관계를 갖는 알고리즘을 선택합니다.

예, 방법이 있습니다.

선택한 경우 선택된 기능 2^M 서브 세트가 있으므로 볼만한 것이 많습니다. 나는 다음과 같습니다.

For each subset S
   run your code to optimize the weights W
   save S and the corresponding W

그런 다음 각 쌍 SW에 대해 각 쌍에 대해 G 게임을 실행하고 각 쌍의 점수 L을 저장할 수 있습니다. 이제 다음과 같은 테이블이 있습니다.

feature1    feature2    feature3    featureM   subset_code game_number    scoreL
1           0           1           1           S1         1              10500
1           0           1           1           S1         2              6230
...
0           1           1           0           S2         G + 1          30120
0           1           1           0           S2         G + 2          25900

이제 일부 구성 요소 선택 알고리즘 (예 : PCA)을 실행하고 Scorel을 설명 할 가치가있는 기능을 결정할 수 있습니다.

팁 : w를 최적화하기 위해 코드를 실행할 때, 임의의 숫자 생성기를 시드하여 각각의 다른 '진화하는 뇌'가 동일한 조각 시퀀스에 대해 테스트되도록합니다.

나는 그것이 뭔가 도움이되기를 바랍니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top