#keepitsimple #эволюция

Концепция дарвинизма была не только революцией в биологических науках, она также вдохновила на работы в области компьютерных наук. Эволюция людей, от простых одноклеточных существ в океанах до приматов и цивилизации, которой мы являемся сегодня, удивительна.
Только представьте, что ваше сознание телепортировалось назад во времени на 4 миллиарда лет назад, когда жизнь только начиналась. Вы бы даже не назвали это «жизнью». Но вот оно, то, что однажды даст начало динозаврам, орлам, львам и людям.

То, что когда-то было просто соединением углерода, скомбинированным таким специфическим образом, что дало именно то, что было строительным блоком жизни. После этого он научился поддерживать себя. Ребенок стал достаточно взрослым, чтобы мать-природа позволила ей теперь самой управлять своей жизнью.

Так и получилось, и эффектно. Если мы заглянем в трубу времени оттуда, где мы сейчас, это прекрасный калейдоскоп. Такой удивительный, такой чудесный и такой блестящий путь проложила для нас дорогая Гайя. Именно этот божественный путь мы пытаемся воспроизвести сегодня в области искусственного интеллекта.

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

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

Для некоторой интуиции рассмотрите эту аналогию:

  • Имеется ряд прорезей, расположенных спиной к спине, каждая из которых может иметь разную ширину. Они размещены на расстоянии друг от друга.
  • Шары разных размеров создаются в каждый момент случайным образом.
  • Каждый из этих шаров бросают через серию щелей.
  • Если щель узкая, большая часть шариков, скорее всего, упадет в стену.
  • Немногие из них пройдут первую щель, еще меньше пройдут вторую и так далее.

Эти шары — это виды, а прорези — «природные тесты на пригодность».

Сегодня то, что мы видим вокруг себя, прошло через многие из этих щелей, и большинство видов не дожило до наших дней. Эти фитнес-тесты сами по себе сложны и иногда просто отфильтровывают определенные мутации внутри вида, а не уничтожают весь вид. Природа представляет собой сложное (возможно, бесконечное) расположение таких щелей.

КОРОБКА:

Что ж, эта аналогия с щелями — это то, как мир выглядел бы со сложной точки зрения (Дарвина). Мир действительно намного проще. Чтобы вид выжил во многих поколениях, в первую очередь он должен иметь много поколений. Это означает, что он должен воспроизводиться. Успешная мутация не должна обеспечивать долголетие, она просто должна заставить вид воспроизводиться все больше и больше. Возьмем, к примеру, плоский червь Leucochloridium. Он не пытается прожить долгую жизнь или даже защитить себя от хищников. Вместо этого он пытается быть съеденным. Он живет как паразит в глазах определенных видов улиток, а затем управляет разумом улитки (серьезные уловки джедаев) на открытом воздухе, чтобы птица могла ее съесть (это = только червь, а не улитка). Затем он откладывает яйца в фекалиях птицы.

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

Но вернемся к теме, вкратце, вот что мы делали:

  • Создавайте новые виды случайным образом или слегка изменяя уже существующие.
  • Проверьте каждый вид на его приспособленность.
  • Устраните те, которые не работают хорошо.
  • ПОВТОРЕНИЕ

Итак, это дает нам базовую основу. Давайте не будем пытаться применить это в коде к реальной проблеме машинного обучения:

*Нет проблем, если вы не получите код. Ниже есть объяснение

Здесь мы сначала опишем фитнес-функцию quadratic(x). Это функция, которую мы пытаемся оптимизировать. Мы хотим знать значения x, для которых эта функция возвращает 0 (ее оптимальное значение).

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

Значение error_allowance описывает, насколько допустимо отклонение функции от оптимального значения. Параметр n_species описывает количество итераций, которые мы должны пройти. В данном случае это количество случайных значений, которые он должен проверить.

Как видите, алгоритм нашел 4 значения, которые соответствуют 2 фактическим корням уравнения, -3 и -4.

Это было легко, но что, если функция, которую мы пытаемся оптимизировать, намного сложнее. Возьмем пример:

Здесь фитнес-функция представляет собой двумерную функцию по x и y, которую необходимо оптимизировать до 42000. Она дает два возможных решения с ошибкой ‹ 1.

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

Вот краткое изложение эволюционных алгоритмов:

  • Они больше подходят, когда мы точно не знаем математическую функцию или когда проблема слишком сложна для создания математической модели.
  • Кроме того, его можно применять как трюк, чтобы избежать обычных проблем алгоритмов градиентного спуска, таких как застревание в локальных минимумах или взрыв и исчезновение градиентов. Это можно сделать, используя алгоритм эволюции, чтобы иметь несколько хороших весов инициализации. Затем мы можем выполнить градиентный спуск с меньшим количеством итераций.
  • Для задач, где у нас есть задача, например, игра в шахматы. Мы можем использовать эволюционные алгоритмы, создающие для начала несколько видов. Испытайте каждого против играющего в шахматы компьютера определенной мощности (или против других видов!). Те виды, которые терпят неудачу, уничтожаются, а те, которые преуспевают, мутируют. Повторив это в несколько шагов с компьютерами с возрастающей мощностью, мы, вероятно, получим очень сильного агента, играющего в шахматы.

Это все для этой статьи. Напишите свои мысли или сомнения в разделе ответов.

Не забудьте похлопать под публикацией, если вам понравился контент.