Привет всем, сегодня мы начнем новую и самую сложную тему машинного обучения ... так что давайте приступим без промедления ...
Нейронная сеть - это серия алгоритмов, которые пытаются распознавать взаимосвязи в наборе данных с помощью определенного процесса, имитирующего работу человеческого мозга. Нейронные сети могут адаптироваться к изменению ввода; поэтому сеть дает наилучший возможный результат без необходимости изменения критериев вывода. БЛОК НЕЙРОННОЙ СЕТИ - «ПЕРЦЕПТРОН».
Простая структура нейронной сети:
Базовая структура ИНС состоит из искусственных нейронов (похожих на биологические нейроны в человеческом мозгу), сгруппированных в слои. Наиболее распространенная структура ИНС состоит из входного слоя, одного или нескольких скрытых слоев и выходного слоя. Модифицированная простая модель искусственного нейрона показана на рисунке 1.
Искусственный нейрон
Обратное распространение, процедура для многократной корректировки весов, чтобы минимизировать разницу между фактическим и желаемым результатом.
Скрытые слои, которые представляют собой узлы нейронов, расположенные между входами и выходами, позволяющие нейронным сетям изучать более сложные функции (например, логику XOR).
- В человеческом мозге нейроны общаются, посылая друг другу сигналы через сложные связи.
- ИНС основаны на том же принципе в попытке смоделировать процесс обучения человеческого мозга с помощью сложных алгоритмов.
- К каждому соединению прикреплен вес, с которым может быть связано либо положительное, либо отрицательное значение.
- Положительные веса активируют нейрон, а отрицательные - подавляют.
- На рисунке 1 показана структура сети с входами (x1, x2,… xi), подключенными к нейрону j с весами (w1j, w2j,… wij) при каждом подключении.
- Нейрон суммирует все полученные сигналы, причем каждый сигнал умножается на связанные с ним веса соединения.
- Этот выходной сигнал (y) затем передается через функцию передачи (активации), g (y),, которая обычно является нелинейной, чтобы получить окончательный результат Oj.
- Наиболее часто используемой функцией является сигмоид (логистическая функция) из-за ее легко дифференцируемых свойств, что очень удобно при применении алгоритма обратного распространения.
- Весь процесс будет рассмотрен более подробно.
- ИНС обратного распространения - это структура нейронной сети с прямой связью, которая принимает входные данные в сеть и умножает их на веса соединений между нейронами или узлами;
- суммируя свои продукты перед тем, как пропустить их через пороговую функцию, чтобы получить результат.
- Алгоритм обратного распространения работает, сводя к минимуму ошибку между выходом и целевым (фактическим) путем распространения ошибки обратно в сеть.
- Веса на каждой из связей между нейронами изменяются в соответствии с размером начальной ошибки.
- Затем входные данные снова передаются вперед, создавая новый выход и ошибку.
- Процесс повторяется до тех пор, пока не будет получена приемлемая минимизированная ошибка.
- Каждый из нейронов использует передаточную функцию и полностью связан с узлами следующего слоя.
- Как только ошибка достигает приемлемого значения, обучение останавливается.
- Результирующая модель - это функция, которая является внутренним представлением выхода в терминах входов в этой точке.
- Более подробное обсуждение алгоритма обратного распространения будет выполнено в следующих статьях.
Основные компоненты биологических нейронных сетей:
- Узлы-нейроны.
- Веса-синапсы.
Характеристики искусственных нейронных сетей
Любая искусственная нейронная сеть, независимо от стиля и логики реализации, имеет несколько основных характеристик. Они упомянуты ниже.
- Искусственная нейронная сеть состоит из большого количества «нейроноподобных» элементов обработки.
- Все эти элементы обработки имеют между собой большое количество взвешенных связей.
- Связи между элементами обеспечивают распределенное представление данных.
- Процесс обучения применяется для приобретения знаний.
- Массивный параллелизм.
- Распределенная ассоциативная память.
Элементы нейронных сетей
Принимая во внимание вышеуказанные характеристики, мы можем вывести основные элементы любой искусственной нейронной сети следующим образом:
- Элементы обработки
- Топология
- Алгоритм обучения
Давайте кратко рассмотрим эти отдельные элементы.
Элементы обработки
Поскольку ИНС представляет собой упрощенную вычислительную модель биологической нейронной сети, ИНС состоит из базовых блоков обработки или элементов, аналогичных нейронам мозга.
Как правило, блок обработки состоит из блока суммирования, за которым следует блок вывода. Функция суммирующего устройства состоит в том, чтобы принимать n входных значений, взвешивать каждое входное значение и вычислять взвешенную сумму этих значений.
На основе знака веса каждого входа определяется, имеет ли вход положительный вес или отрицательный вес. Взвешенная сумма суммирующей единицы известна как значение активации, и на основе сигнала от этого значения активации создается выходной сигнал.
И вход, и выход могут быть непрерывными или дискретными, а также детерминированными или нечеткими.
Топология
Любая искусственная нейронная сеть станет полезной только тогда, когда все элементы обработки будут организованы соответствующим образом, чтобы они могли выполнять задачу распознавания образов.
Эта организация или расположение элементов обработки, их взаимосвязей, входов и выходов известна просто как топология.
Как правило, в ИНС блоки обработки организованы в уровни, и все блоки на конкретном уровне имеют одинаковые значения активации и выходные значения. Соединение между слоями может быть выполнено несколькими способами, например, блок обработки одного уровня соединен с блоком другого уровня, блок обработки слоя соединен с блоком того же уровня и т. Д.
Некоторые из наиболее часто используемых топологий в искусственных нейронных сетях:
- Instar
- Outstar
- Группа Инстаров
- Группа Outstars
- Двунаправленная ассоциативная память
- Автоассоциативная память
На следующем изображении показано расположение двух уровней F1 и F2 с количеством процессоров M и N каждый в топологиях Instar и Outstar.
Алгоритм обучения
Заключительные и важные элементы любой ИНС - это алгоритмы обучения или законы. Работа любой нейронной сети регулируется нейронной динамикой, состоящей как из динамики состояния активации, так и динамики синаптического веса.
Алгоритмы обучения или законы являются реализациями синаптической динамики и описываются в терминах первой производной весов. Эти наклонные законы могут быть контролируемыми, неконтролируемыми или гибридом обоих.
Некоторые из широко известных алгоритмов обучения:
- Закон Хебба
- Закон обучения восприятию
- Закон об обучении Delta
- Закон об обучении Wildrow & Hoff LMS
- Закон корреляционного обучения
- Закон об обучении в Instar
- Закон об обучении Outstar
Репликация поведения:
«Обучение» человеческого мозга - это просто повторяющаяся активация определенных нейронных связей, и это повторение усиливает связь. Таким образом, для указанного входа нейронные соединения гарантируют, что выход всегда является желаемым. Простая обратная связь по результатам помогает процессу обучения, так как укрепляет нейронные связи.
Такое поведение мозга является ключевым для искусственных нейронных сетей, поскольку они просто пытаются воспроизвести это действие мозга. Этого можно добиться двумя способами:
- Контролируемая ИНС
- Неконтролируемая ИНС
Контролируемые искусственные нейронные сети
В контролируемых искусственных нейронных сетях согласованные входные и выходные выборки данных предоставляются сети для обучения. Цель этого подхода - получить желаемый результат для указанного входа.
Один из лучших примеров контролируемой ANN - это спам-фильтры наших электронных писем. На уровне обучения вводом в движок искусственной нейронной сети будет набор слов в теле электронного письма. На выходе сообщение помечается как спам или не как спам.
Неконтролируемые искусственные нейронные сети
Неконтролируемая искусственная нейронная сеть более сложна, чем контролируемая противоположная часть, поскольку она пытается заставить ИНС самостоятельно понимать структуру данных, предоставленных в качестве входных.
Различные типы нейронных сетей
Есть много разных видов искусственных нейронных сетей. Некоторые из них перечислены здесь.
- Нейронные сети с прямой связью
- Нейронные сети обратной связи
- Нейронные сети с конкурентным обучением
Нейронные сети с прямой связью
Искусственная нейронная сеть с прямой связью, как следует из названия, состоит из нескольких уровней блоков обработки, каждый из которых передает входные данные следующему уровню сквозным способом. Простая двухуровневая сеть является примером ИНС прямого распространения.
Ниже представлена простая структура трехуровневой ИНС прямого распространения.
Нейронные сети обратной связи
ИНС с обратной связью состоит из элемента обратной связи. В базовой структуре ИНС с обратной связью состоит из набора блоков обработки, выходные данные которых передаются в качестве входных данных всем другим блокам того же уровня, включая тот же самый блок.
В своей базовой форме ИНС с обратной связью не имеет никакой структуры и, следовательно, бесполезна при распознавании образов.
Конкурентоспособные обучающие нейронные сети
Это комбинация ИНС с обратной связью и прямой связи. Входной слой является линейным, и его выходы передаются всем блокам следующего уровня.
Выходы второго уровня могут быть как линейными, так и нелинейными (в зависимости от приложения).
Построение ИНС
Настройка ИНС - это, по сути, шестиэтапная процедура.
Во-первых: используемые данные должны быть определены и представлены в ИНС как образец входных данных с желаемым результатом или целью.
Во-вторых: данные классифицируются как входящие в обучающий набор или проверочный (также называемый тестовым и вневыборочным) набором. ИНС использует обучающий набор только в процессе обучения при разработке модели. Набор для проверки используется для тестирования модели на ее способность к прогнозированию и для того, чтобы остановить обучение ИНС.
В-третьих: структура ИНС определяется путем выбора количества создаваемых скрытых слоев и количества нейронов для каждого скрытого слоя.
В-четвертых: все параметры ИНС устанавливаются перед началом процесса обучения. Параметры ИНС кратко обсуждаются в следующем разделе и более подробно в следующих статьях.
Далее: процесс обучения запущен. Процесс обучения включает вычисление выходных данных из входных данных и весов. Алгоритм обратного распространения ошибки используется для «обучения» ИНС путем корректировки ее весов, чтобы минимизировать разницу между текущим выходом ИНС и желаемым выходом.
Наконец, необходимо провести процесс оценки, чтобы определить, «научилась» ли ИНС решать поставленную задачу. Этот процесс оценки может включать периодическую остановку процесса обучения и тестирование его эффективности до получения приемлемого результата. После получения приемлемого результата ИНС считается обученной и готовой к использованию.
Поскольку не существует фиксированных правил определения структуры ИНС или значений ее параметров, перед определением приемлемой модели, возможно, придется построить большое количество ИНС с различными структурами и параметрами. Процесс проб и ошибок может быть утомительным, и опыт пользователя ИНС в построении сетей неоценим в поисках хорошей модели.
Определение момента остановки процесса обучения имеет жизненно важное значение для получения хорошей модели. Если ИНС перетренирована, может возникнуть проблема аппроксимации кривой, при которой ИНС начинает подстраиваться под обучающий набор вместо создания обобщенной модели. Обычно это приводит к плохим прогнозам набора данных тестирования и проверки. С другой стороны, если ИНС не обучается достаточно долго, она может установить локальный минимум, а не глобальный минимум. Обычно это создает неоптимальную модель. Выполняя периодическое тестирование ИНС на тестовом наборе и записывая как результаты обучения, так и результаты набора тестовых данных, можно получить количество итераций, дающих наилучшую модель. Все, что нужно, - это сбросить ИНС и обучить сеть до этого количества итераций.
Создать перцептрон
Вы можете создать перцептрон следующим образом:
net = perceptron; net = configure(net,P,T);
где входные аргументы следующие:
P
- это матрица размером R на Q из Q входных векторов по R элементов каждый.T
- это S-by-Q матрица из Q целевых векторов по S элементов каждый.
Обычно в перцептронах используется функция hardlim
, поэтому она используется по умолчанию.
Следующие команды создают сеть персептронов с одним одноэлементным входным вектором со значениями 0 и 2 и одним нейроном с выходами, которые могут быть либо 0, либо 1:
P = [0 2]; T = [0 1]; net = perceptron; net = configure(net,P,T);
Вы можете увидеть, какая сеть была создана, выполнив следующую команду:
inputweights = net.inputweights{1,1}
который дает
inputweights = delays: 0 initFcn: 'initzero' learn: true learnFcn: 'learnp' learnParam: (none) size: [1 1] weightFcn: 'dotprod' weightParam: (none) userdata: (your custom info)
Функция обучения по умолчанию - learnp
, которая обсуждается в Правиле обучения перцептрона (learnp). Чистый ввод для передаточной функции hardlim
- это dotprod
, который генерирует произведение входного вектора и весовой матрицы и добавляет смещение для вычисления чистого ввода.
Функция инициализации по умолчанию initzero
используется для установки начальных значений весов в ноль.
Сходным образом,
biases = net.biases{1}
дает
biases = initFcn: 'initzero' learn: 1 learnFcn: 'learnp' learnParam: [] size: 1 userdata: [1x1 struct]
Вы можете видеть, что инициализация смещения по умолчанию также равна 0.
Нейронные сети персептрона
- Розенблатт [Rose61] создал множество вариаций перцептрона.
- Одной из самых простых была однослойная сеть, веса и смещения которой можно было обучить для создания правильного целевого вектора при представлении соответствующего входного вектора.
- Используемая методика обучения называется правилом обучения перцептрона. Персептрон вызвал большой интерес из-за его способности обобщать свои обучающие векторы и учиться на изначально случайно распределенных связях.
- Персептроны особенно подходят для простых задач классификации образов.
- Это быстрые и надежные сети для задач, которые они могут решить. Кроме того, понимание работы перцептрона обеспечивает хорошую основу для понимания более сложных сетей.
Обсуждение персептронов в этом разделе обязательно краткое. Для более подробного обсуждения см. Главу 4 Правило обучения перцептронов [HDB1996], в которой обсуждается использование нескольких уровней перцептронов для решения более сложных проблем, выходящих за рамки возможностей одного уровня.
Модель нейрона
Нейрон-перцептрон, использующий передаточную функцию с жестким ограничением hardlim
, показан ниже.
Каждый внешний вход взвешивается с соответствующим весом w 1j, и сумма взвешенных входов отправляется в передаточную функцию с жестким ограничением, которая также имеет вход 1, переданный ей через смещение. Передаточная функция с жестким ограничением, которая возвращает 0 или 1, показана ниже.
Нейрон персептрона выдает 1, если чистый вход в передаточную функцию равен или больше 0; в противном случае будет 0.
Передаточная функция с жестким ограничением дает перцептрону возможность классифицировать входные векторы, разделяя входное пространство на две области. В частности, выходные данные будут равны 0, если чистый вход n меньше 0, или 1, если чистый вход n равен 0 или больше. На следующем рисунке показано входное пространство нейрона жесткого ограничения с двумя входами с весами w 1,1 = -1, w 1,2 = 1 и смещением b = 1.
- Две области классификации образуются линией L границы решения в
Wp + b = 0. - Эта линия перпендикулярна весовой матрице W и смещена согласно смещению b.
- Входные векторы выше и слева от строки L приведут к чистому входу больше 0 и, следовательно, заставят нейрон с жестким ограничением вывести 1.
- Входные векторы ниже и правее линии L заставляют нейрон выводить 0.
- Вы можете выбрать значения веса и смещения, чтобы сориентировать и переместить разделительную линию, чтобы классифицировать входное пространство по желанию.
- Нейроны с жестким ограничением без смещения всегда будут иметь классификационную линию, проходящую через начало координат.
- Добавление смещения позволяет нейрону решать проблемы, в которых два набора входных векторов не расположены по разные стороны от начала координат.
- Смещение позволяет смещать границу решения от начала координат, как показано на графике выше.
Возможно, вы захотите запустить пример программы nnd4db
. С его помощью вы можете перемещать границу принятия решения, выбирать новые входные данные для классификации и видеть, как повторное применение правила обучения дает сеть, которая действительно классифицирует входные векторы должным образом.
Архитектура персептрона
Сеть перцептронов состоит из одного слоя S
нейронов перцептрона, подключенных к входам R через набор весов wi, j, как показано ниже в двух формах. Как и раньше, сетевые индексы i и j указывают, что wi, j - это мощность соединения от j -й вход в i -й нейрон.
Кратко описанное правило обучения перцептрона способно обучать только один слой. Таким образом, здесь рассматриваются только одноуровневые сети. Это ограничение накладывает ограничения на вычисления, которые может выполнять перцептрон.
Правило обучения перцептрона (learnp)
Персептроны обучаются на примерах желаемого поведения. Желаемое поведение можно резюмировать набором входных и выходных пар.
p 1 t 1, p 2 t 1,…, p Q t Q
- где p - это вход в сеть, а t - соответствующий правильный (целевой) выход.
- Цель состоит в том, чтобы уменьшить ошибку e, которая представляет собой разницу t - a между ответом нейрона a и целевой вектор t.
- Правило обучения перцептрона
learnp
вычисляет желаемые изменения весов и смещений перцептрона с учетом входного вектора p и связанной с ним ошибки e. - Целевой вектор t должен содержать значения 0 или 1, потому что перцептроны (с
hardlim
передаточными функциями) могут выводить только эти значения.
Каждый раз, когда выполняется learnp
, у перцептрона больше шансов выдать правильные выходные данные. Доказано, что правило персептрона сходится к решению за конечное число итераций, если решение существует.
Если смещение не используется, learnp
пытается найти решение, изменяя только вектор весов w так, чтобы он указывал на входные векторы, которые должны быть классифицированы как 1, и от векторов, которые должны быть классифицированы как 0. Это приводит к граница решения, которая перпендикулярна w и правильно классифицирует входные векторы.
Когда представлен входной вектор p и рассчитывается ответ a сети, для отдельного нейрона могут возникнуть три условия:
СЛУЧАЙ 1. Если представлен входной вектор и выходные данные нейрона правильные (a = t и e = t - a = 0), то вектор веса w не изменяется.
СЛУЧАЙ 2. Если выход нейрона равен 0, а должен был быть 1 (a = 0 и t = 1, а e = t - a = 1), входной вектор p добавляется к весовому вектору w . Это приближает точку вектора весов к входному вектору, увеличивая вероятность того, что входной вектор будет классифицирован как 1 в будущем.
СЛУЧАЙ 3. Если выход нейрона равен 1 и должен быть 0 (a = 1 и t = 0, а e = t - a = –1), входной вектор p вычитается из вектора весов w . Это перемещает точку вектора весов дальше от входного вектора, увеличивая вероятность того, что входной вектор будет классифицирован как 0 в будущем.
Правило обучения перцептрона можно описать более кратко, используя ошибку e = t - a и изменение вектора весов. Δ w:
СЛУЧАЙ 1. Если e = 0, замените Δ w на 0.
СЛУЧАЙ 2. Если e = 1, измените Δ w на p T.
СЛУЧАЙ 3. Если e = –1, замените Δ w равным - p T.
Все три случая могут быть записаны одним выражением:
Δ w = (t - α) p T = e p T
Вы можете получить выражение для изменения смещения нейрона, заметив, что смещение - это просто вес, который всегда имеет входное значение 1:
Δb=(t−α)(1)=e
В случае слоя нейронов у вас есть
ΔW=(t−a)(p)T=e(p)T
а также
Δb=(t−a)=e
Правило обучения перцептрона можно резюмировать следующим образом:
W новый = W старый + ep T
а также
b новый = b старый + e
где e = t - a.
А теперь попробуйте простой пример. Начните с одного нейрона, имеющего входной вектор всего из двух элементов.
net = perceptron; net = configure(net,[0;0],0);
Чтобы упростить ситуацию, установите смещение равным 0, а веса - 1 и -0,8:
net.b{1} = [0]; w = [1 -0.8]; net.IW{1,1} = w;
Входная целевая пара задается следующим образом:
p = [1; 2]; t = [1];
Вы можете вычислить результат и ошибку с помощью
a = net(p) a = 0 e = t-a e = 1
и используйте функцию learnp
, чтобы найти изменение весов.
dw = learnp(w,p,[],[],[],[],e,[],[],[],[],[]) dw = 1 2
Таким образом, новые веса получаются как
w = w + dw w = 2.0000 1.2000
Процесс поиска новых весов (и смещений) можно повторять до тех пор, пока не исчезнут ошибки. Напомним, что правило обучения перцептрона гарантированно сходится за конечное число шагов для всех задач, которые могут быть решены перцептроном. К ним относятся все задачи классификации, которые линейно разделимы. Классифицируемые в таких случаях объекты могут быть разделены одной линией.
Вы можете попробовать пример nnd4pr
. Это позволяет вам выбирать новые входные векторы и применять правило обучения для их классификации.
Обучение (тренировка)
- Если
sim
иlearnp
используются повторно для представления входных данных перцептрону и для изменения весов и смещений перцептрона в соответствии с ошибкой, перцептрон в конечном итоге найдет значения веса и смещения, которые решают проблему, учитывая, что перцептрон может решить эту проблему. - Каждый обход всех обучающих входных и целевых векторов называется проходом.
- Функция
train
выполняет такой цикл вычислений. - В каждом проходе функция
train
проходит через заданную последовательность входов, вычисляя выход, ошибку и сетевую настройку для каждого входного вектора в последовательности по мере представления входных данных. - Обратите внимание, что
train
не гарантирует, что результирующая сеть выполнит свою работу. Вы должны проверить новые значения W и b, вычислив выходные данные сети для каждого входного вектора, чтобы увидеть, все ли цели достигнуты. - Если сеть не работает успешно, вы можете обучить ее дальше, снова вызвав
train
с новыми весами и смещениями для большего количества проходов обучения, или вы можете проанализировать проблему, чтобы увидеть, подходит ли она для перцептрона.
Чтобы проиллюстрировать процедуру обучения, решите простую задачу. Рассмотрим перцептрон с одним нейроном и одним векторным входом, состоящим из двух элементов:
Эта сеть и проблема, которую вы собираетесь рассмотреть, достаточно просты, чтобы при желании вы могли проследить за тем, что делается вручную. .
Предположим, у вас есть следующая проблема классификации и вы хотите решить ее с помощью одного векторного ввода, двухэлементной сети персептронов.
{p1=[22],t1=0}{p2=[1−2],t2=1}{p3=[−22],t3=0}{p4=[−11],t4=1}
Используйте исходные веса и смещение. Обозначьте переменные на каждом этапе этого вычисления, используя число в скобках после переменной. Таким образом, выше начальные значения: W (0) и b (0).
W(0)=[00]b(0)=0
Начните с вычисления выходного сигнала перцептрона a для первого входного вектора p 1, используя начальные веса и смещение.
α = hardlim (W (0) p 1+ b (0) ) = hardlim ([00] [22] +0) = hardlim (0) = 1
Выходное значение a не равно целевому значению t 1, поэтому используйте правило перцептрона, чтобы найти возрастающие изменения весов и смещений на основе ошибки.
e = t 1− α = 0−1 = −1Δ W = e p T 1 = (- 1) [22] = [- 2−2] Δ b = e = (- 1) = - 1
Вы можете рассчитать новые веса и смещение, используя правила обновления перцептрона.
W новый = W старый + ep T = [00] + [- 2−2] = [- 2−2] = W (1) bnew = жирный + e = 0 + (- 1) = - 1 = b (1)
Теперь представьте следующий входной вектор, p 2. Выход рассчитан ниже.
α = hardlim (W (1) p 2+ b (1) ) = жесткое ограничение ([−2−2] [1-2] −1) = жесткое ограничение (1) = 1
В этом случае целью является 1, поэтому ошибка равна нулю. Таким образом, нет никаких изменений в весах или смещении, поэтому W (2) = W (1) = [−2 −2] и b (2) = b (1) = -1.
Вы можете продолжить таким же образом, представив p 3 следующим, вычисляя результат и ошибку, и внося изменения в весовые коэффициенты, смещение и т. Д. Сделав один проход через все четыре входа, вы получите значения W (4) = [−3 −1] и b (4) = 0. Чтобы определить, получено ли удовлетворительное решение, выполните один проход через все входные данные. векторы, чтобы увидеть, все ли они дают желаемые целевые значения. Это неверно для четвертого входа, но алгоритм сходится к шестому представлению входа. Окончательные значения:
W (6) = [−2 −3] и b (6) = 1.
На этом ручной расчет завершен. Теперь, как вы можете сделать это с помощью функции train
?
Следующий код определяет перцептрон.
net = perceptron;
Рассмотрим применение одного входа
p = [2; 2];
имея цель
t = [0];
Установите epochs
в 1, чтобы train
проходил через входные векторы (здесь только один) только один раз.
net.trainParam.epochs = 1; net = train(net,p,t);
Новые веса и смещения
w = net.iw{1,1}, b = net.b{1} w = -2 -2 b = -1
Таким образом, начальные веса и смещение равны 0, и после обучения только на первом векторе они имеют значения [−2 −2] и −1, как вы рассчитали вручную.
Теперь примените второй входной вектор p 2. На выходе будет 1, как это будет до тех пор, пока не будут изменены веса и смещения, но теперь цель - 1, ошибка будет 0, и изменение будет нулем. Вы можете действовать таким же образом, начиная с предыдущего результата и раз за разом применяя новый входной вектор. Но вы можете выполнять эту работу автоматически с train
.
Примените train
для одной эпохи, за один проход через последовательность всех четырех входных векторов. Начнем с определения сети.
net = perceptron; net.trainParam.epochs = 1;
Входные векторы и цели:
p = [[2;2] [1;-2] [-2;2] [-1;1]] t = [0 1 0 1]
Теперь обучите сеть с помощью
net = train(net,p,t);
Новые веса и смещения
w = net.iw{1,1}, b = net.b{1} w = -3 -1 b = 0
Это тот же результат, который вы получали вручную вручную.
Наконец, смоделируйте обученную сеть для каждого из входов.
a = net(p) a = 0 0 1 1
Выходы еще не совпадают с целевыми, поэтому вам нужно обучить сеть более чем за один проход. Попробуйте еще эпохи. Этот прогон дает среднюю абсолютную погрешность 0 после двух эпох:
net.trainParam.epochs = 1000; net = train(net,p,t);
Таким образом, сеть была обучена к моменту подачи входных данных в третью эпоху. (Как вы знаете из ручных вычислений, сеть сходится к представлению шестого входного вектора. Это происходит в середине второй эпохи, но требуется третья эпоха, чтобы обнаружить конвергенцию сети.) Окончательные веса и смещение равны
w = net.iw{1,1}, b = net.b{1} w = -2 -3 b = 1
Смоделированные выходные данные и ошибки для различных входов:
a = net(p) a = 0 1 0 1 error = a-t error = 0 0 0 0
Вы подтверждаете, что процедура обучения прошла успешно. Сеть сходится и выдает правильные целевые выходные данные для четырех входных векторов.
Функция обучения по умолчанию для сетей, созданных с помощью perceptron
, - trainc
. (Вы можете найти это, выполнив net.trainFcn
.) Эта обучающая функция применяет правило обучения перцептрона в его чистом виде, в котором отдельные входные векторы применяются индивидуально, последовательно, а поправки к весам и смещению вносятся после каждого представления входных данных. вектор. Таким образом, обучение перцептрона с помощью train
будет сходиться за конечное число шагов, если только представленная проблема не может быть решена с помощью простого перцептрона.
Функцию train
можно по-разному использовать и в других сетях. Введите help train
, чтобы узнать больше об этой базовой функции.
Ограничения и предостережения
- Сети персептронов должны быть обучены с
adapt
, который представляет входные векторы в сеть по одному и вносит поправки в сеть на основе результатов каждой презентации. - Использование
adapt
таким образом гарантирует, что любая линейно разделимая задача будет решена за конечное количество обучающих презентаций. - перцептроны также можно обучить с помощью функции
train
. - Обычно, когда
train
используется для перцептронов, он представляет входные данные в сеть пакетами и вносит поправки в сеть на основе суммы всех отдельных поправок. - К сожалению, нет доказательств того, что такой обучающий алгоритм сходится для перцептронов. По этой причине использование
train
для перцептронов не рекомендуется. - Сети персептронов имеют несколько ограничений.
- Во-первых, выходные значения перцептрона могут принимать только одно из двух значений (0 или 1) из-за передаточной функции с жестким ограничением.
- Во-вторых, перцептроны могут классифицировать только линейно разделимые наборы векторов. Если можно нарисовать прямую линию или плоскость для разделения входных векторов на их правильные категории, входные векторы линейно разделимы.
- Если векторы не разделимы линейно, обучение никогда не достигнет точки, в которой все векторы будут правильно классифицированы.
- Однако было доказано, что если векторы линейно разделимы, перцептроны, обученные адаптивно, всегда найдут решение за конечное время. Вы можете попробовать Линейно неразрывные векторы. Это показывает сложность попытки классификации входных векторов, которые не являются линейно разделимыми.
- Однако будет справедливо отметить, что сети с более чем одним персептроном могут использоваться для решения более сложных задач.
- Например, предположим, что у вас есть набор из четырех векторов, которые вы хотите классифицировать в отдельные группы, и что можно провести две линии, чтобы разделить их.
- Можно найти сеть с двумя нейронами, в которой две границы принятия решений классифицируют входные данные по четырем категориям.
Краткое описание параметров ИНС
В этом разделе дается краткое вводное нетехническое описание параметров ИНС. Более подробно математические описания параметров и процесса обучения будут рассмотрены в следующих статьях.
Скорость обучения
- Скорость обучения определяет величину поправочного члена, который применяется для корректировки весов нейронов во время обучения.
- Небольшие значения скорости обучения увеличивают время обучения, но, как правило, уменьшают вероятность выхода за рамки оптимального решения.
- В то же время они увеличивают вероятность застревания на локальных минимумах.
- Большие значения скорости обучения могут обучать сеть быстрее, но могут привести к тому, что обучение вообще не будет происходить.
- Скорость адаптивного обучения варьируется в зависимости от количества генерируемой ошибки.
- Чем больше ошибка, тем меньше значения и наоборот. Следовательно, если ИНС движется к оптимальному решению, она будет ускоряться.
- Соответственно, он будет замедляться при отклонении от оптимального решения.
Импульс
- Значение импульса определяет, сколько из предыдущего корректирующего члена следует запомнить и продолжить в текущем обучении.
- Чем больше значение импульса, тем больше внимания уделяется текущему условию коррекции и тем меньше - предыдущему условию.
- Он служит сглаживающим процессом, который «тормозит» процесс обучения от движения в нежелательном направлении.
Входной шум
Случайный шум используется для возмущения поверхности ошибок нейронной сети, чтобы вывести ее из локальных минимумов. Это также помогает ИНС обобщать и избегать подгонки кривой.
Тренировочные и тестовые допуски
Допуск на обучение - это степень точности, которую сеть должна достичь на этапе обучения в наборе обучающих данных. Допуск тестирования - это точность, которая будет определять результат прогнозирования ИНС на наборе тестовых данных.
Преимущества
- Главное преимущество ИНС - параллельная обработка. Это делает его более полезным, чем линейные программы.
- Из-за их параллельной структуры обработки любой сбой в одном нейронном элементе не повлияет на остальной процесс.
- Нейронные сети применимы к любому приложению и могут решить любую сложную задачу.
- Реализуя соответствующие алгоритмы обучения, ИНС можно заставить обучаться без перепрограммирования.
Недостатки
- Вся параллельная обработка требует огромной вычислительной мощности и времени.
- Перед практическим внедрением требуется период «обучения».
Применение ИНС
Двумя важными областями, в которых ИНС обладают огромным потенциалом применения, являются обработка речи и изображений.
Приложения в речи
- Классификация гласных
- Распознавание гласно-согласных сегментов
- Распознавание гласных и согласных звуков в индийских языках
- Nettalk
- Фонетическая пишущая машинка
Приложения в обработке изображений
- Распознавание символов (используется на Олимпийских играх)
- Распознавание почерка
- Сегментация изображения
- Классификация и сегментация текстуры