Аппроксимация нелинейных функций с помощью нейронных сетей
Цель работы: ознакомиться с особенностью аппроксимации нелинейных функций с помощью нейронных сетей, а также с зависимостью точности интер- и экстраполяции заданной функции от числа и типа нейронов.
Задание
1. Для заданной функции построить нелинейную сеть, которая позволила бы аппроксимировать указанную функцию на заданном интервале изменения аргумента (диапазон для обучения).
2. Оптимизировать структуру сети так, чтобы на проверочном интервале изменения аргумента функции сеть показывала минимально возможное отклонение от заданной функции. Продемонстрировать работу полученной сети на проверочном диапазоне.
3. Добавить в структуру нейронной сети 10-20 нейронов. Обучить полученную сеть и продемонстрировать её работу на обоих диапазонах
Таблица 2.1
№ вар. | Функция | Диапазон для обучения | Проверочный диапазон |
[0…0.3] | [-0.5…1] | ||
[0…1] | [-3…2] | ||
[-2…2] | [-5…10] | ||
[-1.5…2] | [-3…2.5] | ||
[0…3] | [-1…5] | ||
[-1,5…1,5] | [-3…3] | ||
[0…1] | [-1…2] | ||
[-0,5…0,5] | [-1…1] | ||
[-0,5…0,5] | [-1…1] | ||
[-0,2…0,2] | [-0,5…0,5] | ||
[-2…1,2] | [-3…1,6] | ||
[0,5…2] | [0…3] | ||
[2,5...5] | [2,1…6] | ||
[2…11] | [0,1…15] | ||
[0,6…1,4] | [0,1…2] | ||
[0,5…2,5] | [0,1…4] | ||
[0…2] | [-0,5…2,5] | ||
[0,2…0,8] | [0,1…1,2] | ||
[-1,2…-0,4] | [-1,5…0,1] | ||
[1…3] | [0,1…4] | ||
[0,5…2] | [0,1…4] | ||
[0…2] | [-1…4] | ||
[-0,5…0,5] | [-1…1] | ||
[-0,5…2] | [-2…3] | ||
[-1,5…1,5] | [-2…2] | ||
[0…2] | [-1…5] | ||
№ вар. | Функция | Диапазон для обучения | Проверочный диапазон |
[0…0,5] | [-0,5…1] | ||
[0…3] | [0…6] | ||
[1…2] | [0…3] | ||
[0,5…1] | [0…2] | ||
[-1…1] | [-2…2] | ||
[0,5…2] | [0…3] | ||
[-1…1] | [-1,5…1,5] | ||
[0,5…2] | [0,1…3] | ||
[0,6…1,6] | [0,1…3] | ||
[-1…1] | [-1,5…1,5] | ||
[-0,5…0,5] | [-1…1] | ||
[0,4…1,4] | [0,1…2] | ||
[-0,7…0,7] | [-1…1] | ||
[-1…1] | [-2…2] | ||
[-2…2] | [-4…4] | ||
[1…2] | [0,1…3] | ||
[0…1,5] | [-1…2] | ||
[4…6] | [2…7] | ||
[-3…3] | [-5…5] | ||
[1…3] | [0…8] | ||
[-4…4] | [-8…8] | ||
[-3…3] | [-7…7] | ||
[-1,5…1,5] | [-3…3] | ||
[-3…3] | [-7…7] |
Указания к выполнению работы
Рекомендуется использовать командную строку для проведения всех манипуляций с нейронными сетями. При этом последовательность команд будет следующей:
1. newff(P, T, n, func),
где Р – вектор входных воздействий;
Т – вектор желаемых сигналов;
n – количество нейронов в скрытом слое;
func – функция активации нейронов скрытого слоя.
2. С помощью команды view(имя_сети) убедитесь, что полученная конфигурация соответствует желаемой – два слоя, во втором – один нейрон с линейной функцией активации. Убедитеся, что в скрытом слое содержится нужное число нейронов.
3. train(net, P, T),
где net - имя созданной нейронной сети. Следует заметить, что результатом выполнения данной команды будет новая нейронная сеть.
4. sim(net, х),
где х – вектор, на котором необходимо проверить работу сети.
Следует заметить, что в последних версиях Matlab синтаксис данной команды изменён на net(x).
Необходимо учитывать тот факт, что для обучения сети вектор должен содержать 15-20 точек, а для проверки её работы – 1000.
От версии к версии в Matlab постоянно меняется процедура вызова отдельных команд. Рекомендуется уточнить требуемый синтаксис в соответствии с используемой версией.
Лабораторная работа №3