Вы сказали, что уже знакомы с нейронными сетями, но, поскольку существует много различных типов нейронных сетей различной сложности (сверточные, хеббовы, карты Кохонена и т. Д.), Я перейду к простой нейронной связи с прямой связью.сеть снова, просто чтобы убедиться, что мы находимся на той же странице.
Базовая нейронная сеть состоит из следующих вещей:
- Нейроны
- Входные нейроны)
- Скрытые нейроны (необязательно)
- Выходные нейроны
- Связи между нейронами (иногда называемые синапсами по аналогии с биологией)
- Функция активации
Нейроны имеют значение активации .Когда вы оцениваете сеть, активация входных узлов устанавливается на фактический ввод.Ссылки от входных узлов ведут к узлам ближе к выходу, обычно к одному или нескольким слоям скрытых узлов.В каждом нейроне активация входа обрабатывается с использованием функции активации .Можно использовать разные функции активации, и иногда они даже различаются в нейронах одной сети.
Функция активации обрабатывает активацию нейрона в его выход.В ранних экспериментах обычно использовалась простая пороговая функция (т.е. активация> 0,5 × 1: 0), в настоящее время часто используется сигмовидная функция .
Вывод функции активации затем распространяется по ссылкам на следующие узлы.Каждая ссылка имеет связанный вес, который применяется к ее входу.
Наконец, выход сети извлекается из активации выходного нейрона (ов).
Я собралочень простой (и очень многословный ...) пример здесь .Он написан на Ruby и вычисляет AND, что примерно так просто.
Гораздо более сложный вопрос - как на самом деле создать сеть, которая делает что-то полезное.Тривиальная сеть примера была создана вручную, но это невозможно при более сложных проблемах.Мне известны два подхода, наиболее распространенным из которых является обратное распространение .Менее используется нейроэволюция , где веса ссылок определяются с использованием генетического алгоритма.