1626434812-e667f6b6e7e69d3a0798830a58e9075b (844135), страница 44
Текст из файла (страница 44)
Исходными данными для нее будут: ° количество входных и выходных нейронов, набор обучающих примеров. В результате решения этой задачи мы должны получить следующие значения: ° количество скрытых слоев, ° количество нейронов в каждом скрытом слое, ° значения весов всех входов для каждого скрытого и выходного нейрона, ° функции активации для каждого скрытого и выходного нейрона. Очевидно, что целевой функцией в данном случае будет максимальное отличие выходного вектора У' от эталонного У вЂ” 5 „полученное среди всех векторов набора примеров. Подбирая значения характеристик нейросети и вычисляя каждый раз 6, мы можем найти такое значение б, которое требуется.
И чем меньше будет это значсние, тем качественнее построенная нейронная сеть. Таким образом, задача обучения нейронной сети сводится к задаче поиска оптимального решения. Заметим, что даже для простейших нейронных сетей эта задача является многомерной и крайне сложной. С другой стороны, цель найти сеть, удовлетворяющую условию Ь = О, для реальных задач недостижима и обычно не ставится. Поэтому поиск оптимального решения превращается в поиск лучшего решения (как можно меньшее значение Б ), где с успехом можно применять генетические алгоритмы. Заметим, что для обучения нейросетей генетические алгоритмы в чистом виде, как правило, пе применяют.
Они обычно используются на различных этапах построения и обучения в качестве основного или вспомогательного средства. В частности, генетический алгоритм может использоваться на первом этапе работы для поиска общих параметров нейросети: количества скрытых слоев и нейронов. Также генетический алгоритм может использоваться на заключительном этапе работы для поиска всех значений весов (матрицы весов) нейросети и функций активации. Причем функции активации, как правило, выбираются из ограниченного набора, а еще чаще подбирается не сама формула функции активации, а один или несколько ее параметров (коэффициентов). В основном генетические алгоритмы используются для улучшения сетей, уже созданных и обученных с помощью какого-либо другого алгоритма.
При этом оценка качества нейросети производится„как правило, средствами отдельного специализированного приложения. Для иллюстрации применения генетических алгоритмов в области создания и обучения нейросетей рассмотрим пример. Для упрощения возьмем небольшую сеть прямого распространения (рис. 8.2) и построим для нее обучающий генетический алгоритм. Базы данных. Интеллектуальная обработка информации скрытый слой ныхоанОЙ слОЙ ВХОДНОЙ СЛОЙ Рис.
8.2. Нейронная сеть, Сеть состоит из 6 нейронов; трех входных, двух скрытых и одного выходного. Таким образом, сеть имеет всего один скрытый слой нейронов. В качестве функции активации всех скрытых и выходного нейронов используется сигмоидальная функция: 1 П Н~цтп) = ~.~, яцт=~~~ х, и., 1+Е где и — количество входов нейрона, х, — значение на 1-м входе, ю, — вес ~-го входа, а Р— параметр функции активации, влияющий на ее крутизну: чем больше Р, тем ближе сигмоидная функция приближается к обычной пороговой (рис.
8.3). Рис. 8.3. Сиемоидальиая и иорогоеая фуикциа, Таким образом, векторы примеров будут иметь вид ~х„х„х,, у,), где х,.— входные значения, а у, — эталонное выходное значение. Глава 8. Генетические алгоритмы Для вычисления значения целевой функции будем использовать следующую формулу: ~у'„-4 С = шах !00'4, (8.4) у Ъ где 1 — количество примеров, у' . — значение выхода нейронной сети для 1-го $ в примера, у, — эталонное значение выхода нейронной сети для 1-го примера.
Таким образом, целевая функция будет представлять собой максимальное для набора примеров относительное отклонение от эталонного значения, выраженное в процентах. Чем меньше значение целевой функции, тем сеть лучше. Здесь уже можно задать критерий останова генетического алгоритма. Можно указать число поколений, а можно задать условие на значение целевой функции, Например, остановить работу алгоритма, когда для одной из особей значенис целевой функции будет равно 0,1%, что является достаточно хорошим результатом. При обучении нейросетей размер популяции выбирается достаточно большим, как минимум 100 особей. Хромосома в пашем случае будет представлять массив из 11 действительных чисел, по четыре на каждый скрытый нейрон и три для выходного нейрона, которые представляют собой веса соответствующих входов нейронов и параметры их функций активации (рис.
8.2): ъ'и ж22 м2, Р2 вз~ ии Рз %п ~а ~о Р~ Для элементов хромосомы — генов — введем ограничения, обусловленные природой нейросетей: -1 < ж. < 1 и Р. > О. В качестве операторов скрещивания, отбора и редукции выберем традиционные операторы, рассмотренные выше при решении задачи нахождения максимума одномерной функции. Дополнительно для оператора скрещивания можно установить вероятность применения 0,95 и использовать элитизм. В качестве оператора мутации будем использовать случайное изменение значений весов и параметра функции активации для каждого нейрона на случайную величину. Вероятность мутации 0,01.
Причем одновременно будет изменяться параметр функции только для одного нейрона, и для каждого нейрона будет изменяться один из входных весов. Какие конкретно веса и параметры будут меняться, определяется по равномерному закону. Например, мутация может быть следующей: значение Р, увеличивается на 0,1; значение ю„уменьшается на 0,05; к„, — уменьшается на 0,01; ж„— увеличивается на 0,05. Исходная популяция будет формироваться на основе равномерного распределения для каждого элемента хромосомы. 232 Базы данных.
Интеллектуальная обработка информации Целью работы генетического алгоритма будет поиск значений весов для всех скрытых и выходных нейронов„а также параметра Р их функций активации. После останова работы такого алгоритма мы получим обученную нейросеть, удовлетворяющую заданным требованиям. Заметим, что в нашем примере алгоритм применялся только для построения весовой матрицы сети и вычисления параметров функций активации. Задача полного построения нейросети обычно решается в два этапа, на каждом из которых используется свой генетический алгоритм.
На первом этапе генетический алгоритм используется для вычисления базовых характеристик: числа скрытых слоев и числа нейронов в каждом скрытом слое. При этом для оценки качества каждого решения используется следующий подход. Нейронная сеть, закодированная в проверяемой особи, обучается в течение фиксированного ограниченного промежутка времени. Обучение может происходить как средствами специального генетического алгоритма, так и другими.
Если используется генетический алгоритм, то время обучения может оцениваться количеством поколений. Например, каждая сеть обучается в течение 100 поколений. Затем выбирается лучшая особь, качество которой и определяет качество решения по базовым характеристикам сети. На втором этапе генетический алгоритм используется для вычисления матрицы весов и определения функций активации так, как это было рассмотрено выше. На обоих этапах используется один и тот же набор обучающих примеров, являющийся единственной информацией, использующейся в качестве исходных данных для построения и обучения нейронной сети при решении конкретной задачи.
Рассмотренный процесс показывает, насколько сложной является задача построения и обучения нейросети как с точки зрения ее размерности, так и с точки зрения ее вычислительной сложности. Тем не менее, генетические алгоритмы представляют один из эффективных и изящных путей ее решения. В заключение еще раз повторим, что эволюционные вычисления, в том числе и генетические алгоритмы, представляют собой подход к решению задачи поиска лучшего решения, а не четко определенный алгоритм. Для решения конкретной задачи, помимо ее формализации, формулировки генотипа и фенотипа, требуется создавать и конкретный генетический алгоритм. Для этого задают значения размера популяции, вероятности мутации, описывают процесс работы операторов отбора, скрещивания, мутации и редукции, что и было показано в рассмотренных примерах.