December 25th, 2015

любопытно

Про аргументы и факты

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

Вот один неполитический пример: есть такая демка про "генетические алгоритмы", где в двумерном мире ездят смешные машинки, часто переворачивающиеся или застревающие в неровностях рельефа. Они эволюционируют и с течением времени уезжают всё дальше. Вот она: http://rednuht.org/genetic_cars_2/, посмотрите сами, она забавная.

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

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

Я оставил демку на пару часов на настройках по умолчанию и получил такой патетический график:


По оси Х номер поколения, красная линия - performance лидера поколения, зелёная - средний performance десятки лучших, синяя - средний performance поколения. Видно, что performance с какого-то довольно раннего поколения упирается в произвольный локальный максимум. Этот предел вовсе не обусловлен физикой мира, т.к. дважды совершенно случайно происходил серьезный "прорыв", который ни к чему не приводил. Всё это потребовало около 15000 "заездов", машинка при этом задаётся всего 15 вещественными числами. Примерно любая другая оптимизация за такое время породила бы "идеального гоночного монстра".