Forchess - форум о заочных шахматах  

Вернуться   Forchess - форум о заочных шахматах > Заочные турниры и партии > Шахматные программы и движки

Ответ
 
Опции темы Опции просмотра
Старый 15.02.2019, 11:48   #1
Magystr
2 разряд
 
Аватар для Magystr
 
Регистрация: 03.08.2016
Сообщений: 311
Сказал(а) спасибо: 85
Поблагодарили 227 раз(а) в 123 сообщениях
Репутация: 10
По умолчанию Шахматные нейронные сети. Что это такое и как они работают?

Предлагаю здесь поразбираться, что же такое Шахматная нейронная сеть, что в ней хранится, как она работает и как ее тренируют.

Сначала - как она работает. На примере оценки одной позиции, любой, к примеру - начальной.
На вход сети приходит позиция (fen-код), далее - производятся некие расчеты в черном ящике, и на выходе - один из возможных результатов: выигрыш, ничья или проигрыш. В этом основное отличие от АБ-движков, в которых оценка выдается в сантипешках.
Что же из себя представляет этот черный ящик и какие расчеты внутри него производятся?
Черный ящик - это как раз и есть нейронная сеть. Предположим, что мы ведем речь о сети, размерностью 20*256.
Сеть можно представить в виде слоеного торта, например, "Наполеон" или "Прага". В данном случае у этого пирога 20 слоев.
На каждом слое (не только на верхнем) расположено 256 вишенок. Между вишенками имеются связи. Если связать каждую из вишенок со всеми остальными - это будет очень похоже на сеть, в которую и будет ловиться Вяленая Рыба. Отсюда и название - нейронная СЕТЬ.
Ну вот собственно и все устройство сети в первом приближении. Внутри каждой вишенки - не косточка, как могло бы показаться изначально, а некое число - весовой коэффициент, рассчитанный ранее в процессе тренировки сети. И все. Никаких позиций нигде в сети не хранится - не предназначена она для этого.
Когда на вход приходит какая-либо позиция, нейронная сеть разбивает ее на много-много элементарных составляющих - виртуальных переменных и присваивает этим переменным соответствующие значения.
Далее эта информация поступает в первый слой сети. По заданным связям между вишенками происходит умножение этих переменных на соответствующие коэффициенты. Когда все необходимые пути между вишенками на первом слое пройдены, результаты "проваливаются" на следующий слой сети. В нем также производятся перемещения по имеющимся связям между вишенками и соответствующие вычисления. Таким образом в результате огромного количества вычислений, сеть и выдает оценку позиции в виде одного из трех возможных результатов. Этот расчет - очень длительный, потому нейронная сеть рассматривает существенно меньшее количество позиций, чем обычный движок, но производимая оценка достаточно надежная, потому что учитывается огромное количество нюансов позиции.
Еще раз: никакие позиции ни в каком виде в сети не содержатся, никаких дебютных библиотек в ней нет, и никакие полученные в результате обсчета оценки в нее не записываются.

Определение лучшего хода производится следующим образом:
Изначально строится дерево, в котором заданное количество веточек (например, 512). Каждая из этих веточек отдается на обсчет одному ядру графической карты (Как мы знаем, у современных графических карт несколько тысяч ядер). Когда все ветки обсчитаны и все результаты получены, они суммируются по веткам и получается примерно следующее (для начальной позиции): ход е2-е4 - всего рассмотрено 200 позиций, из них 50 выигрышей, 130 ничьих, 20 проигрышей. Оценка хода 115/200*100% = 55.75%, повторяемость 200/512 = 0.39. Аналогично, в результате того же самого этапа расчета для хода d2-d4 - оценка 54.97%, повторяемость 0.28. А для хода а2-а4, к примеру, - оценка 100%, повторяемость 0.002. В оценке хода присутствует как основной параметр - вероятность выигрыша (точнее наверное - математическое ожидание результата партии), как дополнительный параметр - повторяемость, показывающий какой процент времени был потрачен на анализ именно этого продолжения.

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

Процесс тренировки сети - это процесс изменения (подстройки) весовых коэффициентов в каждой из имеющихся вишенок таким образом, чтобы выдаваемый сетью результат для каждой случившейся позиции в процессе данного цикла тренировки соответствовал действительности.
Magystr вне форума   Ответить с цитированием
10 пользователя(ей) сказали cпасибо:
AAM (15.02.2019), Alex_Lk (23.02.2019), ba70 (15.02.2019), Chess762 (15.02.2019), Maratka (15.02.2019), sovaz1997 (24.02.2019), TCH (24.02.2019), Барков Кирилл (25.02.2019), Кевин (25.02.2019), Философ (15.02.2019)
Старый 15.02.2019, 12:24   #2
Maratka
Эксперт
 
