Студопедия — Моделирование персептрона
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Моделирование персептрона






Рассмотрим однослойный персептрон с одним двухэлементным вектором входа, значения элементов которого изменяются в диапазоне от -2 до 2:

net = newp([-2 2; -2 2], 1); % Создание персептрона net.

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

net.IW{1, 1}= [-1 1];

net.b {1} = [1];

В этом случае разделяющая линия (см. рис.2.2) имеет вид

L: -p1+p2+l =0

Структурная схема модели персептрона показана на рис. 2.4.

 

Рис. 2.4. Структурная схема модели персептрона

 

Теперь определим, как откликается сеть на входные векторы р1 и р2, расположенные по разные стороны от разделяющей линии:

p1 = [1; 1];

al = sim(net, pl) % Моделирование сети net с входным вектором р1

al = 1

р2 = [1; -1];

а2 = sim(net, p2)% Моделирование сети net с входным вектором р2

а2 = 0

Персептрон правильно классифицировал эти два вектора.

Заметим, что можно было бы ввести последовательность двух векторов в виде массива ячеек и получить результат также в виде массива ячеек:

% Последовательность двух векторов в виде массива ячеек

р3 = {[1; 1] [1; -1]};

а3 = sim(net, p3) %Моделирование сети net при входном сигнале р3

а3 = [1] [0]

Инициализация параметров. Для однослойного персептрона в качестве параметров нейронной сети в общем случае выступают веса входов и смещения. Допустим, что создается перcептрон с двухэлементным вектором входа и одним нейроном:

net = newp([-2 2; -2 2], 1);

Запросим характеристики весов входа:

net. Inputweights {1, 1}

ans =

delays: 0

initFcn: 'initzero'

learn: 1

learnFcn: 'learnp'

learnParam: [ ]

size: [1 2]

userdata: [1xl struct]

weightFcn: ‘dotprod’

Из этого перечня следует, что в качестве функции инициализации по умолчанию используется функция initzero, которая присваивает весам входа нулевые значения. В этом можно убедиться, если извлечь значения элементов матрицы весов и смещения:

wts = net.IW{l, l}

wts =0 0

bias = net.b{l}

bias =0

Теперь переустановим значения элементов матрицы весов и смещения:

net.IW{1, 1} = [3, 4]

net.b{1} = 5

wts =3 4

bias = 5

Для того, чтобы вернуться к первоначальным установкам параметров персептрона, и предназначена функция init:

net = init(net);

wts

wts =0 0

bias

bias = 0

Можно изменить способ, каким инициализируется персептрон с помощью функции init. Для этого достаточно изменить тип функций инициализации, которые применяются для установки первоначальных значений весов входов и смещений. Например, воспользуемся функцией инициализации rands, которая устанавливает случайные значения параметров персептрона.

% Задать функции инициализации весов и смещений

net.inputweights{1, 1}.initFcn = 'rands';

net.biases{l}.initFcn = 'rands';

% Выполнить инициализацию ранее созданной сети с новыми функциями

net = init(net);

wts = net.IW{l, l}

wts = -0.96299 0.64281

bias = net.b{1}

bias = -0.087065

Видно, что веса и смещения выбраны случайным образом.

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

При обучении с учителем задается множество примеров требуемого поведения сети, которое называется обучающим множеством

{p1, t1}, {p2, t2, },..., {pQ, tQ}. (2.3)

Здесь p1, р2,..., рQ - входы персептрона, a t1, t2,..., tQ - требуемые (целевые) выходы.

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

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

При обучении без учителя веса и смещения изменяются только в связи с изменениями входов сети. В этом случае целевые выходы в явном виде не задаются. Главное качество, делающее обучение без учителя привлекательным, - это его самоорганизация, обусловленная, как правило, использованием обратных связей. Что касается процесса настройки параметров сети, то его организуют с использованием одних и тех же процедур. Большинство алгоритмов обучения без учителя применяется при решении задач кластеризации данных, когда необходимо разделить входы на конечное число классов.

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

Правила настройки. Настройка параметров (обучение) персептрона осуществляется с использованием обучающего множества. Обозначим через р вектор входов персептрона, а через t - вектор соответствующих желаемых выходов. Цель обучения – уменьшить погрешность е = а - t, которая равна разности между реакцией нейрона а и вектором цели t.

Правило настройки (обучения) персептрона должно зависеть от величины погрешности е. Вектор цели t может включать только значения 0 и 1, поскольку персептрон с функцией активации hardlim может генерировать только такие значения.

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

1. Для данного вектора входа выход персептрона правильный (а=t и е = t - а= 0), и тогда вектор весов w не претерпевает изменений.

2. Выход персептрона равен 0, а должен быть равен 1 (а = 0, t=l и е=t = t-0=l). В этом случае вход функции активации wTp отрицательный и его необходимо скорректировать. Добавим к вектору весов w вектор входа р, и тогда произведение

(wT+ рT) р = wTp + рTр

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

3. Выход нейрона равен 1, а должен быть равен 0 = 0, t = 1 и е = t - а= -1). В этом случае вход функции активации wTp положительный и его необходимо скорректировать. Вычтем из вектора весов w вектор входа р, и тогда произведение

(wT — рT) р = wTp – рTр

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

Описанные соотношения положены в основу алгоритма настройки параметров персептрона, который реализован ППП Neural Network Toolbox в виде М-функции learnp. Каждый раз при выполнении функции learnp будет происходить перенастройка параметров персептрона. Доказано, что если решение существует, то процесс обучения персептрона сходится за конечное число итераций. Если смещение не используется, функция leamp ищет решение, изменяя только вектор весов w. Это приводит к нахождению разделяющей линии, перпендикулярной вектору w, которая должным образом разделяет векторы входа.

