Частичное логарифмирование входного вектора
Как
показала практика, часто полезно перед подачей на нейросеть
прологарифмировать некоторые числа входного вектора. Это полезно в 2-х случаях:
1.
Один из членов вектора - большое число. Это приводит к долгому обучению на
начальной стадии, т.к. заданная скорость обучения не позволяет быстро
перестроить начальные веса и пороги. А долгое обучение вызывает
"переобучение" сети. Применение логарифма сужает диапазон по OY, обучение на начальной стадии
ускоряется.
2.
Один из членов вектора - небольшое число, но и не слишком маленькое, доли
единицы. И это число слабо отличается у сигналов разных типов. Логарифмирование
такого числа расширяет диапазон по OY, сеть быстрее обучается различать разные типы входных данных.

В
программе это реализовано следующим образом. Алгоритм смотрит на первые несколько
десятков обучающих векторов и делает вывод, какие из членов вектора перед
подачей на нейросеть полезно прологарифмировать.
На
форме «Настройки нейросети» добавлено поле
«Логарифмируем на входе, если более». Это число алгоритм сравнивает со средними
(по модулю) значениями первых входных векторов. Если среднее значение для
данного члена вектора превышает заданное, на нейросеть
будет подаваться логарифм модуля числа.

После
запуска процесса обучения в правом нижнем углу окна с бегущими цифрами появится
сообщение: «К-во log:
…», то есть сколько членов вектора логарифмируется.
Справа,
над кнопкой Старт, добавлена галка «Новый набор log». Если она установлена, в начале
обучения программа примет решение о том, какие члены вектора надо
логарифмировать. Если она снята, будут логарифмироваться те же члены вектора,
что и при прошлом обучении этой нейросети. В режиме
распознавания эта галка не играет роли, логарифмируются те же позиции, что и
при обучении.

Если
в вашем компьютере уже установлена наша программа, для получения версии с
частичным логарифмированием скачайте rar-архив программы без сигналов-примеров
и обновите с его помощью файлы в папке программы. В обновленной программе
добавится функция частичного логарифмирования и настройка «set_110-220-330_0,5»,
в которой задан параметр «Логарифмируем на входе, если более» = 0.5.