Аватар для Maratka
 
Регистрация: 11.04.2017
Адрес: РФ, Крым, Севастополь.
Сообщений: 11,849
Сказал(а) спасибо: 3,311
Поблагодарили 5,951 раз(а) в 4,245 сообщениях
Репутация: 253
По умолчанию Re: Шахматные нейронные сети. Что это такое и как они работают?

Цитата: Сообщение от Magystr
Когда все ветки обсчитаны и все результаты получены, они суммируются по веткам и получается примерно следующее (для начальной позиции): ход е2-е4 - всего рассмотрено 200 позиций, из них 50 выигрышей, 130 ничьих, 20 проигрышей. Оценка хода 115/200*100% = 55.75%, повторяемость 200/512 = 0.39.
Цитата: Сообщение от Magystr
Еще раз: никакие позиции ни в каком виде в сети не содержатся, никаких дебютных библиотек в ней нет, и никакие полученные в результате обсчета оценки в нее не записываются.
Однако результат один и тот же, что и с книгой, составленной методом импорта партий (т.е. по сути своей - самообучения книги, без ручной правки и установки предпочтений): в книге находится ровно та же информация: количество партий, количество выигрышей/проигрышей/ничьих, на основе чего считается вероятность выигрыша при этом ходе.

Сеть можно доучить, в результате чего вероятности выигрышей по тем или иным ходам изменятся, а книгу можно дополнить новыми партиями с тем же результатом.

Принципиальная разница лишь в том, что ходы в случае сети всегда считаются, а в случае книги - берутся готовые (ну или вернее сказать -текущие оболочки отключают движки, и ходят самостоятельно. Ничто не мешает изменить оболочку с движком так, чтобы движок получил 2-3 самых перспективных хода из книги, и начал их обработку в соответствие с заложенной в него логикой).
Maratka вне форума   Ответить с цитированием
4 пользователя(ей) сказали cпасибо:
AAM (15.02.2019), Alex_Lk (23.02.2019), Chess762 (15.02.2019), TCH (24.02.2019)
Старый 24.02.2019, 11:56   #3
Alex_Lk
КМС
 
Аватар для Alex_Lk
 
Регистрация: 14.10.2016
Сообщений: 666
Сказал(а) спасибо: 5,298
Поблагодарили 1,289 раз(а) в 497 сообщениях
Репутация: 201
По умолчанию Re: Шахматные нейронные сети. Что это такое и как они работают?

Цитата: Сообщение от Magystr
Предлагаю здесь поразбираться, что же такое Шахматная нейронная сеть, что в ней хранится, как она работает и как ее тренируют.
Очень интересная тема. Есть хоть какое то описание того что хранится в файлах обучения где накапливается информация. И почему они 10,20 ... 80 на 128,256,512.

Где то прочитал что там просто один за другим коэф-ты. В непонятном порядке.
Есть ссылки на что то адекватное. В инете куча рекламных статей переписанных друг у друга. Чтоб докопаться до чего то путного надо истратить прилично времени.
Alex_Lk вне форума   Ответить с цитированием
Старый 24.02.2019, 16:46   #4
crem
2 разряд
 
Аватар для crem
 
Регистрация: 30.04.2018
Сообщений: 252
Сказал(а) спасибо: 9
Поблагодарили 505 раз(а) в 193 сообщениях
Репутация: 51
По умолчанию Re: Шахматные нейронные сети. Что это такое и как они работают?

Я вообще с декабря всё планирую роликов на ютубе записать про Lc0 и про нейросети вообще, но что-то пока не получается. Напишу кратко тут самый ликбез по нейросетям:


Нейросеть -- это математическая функция. Обычно выбирают функции с разными полезными свойствами, и в нейросетях есть большое разнообразие функций для разных целей.
Но самое главное для обучения сети -- это чтобы функция была дифференцируемая, то есть можно было бы взять производную. Функции эти громоздкие и с большим числом операций, но оны заданы аналитически и их можно записать формулой, понятной любому десятикласснику (только очень длинной).

Для примера возьмём такую функцию:
Код:
f(x₁, x₂, x₃) = arctan(a₁x₁ + a₂x₂ + a₃x₃)
Это уже нейросеть!
По трём параметрам: x₁, x₂, x₃, функция f() возвращает какое-то значение, и мы можем так подобрать a₁ a₂ a₃, чтобы она предсказывала что-нибудь достаточно точно.

