Доломал минимакс

Вот многие считают, на мой взгляд, необоснованно, что машина, созданная человеком, завсегда будет дурнее создателя. По моему опыту, верно обратное — созданный человеком искуственный интеллект (оговорюсь сразу, для данной конкретной определённой задачи — т.н. “слабый” ИИ) работает намного мощнее, чем способен человек, его написавший. Во всяком случае, мои крестики-нолики легко меня громят, если только я не наморщу ум — тогда получается ничья. Да и Deep Blue, который обыграл Каспарова, писали хоть и люди, заведомо знакомые с шахматами, но всё же не игроки выше уровня великого шахматиста.

Поэтому, так сказать, в дальней перспективе я вижу, что человек сможет создать сильный искуственный интеллект, который превозойдёт его самого. Вопрос, какая роль будет отведена человеку в данном мире — ОЧЕНЬ интересный, и по-моему, однозначного ответа нет ни у кого. Элон Маск, например, считает, что человечество будет порабощено сильным ИИ. Создатели сериала “Person of Interest” думают, что человек будет существовать с сильным ИИ симбиотически — т.е. всё управление и развитие человечества возьмёт на себя ИИ, люди будут абсолютно счастливы, а в обмен на это будут этот самый ИИ обслуживать, например, батарейки вовремя менять 🙂 Ну, а создатели сериала “Westworld” отводят ИИ роль рабов, прислужников человека. Какой из этих ответов верный — неизвестно, но не исключено, что ответ мы узнаем в течение нашей жизни.

Однако хватит философии.

Вся задача написания игры, способной обыграть создателя, в итоге таки свелась к написанию алгоритма минимакс. В этом была вся загвоздка. Попытаюсь объяснить попроще, как он работает.

Для каждого потенциального хода нужно рассчитать некий коэффициент. Отрицательный коэффициент будет означать, что выиграл противник, положительный — что выиграла программа. Я начал с того, что присвоил немедленному выигрышу значение 1.0, проигрышу -1.0, а ничьей 0. Далее, алгоритм помечает этот ход как корневой узел, и строит исходящее из него дерево потенциальных ходов противника, а потом снова своих, вызывая сам себя рекурсивно (а как же ещё, если речь идёт о деревьях произвольной высоты). Раньше или позже, алгоритм доберётся до листьев игрового дерева, и будет возвращать +1.0, -1.0 или 0. Остаётся только сложить все значения, полученные из листьев игрового дерева, вместе, и записать их в массив, из которого выбрать максимальное значение, присвоенное какому-либо ходу.

Но этого оказалось недостаточно. Написанная с таким алгоритмом программа таки играла, но на среднем уровне. У неё можно было выиграть. Шишечкой на этой ёлочке оказалось введение дополнительной поправки, на которую умножался коэффициент, полученный из листьев игрового дерева. По простой причине — немедленный выигрыш или проигрыш, прямо со следующего хода, должен учитываться значительно больше, чем выигрыш или проигрыш после нескольких ходов. Я начал с того, что коэффициенты, полученные из каждого более нижнего уровня игрового дерева, стал делить на 2. Но и этого оказалось мало, хотя и заметно улучшило работу алгоритма. Магическим числом оказалось 4. Т.е. немедленный выигрыш на первом ходе учитывается как +1.0, выигрыш на втором — как +0.25, на третьем — +0.0625 и так далее. Вот тут уже выиграть против программы не оказалось никаких шансов. В лучшем случае я могу сыграть вничью.

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

Надо будет написать программу, играющую в преферанс. А то комп меня легко дрючит, особенно на распасах (я вообще не очень играю ни в преферанс, ни в шахматы, ни в шашки, хотя почему-то неплохо — в поддавки).

Звук из лампочки

Прочитал статью о том, как исследователям удалось подслушать, что происходит в комнате в соседнем здании, наблюдая за лампочкой. Лампочка обыкновенная светодиодная, чей свет был сфокусирован телескопом на фотодиод. После чего полученный сигнал был записан, обработан, и восстановлен назад в речь или музыку. Механизм работы — звуковые колебания заставляют вибрировать колбу лампочки, и именно эти колебания и улавливаются фотодиодом.

Статья:

https://www.nassiben.com/lamphone

А вот мне стало интереснее другое — насколько чувствителен данный способ к типу применяемой лампы? Так, обычные светодиодные лампы часто имеют очень тонкую оболочку из полупрозрачной пластмассы, которая действительно будет вибрировать. А как насчёт филаментных ламп? Их колба делается из стекла. Как насчёт ламп накаливания и галогеновых? Люминисцентных?

