Нейронная сеть Оптимизация с генетическим алгоритмом

matlab neural-network mathematical-optimization genetic-algorithm

6251 просмотра

8 ответа

Является ли генетический алгоритм наиболее эффективным способом оптимизации количества скрытых узлов и объема обучения, проводимого в искусственной нейронной сети?

Я кодирую нейронные сети, используя NNToolbox в Matlab. Я открыт для любых других предложений по методам оптимизации, но я больше всего знаком с GA.

Автор: ServAce85 Источник Размещён: 17.05.2019 02:41

Ответы (8)


11 плюса

Решение

На самом деле, есть несколько вещей, которые вы можете оптимизировать с помощью GA в отношении NN. Вы можете оптимизировать структуру (количество узлов, слоев, функция активации и т. Д.). Вы также можете тренироваться, используя GA, что означает установку весов.

Генетические алгоритмы никогда не будут самыми эффективными, но они обычно используются, когда вы мало знаете, какие числа использовать.

Для обучения вы можете использовать другие алгоритмы, включая обратное распространение, nelder-mead и т. Д.

Вы сказали, что хотите оптимизировать количество скрытых узлов, для этого может быть достаточно генетического алгоритма, хотя и далеко не «оптимального». Пространство, которое вы ищете, вероятно, слишком мало, чтобы использовать генетические алгоритмы, но они все еще могут работать и на самом деле, они уже реализованы в Matlab, так что ничего страшного.

Что вы имеете в виду, оптимизируя количество проведенных тренировок? Если вы имеете в виду количество эпох, то это нормально, просто помните, что тренировки каким-то образом зависят от начальных весов, и они, как правило, являются случайными, поэтому фитнес-функция, используемая для GA, на самом деле не будет функцией.

Автор: awk Размещён: 06.05.2009 08:21

4 плюса

Хорошим примером нейронных сетей и генетического программирования является архитектура NEAT (Neuro-Evolution of Augmenting Topologies). Это генетический алгоритм, который находит оптимальную топологию. Также известно, что он хорошо удерживает количество скрытых узлов.

Они также создали игру под названием Nero. Совершенно уникальные и очень удивительные ощутимые результаты.

Домашняя страница доктора Стэнли:

http://www.cs.ucf.edu/~kstanley/

Здесь вы найдете практически все, что связано с NEAT, поскольку именно он изобрел это.

Автор: Jeremy Powell Размещён: 03.07.2009 02:45

2 плюса

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

Большинство «классических» алгоритмов обучения NN, таких как обратное распространение, оптимизируют только вес нейронов. Генетические алгоритмы могут оптимизировать веса, но это, как правило, неэффективно. Однако, как вы и просили, они могут оптимизировать топологию сети, а также параметры вашего алгоритма обучения. Вы должны быть особенно осторожны с созданием сетей, которые "переобучены", хотя.

Еще один метод с модифицированными генетическими алгоритмами может быть полезен для преодоления проблемы с обратным распространением. Обратное распространение обычно находит локальные минимумы, но находит их точно и быстро. Комбинация генетического алгоритма с обратным распространением, например, в ламаркианской GA, дает преимущества обоих. Эта техника кратко описана в учебнике по GAUL

Автор: Stewart Размещён: 01.06.2009 09:30

1 плюс

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

Автор: Zac Размещён: 05.09.2011 12:04

0 плюса

Я не уверен, стоит ли вам использовать генетический алгоритм для этого.

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

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

Таким образом, если вы запустите это, вы получите обучающий набор, который обеспечил лучший результат с точки зрения качества нейронной сети (= время обучения, количество скрытых узлов, возможности решения проблем в сети).

Или вы рассматриваете совершенно другой подход?

Автор: Ronald Wildenberg Размещён: 06.05.2009 08:07

0 плюса

Я не совсем уверен, с какой проблемой вы работаете, но GA звучит немного излишне. В зависимости от диапазона параметров, с которыми вы работаете, может работать исчерпывающий (или иначе неразумный) поиск. Попробуйте построить график производительности вашего NN относительно количества скрытых узлов для первых нескольких значений, начиная с малого и прыгая все большими и большими приращениями. По моему опыту, многие NNs плато в производительности на удивление рано; Вы можете получить хорошее представление о том, какой диапазон номеров скрытых узлов имеет наибольшее значение.

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

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

Автор: adrian Размещён: 06.05.2009 08:30

0 плюса

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

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

Автор: chmike Размещён: 06.05.2009 09:42

0 плюса

Я подготовил полное руководство по оптимизации искусственных нейронных сетей с использованием генетического алгоритма с реализацией Python. Он называется « Оптимизация искусственных нейронных сетей с использованием генетического алгоритма с Python ». Он доступен здесь, в LinkedIn и KDnuggets .

Вы можете прочитать все больше и больше в моей книге 2018 года, которая охватывает GA в одной из ее глав. Книга цитируется как « Ахмед Фаузи Гад.« Практические приложения для компьютерного зрения с использованием глубокого обучения с CNN ». Декабрь 2018, Apress, 978–1–4842–4167–7 ”, который доступен здесь в Springer и Amazon

Автор: Ahmed Gad Размещён: 21.03.2019 06:52
Вопросы из категории :
32x32