Содержание статьи
Сколько скрытых слоев и скрытых узлов необходимо в нейронной сети
Кодирование выходных значений
Ещё один подход заключается в разбиении задачи с k классами на k∗(k−1)/2 подзадач с двумя классами каждая (кодирование «2 на 2»). Подзадача в данном случае заключается в том, что сеть определяет наличие одной из компонент вектора. Т.е. исходный вектор разбивается на группы по два компонента в каждой таким образом, чтобы в них вошли все возможные комбинации компонент выходного вектора. Из комбинаторики известно, что число этих групп можно определить как количество неупорядоченных выборок без повторений по два из исходных компонент, то есть:
Как и следовало ожидать, на этот вопрос нет простого ответа. Однако самое важное, что нужно понять, это то, что перцептрон с одним скрытым слоем – это крайне мощная вычислительная система. Если вы не получаете адекватных результатов с одним скрытым слоем, попробуйте сначала другие усовершенствования – может быть, вам нужно оптимизировать скорость обучения, увеличить количество эпох обучения или расширить набор обучающих данных. Добавление второго скрытого слоя увеличивает сложность кода и время обработки.
Например, в другом способе представления, номер класса кодируется в двоичной форме в выходном векторе сети. Тогда если число классов равно 5, то для их представления будет достаточно трёх выходных нейронов, а код, соответствующий, скажем, 3-му классу будет 011. Недостатком подхода является отсутствие возможности использования показателя уверенности, поскольку разность между любыми элементами выходного вектора всегда равна 0 или 1. Следовательно изменение любого элемента выходного вектора неминуемо приведёт к ошибке. Поэтому для увеличения «расстояния» между классами удобно использовать код Хэммминга, который позволит точность классификации.
Определённым компромиссом между параметрическим и метрическими методами является использование для решении задач классификации нейронных сетей (НС). Действительно, НС являются непараметрическими моделями, не требующими предположений о вероятностном распределении данных, но при этом и не используют меры расстояний. Это делает их универсальными классификаторами, позволяя получать результаты даже в случаях, когда параметрические и метрические классификаторы не обеспечиваю приемлемого решения.
Если сеть показывает высокую точность как на обучающем, так и на тестовом множестве (примеры которого, по сути, играют роль новых данных), то можно говорить о том, что сеть приобрела обобщающую способность. Если сеть выдаёт хорошие результаты только на обучающих данных и плохие на тестовых, то обобщающая способность ею не приобретена.
Например, для рассмотренного выше примера уверенность сети в том, что пример относится ко второму классу, определится как разность между второй и третьей компонентой вектора и равна 0.6−0.4=0.2 . Соответственно чем выше уверенность, тем больше вероятность того, что сеть дала правильный ответ. Этот метод кодирования является самым простым, но не всегда самым эффективным способом представления классов на выходе сети.
Различные виды классификаторов имеют свои преимущества и недостатки. Так, классификаторы, в которых используются методы статистики имеют хорошую математическую обоснованность, но при этом сложны в использовании и требуют знания вероятностного распределения исходных данных и оценки его параметров (поэтому их называют параметрическими), а также имеют фиксированную структуру модели. Кроме этого, статистические методы оценивают только вероятность принадлежности объекта классу, но не «объясняют» почему.
Очевидно, что при таком способе кодирования, чем сильнее максимальное значение отличается от остальных, тем выше уверенность в том, что сеть отнесла объект именно к данному классу. Формально эту уверенность можно ввести в виде показателя, равного разности между максимальным значением на входе сети (которое, собственно, и определяет принадлежность к классу) и ближайшим к нему значением на другом выходе.
Сколько скрытых узлов?
Очевидным способом улучшения обобщающей способности сети является увеличение числа обучающих примеров или сокращение числа связей. Первое не всегда возможно из-за ограниченного объема набора данных и возрастания вычислительных затрат. Сокращение же числа связей приводит к ухудшению точности сети. Поэтому выбор размера модели часто оказывается достаточно сложной задачей, требующей многократных экспериментов.
Итак, когда нам действительно нужно несколько скрытых слоев? Я не могу дать вам никаких рекомендаций из личного опыта. Лучшее, что я могу сделать, это передать опыт доктора Джеффа Хитона (смотрите страницу 158 текста по ссылке), который утверждает, что один скрытый слой позволяет нейронной сети аппроксимировать любую функцию, включающую «непрерывное преобразование из одного конечного пространства в другое».
Последующие слои, таким образом, разделяют объекты на классы в пространстве признаков более высокой размерности, чем исходное. Например, если размерность вектора признаков исходных данных равна 4, и скрытый слой содержит 6 нейронов, то выходной слой производит разбиение объектов на классы в 6-мерном пространстве.
При деструктивном подходе вначале берется сеть завышенного размера, и затем из нее удаляются нейроны и связи, которые оказывают наименьшее влияние на точность классификатора. При этом полезно помнить следующее правило: число примеров в обучающем множестве должно быть больше числа настраиваемых весов сети. В противном случае сеть не приобретёт обобщающую способность и будет выдавать на новых данных произвольные значения.
Чтобы правильно выбрать размер сети применяют два подхода – конструктивный и деструктивный. Первый заключается в том, что вначале берется сеть минимального размера, и затем её постепенно увеличивают до достижения требуемой точности. При этом после каждого увеличения ее заново обучают. Также существует так называемый метод каскадной корреляции, при котором после окончания каждой эпохи обучения происходит корректировка архитектуры сети с целью минимизации ошибки.
Здесь 1 на выходе говорит о наличии одной из компонент. Тогда определить номер класса по результату расчета сети можно следующим образом: определяем, какие комбинации получили единичное (точнее близкое к единице) значение выхода (т.е. какие подзадачи были активированы), и полагаем, что в качестве номера класса следует выбрать тот, который вошел в наибольшее количество активированных подзадач (см. таблицу).
Метод проб и ошибок – это хорошо, но вам понадобится обоснованная отправная точка. В той же книге, ссылка на которую приведена выше (на странице 159), доктор Хитон упоминает три практических правила для выбора размерности скрытого слоя. Я буду опираться на них, предлагая рекомендации, основанные на моей смутной интуиции в обработке сигналов.
Классификаторы, основанные на машинном обучении не требуют оценки параметров распределения исходных данных, а мера сходства в них формализуется с помощью функции расстояния (обычно, евклидова). Такие классификаторы называются метрическими. Как правило, они проще в реализации и использовании, чем параметрические, а их результаты удобнее для интерпретации и понимания. Но при этом метрические классификаторы являются эвристическими моделями — обеспечивают решение только в ограниченном числе практически значимых случаев, могут дать неточное или не единственное решение. Поэтому использовать их результаты нужно с известной долей осторожности.