Каждое дерево на карте: Открытые данные графства | 2025-12-15T15:40:16

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

От идеи к игровому AI: разработка шахматного алгоритма | 2025-12-15T04:33:13

Пока разбирался с нейросетями, решил придумать себе игровую задачку. А что если я найду где-то готовые партии, и обучу нейросетку предсказывать ход по ситуации на доске. Сказано — сделано. Конечно, код быстрее генерить с помощью LLM, но задание подробное писал сам и архитектуру придумывал сам. Через 40 минут (!) от идеи до результата: у меня уже было работающее решение, которое ну по крайней мере в первой половине партии не очень сильно косячит.

На скриншоте CuteChess — он работает с любым шахматным движком, и в моем случае это простой скрипт на питоне. Скрипт берет ситуацию на доске и скармливает ее модели. Выбирает топ 5 ходов, и только эти топ 5 просматривает вглубь на несколько ходов вперед и оценивает позицию. То есть, нейросеть у меня предлагает возможные ходы на основе анализа 20000 партий (534453 позиций). Из того, что получается, выбирается лучшее. Там используется для этого алгоритм minimax, если это кому-то что-то говорит (мне не очень говорило, поэтому Gemini тут мне помог)

Как тренируется модель. На сайте lichess можно скачать партии, там сотни гигабайт. Я взял файлик с 800000 сыгранными партиями за 2014 год. Из этих 800000 я отбираю 20000, а именно скриптом ищу партии, где результат не ничья (1-0 или 0-1). Далее считаю разницу (Рейтинг_Победителя минус Рейтинг_Проигравшего). Это не самая лучшая метрика, но лучше, чем ничего. Чем больше эта разница, тем «увереннее» должен быть выигрыш (сильный наказывает слабого). Итого получается 20000 таких партий.

«Игнорирование ходов слабого» (чтобы модель не учить плохому) реализуется на этапе тренировки модели. Фактически, логика такая: «Если сейчас ход белых, и белые выиграли эту партию — учимся. Если сейчас ход черных, и черные проиграли — пропускаем и не учим сеть этому ходу» .

Нейросеть тренируется батчами по 128 позиций за раз. Сеть получает на вход позицию на доске и выдает 4096 — оценку вероятности для каждого возможного хода.

Отбор партий занимает минут 5. Тренировка модели у меня на компе занимает минут 10 для 20000 игр. Можно оставить как-нибудь потренироваться на 100К или на миллионе, будет точно лучше. Только уже не надо — я разобрался 🙂

Партию можно посмотреть тут:

Магия искусственных нейронных сетей: разделение гласных и согласных | 2025-12-14T23:35:00

Сейчас экспериментирую с обучением простых нейросетей — главным образом для доведение до автоматизма имеющегося инструментария и некоторые штуки просто создают впечатление магии.

Есть база из 32000 имен. Есть нейросеть, заполеннная случайными числами. Запускаю тренировку, на входе — только этот список имен. Первый слой нейросети — эмбеддинги, и я выставляю число измерений 2, чтобы было легко визуализировать. И после 200000 итераций обучения система четко разделяет гласные от согласных, и почему-то чуть в стороне от других согласных ставит букву «q». Похоже, это потому, что буква ‘q’ почти исключительно предсказывает букву ‘u’ (Queen, Quincy, Quentin).

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

Интересно, как ж оно работает. Если на нормальном корпусе текстов натренировать, разница будет совсем четкая. Почему отделяются гласные от согласных? Видимо, с точки зрения математики сети, ‘а’ и ‘о’ выполняют одинаковую функцию: они «триггерят» предсказание согласной, следующей за ними, то есть виной всему чередование гласных и согласных. Но черт побери интересно 🙂

Ну и поскольку моделька умеет предсказывать следующие буквы, можно попробовать запустить ее на русском. На модели с эмбеддингами 30 измерений вот такие имена придумывает: бякетта, афсена, еракей, засбат, дарая, гайомахад, раин, ражул, гжаций, ребен, вуреб, дуродира, туружул, регравгава, разсан, габила, авганжа, рахси, халебкохорта, ратхер. Модель — для тех, кто разбирается — такая: вход 6х33 символа (потому что берем до 6 символов контекста), закодированных эмбеддингами в 60, идут на слой в 100 нейронов, а с них обратно на 33 символа. Фигня какая-то, но по крайней мере понятно как это все работает на всех уровнях.

