- •В. Г. Потемкин
- •Предисловие
- •Введение
- •Используемые обозначения
- •Часть 1. Ппп Neural Network Toolbox
- •1. Система matlab 6
- •1.1. Операционная среда matlab 6
- •Командное окно
- •Окно предыстории
- •Окно запуска
- •Окно текущего каталога
- •Окно рабочей области
- •Справочная подсистема
- •1.3. Демонстрационные примеры ппп nnt
- •2. Модель нейрона и архитектура сети
- •2.1. Модель нейрона
- •2.1.1. Простой нейрон
- •2.1.2. Функция активации
- •2.1.3. Нейрон с векторным входом
- •2.2. Архитектура нейронных сетей
- •2.2.1. Однослойные сети
- •2.2.2. Многослойные сети
- •2.2.3. Сети с прямой передачей сигнала
- •2.3. Создание, инициализация и моделирование сети Формирование архитектуры сети
- •Инициализация сети
- •Моделирование сети
- •3. Обучение нейронных сетей
- •3.1. Процедуры адаптации и обучения
- •Явление переобучения
- •Свойство обобщения
- •3.1.1. Способы адаптации и обучения
- •Адаптация нейронных сетей
- •Xlabel(''), ylabel('Выходы a(I)'),grid
- •Xlabel(''), ylabel('Веса входов w(I)'),grid
- •Xlabel(' Циклы'), ylabel('Ошибка'),grid
- •Xlabel(''), ylabel('Выходы a(I)'),grid
- •Xlabel(''), ylabel('Веса входов w(I)'),grid
- •Xlabel('Циклы'), ylabel('Ошибка'),grid
- •Xlabel(''), ylabel('Выходы a(I)'),grid
- •Xlabel(''), ylabel('Веса входов w(I)'),grid
- •Xlabel('Циклы'), ylabel('Ошибка'),grid
- •Обучение нейронных сетей
- •3.2. Методы обучения
- •3.2.1. Обучение однослойной сети
- •3.2.2. Обучение многослойной сети
- •Метод обратного распространения ошибки
- •Характеристика методов обучения
- •3.3. Алгоритмы обучения
- •3.3.1. Градиентные алгоритмы обучения Алгоритм gd
- •Алгоритм gdm
- •Алгоритм gda
- •Алгоритм Rprop
- •3.3.2. Алгоритмы метода сопряженных градиентов
- •Алгоритм cgf
- •Алгоритм cgp
- •Алгоритм cgb
- •Алгоритм scg
- •3.3.3. Квазиньютоновы алгоритмы Алгоритм bfgs
- •Алгоритм oss
- •Алгоритм lm
- •3.3.4. Алгоритмы одномерного поиска
- •Алгоритм gol
- •Алгоритм bre
- •Алгоритм hyb
- •Алгоритм cha
- •Алгоритм bac
- •3.3.5. Расширение возможностей процедур обучения
- •Переобучение
- •Метод регуляризации
- •Формирование представительной выборки
- •Предварительная обработка и восстановление данных
- •Пример процедуры обучения
- •4. Персептроны
- •4.1. Архитектура персептрона
- •4.2. Модель персептрона
- •Моделирование персептрона
- •Инициализация параметров
- •4.3. Процедуры настройки параметров
- •Правила настройки
- •Процедура адаптации
- •5. Линейные сети
- •5.1. Архитектура линейной сети
- •5.2. Создание модели линейной сети
- •5.3. Обучение линейной сети
- •Процедура настройки
- •Процедура обучения
- •5.4. Применение линейных сетей Задача классификации векторов
- •Фильтрация сигнала
- •Предсказание сигнала
- •Подавление шумов
- •Многомерные цифровые фильтры
- •6. Радиальные базисные сети
- •Модель нейрона и архитектура сети
- •Создание сети
- •Радиальная базисная сеть с нулевой ошибкой
- •Итерационная процедура формирования сети
- •Примеры радиальных базисных сетей
- •6.1. Сети grnn
- •Архитектура сети
- •Синтез сети
- •6.2. Сети pnn
- •Архитектура сети
- •Синтез сети
- •7. Сети кластеризации и классификации данных
- •7.1. Самоорганизующиеся нейронные сети
- •7.1.1. Слой Кохонена
- •Архитектура сети
- •Создание сети
- •Правило обучения слоя Кохонена
- •Правило настройки смещений
- •Обучение сети
- •7.1.2. Карта Кохонена
- •Топология карты
- •Функции для расчета расстояний
- •Архитектура сети
- •Создание сети
- •Обучение сети
- •Одномерная карта Кохонена
- •Двумерная карта Кохонена
- •Архитектура сети
- •Создание сети
- •Обучение сети Правила настройки параметров
- •Процедура обучения
- •8. Рекуррентные сети
- •8.1. Сети Элмана
- •Архитектура
- •Создание сети
- •Обучение сети
- •Проверка сети
- •8.2. Сети Хопфилда
- •Архитектура сети
- •Синтез сети
- •Синтез сети
- •Проверка сети
- •9.1.2. Слежение за нестационарным сигналом
- •Инициализация сети
- •Проверка сети
- •9.1.3. Моделирование стационарного фильтра
- •Постановка задачи
- •Синтез сети
- •Проверка сети
- •9.1.4. Моделирование нестационарного фильтра
- •Постановка задачи
- •Инициализация сети
- •Проверка сети
- •9.2. Распознавание образов
- •Постановка задачи
- •Нейронная сеть
- •Архитектура сети
- •Инициализация сети
- •Обучение
- •Обучение в отсутствие шума
- •Обучение в присутствии шума
- •Повторное обучение в отсутствие шума
- •Эффективность функционирования системы
- •9.3. Нейронные сети и системы управления
- •9.3.1. Регулятор с предсказанием
- •9.3.2. Регулятор narma-l2
- •9.3.3. Регулятор на основе эталонной модели
- •Функции инициализации, адаптации и обучения
- •10.2. Описание элементов сети
- •Описание входов
- •Описание слоев
- •Описание выходов
- •Описание целей
- •Описание смещений
- •Описание весов входа
- •Описание весов слоя
- •Матрицы весов и векторы смещений
- •Информационные поля
- •11. Формирование моделей нейронных сетей
- •11.1. Модели сетей
- •11.1.1. Однослойные сети Персептрон
- •Линейные сети
- •11.1.2. Многослойные сети
- •Радиальные базисные сети
- •Самоорганизующиеся сети
- •Сети – классификаторы входных векторов
- •Рекуррентные сети
- •11.2. Функции активации
- •Персептрон
- •Линейные сети
- •Радиальные базисные сети
- •Самоорганизующиеся сети
- •Рекуррентные сети
- •11.3. Синаптические функции
- •Функции взвешивания и расстояний
- •Функции накопления
- •11.4. Функции инициализации
- •11.5. Функции адаптации и обучения Функции адаптации
- •Функции обучения
- •Градиентные алгоритмы обучения
- •Алгоритмы метода сопряженных градиентов
- •Квазиньютоновы алгоритмы обучения
- •11.5.1. Функции оценки качества обучения
- •11.6. Функции настройки параметров
- •11.6.1. Функции одномерного поиска
- •11.7. Масштабирование и восстановление данных
- •11.8. Вспомогательные функции
- •Утилиты вычислений
- •Операции с массивами данных
- •Графические утилиты
- •Информация о сети и ее топологии
- •11.9. Моделирование нейронных сетей и система Simulink Функции моделирования сети
- •11.9.1. Применение системы Simulink
- •Библиотеки блоков для моделирования нейронных сетей
- •Построение моделей нейронных сетей
- •Индексный указатель Команды, функции и операторы ппп Neural Network Toolbox
- •Предметный указатель
- •Литература Книги на английском языке:
- •Книги на русском языке:
- •Оглавление
- •1. Система matlab 6 9
- •2. Модель нейрона и архитектура сети 33
- •3. Обучение нейронных сетей 47
- •10. Вычислительная модель нейронной сети 228
- •11. Формирование моделей нейронных сетей 245
Квазиньютоновы алгоритмы обучения
trainbfg |
Алгоритм обучения BFGS |
Синтаксис:
[net,TR,Ac,El] = trainbfg(NET,Pd,Tl,Ai,Q,TS,VV,TV)
info = trainbfg(code)
Описание:
Функция trainbfg обучает нейронную сеть, используя квазиньютонов алгоритм Бройдена, Флетчера, Гольдфарба и Шано (BFGS).
Функция при своей работе использует следующие параметры:
info = trainbfg('pdefaults')'
info =
-
epochs:
100
scale_tol:
20
maxstep:
100
show:
25
alpha:
0.001
minstep:
1.0 e–006
goal:
0
beta:
0.1
bmax:
26
time:
Inf
delta:
0.01
min_grad:
1.0e–006
gama:
0.1
max_fail:
5
low_lim:
0.1
searchFcn:
'srchbac'
up_lim:
0.5
Применение функции:
Функция обучения trainbfg используется при создании сетей с помощью методов newff, newcf, newelm, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к обучению, необходимо:
установить свойство сети net.trainFcn равным 'trainbfg'. Это автоматически установит значения параметров обучения, соответствующие значениям свойства net.trainParam по умолчанию.
Для того чтобы фактически обучить сеть, необходимо:
инициализировать нейронную сеть;
присвоить, если это необходимо, требуемые значения параметрам обучения;
применить функцию train.
Алгоритм:
Функция trainbfg выполняет процедуру обучения, если функции взвешивания, накопления и активации имеют производные. Для вычисления производных критерия качества обучения по переменным веса и смещения используется метод обратного распространения ошибки. В соответствии с квазиньютоновым алгоритмом BFGS вектор настраиваемых переменных получает следующие приращения:
X = X + a*dX,
где dX – направление поиска; параметр a выбирается так, чтобы минимизировать критерий качества обучения в направлении поиска. Функция одномерного поиска searchFcn используется для вычисления минимума. Начальное направление поиска задается вектором, противоположным градиенту критерия качества. При успешных итерациях направление поиска определяется на основе нового значения градиента и с учетом приближенного значения гессиана согласно формуле[13]
dX = –H\gX,
где gX – вектор градиента; H – приближенная оценка гессиана.
Обучение прекращается, когда выполнено одно из следующих условий:
значение функции качества стало меньше предельного;
градиент критерия качества стал меньше значения min_grad;
достигнуто предельное число циклов обучения;
превышено максимальное время, отпущенное на обучение;
ошибка контрольного подмножества превысила ошибку обучающего более чем в max_fail раз.
Пример:
Заданы следующие обучающие последовательности входов P и целей T:
P = [0 1 2 3 4 5];
T = [0 0 0 1 1 1];
Поскольку соответствие между входом и целью носит явно выраженный нелинейный характер, то будем использовать нейронную сеть с нелинейными сигмоидальными функциями активации. Выберем двухслойную нейронную сеть с прямой передачей сигнала; в первом слое используем 2 нейрона с функцией активации tansig, а во втором – 1 нейрон с функцией активации logsig. Для обучения сети применим функцию trainbfg.
Формирование сети:
net = newff([0 5],[2 1],{'tansig','logsig'},'trainbfg');
Обучение сети:
net.trainParam.epochs = 50;
net.trainParam.show = 10;
net.trainParam.goal = 0.0001;
[net,TR] = train(net,P,T); % Рис.11.55
На рис. 11.55 показано, как изменяется точность в процессе обучения; требуемое значение достигается на 14-м цикле обучения и составляет 7.5e–7.
Рис. 11.55
Выполним моделирование сети:
Y = sim(net,P);
Y = 0.0000 0.0000 0.0021 1.0000 0.9999 0.9998
Соответствие между входом и выходом реализуется с очень высокой точностью.
Сопутствующие функции: NEWFF, NEWCF, TRAINGDM, TRAINGDA, TRAINGDX, TRAINLM, TRAINRP, TRAINCGF, TRAINCGB, TRAINSCG, TRAINCGP, TRAINOSS.
trainoss |
Алгоритм обучения OSS |
Синтаксис:
[net,TR,Ac,El] = trainoss(NET,Pd,Tl,Ai,Q,TS,VV)
info = trainoss(code)
Описание:
Функция trainoss обучает нейронную сетью, используя одношаговый алгоритм метода секущей OSS.
Функция при своей работе использует следующие параметры:
info = trainoss('pdefaults')'
info =
-
epochs:
100
scale_tol:
20
maxstep:
100
show:
25
alpha:
0.001
minstep:
1.0 e–6
goal:
0
beta:
0.1
bmax:
26
time:
Inf
delta:
0.01
min_grad:
1.0e–006
gama:
0.1
max_fail:
5
low_lim:
0.1
searchFcn:
'srchbac'
up_lim:
0.5
Применение функции:
Функция обучения trainoss используется при создании сетей с помощью методов newff, newcf, newelm, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к обучению, необходимо:
установить свойство сети net.trainFcn равным 'trainoss'. Это автоматически установит значения параметров обучения, соответствующие значениям свойства net.trainParam по умолчанию.
Для того чтобы фактически обучить сеть, необходимо:
инициализировать нейронную сеть;
присвоить, если это необходимо, требуемые значения параметрам обучения;
применить функцию train.
Алгоритм:
Функция trainbfg выполняет процедуру обучения, если функции взвешивания, накопления и активации имеют производные. Для вычисления производных критерия качества обучения по переменным веса и смещения используется метод обратного распространения ошибки. В соответствии с квазиньютоновым алгоритмом BFGS вектор настраиваемых переменных получает следующие приращения:
X = X + a*dX,
где dX – направление поиска; параметр a выбирается так, чтобы минимизировать критерий качества обучения в направлении поиска. Функция одномерного поиска searchFcn используется для вычисления минимума. Начальное направление поиска задается вектором, противоположным градиенту критерия качества. При успешных итерациях направление поиска определяется на основе нового значения градиента и значений градиентов на предыдущих шагах согласно формуле [1]
dX = –gX + Ac*X_step + Bc*dgX,
где gX – вектор градиента; X_step – приращение весов на предыдущей итерации; dgX – изменение градиента на последней итерации.
Обучение прекращается, когда выполнено одно из следующих условий:
значение функции качества стало меньше предельного;
градиент критерия качества стал меньше значения min_grad;
достигнуто предельное число циклов обучения;
превышено максимальное время, отпущенное на обучение;
ошибка контрольного подмножества превысила ошибку обучающего более чем в max_fail раз.
Пример:
Заданы следующие обучающие последовательности входов P и целей T:
P = [0 1 2 3 4 5];
T = [0 0 0 1 1 1];
Поскольку соответствие между входом и целью носит явно выраженный нелинейный характер, то будем использовать нейронную сеть с нелинейными сигмоидальными функциями активации. Выберем двухслойную нейронную сеть с прямой передачей сигнала; в первом слое используем 2 нейрона с функцией активации tansig, а во втором – 1 нейрон с функцией активации logsig. Для обучения сети применим функцию trainoss.
Формирование сети:
net = newff([0 5],[2 1],{'tansig','logsig'},'trainoss');
Обучение сети:
net.trainParam.epochs = 50;
net.trainParam.show = 10;
net.trainParam.goal = 0.0001;
[net,TR] = train(net,P,T); % Рис.11.56
Рис. 11.56
На рис. 11.56 показано, как изменяется точность в процессе обучения; требуемое значение обеспечивается на 29-м цикле обучения.
Выполним моделирование сети:
Y = sim(net,P)
Y = 0.0093 0.0090 0.0127 0.9856 0.9989 0.9990
Требуемое соответствие между входом и выходом нейронной сети обеспечивается с заданной среднеквадратичной погрешностью, равной 0.0001.
Сопутствующие функции: NEWFF, NEWCF, TRAINGDM, TRAINGDA, TRAINGDX, TRAINLM, TRAINRP, TRAINCGF, TRAINCGB, TRAINSCG, TRAINCGP, TRAINBFG.
trainlm |
Алгоритм Левенберга – Марквардта LM |
Синтаксис:
[net,TR,Ac,El] = trainlm(NET,Pd,Tl,Ai,Q,TS,VV)
info = trainlm(code)
Описание:
Функция trainlm обучает нейронную сеть, используя алгоритм Левенберга –Марквардта LM.
Функция при своей работе использует следующие параметры:
info = trainlm('pdefaults')'
info =
-
epochs:
100
lr:
0.01
mu_max:
1.0e10
show:
25
mc:
0.9
goal:
0
mem_reduc:
1
time:
Inf
mu:
0.001
min_grad:
1.0e–006
mu_dec:
0.1
max_fail:
5
mu_inc:
10
Применение функции:
Функция обучения trainlm используется при создании сетей с помощью методов newff, newcf, newelm, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к обучению, необходимо:
установить свойство сети net.trainFcn равным 'trainlm'. Это автоматически установит значения параметров обучения, соответствующие значениям свойства net.trainParam по умолчанию.
Для того чтобы фактически обучить сеть, необходимо:
инициализировать нейронную сеть;
присвоить, если это необходимо, требуемые значения параметрам обучения;
применить функцию train.
Алгоритм:
Функция trainlm выполняет процедуру обучения, если функции взвешивания, накопления и активации имеют производные. Для вычисления якобиана критерия качества обучения по переменным веса и смещения используется метод обратного распространения ошибки. Каждая настраиваемая переменная корректируется в соответствии с методом Левенберга – Марквардта:
jj = jX * jX;
je = jX * E;
dX = –(jj + I * mu)\je,
где E – матрица ошибок; I – единичная матрица.
Параметр адаптации mu возрастает с коэффициентом mu_inc до тех пор, пока изменение весов и смещений dX не приведет к уменьшению критерия качества; после этого коэффициент mu_inc переключается на mu_dec.
Параметр mem_reduc позволяет находить компромисс между объемами оперативной памяти и быстродействием, необходимыми для вычисления якобиана. Когда параметр mem_reduc равен 1, обеспечивается максимальное быстродействие, но и требуются большие объемы памяти. Если увеличить значение mem_reduc вдвое, то потребная память также уменьшится примерно вдвое, но скорость вычислений несколько замедлится. Чем больше значение mem_reduc, тем меньше требования к памяти, но время вычислений существенно увеличивается.
Обучение прекращается, когда выполнено одно из следующих условий:
значение функции качества стало меньше предельного;
градиент критерия качества стал меньше значения min_grad;
достигнуто предельное число циклов обучения;
превышено максимальное время, отпущенное на обучение;
ошибка контрольного подмножества превысила ошибку обучающего более чем в max_fail раз.
Пример:
Заданы следующие обучающие последовательности входов P и целей T:
P = [0 1 2 3 4 5];
T = [0 0 0 1 1 1];
Поскольку соответствие между входом и целью носит явно выраженный нелинейный характер, то будем использовать нейронную сеть с нелинейными сигмоидальными функциями активации. Выберем двухслойную нейронную сеть с прямой передачей сигнала; в первом слое используем 2 нейрона с функцией активации tansig, а во втором – 1 нейрон с функцией активации logsig. Для обучения сети применим функцию trainlm.
Формирование сети:
net = newff([0 5],[2 1],{'tansig','logsig'},'trainlm');
Обучение сети:
net.trainParam.epochs = 50;
net.trainParam.show = 10;
net.trainParam.goal = 0.0001;
[net,TR] = train(net,P,T); % Рис.11.57
TR =
epoch: [0 1 2 3 4 5 6 7 8 9 10 11 12 13]
perf: [114 double]
vperf: [114 double]
tperf: [114 double]
mu: [114 double]
На рис. 11.57 показано, как изменяется точность в процессе обучения; требуемое значение обеспечивается на 13-м цикле обучения.
Рис. 11.57
Данный алгоритм имеет адаптивный параметр mu, изменение которого показано на рис. 11.58.
Рис. 11.58
Из анализа этого рисунка следует, что на первых трех циклах обучения фактически реализуется градиентный метод, а затем метод Ньютона с аппроксимацией гессиана.
Выполним моделирование сети:
Y = sim(net,P)
Y = 0.0012 0.0012 0.0049 0.9889 0.9897 0.9897
Требуемое соответствие между входом и выходом нейронной сети обеспечивается с заданной среднеквадратичной погрешностью, равной 0.0001.
Сопутствующие функции: NEWFF, NEWCF, TRAINGD, TRAINGDM, TRAINGDA, TRAINGDX.
trainbr |
Алгоритм обучения BR |
Синтаксис:
[net,TR,Ac,El] = trainbr(net,Pd,Tl,Ai,Q,TS,VV)
info = trainbr(code)
Описание:
Функция trainbr обучает нейронную сеть, используя алгоритм Левенберга – Марквардта, дополненный регуляризацией по Байесу BR. Такие сети находят широкое применение при решении задач аппроксимации нелинейных зависимостей.
Функция при своей работе использует следующие параметры:
info = trainbr('pdefaults')'
info =
-
epochs:
100
mem_reduc:
1
show:
25
mu:
0.005
goal:
0
mu_dec:
0.1
time:
Inf
mu_inc:
10
min_grad:
1.0e–006
mu_max:
1.0e+010
max_fail:
5
Применение функции:
Функция обучения trainbr используется при создании сетей с помощью методов newff, newcf, newelm, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к обучению, необходимо:
установить свойство сети net.trainFcn равным 'trainbr'. Это автоматически установит значения параметров обучения, соответствующие значениям свойства net.trainParam по умолчанию.
Для того чтобы фактически обучить сеть, необходимо:
инициализировать нейронную сеть;
присвоить, если это необходимо, требуемые значения параметрам обучения;
применить функцию train.
Алгоритм:
Функция trainbr выполняет процедуру обучения, если функции взвешивания, накопления и активации имеют производные. В отличие от всех ранее описанных процедур эта функция использует метод регуляризации, что позволяет успешно справиться с проблемой переобучения. Для этого осуществляется минимизация комбинированного функционала качества обучения, который учитывает не только сумму квадратов ошибок обучения, но квадраты весов. Эта стратегия регуляризации, называемая регуляризацией по методу Байеса, подробно рассмотрена в работах [11, 23]. При реализации функции trainbr эта стратегия встроена в алгоритм Левенберга – Марквардта.
Для вычисления якобиана функционала качества по переменным веса и смещения используется метод обратного распространения ошибки. Каждая настраиваемая переменная корректируется в соответствии с методом Левенберга – Марквардта:
jj = jX * jX;
je = jX * E;
dX = –(jj + I * mu)\je,
где E – матрица ошибок; I – единичная матрица.
Параметр адаптации mu возрастает с коэффициентом mu_inc до тех пор, пока изменение весов и смещений dX не приведет к уменьшению критерия качества; после этого коэффициент mu_inc переключается на mu_dec.
Параметр mem_reduc позволяет находить компромисс между объемами оперативной памяти и быстродействием, необходимыми для вычисления якобиана. Когда параметр mem_reduc равен 1, обеспечивается максимальное быстродействие, но и требуются большие объемы памяти. Если увеличить значение mem_reduc вдвое, то потребная память также уменьшится примерно вдвое, но скорость вычислений несколько замедлится. Чем больше значение mem_reduc, тем меньше требования к памяти, но время вычислений существенно увеличивается.
Обучение прекращается, когда выполнено одно из следующих условий:
значение функции качества стало меньше предельного;
градиент критерия качества стал меньше значения min_grad;
достигнуто предельное число циклов обучения;
превышено максимальное время, отпущенное на обучение;
ошибка контрольного подмножества превысила ошибку обучающего более чем в max_fail раз.
Пример:
Рассмотрим задачу аппроксимации синусоидальной функции, которая зашумлена нормально распределенным шумом.
P = [–1:.05:1];
T = sin(2*pi*P) + 0.1*randn(size(P));
Сформируем для решения этой задачи двухслойную нейронную сеть прямой передачи сигнала. Вход сети принимает значения в диапазоне от –1 до 1. Первый слой имеет 20 нейронов с функцией активации tansig, второй слой имеет 1 нейрон с функцией активации purelin. В качестве обучающей используем функцию trainbr.
Формирование сети:
net = newff([–1 1],[20,1],{'tansig','purelin'},'trainbr');
Обучение сети (рис. 11.59):
net.trainParam.epochs = 50;
net.trainParam.show = 10;
net = train(net,P,T); % Рис.11.59
Рис. 11.59
Количество настраиваемых параметров на 50 циклах обучения стабилизировалось и равно 15. Выполним моделирование сети и построим графики исследуемых функций.
Y = sim(net,P);
plot(P,Y,P,T,'+') % Рис.11.60
Рис. 11.60
Из анализа рис. 11.60 следует, что выход сети сглаживает входные данные и обеспечивает оптимальную структуру сети по числу настраиваемых параметров, не допуская в ней явления переобучения.
Сопутствующие функции: NEWFF, NEWCF, TRAINGDM, TRAINGDA, TRAINGDX, TRAINLM, TRAINRP, TRAINCGF, TRAINCGB, TRAINSCG, TRAINCGP, TRAINOSS.
