Ключевое слово
21 | 05 | 2025
Новости Библиотеки
Шахматы Онлайн
Welcome, Guest
Username: Password: Remember me

TOPIC: Практикум по нейронным сетям для шахмат №2

Практикум по нейронным сетям для шахмат №2 06 Май 2025 08:43 #211

  • Vladimirovich
  • Vladimirovich's Avatar
  • OFFLINE
  • Инквизитор
  • Posts: 111938
  • Thank you received: 2333
  • Karma: 112
Чем-то поддавки напоминает :)
Каждому - своё.

Практикум по нейронным сетям для шахмат №2 06 Май 2025 08:46 #212

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 175
  • Thank you received: 10
  • Karma: 4
Даже не поддавки (там тоже думать надо) :-). Конь на d5 белый хорошо стоит? Замечательно. А еще и с лишней пешкой! Вообще - лучший ход в позиции :-)

Практикум по нейронным сетям для шахмат №2 06 Май 2025 08:50 #213

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 175
  • Thank you received: 10
  • Karma: 4
Консолька классно смотрится. Для отладки вообще самое оно.
Смотрите Алекс. Пока мы пишем в чистом паскале движок легко скомпилируетсяи запустится везде : на любой платформе и на любой разрядности процессора. А вот когда мы начнем думать о СИМД ускорителях нам неизбежно придется делать сложный выбор : в ДЕлфи или ФриПаскале дальше будем компилировать, на каких Интел или на новых Маках запускать ( у меня такой), на 64 или 32 битах крутить и даже на Виндоусе или нет будет машина :-)

Практикум по нейронным сетям для шахмат №2 06 Май 2025 09:16 #214

  • Vladimirovich
  • Vladimirovich's Avatar
  • OFFLINE
  • Инквизитор
  • Posts: 111938
  • Thank you received: 2333
  • Karma: 112
alexlaw wrote:
Попутно удалось вывести в консоль Виндовс шахматные фигуры в Юникоде, до этого не получалось.
А кстати, как Вы их вывели?
Спец шрифт поставили? В стандартных шахмат нет.
Каждому - своё.

Практикум по нейронным сетям для шахмат №2 06 Май 2025 10:38 #215

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Сокольничий
  • Posts: 324
  • Thank you received: 15
  • Karma: 3
Vladimirovich wrote:
А кстати, как Вы их вывели?
  • Установить шрифт DejaVuSansMono.ttf
  • В regedit перейдите к HKLM\Software\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont
  • Щелкните правой кнопкой мыши на правой панели, выберите New -> String value.
  • Напишите 00 в качестве названия записи.
  • Щелкните правой кнопкой мыши на новой записи, нажмите на Modify.
  • Введите название нужного шрифта в поле Value данных. Это значение должно совпадать с одной из записей в HKLM\Software\Microsoft\Windows NT\CurrentVersion\Fonts
  • Если вы хотите добавить дополнительные шрифты, повторите предыдущие шаги, каждый раз добавляя 0 к названию записи (то есть третья запись должна быть 000 и так далее).
  • Перезагрузите компьютер, чтобы применить изменения.
  • Откройте окно консоли, щелкните правой кнопкой мыши на строке заголовка, выберите Properties.
  • Выберите Font вкладку. В списке должны появиться новые шрифты

Вы можете использовать апплет Charmap.exe, чтобы посмотреть, какие глифы доступны в конкретном шрифте.
uses
  Windows
var
  s: WideString;
  i: integer;
  Written: Cardinal;
begin
  SetLength(s, 12);
  for i := 0 to 12 do
    s[i] := WideChar(i+9811);
  WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), PWideChar(s), 12, Written,nil);
