Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Функции активации




Имя функции Название функции Обозначение функции Аналитическое выражение Имя файла-сценария
функции производной
hardlims симметричная функция с жесткими ограничениями hardlimsfile
purelin линейная функция purelinfile
poslin положительная линейная функция poslinfile
satlin линейная функция с ограничениями satlinfile
satlins симметричная линейная функция с ограничениями satlinsfile
radbas радиальная базисная функция radbasfile
tribas треугольная функция tribasfile
logsig логистическая функция logsigfile
tansig гиперболическая тангенциальная функция tansigfile

В результате выполнения в окне Command Window отобразятся следующие значения:

name =
Competitive

dname =

''

inrange =
-Inf Inf

outrange =
0 1

2. Построить гистограммы для вектора входа и для вектора выхода, используя слой, состоящий из четырех нейронов. Для этого нужно выполнить из командной строки MATLAB следующие команды:

n = [0; 1; -0.5; 0.5]; % вектор входа нейрона;
a = compet(n); % вычисление функции активации;
subplot(2,1,1) % подокно для вектора входа;
bar(n) % изображение столбцов гистограммы;
ylabel('n') % метка оси ординат;
subplot(2,1,2) % подокно для вектора входа;
bar(a) % изображение столбцов гистограммы;
ylabel('a') % метка оси ординат.

В результате выполнения откроется окно Figure No. 1, в котором будут отображены две гистограммы – верхняя для вектора входа нейрона, нижняя – для вектора выхода (рис. 1.8).

3. Последовательность команд, которые были введены в командную строку MATLAB при выполнении пп. 1, 2 примера, оформить в виде файла-сцена­рия и сохранить в текущей папке под именем competfile.m. Проверить работоспособность созданного файла-сценария.

Упражнение 1.2. Выполнить задания, аналогичные тем, что были выполнены в примере 1.2, для функции активации с нежестким максимумом softmax. Последовательность команд оформить в виде файла-сценария softmaxfile.m. Проверить работоспособность созданного файла-сценария.

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

Решение. Исходя из условий задачи, математическая модель нейрона должна иметь вид

, ,

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

Для определения весового коэффициента и смещения последовательно положим и . Если , то или (см. пример 1.1). Если же , то или .

Таким образом, мы получили систему неравенств и . Этим неравенствам удовлетворяет бесконечное множество пар чисел , и из этого множества можно выбрать любую пару, например , .

Проверим правильность решения задачи в MATLAB. Для этого выполним из командной строки MATLAB следующую последовательность команд:

w = -1; b = 0;
a = hardlim(w*0+b)
a = hardlim(w*1+b)

В результате выполнения в окне Command Window отобразятся следующие значения:

a =
1

a =
0

Таким образом, мы убедились в том, что при наборе , параметров нейрона действительно происходит инвертирование входного сигнала .

Упражнение 1.3. Для нейрона с векторным входом размерности и функцией активации hardlim подобрать вектор весовых коэффициентов и смещение таким образом, чтобы нейрон выполнял функции:

1) логического умножения И входных сигналов;

2) логического сложения ИЛИ входных сигналов.

Упражнение 1.4. Для нейрона с векторным входом размерности и функцией активации hardlim подобрать вектор весовых коэффициентов и смещение таким образом, чтобы классифицировать входные наборы на два класса:

1) – нулевой класс, – первый класс;

2) – нулевой класс, – первый класс.

Пример 1.4. Реализовать нейрон с входом , весовым коэффициентом , смещением и функцией активации hardlim в системе математического моделирования Simulink. Выполнить тестирование построенной модели Simulink, используя данные из примера 1.1.

Решение. Для решения поставленной задачи нужно выполнить следующие действия:

1. Подготовить систему Simulink к работе. Для этого нужно выполнить следующие действия:

1.1. На панели инструментов рабочего стола MATLAB нажать кнопку (Simulink). В результате выполнения откроется окно обозревателя библиотеки Simulink с именем Simulink Library Browser (рис. 1.9).

1.2. На панели инструментов окна Simulink Library Browser нажать кнопку (Create a new model). В результате выполнения откроется окно модели Simulink с именем untitled, т. е. без имени (рис. 1.10).