Например, по количеству солнечных дней, дождливых дней и средней температуре, определять в какой день распустится цветок.


Функция потерь

Пусть у нас есть тренировочные данные в виде наборов (x₁ x₂ x₃ и "правильный ответ" у), из статистики, собранной в прошлые годы, и есть наша функция f(). Как оценить, хорошо ли справляется функция f() с предсказанием, или нет?

Можно взять все эти наборы данных из прошлых лет, подставить x в f(), вычислить значения, и посчитать например среднее значение квадратов разности предсказанного и "правильного" ответа для всех наборов иксов и игрека:

Код:
λ(f(x₁, x₂, x₃), y) = (f(...) - y)²
Чем значение λ меньше, тем функция f() качественнее. Мы взяли такую функцию ("квадрат разности между нашим предсказанием и правильным ответом") наугад, но на самом деле это самая популярная функция для таких оценок, и называется этот метод MSE (Mean Square Loss).
Из-за квадрата, небольшие ошибки считаются не очень серьёзными, а большие наоборот приводят к большому значению функции λ.

Вот такая функция, которая по правильным ответам и предсказаниям показывает насколько предсказательная функция ошибается, называется функцией потерь (Loss Function). Чем Loss Function меньше, тем функция f() предсказывает точнее.


Тренировка нейросети

Но вопрос в том, как определить лучшие a₁ a₂ a₃ (эти значения называются весами). Их надо натренировать!


Тренируют так:

1. В самом самом начале значения a₁ a₂ a₃ выбирают наугад.

Потом:
2. Берут какой-нибудь тренировочный набор (x₁ x₂ x₃ и "правильный ответ" у) и подставляют в функцию потерь:

Код:
λ(a₁, a₂, a₃) = (arctan(a₁x₁ + a₂x₂ + a₃x₃) - y)²
(в этом случае x₁ x₂ x₃ y -- это уже не переменные, а конкретные числа, а переменными становятся наоборот a₁ a₂ a₃, то есть функцию как бы выворачивают наизнанку)

3. Вычисляют частные производные функции λ относительно a₁, a₂, a₃. (вот именно для этого момента и надо чтобы функция была дифференцируемая)

4. Как мы все помним, значение производной -- это скорость роста функции в данной точке.
Если она больше нуля, то увеличение значения аргумента приведёт к увеличению значения функции, и наоборот.
Наша функция -- это функция потерь λ(). Мы хотим, чтобы её значение в нашей точке было как можно меньше.
Поэтому если значение производной λ в этой точке больше 0, мы чуть-чуть уменьшаем aₙ, а если оно меньше 0 -- то увеличиваем.

На сколько двигаем -- это пропорционально значению этой производной, и пропорционально LR (Learning Rate), которую мы постепенно в течение обучения уменьшаем (чтобы вначале быстро прийти к примерно правильной функции, а потом тонкой настройкой уточнять).

5. Таким образом мы чуть-чуть изменили значения a₁ a₂ a₃. Теперь берём следующий тренировочный набор и повторяем то же самое (переходим к пункту 2).

6. Если тренировочных наборов много, функция f() в конце концов начнёт предсказывать хорошо.



Всё, для первого поста достаточно.
Да, и в файле весов Lc0 хранятся такие вот a₁ a₂ a₃ очень большой функции.
crem вне форума   Ответить с цитированием
8 пользователя(ей) сказали cпасибо:
Alex_Lk (24.02.2019), Arikchess (25.02.2019), byan_mivv (24.02.2019), klf (24.02.2019), Maratka (24.02.2019), Rhiannon (26.02.2019), sovaz1997 (24.02.2019), TCH (24.02.2019)
Старый 24.02.2019, 18:13   #5
svoitsl
Гроссмейстер
 
Аватар для svoitsl
 
Регистрация: 19.04.2017
Сообщений: 4,732
Сказал(а) спасибо: 1,204
Поблагодарили 2,852 раз(а) в 1,885 сообщениях
Репутация: 159
По умолчанию Re: Шахматные нейронные сети. Что это такое и как они работают?

Цитата: Сообщение от crem
Всё, для первого поста достаточно
Чувствуется ваше англоязычное образование....

Цитата: Сообщение от crem
этот метод MSE (Mean Square Loss).
ведь по русский (и большинству народу это хорошо знакомо) это МНК (метод наименьших квадратов)

