2015-01-07 4 views
1

Это может принадлежать сообществу шахматных SE, но я рассматриваю этот вопрос с точки зрения программирования, а не с точки зрения педагогики или даже шахматы.Машиноведение применяется к программному обеспечению для шахмат

Я знаю несколько исследований и попытку создать движки, которые используют тот или иной вариант машинного обучения для игры шахматы (большинство из которых, как правило, изучающей в теме, а не попыток превзойти перебор метода силы, который до сих пор превосходящих другие методы), но мало попыток применить машинное обучение к шахматной педагогике.

Одной из основных причин для тренера/преподавателя шахмат является индивидуальное внимание и направление, которое предлагает преподаватель. Можно ли создать шахматную программу, которая использует машинное обучение для создания персональных «уроков» для пользователя на основе их сильных и слабых сторон?

Уроки не обязательно должны быть сложными, даже генерируя соответствующие позиции из базы данных и предлагая пользователю «решить» их, а затем дать ответ или ответ в ответ на ответ (правильный или неправильный) - это большая инструкция (ибо, даже без объяснений, вариации часто достаточно)

Основные вопросы:

  1. Как программное обеспечение сможет Guage уровень квалификации пользователя? (Это действительно то, на что должен входить алгоритм ML)
  2. Как программное обеспечение может определить сложность или «уместность» тестовой позиции? Например, предположим, что программное обеспечение определяет, что у пользователя есть трудности с тактическими позициями (проблема, с которой сталкиваются большинство любительских игроков), как программа может выбрать позицию (из своей базы данных игр, предположим) с тактической сложностью?
  3. Наконец, как программное обеспечение будет воспринимать и адаптироваться к улучшению пользователем?

Прошу прощения, если этот вопрос является абстрактным или теоретическим для SO, если так, я переместлю его в другое место.

Благодаря

ответ

1

Я хотел бы начать за счет того, шахматная программа дамп статистики в CSV или JSON файла с указанием:

  1. Какие части были перемещены, и как часто
  2. Как много ходов это до тех пор, пока не состоится мат.
  3. Сколько игр за какой период времени.
  4. Сколько штук захвачено с течением времени. и т.д.

У вас есть огромное количество гибкости над собирание очков вы данные, представляющие интерес или функции, которые будут использоваться для подготовки вашего алгоритма ML. После объединения этих данных и файла данных, который можно сделать доступным для вашего алгоритма, вы можете начать его обучать и посмотреть, какие прогностические результаты вы получите. Затем вам нужно будет настроить ваш эксперимент, пока не получите результаты, которые действительно полезны.

Вот Python на основе алгоритма Random Форрест вместе с a tutorial, чтобы вы начали:

from sklearn.ensemble import RandomForestClassifier 
from numpy import genfromtxt, savetxt 

def main(): 
    #create the training & test sets, skipping the header row with [1:] 
    dataset = genfromtxt(open('Data/train.csv','r'), delimiter=',', dtype='f8')[1:]  
    target = [x[0] for x in dataset] 
    train = [x[1:] for x in dataset] 
    test = genfromtxt(open('Data/test.csv','r'), delimiter=',', dtype='f8')[1:] 

    #create and train the random forest 
    #multi-core CPUs can use: rf = RandomForestClassifier(n_estimators=100, n_jobs=2) 
    rf = RandomForestClassifier(n_estimators=100) 
    rf.fit(train, target) 

    savetxt('Data/submission2.csv', rf.predict(test), delimiter=',', fmt='%f') 

if __name__=="__main__" 

Это может быть очень интересно, когда вы получите это происходит. Чтобы программа начинала предвидеть слабые стороны игрока, зависит от того, какие данные вы собираетесь собирать.

Удачи.

Смежные вопросы