Рисунок 3 — 100 точек, 5 лагов, (0 ,10 ]
Рисунок 4 — 100 точек, 5 лагов, (0 ,10 ]
, цель 0.01 (3)
, цель 0.01 (4)
Рисунок 5 — 100 точек, 5 лагов, (0 ,10 ] , цель 0.01 (5)
Графики сильно отличаются, хотя параметры и код никак не изменялись. Тому есть несколько причин:
1. На интервале (0 ,10 ] приведенная в задании функция не может быть аппроксимирована достаточно точно. (Поведение функции не может быть достаточно точно определено на малой совокупности данных.)
6
2. Число точек n и число лагов b слишком малы для обучения сети. Для второго промежутка нахождения решения (0 ,20 ] получим
следующие возможные результаты (рис. 6, 7, 8).
Рисунок 6 — 100 точек, 5 лагов, (0 ,20 ] , цель 0.01 (1)
Рисунок 7 — 100 точек, 5 лагов, (0 ,20 ] , цель 0.01 (2)
Рисунок 8 — 100 точек, 5 лагов, (0 ,20 ] , цель 0.01 (3)
В данных случаях функция аппроксимируется точнее, т. к. диапазон увеличился в 2 раза — поведение функции прогнозировать легче. Однако
7
число точек и число лагов остались прежними, а значит могут быть редкие исключения (рис. 9).
Рисунок 9 — 100 точек, 5 лагов, (0 ,20 ] , цель 0.01 (4)
Для третьего промежутка нахождения решения (0 ,30 ] получим следующие возможные результаты (рис. 10, 11, 12).
Рисунок 10 — 100 точек, 5 лагов, (0 ,30 ] , цель 0.01 (1)
Рисунок 11 — 100 точек, 5 лагов, (0 ,30 ] , цель 0.01 (2)
8
Рисунок 12 — 100 точек, 5 лагов, (0 ,30 ] , цель 0.01 (3) Аппроксимация стала немного точнее.
Теперь поменяем число лагов b=50 и цель goal=0.000001 .
Для первого промежутка нахождения решения (0 ,10 ] получим следующие возможные результаты (рис. 13, 14).
Рисунок 13 — 100 точек, 50 лагов, (0 ,10 ] , цель 1e-6 (1)
Рисунок 14 — 100 точек, 50 лагов, (0 ,10 ] , цель 1e-6 (2)
9
Для второго промежутка нахождения решения (0 ,20 ] получим следующий возможный результат (рис. 15).
Рисунок 15 — 100 точек, 50 лагов, (0 ,20 ] , цель 1e-6
Для третьего промежутка нахождения решения (0 ,30 ] получим следующий возможный результат (рис. 16).
Рисунок 16 — 100 точек, 50 лагов, , цель 1e-6
Результат аппроксимации стал точнее, хоть и имеются редкие исключения (рис. 14).
Код программы, моделирующей, обучающей и тестирующей работу нейронной сети, на языке Python с использованием библиотеки Neurolab представлен в табл. 3.
Таблица 3 — Код на Python (Neurolab)
program2.py
"""
Python 3.8.8 (tags/v3.8.8:024d805, Feb 19 2021, 13:18:16) [MSC v.1928 64 bit (AMD64)] on win32
-neurolab version is 0.3.5
-matplotlib version is 3.3.4
-numpy version is 1.19.5
10