exponenta event banner

Радиальные базовые нейронные сети

Нейронная модель

Вот радиальная базисная сеть с R входами.

Обратите внимание, что выражение для чистого ввода radbas нейрон отличается от других нейронов. Здесь чистый вход в radbas передаточная функция представляет собой векторное расстояние между его весовым вектором w и входным вектором p, умноженное на смещение b. ( || dist || поле на этом рисунке принимает входной вектор p и матрицу входных весов одной строки и создает скалярное произведение этих двух.)

Передаточная функция для радиального базиса нейрона

radbas (n) = e − n2

Вот сюжет radbas передаточная функция.

Радиальная базисная функция имеет максимум 1, если ее вход равен 0. По мере уменьшения расстояния между w и p выходной сигнал увеличивается. Таким образом, радиальный базисный нейрон действует как детектор, который производит 1 всякий раз, когда входной p идентичен его весовому вектору w.

Смещение b допускает чувствительность radbas нейрон должен быть скорректирован. Например, если бы нейрон имел смещение 0,1, он бы выводил 0,5 для любого входного вектора p на векторном расстоянии 8,326 (0,8326/b) от его весового вектора w.

Сетевая архитектура

Радиальные базисные сети состоят из двух слоев: скрытого радиального базисного слоя нейронов S1 и выходного линейного слоя нейронов S2.

|| dist || прямоугольник на этом рисунке принимает входной вектор p и входную весовую матрицу IW1,1 и формирует вектор, имеющий S1 элементы. Элементы представляют собой расстояния между входным вектором и векторами iIW1,1 сформированными из строк матрицы входных весов.

Вектор смещения b1 и выход || dist || сочетаются с операцией MATLAB ®. *, которая выполняет поэлементное умножение.

Выход первого уровня для сети прямой связи net может быть получен со следующим кодом:

a{1} = radbas(netprod(dist(net.IW{1,1},p),net.b{1}))

К счастью, писать такие строки кода не придется. Все детали проектирования этой сети встроены в функции проектирования newrbe и newrb, и вы можете получить их результаты с помощью sim.

Вы можете понять, как ведет себя эта сеть, следуя входному вектору p через сеть к выходу a2. Если представить входной вектор такой сети, каждый нейрон в радиальном базисном слое выдаст значение в соответствии с тем, насколько близок входной вектор к весовому вектору каждого нейрона.

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

Напротив, радиальный базисный нейрон с вектором веса, близким к входному вектору p, производит значение около 1. Если нейрон имеет выход 1, его выходные веса во втором слое передают свои значения линейным нейронам во втором слое.

На самом деле, если только один радиальный базисный нейрон имел выход 1, а все другие имели выходы 0 с (или очень близкие к 0), выход линейного слоя был бы выходным весом активного нейрона. Однако это будет крайним случаем. Обычно несколько нейронов всегда срабатывают в разной степени.

Теперь посмотрите подробно, как работает первый уровень. Взвешенный вход каждого нейрона - это расстояние между входным вектором и его весовым вектором, рассчитанное с помощью dist. Чистый вход каждого нейрона является поэлементным произведением его взвешенного входа с его смещением, рассчитанным с помощью netprod. Выход каждого нейрона - это его чистый вход, пропущенный через radbas. Если вектор веса нейрона равен входному вектору (транспонированному), его взвешенный вход равен 0, его чистый вход равен 0, а его выход равен 1. Если вектор веса нейрона является расстоянием spread от входного вектора, его взвешенный вход spread, его чистый вход - sqrt (− log (.5)) (или 0,8326), поэтому его выход равен 0,5.

Точный дизайн (newrbe)

С помощью функции можно проектировать радиальные базовые сети. newrbe. Эта функция может создавать сеть с нулевой ошибкой на векторах обучения. Он называется следующим образом:

net = newrbe(P,T,SPREAD)

Функция newrbe принимает матрицы входных векторов P и целевые векторы Tи константа разброса SPREAD для радиального базового слоя и возвращает сеть с весами и смещениями, чтобы выходы были точно T когда входы P.

Эта функция newrbe создает столько же radbas нейроны, поскольку есть входные векторы в Pи устанавливает веса первого уровня как P'. Таким образом, существует слой radbas нейроны, в которых каждый нейрон действует как детектор для другого входного вектора. Если есть Q входных векторов, то будут Q нейронов.

Каждое смещение в первом слое устанавливается равным 0,8326/SPREAD. Это дает радиальные базисные функции, которые пересекаются 0.5 на взвешенных входах +/− SPREAD. Это определяет ширину области во входном пространстве, на которую реагирует каждый нейрон. Если SPREAD равно 4, то каждый radbas нейрон будет реагировать 0,5 или более на любые входные векторы в пределах векторного расстояния 4 от их весового вектора. SPREAD должен быть достаточно большим, чтобы нейроны сильно реагировали на перекрывающиеся области входного пространства.