1.3. Сохранить файл модели в рабочей папке под именем NeuronMdl, нажав на панели инструментов окна untitled
кнопку (Save) или комбинацию клавиш Ctrl + S и в открывшемся диалоговом окне Save As выбрав нужную папку и указав имя файла NeuronMdl.

2. Реализовать математическую модель нейрона в виде функциональной схемы модели Simulink. Для этого выполнить следующие действия:

2.1. Реализовать вход нейрона с помощью блока Constant. Для этого выполнить следующие действия:

2.1.1. Перейти в окно обозревателя Simulink Library Browser.

2.1.2. В поле (Find block) ввести имя искомого блока, т. е. Constant.

2.1.3. Нажать клавишу Enter. В результате выполнения на правой панели обозревателя библиотеки отобразится блок Constant, и его имя будет отображено на синем фоне[1].

2.1.4. Скопировать блок Constant из окна обозревателя Simulink Library Browser в окно модели NeuronMdl с помощью левой кнопки мыши. В результате выполнения в окне модели появится скопированный блок (рис. 1.11).

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

2.1.6. Задать значение входа нейрона, причем в качестве значения входа будем использовать значение из примера 1.1. Для этого нужно выполнить двойной щелчок на изображении блока p. В результате выполнения откроется диалоговое окно параметров блока (рис. 1.12).

В поле Constant value диалогового окна ввести значение [-0.7; 0.0; 0.8], сбросить флажок Interpret vector parameters as 1-D и нажать кнопку OK или клавишу Enter. В результате выполнения диалоговое окно закроется, после чего следует увеличить геометрические размеры блока p, растянув его за любой из четырех углов. В результате выполнения блок p примет вид, представленный на рис. 1.13.

2.2. Реализовать весовой коэффициент нейрона с помощью блока Constant. Для этого выполнить следующие действия:

2.2.1. Навести указатель мыши на блок p, нажать правую кнопку мыши и, не отпуская ее, переместить указатель в любое свободное место в окне модели. В результате выполнения будет создана копия блока p с именем p1.

2.2.2. Переименовать блок p1, назвав его W (см. п. 2.1.5 примера).

2.2.3. Задать значения параметра блока W, равное 1[2] (см. п. 2.1.6 примера).

2.3. Реализовать смещение нейрона с помощью блока Constant, положив значение параметра блока равным нулю. Для этого нужно повторить все действия, выполненные в п. 2.2 примера (разумеется, с точностью до имени и параметра нового блока).

2.4. Реализовать вычисление значения выражения . Для этого выполнить следующие действия:

2.4.1. Скопировать из библиотеки Simulink в окно модели NeuronMdl блоки Product и Sum (см. пп. 2.1.1 – 2.1.4 примера).

2.4.2. Переименовать блок Product, назвав его W*p.

2.4.3. Расположить блоки в окне модели NeuronMdl, как показано на рис. 1.14.

2.4.4. Соединить выход блока W с первым (верхним) входом блока W*p. Для этого нужно навести указатель мыши на выход блока W, в результате чего указатель должен приобрести форму креста . Нажать левую кнопку мыши и, не отпуская ее, переместить указатель к первому входу блока W*p. Кнопку мыши можно будет отпустить, как только указатель примет форму двойного креста [3]. В результате выполнения выход блока W и первый вход блока W*p будут соединены стрелкой[4] (рис. 1.15).

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

2.5. Реализовать функцию активации hardlim с помощью блока Relay. Для этого выполнить следующие действия:

2.5.1. Скопировать из библиотеки Simulink в окно модели NeuronMdl блок Relay.

2.5.2. Переименовать блок Relay, назвав его hardlim.

2.5.3. Открыть диалоговое окно параметров блока hardlim и в полях Switch on point и Switch off point задать значение 0[5]. Значения, заданные по умолчанию в полях Output when on и Output when off, следует оставить без изменения, поскольку именно эти значения и есть два возможных дискретных состояния функции активации hardlim.

2.5.4. Соединить выход блока Sum с входом блока hardlim.

2.6. Скопировать из библиотеки Simulink в окно модели NeuronMdl блок Display для отображения значения выходного параметра нейрона и соединить выход блока hardlim с входом блока Display (рис. 1.16).

3. Задать параметры расчета модели. Для этого выполнить следующие действия:

3.1. Выполнить из окна модели NeuronMdl команду меню Simulation ► Simulation parameters или нажать комбинацию Ctrl + E. В результате выполнения откроется одноименное диалоговое окно, причем в этом окне активной будет являться вкладка Solver (рис. 1.17, а).