Но способ, конечно, интересный, причём 100% пассивный, так что не ловится ничем. Теперь при конфиденциальных разговорах теперь шторы будут задёргивать 🙂 А вообще, конечно, в случае военных подобная проблема решается на этапе строительства здания — в них нет окон, а внутри стен проложена медная сетка, делающая здание огромной клеткой Фарадея. Так что если видишь на улице здание без окон — там либо котельная либо что-то шибко секретное 🙂

Вот, например, здание на кампусе университета Алабамы, где ранее трудился и учился ваш покорный слуга:

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

Надувательство

Подключал свою старую 5.1 систему в новом доме. Проложил все кабели скрытой проводкой, всё подключено винтовыми клеммами с золотым покрытием, как в лучших домах Парижа. Начинаю лудить концы кабелей — чтобы и не расплетались, и чтобы контакты не окислялись. Зачищаю, скручиваю — и чувствую, что в руках как-то странно себя ведут проводники (слишком пружинисто), непохоже на качественную отожжёную медь; хотя на вид — медь медью, и паяется нормально. Наконец мой взгляд падает на упаковку от этого шнура для громкоговорителей и что же я вижу? Это голимый люминь, покрытый медью (copper clad aluminum, cca)! Вот ведь ёпрст! Не вытаскивать же теперь из стен кабели! Обидно мне, блин, стало.

Не покупайте в магазинах шнур для подключения громкоговорителей. Я их поглядел — они, по-моему, везде алюминиевые. Лучше купить шнур для подключения электроламп. Он, во-первых, ничуть не дороже, а во-вторых, там 100% медь, так как он силовой, а алюминий использовать в силовых кабелях нынче запрещено законом. Ну да, он не такой красивенький, не в полупрозрачной изоляции, но зато честный.

Почему это важно? Да потому, что у алюминия выше сопротивление. Он хоть и хороший проводник тока, но всё же не такой, как медь. А так как подключение громкоговорителей (особенно скрытой проводкой) часто идёт довольно большими отрезками кабеля, при использовании тоненьких (они дешевле) кабелей может набежать сопротивление в единицы ома. Это, конечно, немного, но учитывая, что типовые громкоговорители имеют сопротивление (точнее, импеданс) в 8 ом, это уже может быть чувствимо. Потому что это начнёт окрашивать звук — те частоты, которые ближе к резонансу динамика, будут выпячиваться. Это основная причина т.н. “лампового звука” — ламповые усилители имеют высокое (по отношению к транзисторным) выходное сопротивление, что и окрашивает звук соответствующим образом. Некоторым нравится, но к хай-фаю это не имеет никакого отношения, как к точности воспроизведения оригинала никак не относится.

Искуственный интеллект

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

Но для того, чтобы научить нейросеть чему угодно, для начала надо сделать набор данных для обучения. В случае с играми, соответственно, это будут партии различных игр. Для начала я выбрал что-нибудь попроще: крестики-нолики. Благо ПОЛНОЕ дерево решений для этой игры очень небольшое. Чисто теоретически там 9! игр (около 360 000), в реальности намного меньше: не все игры идут 9 шагов, многие являются отражениями других игр, развёрнутых на 90, 180, и 270 градусов. И так далее.

Написал программу на Питоне, которая генерирует все возможные игры, играет в них, и записывает результаты. Таким образом, у меня получилась программа, которая играет в игры традиционным способом — через построение игрового дерева.

Но будучи полным новичком в написании игр, я сделал фатальную ошибку. Вот как именно программа решает, каким ходом ответить на ход противника? Вопрос не такой простой, как кажется. Вроде бы очевидно — берём ход, который скорее всего приведёт нас к победе, и ходим так, да? Так думал и я. И неверно думал. То, что ход может привести нас к победе, совершенно не означает того, что он не приведёт нас к поражению. Поэтому сказав программе выбирать ход с наибольшей вероятностью победы, я сделал её довольно дурной — даже такой плохой игрок как я (я очень хреново играю в крестики-нолики, шашки, шахматы, и прочие подобные вещи), её легко обыгрывал.

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

Программы, которые играют в шахматы тоже работают таким же образом — через построение игрового дерева. Только полное игровое дерево для шахмат… эээ несколько больше, чем количество атомов в наблюдаемой вселенной, так что дерево строят только частичное, и определают перспективность той или иной ветви через минимакс.