Цитата: Сообщение от crem
Для примера возьмём такую функцию:
Код:
f(x₁, x₂, x₃) = arctan(a₁x₁ + a₂x₂ + a₃x₃)
А если , если мне не изменяет память, мы с вами возьмём полином, то вся катавасия с обучением легким движением извилин мозга превращается просто в решение матричного уравнения (что делается легко и не принужденно, если конечно объем не очень большой).
svoitsl вне форума   Ответить с цитированием
Старый 24.02.2019, 18:41   #6
crem
2 разряд
 
Аватар для crem
 
Регистрация: 30.04.2018
Сообщений: 252
Сказал(а) спасибо: 9
Поблагодарили 505 раз(а) в 193 сообщениях
Репутация: 51
По умолчанию Re: Шахматные нейронные сети. Что это такое и как они работают?

Цитата: Сообщение от svoitsl
Чувствуется ваше англоязычное образование....
У меня русскоязычное. БГУ, БелГосУниверситет в Минске.
Но про нейросети там когда я учился не рассказывали, поэтому терминологии нейросетевой по-русски я не знаю.


Цитата: Сообщение от svoitsl
ведь по русский (и большинству народу это хорошо знакомо) это МНК (метод наименьших квадратов)
MSE это "среднеквадратическое отклонение", МНК это "Least Squares Method" вроде бы. Но всё это одно и то же, да. В одном случае это название всего метода, а в другом -- только функции потерь.

Цитата: Сообщение от svoitsl
А если , если мне не изменяет память, мы с вами возьмём полином, то вся катавасия с обучением легким движением извилин мозга превращается просто в решение матричного уравнения (что делается легко и не принужденно, если конечно объем не очень большой).
Это когда мы берём несколько слоёв нейросети (или что то же самое математическим языком, композиция функций f(g(h(...))), или (f ∘ g ∘ h ∘ ...)()), то когда они просто линейные комбинации аргументов (или что то же самое, умножение на матрицу), пропадает весь смысл нескольких слоёв.
Потому что умножение матриц -- это ассоциативная операция, и мы просто можем перемножить все матрицы ещё до того, как узнаем входные аргументы, и получить опять одну матрицу (слой) которая будет делать то же самое.
Поэтому вставляют какую-нибудь функцию (называют функцией активации), чтобы эту линейность убрать.
crem вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Alex_Lk (24.02.2019), svoitsl (24.02.2019)
Старый 24.02.2019, 18:51   #7
Maratka
Эксперт
 
Аватар для Maratka
 
Регистрация: 11.04.2017
Адрес: РФ, Крым, Севастополь.
Сообщений: 11,849
Сказал(а) спасибо: 3,311
Поблагодарили 5,951 раз(а) в 4,245 сообщениях
Репутация: 253
По умолчанию Re: Шахматные нейронные сети. Что это такое и как они работают?

Цитата: Сообщение от crem
Но вопрос в том, как определить лучшие a₁ a₂ a₃ (эти значения называются весами). Их надо натренировать!
Отсюда получается, что для бОльшей точности нужно больше значений, скажем может понадобится некое промежуточное между a₁ и a₂
Потому - растет размерность сети?
Или можно подобрать ряд вида a₁ больше a₂, a₂ много больше a₃?
Maratka вне форума   Ответить с цитированием
Старый 24.02.2019, 21:24   #8
klf
3 разряд
 
Аватар для klf
 
Регистрация: 19.01.2017
Сообщений: 226
Сказал(а) спасибо: 163
Поблагодарили 566 раз(а) в 172 сообщениях
Репутация: 86
По умолчанию Re: Шахматные нейронные сети. Что это такое и как они работают?

Цитата: Сообщение от svoitsl
Цитата: Сообщение от crem
Для примера возьмём такую функцию:
Код:
f(x₁, x₂, x₃) = arctan(a₁x₁ + a₂x₂ + a₃x₃)
А если , если мне не изменяет память, мы с вами возьмём полином, то вся катавасия с обучением легким движением извилин мозга превращается просто в решение матричного уравнения (что делается легко и не принужденно, если конечно объем не очень большой).

https://ru.wikipedia.org/wiki/Симплекс-метод - может же подойти и такой вариант описания и подбора параметров?
klf вне форума   Ответить с цитированием
Старый 24.02.2019, 21:46   #9
crem
2 разряд
 
Аватар для crem
 
Регистрация: 30.04.2018
Сообщений: 252
Сказал(а) спасибо: 9
Поблагодарили 505 раз(а) в 193 сообщениях
Репутация: 51
По умолчанию Re: Шахматные нейронные сети. Что это такое и как они работают?

