Однослойные нейронные сети с прямым распространением (персептроны)
Сеть, в которой все входные элементы соединены непосредственно с выходными элементами, называется однослойной нейронной сетью, или сетью персептрона. Поскольку каждый выходной элемент является независимым от других (каждый вес влияет только на один из выходов), можно ограничиться в нашем исследовании рассмотрением персептронов с единственным выходным элементом, как показано на рис. 20.19, а.
Начнем с исследования пространства гипотез, которое может быть представлено с помощью персептрона. Если применяется пороговая функция активации, то пер-септрон может рассматриваться как представляющий некоторую булеву функцию. Кроме элементарных булевых функций AND, OR и NOT (см. рис. 20.17), персептрон позволяет представлять очень компактно некоторые весьма "сложные" булевы функции. Например, мажоритарная функция, которая выводит 1, только если 1 присутствует больше чем на половине из ее п входов, может быть представлена с помощью персептрона, в котором каждое значение w = l, а пороговое значение w0=n/2. В дереве решений для представления этой функции потребовалось бы О (2П) узлов.
К сожалению, существует также много булевых функций, которые не могут быть представлены с помощью порогового персептрона. Рассматривая уравнение 20.10, можно обнаружить, что пороговый персептрон возвращает 1 тогда и только тогда, когда взвешенная сумма его входных данных (включая смещение) является положительной:
Итак, W • х = 0 определяет гиперплоскость в пространстве входных данных, поэтому персептрон возвращает 1 тогда и только тогда, когда входные данные находятся с одной стороны от этой гиперплоскости. По такой причине пороговый персептрон называют линейным разделителем. На рис. 20.20, а, б показана такая гиперплоскость (которая в двух измерениях является линией) для представления с помощью персептрона функций AND и OR от двух входных значений. Черные кружки обозначают точки в пространстве входных данных, где значение этой функции равно 1, а белые кружки — точки, где это значение равно 0. Персептрон способен представить эти функции, поскольку есть какая-то линия, которая отделяет все белые кружки от всех черных кружков. Такие функции называются линейно разделимыми. На рис. 20.20, в показан пример функции, которая не является линейно разделимой, — функции XOR. Безусловно, что пороговый персептрон не позволяет определить в процессе обучения эту функцию. Вообще говоря, пороговые персептроны способны представить только линейно разделимые функции. Но такие функции составляют лишь небольшую часть всех функций; в упр. 20.14 предлагается определить величину этой части. Сигмоидальные персептроны характеризуются аналогичными ограничениями, с той поправкой, что они представляют только "мягкие" линейные разделители (см. рис. 20.19, б).
Несмотря на их ограниченную выразительную мощь, пороговые персептроны имеют некоторые преимущества. В частности, существует простой алгоритм обучения, позволяющий выполнить подгонку весов порогового персептрона к любому линейно разделимому обучающему множеству, но в данном разделе вместо описания этого алгоритма мы выведем тесно связанный с ним алгоритм для обучения с помощью сигмоидальных персептронов.
В основе этого алгоритма, а в действительности в основе большинства алгоритмов для обучения нейронных сетей, лежит такая идея, что в процессе обучения необходимо корректировать веса в сети для минимизации некоторого критерия измерения ошибок в обучающем множестве. Таким образом, задача обучения формулируется как некоторая задача оптимизационного поиска8 в пространстве весов. "Классическим" критерием измерения ошибок является сумма квадратичных ошибок, которая использовалась в том числе в алгоритме линейной регрессии, приведенном на с. 1. Квадратичная ошибка для единственного обучающего примера с входными данными х и истинными выходными данными у определяется следующим образом:
Е = Err2 = |(y-hw(x) )2
где (х) — выходные данные персептрона при обработке рассматриваемого примера.
8 Описание общих методов оптимизации, применимых к непрерывным пространствам, приведено в разделе 4.4.
Для уменьшения квадратичной ошибки можно применить метод градиентного спуска, вычисляя частичную производную Е по отношению к каждому весу. При этом может быть получено следующее соотношение:
Полный алгоритм приведен в листинге 20.1. Он предусматривает прогон обучающих примеров через сеть каждый раз по одному и небольшую корректировку весов после прогона каждого примера для уменьшения ошибки. Каждый цикл прогона примеров называется эпохой. Эпохи повторяются до тех пор, пока не достигается некоторый критерий останова; как правило, такая ситуация достигается, когда изменения весов становятся очень небольшими. В других методах для всего обучающего набора вычисляется градиент путем сложения всех градиентных вкладов в уравнении 20.12 перед обновлением весов. А в методе стохастического градиента примеры выбираются случайным образом из обучающего набора вместо их циклической обработки.
Листинг 20.1. Алгоритм обучения на основе градиентного спуска для персептронов, в котором предполагается использование дифференцируемой функции активации д. Для пороговых персептронов коэффициент д% (in) из обновления веса исключается. Функция Neural-Net-Hypothesis возвращает гипотезу, которая вычисляет выход сети для любого конкретного примера
function Perceptron-Learning(examples, network) returns гипотеза персептрона
inputs: examples, множество примеров, для каждого из которых заданы входные данные х=хь ...,хп и выходные данные у network, персептрон с весами Pi/j, где j=0...n, и функцией активации.
До сих пор персептроны рассматривались как средства реализации детерминированных функций, выходные данные которых могут содержать ошибки. Выход сиг-моидального персептрона можно также интерпретировать как вероятность, а именно вероятность того, что истинным выходом является 1, если заданы все входы. При такой интерпретации сигмоидальный персептрон может использоваться как каноническое представление для условных распределений в байесовских сетях (см. раздел 14.3). Существует также возможность выполнять вероятностный вывод правила обучения с использованием стандартного метода максимизации (условного) логарифмического правдоподобия данных, как было описано выше в данной главе. Рассмотрим, как действует последний метод.
Допустим, что рассматривается единственный обучающий пример с истинным выходным значением Т, и предположим, что р— вероятность, возвращаемая пер-септроном для этого примера. Если т=1, то условная вероятность этих данных равна р, а если т=0, то условная вероятность данных равна (1-р). Теперь можно воспользоваться простым приемом, чтобы записать интересующее нас выражение для логарифмического правдоподобия в дифференцируемой форме. Этот прием состоит в том, что переменная со значениями 0/1 в экспоненте выражения рассматривается как индикаторная переменная: рт-р, если т=1, и 1 — в противном случае; аналогичным образом, (1-р) (1_т)- (1-р), если т=0, и 1 — в противном случае. Поэтому можно записать выражение для логарифмического правдоподобия данных следующим образом:
L = log рт(1-р)(1_т) = Tlog р + (1-Т)log(1-р) (20.13)
В силу самих свойств сигмоидальной функции полученный градиент сводится к очень простой формуле (упр. 20.16):
Обратите внимание на то, что вектор обновления весов для обучения с максимальным правдоподобием в сигмоидальных персептронах по сути идентичен вектору обновления для минимизации квадратичной ошибки. Таким образом, можно утверждать, что персептроны имеют вероятностную интерпретацию, даже если правило их обучения выведено на основании детерминированного подхода.