3.2. На вкладке Solver задать конечное время расчета равным нулю, введя это значение в поле Stop time.

3.3. Перейти в окне Simulation parameters на вкладку Workspace I/O (рис. 1.17, б) и сбросить все флажки, если они там были установлены.

3.4. Закрыть диалоговое окно Simulation parameters, нажав кнопку OK.

 


а)


б)

 


Рис. 1.17. Диалоговое окно для задания параметров расчета модели
а) параметры решателя, б) параметры ввода-вывода

4. Провести тестирование модели. Для этого выполнить следующие действия:

4.1. Нажать кнопку (Start simulation) на панели инструментов окна модели NeuronMdl. В результате выполнения произойдет расчет модели и на экране виртуального дисплея Display отобразится значение выходного сигнала нейрона.

4.2. Растянуть блок Display по вертикали, чтобы на его экране отобразились все значения векторного сигнала (рис. 1.18).

4.3. Сравнить результаты, отображенные на экране виртуального дисплея Display с соответствующими результатами, полученными при выполнении примера 1.1. Сравнив, убеждаемся, что они совпадают. Следовательно, реализация нейрона в виде модели Simulink проведена корректно.

5. Реализовать в модели NeuronMdl построение графика функции активации hardlim. Для этого выполнить следующие действия:

5.1. Скопировать из библиотеки Simulink в окно модели NeuronMdl блоки Clock и Scope.

5.2. Удалить блоки p и Display. Для этого нужно выделить их с помощью левой кнопки мыши (при выделении второго по очереди блока следует удерживать нажатой клавишу Shift), а затем нажать клавишу Delete. Соединительные линии, ведущие к удаленным блокам, удалять не нужно.

5.3. Блоки Clock и Scope переместить на позиции удаленных блоков p и Display соответственно. Для этого нужно навести указатель мыши на перемещаемый блок, нажать левую кнопку мыши и, не отпуская ее, переместить указатель таким образом, чтобы выход блока совместился с окончанием соответствующей соединительной линии. После этого отпустить кнопку мыши. В результате выполнения модель NeuronMdl, примет вид, изображенный на рис. 1.19.

5.4. Переименовать блок Clock, назвав его p.

5.5. Открыть диалоговое окно параметров блока p и задать в поле Decimation значение 1. Это означает, что на экране виртуального осциллографа Scope будут отображаться результаты вычислений на каждом шаге расчета модели. Затем закрыть диалоговое окно параметров нажатием кнопки OK.

5.6. Открыть окно параметров виртуального осциллографа Scope (рис. 1.20, а).

5.7. На панели инструментов окна Scope нажать кнопку (Parameters). В результате выполнения откроется диалоговое окно параметров виртуального осциллографа.

5.8. В открывшемся диалоговом окне перейти на вкладку Data history (рис. 1.20, б).

 


а)


б)

 


Рис. 1.20. Окна виртуального осциллографа
а) окно для отображения графиков, б) диалоговое окно параметров,
открытое на вкладке Data history

5.9. Сбросить флажки Limit data points to last и Save data to workspace, а затем закрыть диалоговое окно нажатием кнопки OK.

5.10. Открыть диалоговое окно параметров расчета модели и перейти в нем на вкладку Solver (см. рис. 1.17, а).

5.11. В окне Simulation Parameters задать параметры расчета модели в соответствии со значениями величины n из примера 1.1:

в поле Start time начальное время расчета, равное -5;

в поле Stop time конечное время расчета, равное 5;

из списка Type выбрать элемент Fixed-step (с постоянным шагом расчета); в результате выполнения диалоговое окно Simulation Parameters на вкладке Solver изменит свой внешний вид;

в поле Fixed step size величину шага расчета модели, равную 0.01.

Затем закрыть диалоговое окно Simulation Parameters нажатием кнопки OK.

5.12. Выполнить расчет модели (см. п. 4.1 примера).

5.13. Открыть окно виртуального осциллографа Scope. На экране осциллографа будет отображен график функции активации hardlim (рис. 1.21).

5.14. Сравнить только что построенный график с соответствующим графиком, построенным при выполнении примера 1.1. Сравнивая рис. 1.7 и 1.21, видим, что графики совпадают. Это еще раз подтверждает корректность реализации нейрона в виде модели Simulink.