// print board
procedure print_board(var Board:TBoard);
var
NumCharsWritten: DWORD;
rank_,file_:integer;
fig_str:String;
begin
Writeln('');
  // loop over board ranks
  //rank - ряд, горизонталь, а file — столбец, вертикаль
  for file_ := 7 downto 0 do  begin
        // loop over board files
        for rank_ := 0 to 7 do  begin
           // print ranks
           if rank_ = 0 then begin
                Write(1 + file_);
                Write(' ');
           end;
           Write(' ');
    //Write(board[rank_][file_] );
    //King=6;Queen=5;Rook=4;Bishop=3;Knight=2;Pawn=1;  // BK=-6 BQ=-5 BR=-4 BB=-3 BN=-2 BP=-1
         case Board.Squares[Decoder[8*file_+rank_]] of
           1:fig_str:='♙';
           2:fig_str:='♘';
           3:fig_str:='♗';
           4:fig_str:='♖';
           5:fig_str:='♕';
           6:fig_str:='♔';
           -1:fig_str:='♟';
           -2:fig_str:='♞';
           -3:fig_str:='♝';
           -4:fig_str:='♜';
           -5:fig_str:='♛';
           -6:fig_str:='♚';
            0:fig_str:='.';
         end;
      //Write(fig_str);
       WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), PChar(fig_str), Length(fig_str), NumCharsWritten, nil);
        end;
        // print new line every rank
        Writeln('');
  end;
  // print new line
  Writeln('');
  // print board files
  Writeln('   a b c d e f g h');
  Writeln('');
end;
Last Edit: 06 Май 2025 10:51 by alexlaw.
The following user(s) said Thank You: Vladimirovich

Практикум по нейронным сетям для шахмат №2 06 Май 2025 11:02 #216

  • Vladimirovich
  • Vladimirovich's Avatar
  • OFFLINE
  • Инквизитор
  • Posts: 111938
  • Thank you received: 2333
  • Karma: 112
Вроде можно проще
learn.microsoft.com/ru-ru/windows/consol...currentconsolefontex
Но я не пробовал

Но в целом понятно. Надо свой шрифт ставить.
Еще можно наверно его в assets положить
Каждому - своё.
Last Edit: 06 Май 2025 11:04 by Vladimirovich.

Практикум по нейронным сетям для шахмат №2 09 Май 2025 17:50 #217

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Сокольничий
  • Posts: 324
  • Thank you received: 15
  • Karma: 3
Почитал документацию Stockfish о NNUE
Сделал для себя вывод.
Чтобы воспользоваться преимуществом NNUE, нужны параллельные вычисления на процессоре, что характерно для архитектур типа SIMD (Single Instruction, Multiple Data), где одна инструкция применяется к множеству данных.
Иначе нет разницы в оценке нейросетью и обычной оценочной функцией.
Если в двух словах (в моем понимании), кто быстрее заглянет глубже в переборе и точнее и быстрее оценит позицию на большей глубине, тот и на коне.
Но я вижу, куда будет развиваться дальнейшая нейро-компьютерная-шахматная мысль.
Это оценивать позицию без всякого альфа-бета перебора.

Практикум по нейронным сетям для шахмат №2 10 Май 2025 04:26 #218

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Сокольничий
  • Posts: 324
  • Thank you received: 15
  • Karma: 3
Получаю не объяснимую ошибку:
try
case Board.Squares[Decoder[8*file_+rank_]] of
1:fig_str[1]:=char($2659);
2:fig_str[1]:=char($2658);
3:fig_str[1]:=char($2657);
4:fig_str[1]:=char($2656);
5:fig_str[1]:=char($2655);
6:fig_str[1]:=char($2654);
-1:fig_str[1]:=char($265F);
-2:fig_str[1]:=char($265E);
-3:fig_str[1]:=char($265D);
//-4:fig_str[1]:=char($265C);
-4:fig_str:='♜';
-5:fig_str[1]:=char($265B);
-6:fig_str[1]:=char($265A);
0:fig_str[1]:=char($00B7);
end;
//Write(fig_str);
WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), PChar(fig_str), Length(fig_str), NumCharsWritten, nil);
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;