Цитата: Сообщение от klf
https://ru.wikipedia.org/wiki/Симплекс-метод - может же подойти и такой вариант описания и подбора параметров?
Не, симплекс-метод -- он для поиска минимума линейной функции при линейных ограничениях.

Линейные функции обладают многими удобными свойствами, из-за чего они популярны в алгебре, но ими трудно выразить большинство идей из реального мира.
Например, если увеличение средней температуры на 1 градус привело к тому, что цветок распустился на 2 дня раньше, то с линейной функцией это автоматически значит, что при повышении температуры ещё на 20 градусов цветок распустится на 40 дней раньше.

А в нейронных сетях специально линейности избегают, чтобы функция могла выразить что-нибудь посложнее, особенно если такие функции связаны в цепочки.


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

Наверное пока не совсем понятно, при чём тут вообще шахматы, но на самом деле шахматы уже близко.
crem вне форума   Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
Alex_Lk (25.02.2019), Arikchess (25.02.2019), svoitsl (25.02.2019)
Старый 24.02.2019, 22:19   #10
crem
2 разряд
 
Аватар для crem
 
Регистрация: 30.04.2018
Сообщений: 252
Сказал(а) спасибо: 9
Поблагодарили 505 раз(а) в 193 сообщениях
Репутация: 51
По умолчанию Re: Шахматные нейронные сети. Что это такое и как они работают?

Цитата: Сообщение от Maratka
Отсюда получается, что для бОльшей точности нужно больше значений, скажем может понадобится некое промежуточное между a₁ и a₂
Потому - растет размерность сети?
Или можно подобрать ряд вида a₁ больше a₂, a₂ много больше a₃?
a₁, a₂ и a₃ -- это переменные, хранящие веса сети, а не значения этих весов.
Ну то есть в одной сети может быть a₁=1.3, a₂=-3.1, a₃=2.1, а потом их потренируют и станет a₁=2.5, a₂=-3.5, a₃=2.2 в другой сети.


Ок, теперь про размерность сети:
В прошлом посте я написал такое:

Код:
f(x₁, x₂, x₃)
Выглядело, будто бы на вход сети подаётся несколько значений, а на выходе получается одно. На самом деле такая функция f() не одна, а их
одновременно выполняется несколько:

Код:
y₁ = f₁(x₁, x₂, x₃) = arctan(a₁₁x₁ + a₁₂x₂ + a₁₃x₃)
y₂ = f₂(x₁, x₂, x₃) = arctan(a₂₁x₁ + a₂₂x₂ + a₂₃x₃)
...
Эти функции независимы и веса aᵢⱼ у них тоже независимые и тренируются отдельно.

Зачем нужно несколько функций?

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

А во-вторых, нейросети часто организуются слоями, и для того, чтобы следующему слою передать 3 аргумента, надо эти 3 аргумента где-то взять у предыдущего слоя.

И вместо того, чтобы записывать такое семейство функций и аргументов по-отдельности, обычно их записывают в матричном виде:

Код:
вместо
y₁ = f₁(x₁, x₂, x₃) = arctan(a₁₁x₁ + a₁₂x₂ + a₁₃x₃)
y₂ = f₂(x₁, x₂, x₃) = arctan(a₂₁x₁ + a₂₂x₂ + a₂₃x₃)
...

пишут

Y = F(X) = arctan(AX)
Размерность сети:

Так вот, как я уже сказал, нейросети любят слои, то есть выход из одной функции пускать на вход другой функции:
Код:
Y = F(G(H(...K(L(X))...)))
Количество таких функций в цепочке -- это и есть количество блоков в нейронной сети Lc0 (сейчас 20).

Теперь про "количество фильтров":

Количество аргументов самой внутренней функции (размерность X) -- это количество входных данных.
Размерность Y -- это количество предсказываемых значений.

Но какая входная и выходная размерность внутренних функций?
То есть возьмём какую-нибудь Z = H(...), и вычислим G(Z), какая размерность у Z?
Эта размерность аргументов обычно одинаковая у всех внутренних слоёв, выбирается по желанию программиста, и в Lc0 называется количеством фильтров (сейчас 256).

Так что размерность сети 20x256, значит что сеть Lc0 состоит из 20 вложенных функций (слоёв), и от слоя к слою передаётся 256 значений.

Примечания к предыдущему предложению:

1. Слоёв 20, но каждый из этих 20 слоёв на самом деле сам состоит из двух слоёв. То есть внутренние функции имеют такой вид (примерно):
Код:
H(X) = Q(W(X)) + X
Поэтому обычно говорят, что 20 у нас блоков, а слоёв всё-таки 40.