6. Создать библиотеку для хранения блоков, реализующих функции активации нейронов, и поместить в нее блок hardlim. Для этого выполнить следующие действия:

6.1. Выполнить команду меню File ► New ► Library в окне модели NeuronMdl. В результате выполнения откроется окно библиотеки блоков, напоминающее окно модели Simulink, но с укороченными строкой меню и панелью инструментов. Кроме того, в титульной строке окна библиотеки присутствует слово Library (рис. 1.22).

6.2. Скопировать из окна модели NeuronMdl в открывшееся окно библиотеки блок hardlim.

6.3. Сохранить созданную библиотеку в текущей папке под именем TransferFunctions.

7. Реализовать модель нейрона в виде подсистемы. Для этого выполнить следующие действия:

7.1. Выделить в окне модели NeuronMdl все блоки, кроме блоков p и Scope. Выделение нужно выполнять не поэлементно, а прямоугольным блоком, чтобы захватить не только блоки, но и смежные с ними соединительные линии (рис. 1.23).

7.2. Выполнить в ок­не модели NeuronMdl команду меню Edit ► Create Subsystem [6]. В результате выполнения вместо выделенных блоков в окне модели NeuronMdl отобразится единственный блок Subsystem. Он имеет по одному входному и выходному порту, причем на входной порт подается сигнал с выхода блока p, а с выходного порта – на вход блока Scope (рис. 1.24). Это как раз те самые блоки, которые не были выделены при выполнении предыдущего пункта примера.

7.3. Двойным щелчком открыть блок Subsystem. В отличие от всех использованных ранее блоков Simulink, в данном случае открывается не диалоговое окно параметров, а внутреннее содержание блока (рис. 1.25). Этим и отличаются блоки-подсистемы от обычных блоков Simulink[7]. Внутрь подсистемы попали все блоки, выделенные при выполнении п. 7.1 примера, и те соединительные линии, которые полностью попали в область выделения. Линии же, идущие с выхода блока p и на вход блока Scope, в выделенную область попали лишь частично. Поэтому они присутствуют внутри подсистемы, но вместе с ними появились два новых блока – входной порт In1 и выходной порт Out1.

7.4. Переименовать порты In1 и Out1, назвав их p и a соответственно[8].

7.5. Выполнить команду меню View ► Go to parent для возврата на более высокий уровень иерархии модели. В результате снова откроется окно модели NeuronMdl, причем имена входного и выходного портов блока Subsystem заменятся на имена, введенные при выполнении предыдущего пункта примера.

7.6. Переименовать блок Subsystem, назвав его Simple neuron.

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

8. Выполнить маскирование подсистемы Simple neuron для создания возможности задания ее параметров с помощью диалогового окна. Для этого выполнить следующие действия:

8.1. Выделить блок Simple neuron и выполнить команду меню Edit ► Mask subsystem [9]. В результате выполнения откроется диалоговое окно Mask editor, называемое редактором маски (рис. 1.26).

8.2. В открывшемся окне редактора маски перейти вкладку Parameters (см. рис. 1.26) и описать параметры маскируемой подсистемы. Эти параметры будут отображаться в диалоговом окне и могут использоваться в любых блоках, из которых состоит подсистема[10]. Параметрами нейрона являются передаточная функция и смещение , которые мы и опишем в маске[11]. Для описания параметров подсистемы выполнить следующие действия:

8.2.1. Нажать кнопку (Add) в окне редактора маски (см. рис. 1.26). В результате выполнения в списке параметров отобразится новая запись, состоящая из пяти полей.

8.2.2. В поле Prompt ввести текст Weighting coefficients (W)[12]. Этот текст будет играть роль краткого комментария к элементу интерфейса диалогового окна, который будет отождествляться с весовым коэффициентом нейрона.

8.2.3. В поле Variable ввести имя переменной, которой будет обозначаться весовой коэффициент. Естественно сохранить то обозначение, которое неоднократно использовалось ранее, т. е. обозначение W.

8.2.4. Из списка Type выбрать тип edit, который представляет собой поле для ввода. Как правило, этот тип параметра предлагается по умолчанию[13].

8.2.5. Установить флажок Evaluate, поскольку весовой коэффициент будет использоваться при вычислениях.

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