Веса второго уровня IW 2,1 (или в коде, IW{2,1}) и смещения b2 (или в коде, b{2}) находят путем моделирования выходов первого уровня a1 (A{1}), а затем решение следующего линейного выражения:

[W{2,1} b{2}] * [A{1}; ones(1,Q)] = T

Вы знаете входные данные второго уровня (A{1}) и цели (T), и слой является линейным. Для вычисления весов и смещений второго слоя можно использовать следующий код, чтобы минимизировать ошибку суммарных квадратов.

Wb = T/[A{1}; ones(1,Q)]

Здесь Wb содержит как веса, так и смещения, причем смещения указаны в последнем столбце. Как поясняется ниже, погрешность суммы в квадрате всегда равна 0.

Существует проблема с ограничениями C (пары вход/цель), и каждый нейрон имеет переменные C + 1 (веса C от Cradbas нейроны и смещение). Линейная задача с ограничениями C и более чем переменными C имеет бесконечное число решений с нулевыми ошибками.

Таким образом, newrbe создает сеть с нулевой ошибкой на векторах обучения. Единственное необходимое условие - убедиться, что SPREAD достаточно велик, чтобы активные области ввода radbas нейроны перекрываются достаточно, чтобы несколько radbas нейроны всегда имеют достаточно большие выходы в любой данный момент. Это делает сетевую функцию более плавной и приводит к лучшему обобщению новых входных векторов, возникающих между входными векторами, используемыми в конструкции. (Однако, SPREAD не должен быть настолько большим, чтобы каждый нейрон эффективно реагировал в одной и той же большой области входного пространства.)

Недостаток к newrbe это то, что он производит сеть с таким количеством скрытых нейронов, как есть входные векторы. По этой причине newrbe не возвращает приемлемое решение, когда для правильного определения сети необходимо множество входных векторов, как это обычно бывает.

Более эффективный дизайн (newrb)

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

net = newrb(P,T,GOAL,SPREAD)

Функция newrb принимает матрицы входного и целевого векторов P и Tи проектные параметры GOAL и SPREADи возвращает требуемую сеть.

Метод проектирования newrb аналогичен newrbe. Разница в том, что newrb создает нейроны по одному. При каждой итерации входной вектор, который приводит к снижению сетевой ошибки, используется для создания radbas нейрон. Проверяется ошибка новой сети, и если она достаточно низкая newrb завершено. В противном случае добавляется следующий нейрон. Эта процедура повторяется до тех пор, пока не будет достигнута цель ошибки или не будет достигнуто максимальное количество нейронов.

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

Почему бы не использовать радиальную базовую сеть вместо стандартной сети прямой связи? Радиальные базовые сети, даже при эффективном проектировании с помощью newrbe, как правило, имеет во много раз больше нейронов, чем сопоставимая сеть прямой связи с tansig или logsig нейроны в скрытом слое.

Это потому, что сигмоидные нейроны могут иметь выходы в большой области входного пространства, в то время как radbas нейроны реагируют только на относительно небольшие области входного пространства. В результате чем больше входное пространство (с точки зрения количества входов и диапазонов, на которых эти входы изменяются), тем больше radbas требуются нейроны.

С другой стороны, проектирование радиальной базовой сети часто занимает гораздо меньше времени, чем обучение сигмоидной/линейной сети, и иногда может привести к использованию меньшего количества нейронов, как можно видеть в следующем примере.

Примеры

В примере Радиальная базисная аппроксимация (Radial Basis Approximation) показано, как радиальная базисная сеть используется для соответствия функции. Здесь проблема решается только с пятью нейронами.

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

В радиальном базисе, лежащем в основе нейронов, радиальная базисная сеть предназначена для решения той же задачи, что и в радиальном базисном приближении. Однако в этот раз используемая константа разброса равна 0,01. Таким образом, каждый радиальный базисный нейрон возвращает 0,5 или ниже для любого входного вектора с расстоянием 0,01 или более от его весового вектора.

Поскольку обучающие входы происходят с интервалами 0,1, никакие два радиальных базисных нейрона не имеют сильного выхода для любого данного входа.

Радиальная основа, лежащая в основе нейронов, показала, что наличие слишком малой константы разброса может привести к решению, которое не обобщается из входных/целевых векторов, используемых в конструкции. Пример перекрывающихся нейронов радиального базиса показывает обратную проблему. Если константа разброса достаточно велика, радиальные базовые нейроны выдадут большие значения (около 1,0) для всех входов, используемых для проектирования сети.

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

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

Для этой задачи, которая будет означать выбор константы разброса больше 0,1, интервал между входами и меньше 2, расстояние между крайними левыми и крайними правыми входами.