2. Эти 256 значений, которые передаются от слоя к слою, на самом деле не просто числа, а матрицы 8x8. То есть на самом деле от слоя к слою передаётся на 256 чисел а 256*8*8 = 65536.
crem вне форума   Ответить с цитированием
5 пользователя(ей) сказали cпасибо:
Alex_Lk (25.02.2019), Asunta (25.02.2019), klf (24.02.2019), Maratka (24.02.2019), svoitsl (24.02.2019)
Старый 25.02.2019, 06:09   #11
Asunta
Гроссмейстер
 
Аватар для Asunta
 
Регистрация: 10.07.2018
Сообщений: 1,406
Сказал(а) спасибо: 776
Поблагодарили 2,282 раз(а) в 935 сообщениях
Репутация: 230
По умолчанию Re: Шахматные нейронные сети. Что это такое и как они работают?

Если мы запускаем бесконечный анализ АВ-движка, то он ( в меру возможностей железа ) будет бесконечно набирать глубину.
Интересно, что по-польски analfabet - "малограмотный" ( alfabet - алфавит, азбука )

А если запустить бесконечный анализ Lc0 ( ? )
Тоже будет бесконечный набор глубины или в какой-то момент наступит ОСТАНОВ ( ? )
Asunta вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Viktor (25.02.2019)
Старый 25.02.2019, 09:01   #12
Asunta
Гроссмейстер
 
Аватар для Asunta
 
Регистрация: 10.07.2018
Сообщений: 1,406
Сказал(а) спасибо: 776
Поблагодарили 2,282 раз(а) в 935 сообщениях
Репутация: 230
По умолчанию Re: Шахматные нейронные сети. Что это такое и как они работают?

Также интересно, происходит ли "эволюция" в системе из 256 фильтров ( ? )
Они вообще где-нибудь перечислены, или это секрет ( ? )

От размерности сети и от качества обучения зависит многое.
Но существенный прорыв возможен также в подборе параметров ( фильтров ).
Если их сотни - поиск прорывных "новинок" может дать не +50, а все +500 ЭЛО.
Asunta вне форума   Ответить с цитированием
Старый 25.02.2019, 10:23   #13
sovaz1997
Гроссмейстер
 
Аватар для sovaz1997
 
Регистрация: 27.09.2017
Адрес: Москва
Сообщений: 4,142
Сказал(а) спасибо: 2,297
Поблагодарили 2,510 раз(а) в 1,635 сообщениях
Репутация: 92
По умолчанию Re: Шахматные нейронные сети. Что это такое и как они работают?

Цитата: Сообщение от Asunta
Также интересно, происходит ли "эволюция" в системе из 256 фильтров ( ? )
Они вообще где-нибудь перечислены, или это секрет ( ? )

От размерности сети и от качества обучения зависит многое.
Но существенный прорыв возможен также в подборе параметров ( фильтров ).
Если их сотни - поиск прорывных "новинок" может дать не +50, а все +500 ЭЛО.
На самом деле, даже интересно, какой теоретический предел у текущий сети. Т. е. такой набор коэффициентов, который даст максимальный результат. И насколько близка 20x256 к реальному пределу.
sovaz1997 вне форума   Ответить с цитированием
Старый 25.02.2019, 16:12   #14
Alex_Lk
КМС
 
Аватар для Alex_Lk
 
Регистрация: 14.10.2016
Сообщений: 666
Сказал(а) спасибо: 5,298
Поблагодарили 1,289 раз(а) в 497 сообщениях
Репутация: 201
По умолчанию Re: Шахматные нейронные сети. Что это такое и как они работают?

Цитата: Сообщение от crem
2. Эти 256 значений, которые передаются от слоя к слою, на самом деле не просто числа, а матрицы 8x8. То есть на самом деле от слоя к слою передаётся на 256 чисел а 256*8*8 = 65536.
Во, интрига завернулась.
Не терпится узнать, что же пишут в эти 256*8*8 = 65536.

Похоже скоро до шахмат доберемся.
Alex_Lk вне форума   Ответить с цитированием
Старый 25.02.2019, 16:16   #15
Maratka
Эксперт
 
Аватар для Maratka
 
Регистрация: 11.04.2017
Адрес: РФ, Крым, Севастополь.
Сообщений: 11,849
Сказал(а) спасибо: 3,311
Поблагодарили 5,951 раз(а) в 4,245 сообщениях
Репутация: 253
По умолчанию Re: Шахматные нейронные сети. Что это такое и как они работают?