Если вместо
-4:fig_str:='♜';
ввести
-4:fig_str[1]:=char($265C);
получаю
EAccessViolation: Access violation at address 000000000054154C in module 'small_chess.exe'. Write of address 0000000000000000
именно только для -4

Практикум по нейронным сетям для шахмат №2 10 Май 2025 11:31 #219

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 175
  • Thank you received: 10
  • Karma: 4
Да - это фундаментальный документ - там все по делу. Но на сложном техническом уровне описано.

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

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

В двух словах так и есть. Потому и оптимизируется все по быстродействию на совесть.

"Это оценивать позицию без всякого альфа-бета перебора."
Есть 2 направления: "альфабета" (Стокфиш) и "монте-карло" (Альфазеро, Леела). Альфабета пока на коне. За счет NNUE
The following user(s) said Thank You: Vladimirovich

Практикум по нейронным сетям для шахмат №2 10 Май 2025 13:11 #220

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Сокольничий
  • Posts: 324
  • Thank you received: 15
  • Karma: 3
Stockfish 16.1
Двойной NNUE: Впервые Stockfish включает в себя дополнительную нейронную сеть, используемую для быстрой оценки позиций.
Все же я думаю они двигаются в направлении оценки позиции без перебора (ну или прощупывают это направление)

Практикум по нейронным сетям для шахмат №2 10 Май 2025 16:48 #221

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 175
  • Thank you received: 10
  • Karma: 4
На мой взгляд это нереально : тактические нюансы надо перебором вычислять. Не оценкой. А стокфиш это в первую очередь всегда офигенный перебор. А лишь потом - кусочек nnue :-). Я в новой своей версии тоже попробую отдельную сеть для быстрой оценки ряда позиций. Там что-то есть.

Практикум по нейронным сетям для шахмат №2 11 Май 2025 06:59 #222

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Сокольничий
  • Posts: 324
  • Thank you received: 15
  • Karma: 3
Vladimirovich wrote:
Чем-то поддавки напоминает :)
Посмотрел я еще и понял, что это я напортачил.
  • Делал ход
  • Смотрел оценку сети за противника
  • Выбирал не верный результат (лучшую оценку за противника)

Подправил и вот результат


До 19 хода отлично играл против "Stockfish"
Last Edit: 11 Май 2025 07:03 by alexlaw.

Практикум по нейронным сетям для шахмат №2 11 Май 2025 07:17 #223

  • Vladimirovich
  • Vladimirovich's Avatar
  • OFFLINE
  • Инквизитор
  • Posts: 111938
  • Thank you received: 2333
  • Karma: 112
alexlaw wrote:
Подправил и вот результат
Это с книгой дебютов?
Каждому - своё.

Практикум по нейронным сетям для шахмат №2 11 Май 2025 07:24 #224

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Сокольничий
  • Posts: 324
  • Thank you received: 15
  • Karma: 3
Vladimirovich wrote:
Это с книгой дебютов?
Да

Практикум по нейронным сетям для шахмат №2 11 Май 2025 09:09 #225

  • Vladimirovich
  • Vladimirovich's Avatar
  • OFFLINE
  • Инквизитор
  • Posts: 111938
  • Thank you received: 2333
  • Karma: 112
А на 19м кончилась? :glasses:
Каждому - своё.

Практикум по нейронным сетям для шахмат №2 11 Май 2025 14:57 #226

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 175
  • Thank you received: 10
  • Karma: 4
Ну не умеет сетка в позиции, где что-то висит из материала :-). Не обучалась она на таких и ничего про них не знает.

Практикум по нейронным сетям для шахмат №2 11 Май 2025 17:52 #227

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 175
  • Thank you received: 10
  • Karma: 4