Читаем больше: Как изменилась структура потребления информации с 1980 по 2008 год | 2025-12-14T22:33:27

Интересное исследование попалось на глаза, аж 2009 года. Согласно ему, современный человек действительно читает значительно больше, чем в прошлом, хотя формат этого чтения изменился. Согласно ему, на 2008 год, среднестатистический амеканец потребляет около 100000 слов в день (примерно чертверть «Войны и мира») — это приблизительное количество слов, которые прошли через сознание за день (через уши или глаза), рассчитанное на основе хронометража активности. Это на 140% больше, чем в 1980 году.

Таким образом, вопреки мифу о деградации чтения, как минимум в 2008 мы обрабатывали в 2.4 раза больше текстовой информации, чем поколение наших родителей. Причем исследование учитывало только информацию, потребляемую вне работы (дома, в пути, на отдыхе) .

Структура чтения — если в 1960 году 26% слов приходило с бумаги, то к 2008 году эта доля упала до 9%. Однако цифровые носители (интернет, электронная почта, соцсети) не только компенсировали этот спад, но и утроили общее время чтения. Причина — интернет, так как это преимущественно текстовая среда (веб-серфинг, email)

Но интересно, что Интернет обеспечивает 25% потребляемых слов, но лишь 2% байтов (так как видео в интернете в 2008 году было низкого качества). То есть, они там прикинули информационный поток с разных каналов и перевели его в байты 🙂 Радио занимало 19% времени, но генерировало лишь 0,3% байтов (аудио требует мало данных). Голосовая связь (телефон) — это всего 5% слов и ничтожная доля байтов, но это единственный полностью интерактивный канал до эпохи интернета. ТВ оставалось на 2008 год главным источником информации по времени (41% всех часов) и количеству слов (45%), однако по объему данных (байтам) телевидение занимало только второе место (35%), уступая компьютерным играм.

Вот с играми интересно. Главная находка отчета: Игры генерируют (или генерировали в 2008) 55% всех «байтов», потребляемых домохозяйствами. При этом они занимают лишь 8% времени пользователя. Это довольно спорная штука в их отчете.

Те 100500 слов — это оценка реальных слов, которые человек либо прочитал, либо услышал. Это не метафорический «эквивалент», а попытка подсчитать именно вербальную информацию. Они взяли время потребления каждого медиа и умножили на среднюю скорость поступления слов для этого канала. Чтение (книги, газеты, интернет-тексты): 240 слов в минуту. Электронная почта и веб-серфинг — 240 слов в минуту. Телевидение (диалоги в шоу/фильмах): 153 слова в минуту. Радио: 80 слов в минуту (меньше, так как много пауз и музыки). Музыка: 41 слово в минуту (тексты песен).

Ссылка в комментах

GPU против CPU: Революция в обработке данных | 2025-12-13T01:16:30

Мучаю свой суперкомпьютер. Иллюстрация того, что GPU — не только для машинного обучения и какой-то сложной математики.

Мой скрипт берет толстый словарь английского языка (Webster) и множит его 30 раз, получается список из 12 млн слов. Далее алгоритм просматривает все 12 млн слов и заменяет все гласные буквы на звездочки через regex. Далее чтобы добавить нагрузки, добавляется колонка «длина слова», и затем берем слова длиннее 10 букв и ищем самые частые (top5).

То есть, на питоне это