Вопрос не по сетям, скорее по железу для LZ, но коль уж подобной темы нет (возможно потом будет) - задам тут:

1) Поддерживает ли LZ FP16 на платах AMD (Polaris/Vega)? Под OpenCL естественно?
2) Какую производительность показывают бюджетные, и среднего уровня платы (RX 560, 570)? Если есть данные по более дорогим - также будет интересно.
Maratka вне форума   Ответить с цитированием
Старый 25.02.2019, 16:56   #16
crem
2 разряд
 
Аватар для crem
 
Регистрация: 30.04.2018
Сообщений: 252
Сказал(а) спасибо: 9
Поблагодарили 505 раз(а) в 193 сообщениях
Репутация: 51
По умолчанию Re: Шахматные нейронные сети. Что это такое и как они работают?

Цитата: Сообщение от Asunta
Если мы запускаем бесконечный анализ АВ-движка, то он ( в меру возможностей железа ) будет бесконечно набирать глубину.
Интересно, что по-польски analfabet - "малограмотный" ( alfabet - алфавит, азбука )

А если запустить бесконечный анализ Lc0 ( ? )
Тоже будет бесконечный набор глубины или в какой-то момент наступит ОСТАНОВ ( ? )
Будет бесконечный набор. Насколько памяти хватит (Лиле нужно памяти пропорционально размеру дерева).
crem вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Alex_Lk (25.02.2019), Asunta (25.02.2019)
Старый 28.02.2019, 10:47   #17
Magystr
2 разряд
ТС
 
Аватар для Magystr
 
Регистрация: 03.08.2016
Сообщений: 311
Сказал(а) спасибо: 85
Поблагодарили 227 раз(а) в 123 сообщениях
Репутация: 10
По умолчанию Re: Шахматные нейронные сети. Что это такое и как они работают?

Регулярно приходится читать о том, как Лила "троллит" другие движки, получив абсолютно выигранную позицию. То есть, тянет время, не предпринимая никаких активных действий, отдает полкомплекта фигур, и т.д.
Попытался понять, почему так происходит.
Прежде всего вспоминаем, что оценивает любую позицию Лила в процентах, а не в сантипешках. Что это значит? С точки зрения Лилы абсолютно выигранная позиция оценивается в 99,9% успеха (или математическое ожидание результата партии 0,999).
В отличие от альфа-бета-движков, приближение к мату даже на один ход никак не увеличивает оценку позиции (матожидание результата).
Откуда берутся те самые недостающие 0,01% ? Самая очевидная и частовстречающаяся причина - это пат. Соответственно, Лила выбирает не те ходы, которые могут привести к мату, а те ходы, которые МАКСИМАЛЬНО ИСКЛЮЧАЮТ возможность пата.
Что для этого нужно:
1. Убрать своего короля максимально далеко от короля противника.
2. Отдать большинство лишних фигур, оставив себе одного ферзя, а лучше всего даже ладью. Потому что с ладьей гораздо меньше патов, чем с ферзем.

Первое условие достигается тем, что Лила сразу уводит своего короля в угол.
Потом в течение следующих ходов преследуется цель отдать максимальное количество фигур, уменьшая вероятность пата.
А как только впереди замаячит реальная угроза 50-ти ходов, сразу же переходит в режим постановки мата максимально быстрым способом.
Magystr вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Chess762 (28.02.2019), sovaz1997 (28.02.2019)
Старый 28.02.2019, 11:13   #18
Viktor
Эксперт
 
Аватар для Viktor
 
Регистрация: 07.06.2016
Сообщений: 5,907
Сказал(а) спасибо: 13,814
Поблагодарили 12,715 раз(а) в 4,521 сообщениях
Репутация: 726
По умолчанию Re: Шахматные нейронные сети. Что это такое и как они работают?

Цитата: Сообщение от Magystr
А как только впереди замаячит реальная угроза 50-ти ходов, сразу же переходит в режим постановки мата максимально быстрым способом.
А гораздо раньше это делать нельзя?!
Viktor вне форума   Ответить с цитированием
Старый 28.02.2019, 11:22   #19
Magystr
2 разряд
ТС
 
Аватар для Magystr
 
Регистрация: 03.08.2016
Сообщений: 311
Сказал(а) спасибо: 85
Поблагодарили 227 раз(а) в 123 сообщениях
Репутация: 10
По умолчанию Re: Шахматные нейронные сети. Что это такое и как они работают?