Вообще, если есть возможность строить игровое дерево — лучше строить игровое дерево. Такие программы будут играть в игру лучше, чем нейросети (которые по сути только распознают паттерны и реагируют на них). Но игровое дерево строить возможно далеко не всегда. Скажем, Го не поддавалось, поэтому нормально играть компьютер в Го наконец-то научились именно, что через нейросети. Потому что игровое дерево для шахмат — 10E120 (число Шеннона), а игровое дерево для Го — 1.74E172! Но даже Го меркнет перед огроменным деревом крайне (на первый взгляд) простой игры Стратего, чей размер составляет 10E535!!! Неудивительно, что компьютер играет в Стратего крайне слабо. Может быть, именно что нейросети научатся. В лоб, через построение дерева — путь тупиковый.

Самоцензура

В СССР некоторые диссиденты протестовали против цензуры. А другие диссиденты — протестовали за скорейшее её введение. Тут нет противоречия. Формально в СССР цензуры не было. Но приносил ты такой весёлый текст для печати, а редактор тебе говорит, что он этого напечатать не сможет, потому что “там” его не поймут. Без всяких объяснений. Поэтому авторы занимались самоцензурированием — не писали ничего такого, что потенциально могло быть “не понято”.

А наличие официальной цензуры предполагает в первую очередь наличие цензора. Который должен следовать определённым указанием, и на которого можно даже подать в суд. А там пускай суд решает, следует ли это действительно печатать или цензор переборщил.

Так вот на фоне всей этой ереси с диким офигением наблюдаю за тем, как народ окукливается в самоцензуру самого отвратительного совкового образца. Ещё задолго до того как “кто-то не поймёт”, убирают все потенциальные “острые углы”. Вишенкой на тортике для меня стало самопереименовывание ансамбля русской песни и пляски Леди Антебеллум (дословно — леди до гражданской войны в США). Они теперь называются “Леди А”, мол довоенное время было временем, когда ещё существовало рабство. Ну, существовало, и чо? На севере США его не было. И кого, вообще, это обижает? Бывших рабов у нас в обществе живых нет. Потомков рабов? Да я сам — потомок рабов. Мои предки были крепостными крестьянами в Нижегородской губернии. И чо? Ко всему периоду российской истории до Александа Второго я должен относиться с ненавистью? Идиотия полнейшая.

Ох, не зря на статуе Колумба нарисовали серп и молот. Правильно нарисовали. Это наше светлое будущее. Куда бы только успеть от него смыться.

Оруэл передаёт горячий привет.

Про русских

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

Ларчик мне наконец-то открылся когда я почитал книгу Милова “Великорусский пахарь и особенности российского исторического процесса”. И всё это связано с тем, что для земледелия на основной части России ежегодно отводился крайне короткий срок — около 130 дней (а это ещё, братцы-кролики, без вычета барщины, сенокоса и других мероприятий). Во Франции же для полевых работ срок значительно дольше — до 10 месяцев. Это даёт французу возможность заниматься земледелием именно что понемногу, но зато каждый день. А в России земледелие это есть постоянный аврал, полная мобилизация всех сил — иначе нельзя. Стоит ли удивляться тому, что эта черта стала поистине национальной?

И вот ещё вторая черта русских, за которой стоит вполне объективная историческая правда — полное пренебрежение к своим жилищам. Дом для русских заканчивается входной дверью. Что там дальше, как всё это выглядит снаружи — всем наплевать.

Возьмём Ключевского:

“Крестьянские поселки по Волге и во многих других местах Европейской России доселе своей примитивностью, отсутствием простейших житейских удобств производят, особенно на путешественника с Запада, впечатление временных, случайных стоянок кочевников, не нынче-завтра собирающихся бросить свои едва насиженные места, чтобы передвинуться на новые. В этом сказались продолжительная переселенческая бродячесть прежних времен и хронические пожары – обстоятельства, которые из поколения в поколение воспитывали пренебрежительное равнодушие к домашнему благоустройству, к удобствам в житейской обстановке.”

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

Так что во многом действительно — “место такое проклятое”.

Зарядка щелочных батареек