Бросил на почту Функцию перебора модели форсированной игры с "обвязкой". По частям буду - что то устал за неделю. Поиграйтесь с ней, посмотрите как она работает. Попробуйте ее в вашем "переборе" вместо просто оценки :-). Не то чтобы чудеса должны быть, но , может, хоть материал зевать перестанет :-).

Практикум по нейронным сетям для шахмат №2 11 Май 2025 19:12 #228

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 175
  • Thank you received: 10
  • Karma: 4
Кстати перебор на 1 полуход так и надо делать : из корня делаете все ходы. В позициях с ходом противника оцениваете позицию и возвращаете ее с противоположным знаком. Из всех таких оценок выбираете максимальную.

Практикум по нейронным сетям для шахмат №2 12 Май 2025 06:38 #229

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 175
  • Thank you received: 10
  • Karma: 4
На почте у вас уже и полноценный перебор с комментариями. Пока медленный как черепаха, поскольку все делает неоптимально, грубо и бестолково. Но в шахматы уже играет :-). Мы сделали это. Предлагаю кодовое название для этого релиза "инфузория". Простейшее, которому еще эволюционировать и эволюционировать. Но уже сожрет чего , если без присмотра оставить :-)
Last Edit: 12 Май 2025 06:42 by booot76.

Практикум по нейронным сетям для шахмат №2 12 Май 2025 08:07 #230

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 175
  • Thank you received: 10
  • Karma: 4
Не знаю как вставлять апплеты. Только что смеха ради провел партию с Руффианом (когда-то гроза и ужас когда я только начинал писать движок). Каждому движку поставил уровень 5 полуходов перебора. Чтобы равные условия. Даже несмотря на то что у нас вообще "плоский" перебор. Без продлений. Так черными того Руффиана как котлету сожрали. Вот только у нас пока нет проверки повторения позиции - сбежал, подлец, на ничью повторением позиции.
Last Edit: 12 Май 2025 08:30 by Vladimirovich.

Практикум по нейронным сетям для шахмат №2 12 Май 2025 08:31 #231

  • Vladimirovich
  • Vladimirovich's Avatar
  • OFFLINE
  • Инквизитор
  • Posts: 111938
  • Thank you received: 2333
  • Karma: 112
booot76 wrote:
Не знаю как вставлять апплеты
Меню Информация наверху
Каждому - своё.
The following user(s) said Thank You: booot76

Практикум по нейронным сетям для шахмат №2 12 Май 2025 08:47 #232

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 175
  • Thank you received: 10
  • Karma: 4
Ну а беленькими довела дело до победы. Причем в одну калитку. Каждому движку - по 6 полуходов перебора. Значит правильно нейросеть реализовал - там партия на заглядение. На 2 головы выше по пониманию позиции.

The following user(s) said Thank You: Vladimirovich

Практикум по нейронным сетям для шахмат №2 12 Май 2025 09:04 #233

  • Vladimirovich
  • Vladimirovich's Avatar
  • OFFLINE
  • Инквизитор
  • Posts: 111938
  • Thank you received: 2333
  • Karma: 112
Справедливости ради если движок на 7 ходу ходит Kd8, то что-то с ним не так
Понятно, что рокировать уже нельзя
Каждому - своё.
Last Edit: 12 Май 2025 09:08 by Vladimirovich.

Практикум по нейронным сетям для шахмат №2 12 Май 2025 09:37 #234

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 175
  • Thank you received: 10
  • Karma: 4
Ход, конечно, не украшает. Другое дело что оценочная функция после напрашивающегося размена ферзей не чувствует опасности. Ну нет рокировки. И...ладно - мат не получу. А то, что "ходить нечем", особенно ладьям, так это простая оценочная из "на рубеже веков" не понимает.

Практикум по нейронным сетям для шахмат №2 12 Май 2025 09:39 #235

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 175
  • Thank you received: 10
  • Karma: 4
