Однажды я изобрёл нормальную одноранговую нейросетку. Сам не понял тогда чего наворотил, но математическая моделька работала на ура. Обыгрывала меня со страшной силой. Что получилась нейросетка, дошло только сильно потом.
Ровно тогда же ощутил со страшной силой мощь генетических алгоритмов. Да-да, эволюция реально работает. Руками пощупать можно. И работает с пугающей силой на каком-то десятке поколений всего!
Есть такая замечательная карточная игрушка «Эволюция». Кто не играл – рекомендую горячо. Штуковина гениальная. Только не берите всякие хитрые дополнения, с ними игра становится слишком сложной. Максимум первое про летающих зверушек.
Ладно, за рекламу игры мне никто не платит, потому к нейросетям. Есть такой ученый-эволюционист Дмитрий Кнорре. У него стояла задача показать как в популяции появляются всякие хитрые свойства.
Собственно, никакая это и не игра была сначала. Карточками он моделировал зверушек. Эта себе зубы отрастила, эта хвост отбрасывает. Та в речку спасаться ушла и плавниками издевательски машет сухопутным хищникам.
Но как обычно, вместо философского камня, вышла отличная мазь от радикулита. Игра для веселой растраты времени вышла отличная.
Хочешь – ешь соседа, хочешь зверушек своих чешуей обращивай. Игрушка стала довольно популярна. Межобластные турниры регулярно проводятся. Почти как покерные – сутки без перерыва, у кого организм с мозгами сильнее.
Самое интересное в игрушке – баланс. Уже имел опыт программирования игр простеньких. Того же подкидного дурака, покера, блэкджека. Там ничего хитрого и выигрышная стратегия вполне алгоритмическая.
Страшное скажу – даже шахматы игра примитивная и жёстко алгоритмическая. Все эти Дип Блю - просто большие калькуляторы, которые тупо просчитывают миллион вариантов вперёд. Ничего хитрого там нет.
А вот в Эволюции каждый ход неочевиден. Есть полтора десятка вариантов. И какой лучше вот прямо сейчас сказать невозможно. Факт удивительный.
Но с другой стороны – турниры доказали. Есть игроки, которые стабильно выигрывают. Сами не понимают как, но выигрывают.
Парадокс – выигрышной стратегии в явном виде нет. А чемпионы вполне существуют.
Вот тут меня и осенило. Будем делать чёрный ящик. Как генетика завещала.
В итоге сделал простую штуку. Нарисовал в программе такую ДНК идеального игрока. Просто вектор, набор из полутора десятков выборов.
В каждой ситуации компьютерный болванчик просто подкидывает монетку. Правда, у математической монетки этой два десятка сторон. Да ещё и стороны разного размера. Но принцип ровно тот же.
В каждом случае может выпасть любое решение. Но в среднем, например, в десяти процентах случаев игрок атакует, в семи отращивает хвост ну и так далее.
Нагенерил генератором случайных чисел такие вот гены игроков. Сел играть против трёх болванчиков – даже не смешно.
Поэтому дальше включились генетические алгоритмы. Которыми некоторые деятели крайне успешно нейросетки учили ещё лет двадцать назад. А сегодня забыли метод как класс.
На минутку за школьную парту. Помните как гены работают? Есть цепочка генов папы, есть мамы. А дальше три простейших процесса.
Можно ген напрямую получить, можно по обмену, наперекрест. Ну и мутация обязательно, штука очень важная. Про всякие доминантные и рецессивные даже не будем. Это пусть семейная хроника выясняет почему и детей глаза не того цвета.
То есть, наши потомки игроков будут получать случайным образом каждый ген кто от мамы, кто от папы. И будет собираться новая цепочка ДНК. Собственно, эта ДНК простейшая нейросетка и есть.
Как работают мутации здесь? Опять же случайным образом, с какой-то небольшой вероятностью, процентов пять, ген может принять значение не как у мамы или папы.
Это важно. В каком-то поколении можем потерять важный признак. Должен быть механизм этот признак в популяцию вернуть. Мутация - это Вам не это.
Самое смешное, наши предки ровно этим занимались. Ничего не зная о нейросетках. Наваливали мешки с зерном на кусок урана. А потом отбирали из выросших мутантов то, что пригодится.
Ровно так вывели, например, безостную пшеницу. Грубо говоря, это у которой твердых травинок в колосе нет. Чтобы молотилка ломалась меньше.
Ну и вот. Нагенерил я сотню гроссмейстеров-идиотов случайным образом. И устроил им турнир. Усадил друг с другом по четверо играть в Эволюцию.
Потом отобрал десяток чемпионов и отправил… хм… на романтические свидания. Детишек делать.
Так вышло новое поколение в сотню игроков. Новый турнир и опять в ресторан с прогулками при луне. И новое поколение.
А теперь держитесь за мышку. Я был уверен, что ничего толкового вообще не получится. Но игроки стали прогрессировать с чудовищной быстротой.
Где-то на восьмом поколении стало заметно, что играют они странно, но я за ними едва могу угнаться. При том, что себя считал игроком в Эволюцию не самым слабым.
А на десятом поколении я просто остановился. Смысла дальше гонять компьютер больше не было. Потому как даже эта элементарная ДНК-нейросетки меня стабильно обыгрывала.
Повторюсь, игроки-то эти - компьютерные болванчики. Они ничего не понимают и вместо мозгов между электронных ушей у них примерно нервный ганглий. Как у кольчатого червя.
Но мощность трёх примитивных механизмов естественного отбора поражает. Что такое десять поколений – капелька в мировом океане. А настолько сильный прогресс!
Так что дарю метод. Попадётся задача, которую толком не формализовать – смело отправляйте электронных болванчиков в ресторан выбирать себе пассию. Вопрос только целевой функции отбора, по которой турниры проводить.
Любопытно, а если бы в реальной жизни девушки статистически значимо выбирали стеснительных очкариков, вроде Билла Гейтса… Через сколько поколений мы бы уже колонизировали Марс? Через пять, семь, много, десять?
Впрочем, гарантии нет. Вполне возможно, что поколения таких совершенно не компьютерных болванчиков вместо этого просто хорошо играли бы в карточную Эволюцию. Да оно примерно так в жизни и происходит.