2015-11-05 2 views
1

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

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

Какие инструменты вы бы порекомендовали? Я проверяю DEAP для развития нейронной сети, и я думал о PyLearn 2 для реализации самой лучшей конфигурации, которую приведет GA.

ответ

1

Современный уровень для нейронных сетей - это Torch7, который написан на Lua. Это то, что использует Facebook AI и Google DeepMind (а также моя лаборатория). Но я думаю, что lua - не лучший язык для реализации алгоритмов выборки.

Альтернативный современный фреймворк написан на питоне, он называется Theano, но у меня есть сильное предпочтение в отношении факела. Однако, оба они могут быть слишком много для вашей задачи.

Простой альтернативой может быть также использование Autograd, автоматической библиотеки дифференциации numpy https://github.com/HIPS/autograd, чтобы легко обучить вашу нейронную сеть и иметь абсолютный контроль над ней. В их документации есть несколько примеров.

И, наконец, генетические алгоритмы - другое имя для Монте-Карло, и есть много ресурсов для реализации таких вещей python (например, https://codereview.stackexchange.com/questions/41004/organising-code-for-a-genetic-algorithm-in-python или github).

DEAP является хорошим и популярным выбором, а PyEvolve устарел.

Редактировать: Я забыл упомянуть Keras (http://keras.io/), который на самом деле может быть другой хорошей альтернативой и основан на Theano.

0

Вы также можете посмотреть Blocks. Это библиотека, построенная на theano, которая управляет графиком вычислений с помощью аннотаций переменных. Это позволяет использовать более богатые (т. Е. Более сложные, более повторяющиеся, более похожие на такие необычные структуры, похожие на нейронные стеки), чем библиотеки, такие как keras, pylearn2 и lasgne. Хотя эти библиотеки могут быть лучше, если вы только хотите «развить» вариации классической архитектуры MLP.

Смежные вопросы