Еще один шаг

Sep 18, 2015 16:37

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

информационные технологии, шахматы, ai, computer science

Leave a comment

dr_klm September 19 2015, 18:01:08 UTC
Пример показывает, что если взять программу и доработать её, то она станет лучше. Так, в принципе, должно быть всегда. Ну, если дорабатывать с умом, конечно. И особенно если исходная программа была "не очень".

Идее использования NN в шахматных программах уже десятки лет. Если бы эта идея была продуктивной -- все лучшие программы сейчас использовали бы NN. Ну, если не верить в теории заговора, конечно.

Вообще NN решает задачу подгонки произвольной неизвестной функции другой функцией, которая имеет огромное число параметров. Как говорил когда-то известный физик Ландау -- "дайте мне 5 параметров и я нарисую слона". Я не хочу сказать, что слонов рисовать не нужно. Но этот метод, отнюдь, не панацея. Его главные недостатки в том что "не понятно -- как это работает" и "не очевидно, что описав 1000 примеров с успехом, программа не даст какой-то катастрофический сбой на 1001-м". В каких-то областях, где примеров мало и сбои не так критичны (например OCR) -- это отлично работает.

Кроме того, если понимать задачу, решаемую NN, как задачу подгонки, то сразу отпадает всякая шелуха вроде "мозгоподобности". Просто берём набор данных, параметризованную функцию и "фитуем". Хорошая функция опишет данные хорошо, плохая плохо, функция же с малым количеством параметров поможет заодно и нам что-то о данных понять...

К.Л.М.

Reply

ushastyi September 19 2015, 21:08:50 UTC
> Идее использования NN в шахматных программах уже десятки лет. Если бы эта идея была продуктивной -- все лучшие программы сейчас использовали бы NN.

Возможно, что не хватало дешевых вычислительных мощностей и тестовых наборов (позиций, партий), которые в достаточном для обучения количестве стали открыто доступны в последние лет 5-10, не больше.

> Вообще NN решает задачу подгонки произвольной неизвестной функции другой функцией, которая имеет огромное число параметров.

Безусловно. Я как-то даже обсуждал этот вопрос менее абстрактно: http://ushastyi.livejournal.com/248444.html

Reply

Как говорил Ландау son_0f_morning October 21 2015, 15:10:31 UTC
Как говорил когда-то известный физик Ландау -- "дайте мне 5 параметров и я нарисую слона".

О_О спасибо
Вот прям недавно с пытался объяснить плохи переоптимизация и подгонка параметров но похоже так и не донёс (дошёл аж до Колмогоровской сложности).

Reply

Re: Как говорил Ландау dr_klm October 21 2015, 15:54:46 UTC
Ну, не так уж они совсем и "плохи". Просто когда параметров много, успешная подгонка может не означать ровным счётом ничего (в смысле невозможности извлечь из этих параметров полезную информацию) и не давать никакой разумной экстраполяции.

К.Л.М.

Reply

Re: Как говорил Ландау son_0f_morning October 22 2015, 09:38:21 UTC
"чем плохи". "чем" в процессе редактирования стёрлось ;)

А если более развёрнуто, то:
1. Переоптимизация -- плохо всегда (тут по определению просто что для одного проекта (способа задания свободных коннстант) "пере" то для другого вполне себе оптимизация).

2. Подгонка (в этой вселенной) -- плохо почти всегда.
те из 2х случаев (дающих сразу после коммита одинаковый эффект)

if (app_name == "gcc") {
RunSpecialGccOptimization()
}

или

// область определения 1.0 - 1.5
// 1.1 - 1.4 "плато" с примерно одинаковой производительностью
// было 1.25 -- ровно середина мы соптимизировали
#define DEFICITE_KOEF 1.203

Первый случай -- вполне может быть оправданным распространённым юз-кейсом
А второй -- почти наверняка чистая переоптимизация которая даёт эффект "здесь и сейчас" с учётом всех остальных коэффициентов и эвристик. И вопрос лишь в том когда (через неделю или месяц) она перестанет работать.

Reply


Leave a comment

Up