Рассмотрим простой пример персептрона с единственным нейроном и двухэлементным вектором входа:

net = newp([-2 2; -2 2], 1);

Определим смещение b равным 0, а вектор весов w равным [1 -0.8]:

net.b{1} = 0;

W = [1 -0.8];

net.IW{l, l} = w;

Обучающее множество зададим следующим образом:

р = [1; 2];

t = [1];

Моделируя персептрон, рассчитаем выход и ошибку на первом шаге настройки (обучения):

а = sim(net.p)

а = 0

e = t-a

e = 1

Наконец, используя М-функцию настройки параметров learnp, найдем требуемое изменение весов:

dw = learnp(w, p, [ ], [ ], [ ], [ ], е, [ ], [ ], [ ])

dw = 1 2

Тогда новый вектор весов примет вид:

w = w + dw

w = 2.0000 1.2000

Заметим, что описанные выше правило и алгоритм настройки (обучения) персептрона гарантируют сходимость за конечное число шагов для всех задач, которые могут быть решены с использованием персептрона. Это в первую очередь задачи классификации векторов, которые относятся к классу линейно отделимых, когда все пространство входов можно разделить на две области некоторой прямой линией, в многомерном случае - гиперплоскостью.

Демонстрационный пример nnd4pr позволяет выполнить многочисленные эксперименты по настройке (обучению) персептрона для решения задачи классификации входных векторов.

Для настройки (обучения) персептрона можно воспользоваться также М-функцией train. В этом случае используется все обучающее множество, и настройка параметров сети выполняется не после каждого прохода, а в результате всех проходов обучающего множества. К сожалению, не существует доказательства того, что такой алгоритм обучения персептрона является сходящимся. Поэтому использование М-функции train для обучения персептрона не рекомендуется.

Нейронные сети на основе персептрона имеют ряд ограничений. Во-первых, выход персептрона может принимать только одно из двух значений (0 или 1); во-вторых, персептроны могут решать задачи классификации только для линейно отделимых наборов векторов. Если с помощью прямой линии или гиперплоскости в многомерном случае можно разделить пространство входов на две области, в которых будут расположены векторы входа, относящиеся к различным классам, то векторы входа считаются линейно отделимыми. Если векторы входа линейно отделимы, то доказано, что при использовании процедуры адаптации задача классификации будет решена за конечное время. Если векторы входа линейно неотделимы, то процедура адаптации не в состоянии классифицировать все векторы должным образом. Демонстрационная программа demop6 иллюстрирует тщетность попытки классифицировать векторы входа, которые линейно неотделимы.

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

Отметим еще одну особенность процесса обучения персептрона. Если длина некоторого вектора входа намного больше или меньше длины других векторов, то для обучения может потребоваться значительное время. Это обусловлено тем, что алгоритм настройки связан с добавлением или вычитанием входного вектора из текущего вектора весов. Таким образом, присутствие вектора входа с очень большими или малыми элементами может привести к тому, что потребуется длительное время для настройки параметров. Демонстрационная программа demop4 поясняет, как влияет выброс длины вектора на продолжительность обучения.

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

. (2.4)

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

Решение состоит в том, чтобы нормировать входные данные так, чтобы воздействие любого вектора входа имело примерно равный вклад:

. (2.5)

Нормированное правило обучения персептрона реализуется М-функцией learnpn. Этот алгоритм требует несколько большего времени, но значительно сокращает количество циклов обучения, когда встречаются выбросы векторов входа. Демонстрационная программа demop5 иллюстрирует это правило обучения.

Следует отметить, что основное назначение персептронов - решать задачи классификации. Персептроны великолепно справляются с задачей классификации линейно отделимых векторов; сходимость гарантируется за конечное число шагов. Длительность обучения чувствительна к выбросам длины отдельных векторов, но и в этом случае решение может быть построено. Однослойный персептрон может классифицировать только линейно отделимые векторы. Возможные способы преодолеть эту трудность предполагают либо предварительную обработку с целью сформирования линейно отделимого множества входных векторов, либо использование многослойных персептронов. Можно также применить другие типы нейронных сетей, например линейные сети или сети с обратным распространением, которые могут выполнять классификацию линейно неотделимых векторов входа.







Дата добавления: 2014-11-10; просмотров: 1481. Нарушение авторских прав; Мы поможем в написании вашей работы!



Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

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

РЕВМАТИЧЕСКИЕ БОЛЕЗНИ Ревматические болезни(или диффузные болезни соединительно ткани(ДБСТ))— это группа заболеваний, характеризующихся первичным системным поражением соединительной ткани в связи с нарушением иммунного гомеостаза...

Решение Постоянные издержки (FC) не зависят от изменения объёма производства, существуют постоянно...

Медицинская документация родильного дома Учетные формы родильного дома № 111/у Индивидуальная карта беременной и родильницы № 113/у Обменная карта родильного дома...

Основные разделы работы участкового врача-педиатра Ведущей фигурой в организации внебольничной помощи детям является участковый врач-педиатр детской городской поликлиники...

Ученые, внесшие большой вклад в развитие науки биологии Краткая история развития биологии. Чарльз Дарвин (1809 -1882)- основной труд « О происхождении видов путем естественного отбора или Сохранение благоприятствующих пород в борьбе за жизнь»...

Studopedia.info - Студопедия - 2014-2024 год . (0.011 сек.) русская версия | украинская версия