Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Лекция 7
Тема: Проектирование многослойного перцептрона (МП)
1. Размер сети
При проектировании нейронной сети необходимо в первую очередь
решить вопрос о количестве слоев и количестве элементов (нейронов) в
каждом слое. Поскольку количество входных и выходных элементов
определяются свойствами входных и выходных данных, мы начнем
исследование архитектуры МП с определения размера скрытого слоя.
2. Размер скрытого слоя
Имеет место компромисс между точностью и обобщающей
способностью сети, который можно оптимизировать посредством выбора
количества скрытых элементов для данной сети. Количество скрытых
элементов с одной стороны должно быть достаточным для того, чтобы
решить поставленную задачу, а с другой не должно быть слишком большим,
чтобы обеспечить необходимую обобщающую способность. Можно
рассматривать весовые коэффициенты как дополнительные члены или
параметры функции. Так, если необходимо добавить член более высокого
порядка в квадратичную модель для сложного входного сигнала, то мы
должны увеличить количество весовых коэффициентов в сети. Так же, как
мы можем моделировать кривую с одной точкой поворота включением в
модель члена х2 , (для двух точек поворота необходимо включение члена х3 )
единственный скрытый слой способен моделировать одну точку поворота в
данных. То же справедливо и для границ в задачах классификации. Чем
больше кривых и точек поворота во входных данных, тем большее
количество скрытых элементов требуется для построения модели.
Не существует простого способа для определения необходимого числа
скрытых элементов сети. Как мы видели выше, выбор зависит от многих
факторов. На некоторых из них остановимся ниже.
Ряд противоречивых требований накладывается на количество весовых
коэффициентов сети. Во-первых, необходимо иметь достаточное количество
данных для тренировки сети с выбранным количеством весовых
коэффициентов. Количество весов частично обусловлено количеством
входных и выходных элементов и, следовательно, методом кодировки
входных и выходных данных. Во- вторых, необходимо иметь достаточное
количество весов, чтобы сохранить информацию, заключенную в обучающем
наборе данных. Верхний предел необходимого количества весовых
коэффициентов зависит от того, насколько
полным является
информационное наполнение обучающего набора данных. Более
разреженное представление будет требовать меньшего количества весов.
Этот факт лежит в основе проблемы переобучения (overfitting). Мы не можем
просто выбрать теоретический максимум числа весовых коэффициентов, так
как в этом случае сеть научится иметь дело только с теми данными, которые
предъявлялись в процессе тренировки, и, поэтому обобщающая способность
сети будет слабой. В этом смысле выбор размера скрытого слоя зависит от
решаемой задачи. Некоторые сети, например сеть для решения задачи сжатия
данных должна иметь скрытый слой, меньший по размеру, чем входной слой.
Если для согласования сложности сети с количеством входных
параметров необходимо увеличить количество обучающих данных, то
необходимо либо собрать больше данных, либо применить один из методов
расширения набора данных.
Как мы увидим ниже, рядом исследователей предложены формулы для
вычисления ограничений на размеры скрытых слоев. Мы также увидим,
насколько сильно различаются эти границы при использовании разных
методов. Каждая формула является не более, чем ориентиром и не исключает
использования метода проб и ошибок.
Сужающаяся или расширяющаяся сеть?
Первое решение, которое необходимо принять при выборе числа
скрытых элементов, состоит в том, чтобы выбрать, будет ли сеть
сужающейся (количество элементов в скрытом слое меньше, чем количество
входных элементов) или расширяющейся (наоборот). Для задачи извлечения
информации из входов с целью обобщения или снижения размерности
массива данных, необходимо использовать сужающуюся сеть.
Хороший пример использования сужающейся сети приведен в работе
Cotrell et. al. [26] по сжатию изображений. Они взяли набор изображений и
подали их на вход МП с единственным скрытым слоем и выходным слоем,
который содержал столько же элементов, что и входной слой. Скрытый слой
содержал меньшее количество элементов, чем входной слой. Кодированная
версия каждого изображения подавалась на вход сети, и точно такое же
кодированное изображение использовалось в качестве эталона. Таким
образом, сеть использовала меньшее количество скрытых элементов для
представления изображения в более сжатом виде. Значения выходов
скрытого слоя можно извлечь и использовать как сжатую версию
изображения, из которой позже можно восстановить исходную версию,
воспользовавшись набором сохраненных выходных весов сети. Аналогичный
подход можно использовать для вычисления главных компонент из набора
данных, а также это хороший способ уменьшения размерности данных перед
тренировкой МП. Например, в вышеприведенном примере сжатые версии
изображений можно использовать для тренировки новой сети, которая
должна осуществить классификацию изображений. Эта новая сеть будет
содержать меньшее количество входов, и, соответственно, меньшее
количество весов, чем сеть для обработки несжатых изображений.
Количество скрытых элементов зависит от количества входных
элементов. Существует верхняя граница, которая больше, чем количество
входных элементов. Эта верхняя граница может быть вычислена в
предположении, что каждый входной вектор должен быть отображен
скрытым слоем без потери информации. Если же необходимо выделение
каких-либо особенностей, как это обсуждалось выше, то количество скрытых
элементов должно быть меньше. Чем выше требования к различению
близких входных векторов, тем более расходящейся должна быть сеть и тем
ниже ее обобщающая способность.
3. Аналитическое вычисление размера сети
В следующих разделах будут представлены соображения, которые
помогут в выборе размера сети. Не существует простой формулы, и не всегда
существует единственно правильный ответ. Размер сети определяется рядом
факторов, некоторые из которых можно легко учесть, а некоторые нет. В
следующем разделе обсуждаются факторы первого типа, что же касается
вторых, то пока мы не будем принимать их во внимание.
Взаимосвязь скрытых элементов с входными элементами
Hecht-Neilson [45] для вычисления верхней границы числа скрытых
элементов использовал теорему Колмогорова, которая утверждает, что любая
функция n переменных может быть представлена как суперпозиция 2n+1
одномерных функций. Эта граница h равна удвоенному числу входных
элементов i плюс единица. Другими словами, нет никакого смысла выбирать
количество скрытых элементов большим, чем удвоенное число входных
элементов.
(1)
Girossi and Poggio [39] обратили внимание на то, что теорема
Колмогорова требует, чтобы функции выбирались для каждого конкретного
случая, в то время, как в нейронной сети функции фиксированы и
параметризованы. Они также обратили внимание на то, что нейронная сеть
требует использования гладких функций для того, чтобы обеспечить
необходимую обобщающую способность. Теорема Колмогорова этого не
гарантирует. Однако Kurkova [56] считает, что, поскольку нейронная сеть
является только аппроксимацией, указанные проблемы не являются
существенными. Kurkova переформулировал теорему Колмогорова в
терминах последовательности сигмоидных функций.
Существуют методы уменьшения размерности входных данных, если
это необходимо. Сделав это, мы можем уменьшить сложность сети.
Учет количества обучающих данных
Как мы уже знаем, нейронные сети это модели, описываемые с
помощью набора параметров, называемых весами, или весовыми
коэффициентами. Upadhyaya and Eryurek [110] для вычисления верхней
границы требуемого количества весовых коэффициентов w использовали тот
факт, что количество параметров, необходимых для кодирования P бинарных
последовательностей равно
. В соответствии с [110]
(2)
Нейронная сеть такого размера будет кодировать любой вектор
обучающей последовательности, так что w - абсолютный максимум для
числа весовых коэффициентов. Для проблем, требующих обобщения,
равенство следует заменить неравенством при описании верхней границы.
Эта теория применима далеко не всегда, так как бинарное представление
используется достаточно редко. Количество векторов, которые подлежат
кодированию с помощью нейронной сети, не всегда равно количеству
тренировочных точек или количеству категорий. Более правильным будет
считать в терминах количества областей, на которые должно быть разбито
пространство входов для классификации каждой из тренировочных точек.
Чем больше скрытых единиц содержит сеть, тем ближе мы подойдем к
построению справочной таблицы пар обучающих данных.
Widrow and Lehr [118] рассмотрели тот факт, что для сети
классификации количество тренировочных векторов, на которых
производится обучение, отображается в числе выходных единиц сети.
Уравнение
(3)
описывает результирующие границы числа весов в сети.
По отношению к размеру обучающей последовательности и ошибке
Baum and Haussler [13] показали, вероятно, простейшую оценку для
использования на практике. Полагая границы ошибок
, количество
тренировочных примеров должно быть приблизительно равным количеству
весов сети, умноженному на обратную величину ошибки. Например, для
предельной
ошибки e=0.1
необходимо
использовать
обучающую
последовательность в 10 раз большую количества весов. Эта зависимость
описывается формулой:
(4)
Причиной того, что величина ошибки играет значительную роль,
связана с соотношением между обобщающей способностью и точностью.
Малая ошибка переобученной сети не может считаться успехом тренировки.
Уравнение 3 показывает нам, что если мы желаем использовать большее
количество весов чем то, которое может заполнить набор данных, мы
должны остановиться при большей ошибке обучения для того, чтобы
сохранить обобщающую способность. Это вынуждает нас жертвовать
точностью в пользу обобщающей способности сети.
Так как количество входных и выходных элементов в большинстве
случаев определяется задачей, легко определить выражение, описывающее
количество весов в терминах количества скрытых единиц в полносвязной
однонаправленной сети с одним скрытым слоем:
(5)
Влияние уровня шума в обучающем наборе данных
Weigend [116] обратил внимание на то, что чем больше уровень шума в
данных, тем больше риск того, что сеть смоделирует именно шум. Если
данные не содержат шума, то нет никакого риска переобучения, так как нет
объекта для переобучения (overfitting). При повышении уровня шума в
данных эффективный размер набора данных уменьшается и шансы
переобучения увеличиваются. Указанные закономерности приводят к
заключению, что необходимо использовать тем меньшее количество скрытых
единиц, чем больше шума в данных. Как мы увидим ниже, добавление шума
к данным является одним из методов уменьшения риска выучивания любого
шума, присутствующего в обучающем массиве и мы также увидим, что по
отношению к сбору данных, если увеличивается уровень шума в данных,
необходимо увеличивать и размер массива данных.
Заключение по количеству скрытых элементов
При выборе количества скрытых элементов:
•
Никогда не выбирайте h больше, чем удвоенное количество
входных элементов.
•
Вы можете загрузить p образов по I элементов в каждом
в
скрытых элементов. Так что никогда не используйте больше. Если
необходимо обеспечить высокую обобщающую способность, выбирайте
значительно меньшее количество скрытых элементов.
•
Убедитесь, что количество обучающих данных по крайней мере
в
раз больше количества весов в Вашей сети.
•
Выявление особенностей требует меньшего количества скрытых
единиц, чем входов. Если Вы знаете, что размерность данных может быть
уменьшена, используйте меньшее количество скрытых единиц.
•
При обучении на бесструктурных входах необходимо, чтобы
количество скрытых единиц было больше, чем количество входов. Если
набор данных не имеет общих свойств, необходимо использовать больше
скрытых единиц.
•
Количество скрытых единиц, необходимых для решения задач
классификации, увеличивается с увеличением числа классов. Более точно,
количества областей, на которые должно быть разделено пространство
входов является более важным фактором, чем количество классов само по
себе.
•
Имеет место взаимоисключающая связь между обобщающими
свойствами (меньше единиц) и точностью (больше единиц), которая
специфична для каждого приложения.
•
Большая сеть требует большего времени для тренировки.
Как мы увидим, причиной ограничения количества скрытых слоев в
сети является то, что необходимо сохранить обобщающую способность сети.
Сложная модель не обобщает так же хорошо, как простая, но достаточная.
Мы можем оценить, исходя из вышеприведенного, ряд ограничений на
размер скрытого слоя и некоторые интуитивные соображения, основанные на
специфике решаемой проблемы.
4. Конструктивные алгоритмы
Было реализовано большое количество попыток построения нейронных
сетей с добавлением или удалением скрытых элементов. Простейший метод
состоит в том, чтобы начать с количества элементов на один меньшего
нижней границы и тренировать сеть до стабилизации ошибки. После этого
добавить еще один скрытый элемент с малым весом и повторять процедуру
до тех пор, пока ошибка на независимом тесте не начнет увеличиваться. Но
на этом пути существует ряд проблем. Главная из которых состоит в том, что
новые веса исказят сеть настолько, что было бы лучше начать снова, чем
оставаться в выбранной области пространства весов.
Иерархическое конструирование
Существует много методов иерархического конструирования, таких
как upstart algorithm [37] и метод каскадных корреляций [35]. Идея, лежащая
в основе иерархических сетей заключается в том, что добавляется
подчиненный узел, чтобы скорректировать ошибку основного. Таким путем
может быть построено дерево бинарных заключений для двух элементов,
добавляемых для корректировки двух типов возможных бинарных ошибок.
Такие сети не являются многослойными перцептронами.
Добавление новых весов и замораживание старых
Refenes [79] предложил алгоритм, называемый CLS+, согласно
которому сначала строим сеть с малым количеством скрытых элементов, а
затем добавляем столько скрытых элементов, сколько потребуется. Для
быстрой сходимости процесса обучения необходимо, чтобы старые веса
замораживались, а добавлялись новые от предыдущего скрытого элемента к
добавляемому. Следует соблюдать осторожность, так как новые веса
тренируются только на оставшейся части обучающей последовательности.
Так что каждый скрытый элемент отвечает за подмножество обучающего
массива. Refenes не ссылается на независимые тесты, когда делает
заключение о том, есть ли необходимость добавлять новый элемент. Это, а
также нестандартная процедура тренировки и архитектура мешают
широкому использованию этого алгоритма.
5. Динамическое добавление и удаление
Bartlett [10] использует информационно-теоретическое приближение
для динамического распределения элементов. Его алгоритм стартует с
минимального количества элементов и тренирует до стабилизации ошибки. В
этой точке в скрытый слой добавляется новый элемент с малым случайным
весом и тренировка продолжается. Процесс повторяется до тех пор, пока
добавление нового элемента не приведет к увеличению стабилизировавшейся
ошибки. В некоторый момент в течение этой процедуры элемент может быть
удален, если он не несет достаточной информации о выходных эталонах
сети. Это информационное содержание вычисляется с использованием меры
энтропии Шеннона между скрытым элементом и требуемыми величинами на
всем выходном слое минус избыточность этого элемента по отношению к
другим скрытым элементам.
Информация, заключенная в некотором узле, , зависит от
вероятностей
появления каждой из возможных выходных картин и
определяется формулой
как
Совместная информация между двумя элементами и
(6)
определяется
(7)
где m – количество возможных картин h для элемента y и
вероятность что элемент породит картину а элемент породит
картину .
Затем
необходимо
вычислить
зависимость
между
двумя
элементами,
:
(8)
Если мы обозначим взаимосвязь между скрытым элементом и
выходным элементом как
, а взаимосвязь между двумя скрытыми
слоями как
тогда важность узла
может быть вычислена как:
(9)
Т.е. сумма взаимосвязей между скрытым элементом и выходным слоем
минус сумму взаимосвязей между скрытой единицей и другой скрытой
единицей. Скрытая единица с наименьшей важностью будет исключен из
сети.
Если выходные данные сети представляются не в дискретном виде, а в
виде непрерывном, то диапазон этих непрерывных значений необходимо
разбить на отрезки, например 0-0,1; 0,1-0,2 и т.д., а вероятности попадания
величин в эти отрезки вычисляются с использованием уравнения (6).
Вычисление энтропии, основанной на обучении, является процедурой,
требующей много вычислительных ресурсов.
Bartlett не тестировал сеть на независимом тестовом наборе, так как
ему не требовалось создавать сеть с обобщающей способностью. Это может
быть исправлено посредством вычисления значимости элементов на
контрольном наборе данных, а не только на тестовом.
В качестве более простого, но менее эффективного метода, можно
использовать т.н. метод отсечения весов, заключающийся в удалении весов с
очень малыми значениями. Такой метод входит в противоречие с целью
создания сети с малыми весами для того, чтобы построить обобщающую
модель. Более эффективный метод отсечения – метод оптимального
повреждения мозга (Optimal Brain Damage). Этот метод основан на оценке
влияния вносимых изменений на ошибку. Веса удаляются только в том
случае, если их удаление приводит к незначительному увеличению ошибки.
Практическое руководство [31] отмечает, что “здоровая” нейронная
сеть должна обладать набором весовых коэффициентов, распределенных по
нормальному закону в окрестности нуля. Другими словами, сеть, в которой
большая часть весовых коэффициентов имеет большие значения, не является
“здоровой” сетью. То есть, существует опасность, что алгоритм
конструирования сети, особенно, если он включает процедуру удаления
малых весовых коэффициентов, приведет к созданию “нездоровой сети”.
Один из возможных путей обойти эту проблему состоит в ограничении
весовых коэффициентов и в добавлении новых как только последние
достигнут некоторого порогового значения. Это может привести к
насыщению весовых коэффициентов, но это не представляет большой
опасности.
Заключение по алгоритмам конструирования сети.
Разработка “конструктивных” нейронных сетей в настоящее время
находится в такой стадии, когда предлагается множество вариантов
архитектуры сетей, но при этом каждый их этих вариантов тестируется на
небольшом количестве задач или, что еще хуже, разрабатываются варианты
для решения только одной проблемы. И очень сложно сделать обобщающие
выводы.
Итак, при построении “конструктивной” сети мы должны выбрать:
•
Будем ли мы строить иерархическую сеть или стандартный
многослойный перцептрон?
•
Фиксированы старые веса или нет перед добавлением новых?
•
Будут ли поперечные соединения между скрытыми элементами?
Если да, то это уже не будет стандартным многослойным перцептроном.
•
Как мы будем принимать решение о необходимости удаления
скрытого элемента, и какой элемент будем удалять?
•
Каким образом мы будем устанавливать весовые коэффициенты
между новыми скрытыми элементами? Будут ли они случайными или будут
установлены с учетом ошибок?
•
Как мы узнаем, когда нужно остановиться, и как мы будем
возвращаться обратно, если окажется, что добавлено слишком много
элементов?
•
На чем будет основываться уверенность в том, что имеющееся
небольшое количество весовых коэффициентов в самом деле соответствует
оптимальной конфигурации?
•
Можем ли мы ограничить увеличение некоторого количества
весов?
Далее мы увидим, что наилучший путь достижения оптимального
набора весовых коэффициентов состоит в том, что бы построить сеть с
размером скрытого слоя, который определяется правилами и знанием
некоторой априорной информации о данных, тренировать ее и тестировать
ее. Если результат не оправдывает ожиданий, обратите внимание на ошибки
тренировки и тестирования для того, чтобы пересмотреть размер скрытого
слоя, а затем начните снова с новыми малыми случайными весами. Только
таким путем Вы сможете получить хорошо сбалансированное решение и
сможете избежать ошибок в выборе правильного алгоритма для решения
Вашей проблемы.
Ниже перечислены простейшие признаки корректной нейронносетевой модели:
•
Если ошибка тренировки мала, а ошибка тестирования велика,
значит сеть содержит слишком много весовых коэффициентов.
•
Если и ошибка тренировки, и ошибка тестирования велики,
значит весовых коэффициентов слишком мало.
•
Если все весовые коэффициенты очень большие, значит весовых
коэффициентов слишком мало.
•
Добавление весов не панацея; если Вы считаете, что весовых
коэффициентов достаточно, подумайте о других причинах ошибок, например
недостаточное количество обучающих данных.
•
Не добавляйте слишком много весовых коэффициентов, что бы
не переступить пределов, установленных в 3.2.2.
•
И наконец, что очень важно, начальные весовые коэффициенты
должны быть случайными и небольшими по величине (скажем между +1 и –
1).
6. Обобщающая способность и точность: другие методы
Ripley [83] полагал, что количество скрытых элементов менее важно,
чем обычно полагают, и что Вы можете достичь хороших результатов путем
использования других методов. Это полностью согласуется с позицией,
представленной в настоящей книге, которая устанавливает, что сложность
модели определяется на каждой стадии проекта и, что было бы ошибкой
полагать, что выбор корректного количества скрытых единиц гарантирует
корректность проекта. Простейший метод убедиться в приемлемом уровне
обобщающей способности состоит в том, что бы периодически тестировать
сеть на независимом контрольном множестве данных и остановить
тренировку, как только ошибка этого тестирования начнет возрастать. Это
наиболее мощный метод, однако, при этом увеличивается как время
тренировки, так и необходимое количество данных. Далее будет описан ряд
более тонких методов.
Добавление регуляризующего члена
Еще одно техническое решение состоит в использовании
регуляризующего члена в функции ошибок определенной таким образом,
чтобы ограничивать сложность решения, как правило, путем ограничения
величин весов. Сеть с меньшими значениями весовых коэффициентов будет
обладать лучшими обобщающими свойствами. Простейший способ
добавления регуляризующего члена состоит в том, чтобы изменить меру
ошибки так, чтобы использование больших весовых коэффициентов
рассматривалось как ошибка определенного сорта. Чем сильнее возрастает
весовой коэффициент, тем больше становится ошибка, и это приводит к
выбору простейшего из возможных решений для данного набора данных и,
таким образом, улучшается обобщающая способность.
При внесении регуляризующего члена в функцию ошибок нейронной
сети следует принять во внимание тренировочная последовательность какого
размера была использована при обучении. Это связано с тем, что эффект
регуляризации уменьшается пропорционально размеру тренировочной
последовательности данных. Также необходимо иметь возможность
контролировать степень регуляризации и увеличивать величину ошибки
пропорционально количеству весов в сети.
Это рассмотрение приводит нас к новой функции ошибок,
представленной уравнением:
где параметр
регуляризации, размер
тренировочной
последовательности,
- весовой коэффициент, - индекс. Величина полной ошибки может быть
вычислена следующим образом:
где
- ошибка, вычисленная одним из стандартных способов.
Это уравнение вводит еще один параметр, который можно настраивать:
параметр регуляризации l . Чем больше величина l , тем выше степень
регуляризации. l принимает значения от 0 до 1. Короче говоря, этот метод
увеличивает величину ошибки пропорционально сумме квадратов весов сети.
При возрастании весов возрастает ошибка.
Добавление шума эквивалентно регуляризации
В случае, если Ваше программное обеспечение не поддерживает
специальных методов регуляризации, можно использовать добавление шума
к тренировочным данным. В случае, если для каждого тренировочного
прохода используются новые значения шумовой компоненты, у сети не будет
шансов переобучиться. Чем больше добавлено шума, тем выше будет
обобщающая способность сети. Bishop [16]показал, каким образом
добавление шума к тренировочной последовательности эквивалентно
введению
регуляризации
Тихонова.
Регуляризационный
член,
использованный Bishop, основан на том факте, что добавление шума к входу
приведет к изменению выхода, которое определяется структурой самой сети.
Эффект влияния небольшого изменения входа (обусловленный добавлением
шума) на выходы определяется производной выходных сигналов по
отношения ко входным.
Преимуществом данного метода является возможность варьирования
параметра l. Тот же эффект может быть получен посредством использования
функции активации во входном слое, которые возмущают входные значения
на величину, пропорциональную l перед передачей сигнала к скрытому слою.
Входные элементы, как правило, не содержат функции активации, они
просто передают входные величины, с учетом весовых коэффициентов, к
скрытому слою. В известном смысле, любая шкалирующая функция, которая
применяется к данным до их предъявления сети, эквивалентна функции
активации входного элемента. Единственная разница состоит в том, что
данные могут быть изменены лишь однажды, порождая новый набор данных,
и при этом уменьшается количество вычислений в ходе обучения.
Если данные уже были нормированы до диапазона между 0 и 1, в этом
случае l представляет из себя отношение сигнал/шум. Хотя l является
дополнительным параметром вызывающим некоторую неопределенность при
выборе, его достаточно легко контролировать. Начав с больших значений
(например 0.1) уменьшаем каждый раз, когда ошибка перестает уменьшаться,
до тех пор, пока ошибка на контрольном массиве не начнет возрастать.
Таким образом можно получить решение.
Следует сделать два важных замечания:
1.
Разные значения шума должны добавляться к каждой величине
каждый раз, когда она используется сетью. Недостаточно просто создать
новый набор тренировочных данных, к которому добавлен шум. Шум
должен добавляться динамически в процессе обучения.
2.
При добавлении шума к тренировочным данным необходимо
сохранять среднее значение данных. Другими словами шум должен обладать
нулевым средним. Не забудьте убрать шум при тестировании!
Сжимающая функция может быть использована в качестве функции
активации входного слоя. Шум должен быть добавлен после того, как данные
были нормированы, чтобы сохранить амплитуду постоянной для всех
переменных.
Процедура ввода и последовательного уменьшения шума в процессе
обучения сети может быть использована как средство против захвата сети
локальными минимумами. Шум эффективно сглаживает мелкие пики в
ошибке, которые не может преодолеть алгоритм обучения.
7. Количество скрытых слоев
Сеть, которая состоит всего из входного и выходного слоев без
скрытых слоев известна как линейный перцептрон. Перцептроны способны
моделировать только линейные функции и используются очень редко. И это
не всегда оправдано, так как они обеспечивают универсальную линейную
аппроксимацию, что часто и требуется для конкретной задачи. До тех пор,
пока вы не убедитесь в том, что Ваша проблема существенно нелинейна,
имеет смысл попытаться решить ее с помощью линейного перцептрона.
Функция единственного скрытого слоя заключается в том, чтобы
перекодировать входное представление таким образом, чтобы получить
линейную карту для выходного представления. Многослойный перцептрон с
единственным скрытым слоем является перцептроном на вершине
линеаризирующей функции.
Kurkova [56] использовал теорему Колмогорова, чтобы показать, что
любая функция может быть аппроксимирована с использованием, по крайней
мере, четырех слоев. Hecht-Neilson [45] показал, что достаточно трех, но
констатировал, что в реальной сети использование большего количества
слоев приводит к уменьшению суммарного количества элементов в скрытых
слоях. Анализ опубликованных результатов, однако, указывает на то, что для
решения большинства практических задач достаточно одного, иногда двух
скрытых слоев. Причина такого несоответствия теории и практики лежит, повидимому в том, что сложность реальных проблем намного меньше, чем это
теоретически возможно.
Функция активации элемента (нейрона) суммирует взвешенные входы
от всех присоединенных элементов и сжимает их в заданный диапазон
значений. Этот диапазон выбирается равным либо (0 ; – 1, либо ( –1; +1). При
этом большие значения всегда сжимаются таким образом, что они вносят
уменьшающийся вклад. По этой причине, а также потому, что сеть должна
моделировать нелинейные процессы, функции активации должны быть
нелинейными.
Наиболее часто используется логистическая функция, которая должна
обладать следующими свойствами. Во-первых, сжимать входные значения в
диапазон от 0 до 1 и, во-вторых, производная должна слабо изменяться на
каждом из краев диапазона и сильно изменяться в середине диапазона. В
качестве таких функций используются либо логистическая функция, либо
функция гиперболический тангенс.
Логистическая функция
не симметрична, что приводит к некоторому увеличению времени
тренировки. Производная этой функции:
.
Функция гиперболический тангенс
нечетная функция, что несколько увеличивает скорость тренировки.
Обе функции называются сигмоидальными функциями благодаря их Sобразной форме.
Morris [67] считает, что один из скрытых элементов всегда должен
быть линейным. Это связано с тем, что большинство проблем имеют
линейные компоненты и очень важно промоделировать прямую линию
сложением нескольких взвешенных нелинейных функций. Линейная
функция активации просто суммирует входящие взвешенные величины и
делит результат на некоторую константу.
Отметим, что можно изменять наклон функций, и таким образом
изменять скорость, с которой они приближаются к их максимальным
значениям, введением постоянного члена. Этот член влияет на резкость
границ в сети классификации. Если функция с крутым наклоном после
обучения обеспечивает разделение двух областей с вероятностями 0.9 и 0.1,
то та же сеть, тренированная на той же задаче, но с меньшим наклоном
функции активации, обеспечит разделение двух областей с вероятностями 0.7
и 0.3 при том же входе.
Линейная, логистическая и функция гиперболический тангенс
показаны на рисунке.
Вертикальная ось представляет выход, а горизонтальная вход.
Отметим, что функция tanh имеет ту же форму , что и логистическая
функция, но изменяется в пределах от –1 до +1. Как правило, современные
компьютеры вычисляют функцию tanh быстрее, чем логистическую. Другое
преимущество функции tanh состоит в том, что она изменяется в диапазоне
от –1 до +1. Часто бывает необходимо нормировать обучающий набор
данных таким образом, чтобы среднее значение было равно 0 при единичном
стандартном отклонении. Такая нормировка возможна только с функцией
активации, которая способна принимать отрицательные значения. И наконец,
как мы увидим далее, нечетная функция, такая как tanh, обеспечивает более
быстрое обучение, чем несимметричная логистическая функция.
8. Меры ошибок
Цель тренировки нейронной сети состоит в том, чтобы
минимизировать ошибку, которая возникает на каждом выходном элементе
на тренировочном множестве данных. Так как ошибка может быть
положительной или отрицательной, нас будет интересовать величина ошибки
при измерении средней точности сети как целого. Знак ошибки важен лишь
тогда, когда вычисляется индивидуальная ошибка между конкретным
выходом сети и эталонным значением. Веса должны модифицироваться
таким образом, чтобы величина ошибки была близка к нулю.
Существует три типа ошибок, которые нас интересуют. Первый тип –
ошибка единичного выходного элемента, которая необходима для
реализации процедуры обратного распространения ошибки. Второй тип –
ошибка всей сети при конкретном входном сигнале, которая дает нам
информацию о том, насколько правильным является ответ сети в данный
момент времени. Третий тип – средняя ошибка сети, вычисленная после
предъявления всего набора тренировочных данных, которая показывает
насколько хорошо сеть усвоила закономерности набора тренировочных
данных. Последняя ошибка представляет собой усредненное по всему набору
тренировочных данных значение ошибки второго типа. Так как второй тип
ошибки часто вычисляется как расстояние (модуль), то значение этой
ошибки всегда положительно и ее усреднение не требует вычисления
абсолютных значений.
В дополнение к двум уровням меры ошибок, описанных выше,
существуют несколько индивидуальных мер ошибок, которые могут быть
использованы. Каждая из них определяется конкретными требованиями к
сети. Чаще всего используется мера ошибки в виде простой разности между
значением эталона и значением соответствующего выхода сети для каждого
входного значения из тренировочной последовательности:
,
где - эталонное значение для i-го выхода, - текущее значение того
же выхода.
Для того, чтобы вычислить ошибку всего выходного слоя, мы можем
трактовать эталоны и выходы как точки в многомерном пространстве и
вычислять расстояние между ними. Расстояние между двумя точками
вычисляется как квадратный корень из суммы квадратов разностей
координат. Ошибка выхода сети с N выходными элементами равна
квадратному корню из суммы квадратов ошибок каждого выходного
элемента:
.
Такая ошибка известна как квадратичная ошибка (RSE – root squared
error). Одна из разновидностей RSE – weighted RSE – взвешенная ошибка
(под термином “вес” в данном случае понимается не значения весов сети, а
мера важности, присвоенная каждому из тренировочных примеров):
С каждым примером тренировочного набора данных связывается вес
W, который указывает на значимость данного примера, или на его
“качество”. Значения весов должны лежать между 0 и 1. RSE определяется в
этом случае по формуле:
.
Для задач категоризации можно установить порог, так, чтобы выходы
выходных элементов принимали значения либо 0 (не принадлежит данному
классу), либо 1(принадлежит данному классу). Это должно быть сделано
после того, как вычислена ошибка, чтобы значения меры ошибки не
принимали значений или 0 или 1. Для вычисления меры ошибки
недостаточно знать “да” или “нет”, необходимо вычислить размер
отклонения.
В некоторых случаях представляется необходимым определить ошибку
в терминах конкретной задачи, для решения которой сконструирована сеть.
9. Установки значений скорости обучения и момента
Скорость обучения, h и момент, a определяют характер модификации
весовых коэффициентов в процессе обучения. Оба параметра используются
при применении правил обучения. h определяет долю вычисленной
ошибки, которая дает вклад в изменение весов. Момент a , связан с
величиной предыдущей корректировки весового коэффициента. Значение
каждой корректировки весовых коэффициентов запоминается для
использования в последующих циклах. Правило модификации весов с учетом
моментов включает член, пропорциональный предыдущему изменению веса.
Высокие значения h обеспечивают быстрое обучение, но увеличивают
риск отклонения от решения с последующими осцилляциями вокруг него.
Низкие значения h устраняют эту проблему, но приводят к замедлению
процесса обучения. Высокие значения a уменьшают риск захвата
локальными минимумами, но увеличивают риск проскакивания решения с
последующими осцилляциями аналогично ситуации с высоким значением h .
Начиная с большого значения h (скажем 0.75) уменьшают его до
(скажем) 0.25 и затем до 0.1 если сеть начинает осциллировать. Hertz
предлагает устанавливать для a величину 0.9 чтобы подавить осцилляции при
высоких значениях h . При этом эффективное значение скорости обучения
будет
. Большинство примеров в настоящей книге используют
значения
и
. Только в тех случаях, когда очевидно, что
требуются другие значения, или если возникали проблемы с обучением сети
мы пытались использовать другие значения.
Противоречия, возникающие при попытках одновременного
устранения проскакивания решения и захвата локальными минимумами
очевидны, но следующие простые эвристические привила будут полезны:
1.
Если ошибка уменьшается медленно, но равномерно, можно
увеличить h и a.
2.
Если ошибка осциллирует в окрестности некоторой точки,
уменьшение h поможет сети достичь этой точки. Увеличение h или a может
заставить сеть преодолеть осцилляции и продолжить обучение, но не всегда.
3.
Если ошибка не изменяется, значит, по всей видимости Вы
достигли решения. Всегда сохраняйте копию весовых коэффициентов в этой
точке прежде, чем Вы попытаетесь изменить параметры в попытке заставить
сеть преодолеть плато и продолжить обучение.