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

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

На противоположном конце биологического спектра генетические алгоритмы имитируют процесс естественного отбора и эволюции. Основное требование к генетическим алгоритмам заключается в том, что вы можете каким-то образом выразить решение своей проблемы либо в числовой/векторной форме, либо у вас есть способ выполнить кроссовер. Если предположить, что у вас есть какой-то способ представить свою проблему, кроссовер — это процесс объединения решений для создания «потомков». Кроме того, генетические алгоритмы обычно реализуют некоторую форму случайной мутации, так что новые «черты» появляются случайным образом, некоторые из которых могут привести к улучшению решения. Наконец, только хорошие решения сохраняются с течением времени в том смысле, что разрешено «воспроизводиться» решениям, превышающим определенный порог пригодности. При этом решения со временем трансформируются, в идеале находя наилучшее или, по крайней мере, достаточно оптимальное решение.

Интересной комбинацией этих двух, которую я бы назвал упрощенной версией популяции животных, является NeuroEvolution of Augmenting Topologies (NEAT). NEAT, по сути, представляет собой комбинацию нейронной сети и генетических алгоритмов для формирования системы, очень похожей на процесс интеллекта, возникающий в процессе эволюции. Меня особенно интересует тема NEAT, так как это было мое первое знакомство с машинным обучением и искусственным интеллектом через видео Сета Блинга MarI/O. NEAT позволяет относительно быстро обучать простые нейронные сети, которые в конечном итоге работают достаточно хорошо. Недавно я экспериментировал с NEAT в среде тренажерного зала, но без особого успеха, но я думаю, что отчасти это связано со сложностью среды (то есть с большим пространством ввода и сложным пространством вывода). В целом NEAT представляет собой интересное и мощное сочетание нейронных сетей и генетических алгоритмов.

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