8.2.7. Повторить выполнение пп. 8.2.1 – 8.2.6 для описания смещения нейрона. В качестве комментария использовать текст Bias (b). Если был задан лишний параметр маски, то его можно удалить, нажав кнопку (Delete). Для того чтобы поменять местами два параметра, то для этого нужно нажать кнопку (Move up) или кнопку (Move down).

8.3. В окне редактора маски перейти на вкладку Documentation для выполнения документирования маскируемой подсистемы. Введенная здесь информация будет отображаться в диалоговом окне, а также может быть получена в режиме контекстной справки по данному блоку. Для документирования подсистемы выполнить следующие действия:

8.3.1. В поле Mask type ввести название блока Simple neuron.

8.3.2. В поле Mask description ввести следующий текст:

Model of a simple neuron
a = f(W*p+b),
where a – output of a neuron;
f – transfer function Hard Limit;
W – weighting coefficients;
p – input of a neuron;
b – bias of a neuron.

8.3.3. Скопировать только что введенный текст в поле Mask help.

8.4. Нажать кнопку Apply для подтверждения всех внесенных в маску подсистемы изменений[14].

8.5. Нажать кнопку OK. В результате выполнения все введенные параметры маски будут применены к подсистеме и редактор маски закроется[15].

8.6. Задать параметры нейрона в диалоговом окне маскируемой подсистемы. Для этого выполнить следующие действия:

8.6.1. Навести указатель мыши на блок Simple neuron и выполнить двойной щелчок. В результате выполнения откроется диалоговое окно параметров этого блока. В этом окне отображены название блока, краткое описание его назначения, имена параметров и поля для ввода значений этих параметров, а также четыре стандартные кнопки (рис. 1.27).

8.6.2. В поле Weighting coefficients ввести значение 1, а в поле Bias – значение 0[16].

8.6.3. Нажать кнопку Apply для подтверждения внесенных изменений.

8.6.4. Нажать кнопку Help для вызова контекстной подсказки. В результате выполнения откроется страница справочной системы, посвященной этому блоку (рис. 1.28).

8.6.5. Закрыть диалоговое окно, нажав кнопку OK или кнопку Cancel.

8.7. Отредактировать внутреннее содержание блока Simple neuron. Для этого выполнить следующие действия:

8.7.1. Выделить блок Simple neuron и выполнить команду меню Edit ► Look under mask [17]. В результате выполнения откроется внутреннее содержание блока Simple neuron (см. рис. 1.25).

8.7.2. Открыть диалоговое окно параметров блока W и в поле Constant value ввести значение W[18]. Затем закрыть диалоговое окно, нажав кнопку OK.

8.7.3. Повторить выполнение предыдущего пункта для блока b.

8.7.4. Перейти на более высокий уровень иерархии модели, выполнив команду меню View ► Go to parent.

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

Упражнение 1.5. Реализовать нейрон с входом , весовым коэффициентом , смещением и функциями активации из табл. 1.1 в системе математического моделирования Simulink. Реализацию функций активации нейрона проводить на основе стандартных блоков Simulink, указанных в столбце Стандартные блоки в табл. 1.2. Реализацию моделей Simulink проводить на основе модели NeuronMdl (имена новых моделей указаны в столбце Имя тестовой модели в табл. 1.2). Выполнить тестирование построенных моделей Simulink, используя те же данные, которые были использованы при выполнении упражнения 1.1. Новые блоки, реализующие функции активации, сохранить в созданном ранее библиотечном файле TransferFunctions.

Таблица 1.2

Функция активации нейрона Стандартные блоки Имя тестовой модели
hardlims Relay HardlimsMdl
purelin Gain PurelinMdl
poslin Saturation PoslinMdl
satlin Saturation SatlinMdl
satlins Saturation SatlinsMdl
radbas Gain, Math Function RadbasMdl
tribas Abs, Constant, If, If Action Subsystem, Sum TribasMdl
logsig Constant, Gain, Math Function, Sum LogsigMdl
tansig Constant, Gain, Math Function TansigMdl

Пример 1.5. Изменить блок Simple neuron в модели NeuronMdl таким образом, чтобы можно было осуществлять выбор функции активации.




Поделиться с друзьями:


Дата добавления: 2015-06-27; Просмотров: 861; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.115 сек.