Цитата: Сообщение от Viktor
А гораздо раньше это делать нельзя?!
С точки зрения математики - оттеснение короля в угол, или плетение матовой сети в центре доски, приводит к увеличению вероятности пата, поэтому Лила не торопится этим заняться.
Вот когда вероятность признания партии ничьей (по правилу "50 ходов") превышает вероятность пата - тогда собственно матование и начинается.

Можно или нет ускорить этот процесс - это вопрос к разработчикам.
Я бы мог предложить такое решение: давать какой-то бонус в анализе за поставленный мат (или достижение выигрышной позиции из эндшпильных таблиц). Причем, чем меньше количество ходов до мата, тем выше бонус. И пусть в итоге оценка даже превышает 100%.
Magystr вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Viktor (28.02.2019)
Старый 28.02.2019, 12:00   #20
Viktor
Эксперт
 
Аватар для Viktor
 
Регистрация: 07.06.2016
Сообщений: 5,907
Сказал(а) спасибо: 13,814
Поблагодарили 12,715 раз(а) в 4,521 сообщениях
Репутация: 726
По умолчанию Re: Шахматные нейронные сети. Что это такое и как они работают?

Цитата: Сообщение от Magystr
С точки зрения математики - оттеснение короля в угол, или плетение матовой сети в центре доски, приводит к увеличению вероятности пата
Но таких возможностей в середине игры ничтожное количество. И может лучше в этом направлении возможно улучшение.
Viktor вне форума   Ответить с цитированием
Старый 28.02.2019, 13:31   #21
crem
2 разряд
 
Аватар для crem
 
Регистрация: 30.04.2018
Сообщений: 252
Сказал(а) спасибо: 9
Поблагодарили 505 раз(а) в 193 сообщениях
Репутация: 51
По умолчанию Re: Шахматные нейронные сети. Что это такое и как они работают?

Цитата: Сообщение от Magystr
Регулярно приходится читать о том, как Лила "троллит" другие движки, получив абсолютно выигранную позицию. То есть, тянет время, не предпринимая никаких активных действий, отдает полкомплекта фигур, и т.д.
Попытался понять, почему так происходит.
Прежде всего вспоминаем, что оценивает любую позицию Лила в процентах, а не в сантипешках. Что это значит? С точки зрения Лилы абсолютно выигранная позиция оценивается в 99,9% успеха (или математическое ожидание результата партии 0,999).
В отличие от альфа-бета-движков, приближение к мату даже на один ход никак не увеличивает оценку позиции (матожидание результата).
Откуда берутся те самые недостающие 0,01% ? Самая очевидная и частовстречающаяся причина - это пат. Соответственно, Лила выбирает не те ходы, которые могут привести к мату, а те ходы, которые МАКСИМАЛЬНО ИСКЛЮЧАЮТ возможность пата.
Что для этого нужно:
1. Убрать своего короля максимально далеко от короля противника.
2. Отдать большинство лишних фигур, оставив себе одного ферзя, а лучше всего даже ладью. Потому что с ладьей гораздо меньше патов, чем с ферзем.

Первое условие достигается тем, что Лила сразу уводит своего короля в угол.
Потом в течение следующих ходов преследуется цель отдать максимальное количество фигур, уменьшая вероятность пата.
А как только впереди замаячит реальная угроза 50-ти ходов, сразу же переходит в режим постановки мата максимально быстрым способом.
Точно неизвестно, откуда "троллинг", но есть такая версия:

1. Когда у всех позиций вероятность выигрыша 99%, ни один ход не улучшает оценку существенно, и из-за того, что есть в оценках нейронной сети некоторый уровень шума, ход можно сказать выбирается случайно.

Всё это усугубляется тем, что абсолютная точность у float в районе 1.0 ниже, чем в районе 0.0.

2. Из-за этой самой точности float'а, может оказаться, что у нескольких ходов оценка абсолютно одинаковая. В этом случае скорее всего будет выбран ход, первый по списку, и это приводит к тому, что фигуры забиваются в угол.
(сейчас не часто встречается, но в ранних test10 в тренировочных играх были позициия 6 ферзей против одинокого короля, где 6 ферзей все были забиты в угол)

3. "Упрощение" позиции (скидывание фигур и т.д.) обычно происходит во время игры с эндшпильными позициями. Лила делает свои случайные ходы, пока не видит выигрывающую позицию из WDL. У таких позиций вероятность выигрыша 100%, Лила в такие позиции и стремится.
crem вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alex_Lk (28.02.2019)
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 05:47. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Рейтинг@Mail.ru