Дети используют какое-то совершенно дикое количество батареек в своих паровозиках, игрушечных инструментах, фонариках и т.д. Покупать аккумуляторные батарейки я не хочу, так как они дорогие, и у меня есть (вполне обоснованные) опасения, что они с ними не будут обращаться правильно. Поэтому мы покупаем щелочные. Это тоже недёшево, так что у меня уже давно была мысль начать эти батарейки заряжать после разрядки. Если обычные щелочные батарейки не разряжать ниже определённого порога, химическая реакция внутри них вполне является обратимой, и их можно перезарядить. В детстве у меня было зарядное устройство фирмы “Санио”, в которое я случайно поставил щелочные “Дьюраселл”. На следующий день (зарядка по паспорту должна была идти 14 часов) я с удивлением обнаружил, что батарейки работают вполне как свежие. Я сумел зарядить их примерно 5 раз прежде чем они перестали работать окончательно.

Но если воткнуть щелочные элементы в современное зарядное устройство с микроконтроллером, предназначенное для зарядки никель-металлогидридных или никель-кадмиевых аккумуляторов, оно тебя пошлёт, скажет, что батарейка неисправна. Мой старый “Санио” никаких микроконтроллеров не имел, и представлял собой по сути, простейший источник тока. Я до сих пор помню, что по его паспорту, что он тупо заряжал батарейки током в 50 миллиампер, а уже вытащить батарейки из зарядного устройства когда они уже полностью зарядились — эта ответственность возлагалась на пользователя.

Конечно, собрать подобное зарядное устройство самому не составило бы никакого труда. Источник тока делается реально на коленке из электронной ерунды, залежавшейся в сусеках. Можно даже немного заморочиться и нарисовать несложную програмку для ардуины, чтобы всё по уму, с контролем по напряжению, dV/dT, с экраном, и т.д.

Но оказалось, что зарядные устройства, предназначенные специально для щелочных батареек, выпускаются серийно. И нет никакий нужды заморачиваться самому. Более того, это зарядное устройство способно заряжать все типы батареек, даже литий-ионные “пальчики” 18650 и литий-железо-фосфатные элементы.

Прикупил — вроде работает 🙂 Правда, батарейки оно заряжает примерно как ставился Windows95 — т.е. прогресс-бар лихо сразу скачет до отметки в 95%, а потом эти 5% доводятся до 100% ещё дофига времени 🙂 Сколько прослужат батарейки, увидим позже. В любом случае, даже если оно способно зарядить батарейки только один раз, я скостил их цену вдвое.

Про порезанный нос

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

В целом, улучшения, конечно, есть, но какие-то не сказать, что значительные. На ночь я как закапывал нос сосудосужающими препаратами, так и продолжаю закапывать. Иначе дышать носом ночью невозможно, какие-то кошмары начинают сниться, будто меня душат. Хотя дозу лекарства я смог серьёзно уменьшить, надежда-то у меня была на то, что мне вообще никаких лекарств не будет надо, а реальность вышла не такая радужная.

В-общем, недоволен я. Получились какие-то “крайние полумеры” — полновесная операция со всеми вытекающими проблемами, а выхлоп маленький.

Немного статистики на вентилятор

За предыдущий год полицией США было застрелено 1004 (одна тысяча четыре) человека. Расы убитых известны в 802 случаях. Чернокожих было 236. Белых было больше — 371. Подавляющее большинство из них было вооружено, причём, чернокожие преступники были вооружены чаще белых. Невооружённых чернокожих, убитых полицией, было 10 (десять) человек. Начнём с того, что десять человек на страну из почти 330 миллион рыл — это немного. Это, можно сказать, вообще ни о чём — едой насмерть давится больше, причём, намного больше — несколько тысяч человек.

Идём далее. Из 10 случаев в 5 подозреваемый напал на полицейского с кулаками и другими предметами, и полицейский был вынужден обороняться. Есть свидетели, есть записи с полицейской камеры. Один случай был случайностью. Остаётся четыре. В двух из них против полицейских были выдвинуты обвинения. Хорошо.

Кстати, во время правления Чебурана Солнцеликого в 2015 году, было застрелено больше невооружённых чернокожих — 38. Это к вопросу о том, что “при Дональде Рыжем полиция отстреливает чернокожих”.

Даже если учесть, что на каждого чернокожего приходится 5.7 белых — всё равно фигня получается.

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

Но полицию, конечно, надо разогнать, всем остальным встать на колени и покаяться, а центр Нью-Йорка разнести вдребезги.

Самсунго-Эппл

Забавно, что на топовых моделях айфонов экран производится одним из основных конкурентов Эппла — фирмой Самсунг. Прямо скажем, неожиданно.