Руффиан, кстати, и при снятии ограничений на перебор в анализе только Крd8 и рассматривает как лучший. После минуты полноценного анализа. Ну да - такой вот уровень движков тех лет. 2650-2700 ЭЛО

Практикум по нейронным сетям для шахмат №2 12 Май 2025 09:57 #236

  • Vladimirovich
  • Vladimirovich's Avatar
  • OFFLINE
  • Инквизитор
  • Posts: 111938
  • Thank you received: 2333
  • Karma: 112
booot76 wrote:
Руффиан, кстати, и при снятии ограничений на перебор в анализе только Крd8 и рассматривает как лучший. После минуты полноценного анализа. Ну да - такой вот уровень движков тех лет. 2650-2700 ЭЛО
Там уже и выбора особого нет. 16я Вобла тоже не находит лучшего, считает уже гроб.
Да и я не вижу :)

Проблема в том, как движок доигрался до этого к 7 ходу.
Сам маневр, кстати, вполне разумный. Но позиция фигур к этому не располагает. Вот это учесть старые движки не могли, да.
Т.е. ошибка была совершена раньше.

Вот как эту идею реализовал Карпов. Но для этого нужно быть Карповым

Kamsky,G - Karpov,A [C43]
Ch World (match), Elista (Russia) (6), 1996

Каждому - своё.
Last Edit: 12 Май 2025 10:03 by Vladimirovich.

Практикум по нейронным сетям для шахмат №2 12 Май 2025 10:12 #237

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 175
  • Thank you received: 10
  • Karma: 4
Поставил бойцам испанку после 3 хода белых. Чтоб рокировались. Руффиан - жулик! При 6 полуходах в некоторых позициях используя удлиннения смотрит на все 8-9 :-). Опять такая же ничья (движок черными) : в ладейнике с собственным преимуществом в 2 пешки повторение позиции

Практикум по нейронным сетям для шахмат №2 12 Май 2025 10:15 #238

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 175
  • Thank you received: 10
  • Karma: 4
Да там много таких идей - в одном берлине таких позиций как грязи. Движок просто в плане оценочной функции карпова уже превосходит (сетка хоть и маленькая и медленная ,но вполне полноценная и движку под 3000 ЭЛО вполне к лицу ). А перебор пока - полный шлак :-)

Практикум по нейронным сетям для шахмат №2 12 Май 2025 10:34 #239

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 175
  • Thank you received: 10
  • Karma: 4
Белыми интересно играл. Пожертвовал пешку, понимая что проходная будет очень опасной. Куда больше 6 полуходов до горизонта. В начисто уже выигранной опять начал повторять позицию.

Ну что ж, Алекс. Дальнейший план такой. Надо реализовать ровно 3 совершенно жизненно-необходимые вещи:
1. Хештаблица
2. Оценка ничейных терминальных узлов (правило 50 ходов, повторения, материал).
3. Очень бы желательно Static Exchange Evaluator прицепить хотя бы в зачаточной форме, чтобы какие-никакие продления реализовать и модель форсированной игры порезать. Жрет много.

Вот как эволюционирует инфузория до прямоходячих - полагаю на уровень 2700-2800 замахиваться макет точно будет. Ну а дальше уже оптимизации всего и вся + ваше творчество в переборных алгоритмах для собственного почерка движка.


Практикум по нейронным сетям для шахмат №2 12 Май 2025 11:33 #240

  • Vladimirovich
  • Vladimirovich's Avatar
  • OFFLINE
  • Инквизитор
  • Posts: 111938
  • Thank you received: 2333
  • Karma: 112
booot76 wrote:
Движок просто в плане оценочной функции карпова уже превосходит (сетка хоть и маленькая и медленная ,но вполне полноценная и движку под 3000 ЭЛО вполне к лицу ).
Не верю :)
Без расчета не верю
Каждому - своё.
Moderators: Grigoriy
Рейтинг@Mail.ru

Научно-шахматный клуб КвантоФорум