A =
[3x3 double] 'Anne Smith'
[3.0000+ 7.0000i] [1x21 double]
2. Для создания массива ячеек с помощью индексации содержимого ввести следующие команды:
>> A{1, 1} = [1 4 3; 0 5 8; 7 2 9];
>> A{1, 2} = 'Anne Smith';
>> A{2, 1} = 3+7i;
>> A{2, 2} = -pi:pi/10:pi
A =
[3x3 double] 'Anne Smith'
[3.0000+ 7.0000i] [1x21 double]
3. Для отображения содержимого ячеек использовать функцию celldisp:
>> celldisp(A)
A{1,1} =
1 4 3
0 5 8
7 2 9
A{2,1} =
3.0000 + 7.0000i
A{1,2} =
Anne Smith
A{2,2} =
Columns 1 through 9
-3.1416 -2.8274 -2.5133 -2.1991 -1.8850 -1.5708 -1.2566
-0.9425 -0.6283
Columns 10 through 18
-0.3142 0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 2.1991
Columns 19 through 21
2.5133 2.8274 3.1416
Задание 2. Создать массив структур, содержащих имя, фамилию и год рождения.
1. Для создания массива структур ввести следующие команды:
>> S.name = 'Ed';
>> S.fam = 'Plum';
>> S.year = 1979
S =
name: 'Ed'
fam: 'Plum'
year: 1979
>> S(2).name = 'Tony';
>> S(2).fam = 'Miller';
>> S(2).year = 1980
S =
1x2 struct array with fields:
name
fam
year
>> S(3) = struct('name','Jerry','fam','Garcia','year',1981)
S =
1x3 struct array with fields:
name
fam
year
Задание 3. Разработать файл-сценарий для решения предыдущей задачи с возможностью ввода значений пользователем.
1. Запустить редактор m-файлов и ввести следующую программу:
%Ввод структуры S
%Структура имеет три поля:
%имя name, фамилию fam и год рождения year
disp('Введите поля структуры');
S.name=input('name = ');
S.fam=input('fam = ');
S.year=input('year = ');
disp(S)
2. Сохранить файл под именем «strdialog.m».
3. Выполнить в командном окне MATLAB следующую команду:
>> strdialog
Обратите внимание на то, что xmin и xmax объявляются в теле сценария и объявлять глобальные переменные не требуется.
Задание 4. На системном диске, где установлена математическая система MATLAB, найти папки инструментального пакета по нейронным сетям Neural Network Toolbox (NNT, или ПППНС) и скопировать в рабочий каталог все методы класса network, обеспечивающие создание, инициализацию, обучение, моделирование и визуализацию нейронной сети. В рабочем каталоге найти М-файл конструкторов класса и проанализировать их структуру.
Задание 5. Запустить на пошаговое исполнение конструктор сети network, который не имеет параметров, и проследить последовательность действий по формированию объекта класса network и заданию значений по умолчанию для его атрибутов.
Задание 6. Создать объект класса нейронной сети network, исполнив команду
net = network,
и вывести на экран все поля и все ячейки этого объекта, используя функцию celldisр.
Задание 7. Создать объект класса нейронной сети network, исполнив команду
net = network(2,3,[1;0;0], [11;00;00], ...
[000;100;010], [001], [001],
и вывести на экран все поля и все ячейки этого объекта, используя функцию celldisр.
Задание 8. Исполнив команду gensim(net), получить на экране структурную схему созданной сети, раскрыть её блоки с помощью двойного щелчка мыши и выяснить смысл параметров конструктора network. Изменяя значения параметров, проследить их влияние на элементы структурной схемы.
Лабораторная работа № 3
Модели искусственного нейрона
Цель работы: изучение основных моделей искусственного нейрона, их математического описания, а также функционального и структурного графических представлений, исследование функций активации и рассмотренных моделей нейронов с помощью инструментального пакета имитационного моделирования Simulink системы MATLAB.
Теоретические сведения
Простой нейрон
Элементарной ячейкой нейронной сети является нейрон.
Структура нейрона с единственным скалярным входом показана
на рис. 3.1,а.
а б
Рис. 3.1. Простой нейрон
Скалярный входной сигнал р умножается на скалярный весовой коэффициент w, и результирующий взвешенный вход w*p является аргументом функции активации нейрона, которая порождает скалярный выход а.
Нейрон, показанный на рис. 3.1,б, дополнен скалярным смещением b. Смещение суммируется со взвешенным входом w*p и приводит к сдвигу аргумента функции на величину b. Действие смещения можно свести к схеме взвешивания, если представить что нейрон имеет второй входной сигнал со значением, равным 1. Вход n функции активации нейрона по-прежнему остается скалярным и равным сумме взвешенного входа и смещения b. Эта сумма является аргументом функции активации f; выходом функции активации является сигнал а. Константы w и b являются скалярными параметрами нейрона. Основной принцип работы нейронной сети состоит в настройке параметров нейрона с тем, чтобы функционирование сети соответствовало некоторому желаемому поведению. Регулируя веса или параметры смещения, можно “научить” сеть выполнять конкретную работу; возможно также, что сеть сама будет корректировать свои параметры, чтобы достичь требуемого результата.
Уравнение нейрона со смещением имеет вид
a = f(w*p+b*l).
Как уже отмечалось, смещение b – настраиваемый скалярный параметр нейрона, который не является входом, а константа 1, которая управляет смещением, рассматривается как вход и может быть учтена в виде линейной комбинации векторов входа
.
Функция активации
Функции активации (передаточные функции) нейрона могут иметь самый разнообразный вид. Функция активации f, как правило, принадлежит классу сигмоидальных функций с аргументом n и выходом а.
Ниже рассмотрены три наиболее распространенные функции активации.
Единичная функция активации с жестким ограничениям hardlim. Эта функция описывается соотношением а = hardlim(n) = 1(n) и показана на рис. 3.2. Она равна 0, если
n , и 1,если n >= 0.
Рис. 3.2. Функция активации hardlim
В состав пакета ППП Neural Network Toolbox входит
М-функция hardlim, реализующая функцию активации с жесткими ограничениями.
Линейная функция активации purelin. Эта функция описывается соотношением а = purelin(n) = n и показана на рис. 3.3.
Рис. 3.3. Линейная функция активации purelin
Логистическая функция активации logsig. Эта функция описывается соотношением а = logsig(n) = 1/(1 + ехр(-n)) и показана на рис. 3.4. Она принадлежит к классу сигмоидальных функций, и ее аргумент может принимать любое значение в диапазоне
от до , а выход изменяется в диапазоне от 0 до 1. В пакете ППП Neural Network Toolbox она представлена М-функцией logsig. Благодаря свойству дифференцируемости эта функция часто используется в сетях с обучением на основе метода обратного распространения ошибки.
Рис. 3.4. Функция logsig
Символ в квадрате в правом верхнем углу графика характеризует функцию активации. Это изображение используется на структурных схемах нейронных сетей.
В пакет ППП Neural Network Toolbox включены и другие функции активации. Используя язык MATLAB, пользователь может создавать и свои собственные уникальные функции.
Нейрон с векторным входом
Нейрон с одним вектором входа р с R элементами показан на рис. 3.5. Здесь каждый элемент входа умножается на веса соответственно и взвешенные значения передаются на сумматор. Их сумма равна скалярному произведению вектора-
строки W на вектор входа р.
Рис. 3.5. Функциональная схема нейрона
Нейрон имеет смещение b, которое суммируется со взвешенной суммой входов. Результирующая сумма n определяется как
и служит аргументом функции активации f. В нотации языка MATLAB это выражение записывается так:
n = W*p + b.
Структура нейрона, показанная на рис. 3.5, содержит много лишних деталей. При рассмотрении сетей, состоящих из большого числа нейронов, будет использоваться укрупненная структурная схема нейрона (рис. 3.6).
Вход нейрона изображается в виде темной вертикальной черты, под которой указывается количество элементов входа R. Размер вектора входа р указывается ниже символа р и равен Rxl. Вектор входа умножается на вектор-строку W длины R. Как и прежде, константа 1 рассматривается как вход, который умножается на скалярное смещение b. Входом n функции активации нейрона служит сумма смещения b и произведения W*p. Эта сумма преобразуется функцией активации f, на выходе которой получается выходная величина нейрона а, которая в данном случае является скалярной величиной. Структурная схема, приведенная на рис. 3.6, называется слоем сети. Слой характеризуется матрицей весов W, смещением b, операциями умножения W*p, суммирования и функцией активации f. Вектор входов р обычно не включается в характеристики слоя.
Рис. 3.6. Структурная схема нейрона
Каждый раз, когда используется сокращенное обозначение сети, размерность матриц указывается под именами векторно-матричных переменных. Эта система обозначений поясняет строение сети и связанную с ней матричную математику.
На укрупненной структурной схеме для обозначения типа функции активации применяются специальные графические символы; некоторые из них приведены на рис. 3.7, где а – ступенчатая; б – линейная; в – логистическая функция.
Рис. 3.7. Функции активации
Практические задания
Задание 1. Для функции активации с жесткими ограничениями hardlim и её производной dhardlim, определяемыми следующими соотношениями:
выполнить следующие действия:
1. Выдать на экран информацию об этих функциях с помощью следующих команд:
name=hardlim(′name′) % – полное название функции;
dname=hardlim(′deriv′) % – название производной;
inrange=hardlim(′active′) % – диапазон входа;
outrange=hardlim(′output′) % – диапазон выхода;
2. Построить графики функций:
n=-5:0,1:5;
a=hardlim(n);
da=dhardlim(n);
plot(n,a,′r′) % – график функции активации – красный;
hard on
plot (n,da,′c′) % – график производной – голубой;
3. Рассчитать векторы выхода А и производной dA_dN для слоя из трёх нейронов с вектором входа N, состоящим из трёх компонентов:
N=[-0,7; 0,1; 0,8];
A=hardlim(N) % – вектор выхода функции актива;
dA_dN= dhardlim(N,A) % – вектор выхода производной.
4. Рассмотренную последовательность команд оформить в виде скрипта и записать в М-файл с именем hardlimfile.
Задание 2. Для симметричной функции активации с жёсткими ограничениями hardlims и её производной dhardlims, определяемыми соотношениями
выдать на экран информацию об этих функциях, построить их графики и рассчитать векторы выхода, воспользовавшись скриптом из М-файла hardlimfile. Новый скрипт записать в файл под именем hardlimsfile.
Задание 3. Для линейной функции активации purelin и ее производной, dpurelin, определяемыми соотношениями
рurelin = n;
dpurelin = 1,
выдать на экран информацию об этих функциях, построить их графики и рассчитать векторы выхода, воспользовавшись скриптом из М-файла hardlimfile. Новый скрипт записать в файл под именем purelinfile.
Задание 4. Для положительной линейной функции активации
poslin и ее производной dposlin, определяемыми соотношениями
|