df[‘masked’] = df[‘text’].str.replace(r'[aeiou]’, ‘*’, regex=True)

df[‘len’] = df[‘masked’].str.len()

res = df[df[‘len’] > 10][‘masked’].value_counts().head(5)

и вот этот код выполняется сначала через основной процессор, а затем через GPU.

Основной процессор (у меня это топовый Intel i9 285k) выполняет эту задачу за 24 секунды, а Nvidia RTX 5090 — за 0.51 секунд. То есть, разница в 46 раз!

[Pandas CPU] Top Patterns:

masked

s*r w. sc*tt. 23280

s*r t. br*wn*. 23220

j*r. t*yl*r. 16140

bl*ckst*n*. 10860

b***. & fl. 10830

Name: count, dtype: int64

[Pandas CPU] Computation Time: 23.5596 sec.

Transferring data to GPU…

Transfer complete in 1.16s

— Running Benchmark: cuDF GPU —

[cuDF GPU] Top Patterns:

masked

s*r w. sc*tt. 23280

s*r t. br*wn*. 23220

j*r. t*yl*r. 16140

bl*ckst*n*. 10860

b***. & fl. 10830

Name: count, dtype: int64

[cuDF GPU] Computation Time: 0.5108 sec.

TOTAL SPEEDUP: 46.12x

Сериалы и вино: ностальгия по «Интерстеллару» | 2025-12-11T14:39:12

Как смотреть сериал «Чайки», когда кончилось вино и скучаешь по Интерстеллару

Семь уровней чтения научных статей | 2025-12-10T19:38:53

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

Уровень 0: «Папка «Read Later»» Скачал PDF, название звучит гениально, абстракт кажется решением всех моих проблем. Файл навсегда похоронен в папке ~/Downloads/Papers/ToRead.

Уровень 1: «Шумерская клинопись» Не понятно ни фига. Какие-то случайные значки, греческий алфавит закончился. «Ортогональная экстраполяция когнитивной энтропии в рамках квазистационарного дискурса неизбежно индуцирует бифуркацию трансцендентального синергизма». На таких материалах очень падает самооценка. Чаще всего, с этого уровня или падение на нулевой, или постепенно на 2-й.

Уровень 2: «Иллюзия компетентности» В Abstract всё понятно, Introduction читается как хороший детектив. Но как только начинается основной раздел, текст превращается в тыкву. Своими словами пересказать не могу, только общими фразами: «Ну, они там нейронку обучили… вроде».

Уровень 3: «Формулы где надо и где не надо» В Abstract всё понятно, первая половина статьи тоже норм (архитектура, картинки). Но потом идет формула (4), где происходит «магия». Я верю авторам на слово, что из уравнения (3) следует (4), потому что проверять это я, конечно же, не буду. Дальше — дикий ужас и вера в чудо.

Уровень 4: «Эффект золотой рыбки» Пока читаю — всё кристально понятно. Логика железная, выводы очевидны, авторы молодцы. Закрываю вкладку, меня спрашивают: «О чем статья?» — и я зависаю. В голове пустота. Если отнимите пейпер, я даже идею не воспроизведу. Потому что там по сути нет идеи, есть процесс.

Уровень 5: «Диванный эксперт» Всё понятно, могу пересказать суть за пивом. Знаю, что Input превращается в Output, но «черный ящик» внутри всё еще черный. Дай мне комп, воспроизвести не смогу даже скелетон, потому что оказывается, что в статье нет половины важных вещей.

Уровень 6: «Критик-практик» Все понятно, перескажу, понятно как воспроизвести (даже без их кода). Вижу, где они сжульничали. Точно знаю, что «state-of-the-art» результат получен только благодаря удачному сиду или датасету и вот этому странному трюку в препроцессинге, о котором упомянуто в сноске на 12-й странице.

Уровень 7: «Деконструктор» Ура, я все понял, и реализовал это сам. Оно работает хуже, чем в статье, но я знаю почему. Но понимаю эту работу лучше, чем второй соавтор (который просто графики строил). Я вижу, что вся эта сложная математика на 5 страниц сводится к двум параграфам в середине.

Уровень 8: «Нирвана» Статья тривиальна. Идея вторична, это всё было в 90-х у Шмидхубера, просто названо другими словами. Формулы переусложнены для важности. Я могу написать то же самое в 10 строк кода и это будет работать быстрее. Reject.

Если что — я завис где-то между 2 и 4.

Сравнение учебных нагрузок: США vs СССР/Россия | 2025-12-10T17:35:36

К вопросу про образование в США и в СССР/России. Мой диплом в США эвалюирован как Master of Science degree in Computer Science. Мои коллеги помоложе говорят, что диплом российского вуза редко сейчас признается как Master, и часто даже на Bachelor тянет с трудом. Я решил посмотреть на цифры и очень удивился.

Для того, чтобы получить бакалавра в США, нужно потратить примерно 2000 часов в аудитории/лабораториях. Это в пересчете на кредиты дает 120 кредитов (credit hours). Один кредит — это обычно 1 час (50 минут) лекций в неделю в течение семестра (15 недель). Лабораторные работы имеют другой коэффициент (часто 2–3 часа в лаборатории считаются за 1 кредит), поэтому реальное количество часов в аудитории будет немного выше (ближе к 2000+).

Так вот, у меня в дипломе написано, что я потратил только на парах 7908 часов за пять лет. То есть, это в 4 раза больше, чем типичный студент в США. По цифрам выходит, что у меня только математика, физика, и английский подбираются к 2000 за пять лет, а всего предметов там 42 штуки.

Товарищ поделился, что в его дипломе бакалавра из России уже 3140 академчасов, что в два раза меньше. А поделитесь, сколько у вас в дипломе часов?

Год выпуска, универ, специальность и число часов? Интересно, насколько сильный разброс.

Терменвокс на сцене: Сплин ищет новые звуки | 2025-12-05T23:29:06

Терменвокс на концерте Сплина вчера. Оказалось, что этого на первый взгляд заимствованного слова на английском нет. Вместо него используется для названия этого музыкального инструмента theremin потому что родовая фамилия Льва Термена была с французскими корнями и спеллилась как Theremin. А вставили терменвокс в аранжировку неплохо, хотя и довольно простенько ростовский на нём играет, и сам терменвокс всего с одной антенной.

Вообще из музыкантов реально зажигал больше всех Мещеряков, барабанщик. Самый меланхоличный был гитарист, Вадим Сергеев. Он просто неподвижным взглядом смотрел в зал, почти не двигаясь, но очень чётко исполнял свою партию — видимо, профессионализм не пропьёшь.

Математические нотации: хаос под строгим порядком | 2025-12-02T15:30:20

Если вам кто-то говорит, что математика это точная наука — не верьте. Поскольку у меня сейчас хобби data science, я изучаю всякое разное из разных книжек и у меня взрывается мозг, как вообще может такое происходить в науке, где каждая мелочь должна укладываться в систему, иначе она идет лесом. Пока дело не доходит до нотаций. С ними там какой-то дикий бардак. Набор диалектов.

Взять, например, обычные логарифмы. «Стандарт» как обозначать логарифм зависит от того, в какой комнате университета вы находитесь. В матанализе и теории чисел log(x) почти всегда означает натуральный логарифм ln(x) база e. Производная от e^x равна e^x. Это «естественно». Писать ln им лень. Там, же где могут вылезти дясятичные логарифмы (computer science тот же), log(x) внезапно становится десятичным, а ln(x) — по основанию e.

Матожидание E имеет аргумент в квадратных скобках. При этом те же квадратные скобки в computer science используются для степ-фукции 0/1.

Или вот если вы видите вектор — это столбец или строка? В классической математике вектор — это всегда столбец. Чтобы умножить его на веса, мы пишем T после вектора и потом w для весов. Но во многих пейперов векторы мыслятся как строки. И если вы видите y = xW+b , то x — это не столбец, потому что иначе размерности не сойдутся. x тут — строка. но в следующей статье пишут Wx+b. И тут x — столбец 🙂

Угловые скобки . Для скалярного произведения (dot product) используется знак «⋅», но его плохо видно, особенно на доске, и я очень часто вижу, что математики используют угловые для dot product. Вообще по науке угловые используются для обобщенного (generalized) понятия inner product, где скалярное произведение частный случай. означает некий абстрактный способ перемножить a и b и получить число. Причем в квантовой механике это бы записывалось как . А еще для скалярного произведения некоторые используют кружок с точкой или x в кружочке.

Ну и для кучи еще в России тангенс — это tg, а в США — tan. А есть еще tan^-1 и arctan, что одно и то же, хотя x^-1 вообще означает 1/x