Решение задач регрессии в пакете ST: Neural Networks


В задачах регрессии целью является оценка значения числовой (принимающей непрерывный диапазон значений) выходной переменной по значениям входных переменных. Задачи регрессии в пакете ST Neural Networks можно решать с помощью сетей следующих типов: многослойный персептрон, радиальная базисная функция, обобщенно-регрессионная сеть и линейная сеть. При этом выходные данные должны иметь стандартный числовой (не номинальный) тип.

Особую важность для регрессии имеют масштабирование (шкалирование) выходных значений и эффекты экстраполяции.

Нейронные сети наиболее часто используемых архитектур выдают выходные значения в некотором определенном диапазоне (например, на отрезке [0,1] в случае логистической функции активации). Для задач классификации это не создает трудностей. Однако для задач регрессии совершенно очевидно, что тут есть проблема, и некоторые ее детали оказываются весьма тонкими. Сейчас мы обсудим возникающие здесь вопросы.

Для начала применим алгоритм масштабирования, чтобы выход сети имел "приемлемый" диапазон. Простейшей из масштабирующих функций пакета ST Neural Networks является минимаксная функция: она находит минимальное и максимальное значение переменной по обучающему множеству и выполняет линейное преобразование (с применением коэффициента масштаба и смещения), так чтобы значения лежали в нужном диапазоне (как правило, на отрезке [0.0,1.0]). Если эти действия применяются к числовой (непрерывной) выходной переменной, то есть гарантия, что все обучающие значения после преобразования попадут в область возможных выходных значений сети, и следовательно сеть может быть обучена. Кроме того, мы знаем, что выходы сети должны находиться в определенных границах. Это обстоятельство можно считать достоинством или недостатком - здесь мы приходим к вопросам экстраполяции.

Посмотрим на рисунок.

[Neural Network Example]

Мы стремимся оценить значение Y по значению X. Необходимо аппроксимировать кривую, проходящую через заданные точки. Вероятно, вполне подходящей для этого покажется кривая, изображенная на графике - она (приблизительно) имеет нужную форму и позволяет оценить значение Y в случае, если входное значение лежит в интервале, который охватывается сплошной частью кривой - в этой области возможна интерполяция.

Но что делать, если входное значение расположено существенно правее имеющихся точек? В таких случаях возможны два подхода к оценке значения Y. Первый вариант - экстраполяция: мы продолжаем подогнанную кривую вправо. Во втором варианте мы говорим, что у нас нет достаточной информации для осмысленной оценки этого значения, и потому в качестве оценки мы принимаем среднне значение всех выходов (в отсутствие какой-либо информации это может оказаться лучшим выходом из положения).

Предположим, например, что мы используем многослойный персептрон (MLP). Применение минимакса по описанной выше схеме весьма ограничительно. Во-первых, кривая не будет экстраполироваться, как бы близко мы не находились к обучающим данным (в действительности же, если мы лишь чуть-чуть вышли за область обучающих данных, экстраполяция вполне оправдана). Во-вторых, оценка по среднему также не будет выполняться: вместо этого будет браться минимум или максимум смотря по тому, росла или убывала в этом месте оцениваемая кривая.

Чтобы избежать этих недостатков в MLP используется ряд приемов:

Во-первых, логистическую функцию активации в выходном слое можно заменить на линейную, которая не меняет уровня активации (N.B.: функции активации меняются только в выходном слое; в промежуточных слоях по-прежнему остаются логистические и гиперболические функции активации). Линейная функция активации не насыщается, и поэтому способна экстраполировать (при этом логистические функции предыдущих уровней все-таки предполагают насыщение на более высоких уровнях). Линейные функции активации в MLP могут вызвать определенные вычислительные трудности в алгоритме обратного распространения, поэтому при его использовании следует брать малые (менее 0.1) скорости обучения. Описанный подход пригоден для целей экстраполяции.

Во-вторых, можно изменить целевой диапазон минимаксной масштабирующей функции (например, сделать его [0.25,0.75]). В результате обучающие наблюдения будут отображаться в уровни, соответствующие средней части диапазона выходных значений. Интересно заметить, что если этот диапазон выбран маленьким, и обе его границы находятся вблизи значения 0.5, то он будет соответствовать среднему участку сигмоидной кривой, на котором она "почти линейна", - тогда мы будем иметь практически ту же схему, что и в случае линейного выходного слоя. Такая сеть сможет выполнять экстраполяцию в определенных пределах, а затем будет насыщаться. Все это можно хорошо себе представить так: экстраполяция допустима в определенных границах, а вне их она будет пресекаться.

Если применяется первый подход и в выходном слое помещены линейные элементы, то может получиться так, что вообще нет необходимости использовать алгоритм масштабирования, поскольку элементы и без масштабирования могут выдавать любой уровень выходных сигналов. В пакете ST Neural Networks имеется возможность для большей эффективности вообще отключить все масштабирования. Однако, на практике полный отказ от масштабирования приводит к трудностям в алгоритмах обучения. Действительно, в этом случае разные веса сети работают в сильно различающихся масштабах, и это усложняет начальную инициализацию весов и (частично) обучение. Поэтому мы не рекомендуем Вам отключать масштабирование, за исключением тех случаев, когда диапазон выходных значений очень мал и расположен вблизи нуля. Это же соображение говорит в пользу масштабирования и при пре-процессировании в MLP-сетях (при котором, в принципе, веса первого промежуточного слоя можно легко корректировать, добиваясь этим любого нужного масштабирования).

До сих пор в нашем обсуждении мы уделяли основное внимание тому, как в задачах регрессии применяются сети MLP, и в особенности тому, как сети такого типа ведут себя в смысле экстраполяции. Сети, в которых используются радиальные элементы (RBF и GRNN), работают совершенно иначе и о них следует поговорить отдельно.

Радиальные сети по самой своей природе неспособны к экстраполяции. Чем дальше входной пример расположен от точек, соответствующих радиальным элементам, тем меньше становятся уровни активации радиальных элементов и (в конце концов) тем меньше будет выходной сигнал сети. Входной пример, расположенный далеко от центров радиальных элементов, даст нулевой выходной сигнал. Стремление сети не экстраполировать данные можно считать достоинством (это зависит от предметной области и Вашего мнения), однако убывание выходного сигнала (на первый взгляд) достоинством не является. Если мы стремимся избегать экстраполяции, то для входных точек, отличающихся большой степенью новизны, в качестве выхода мы, как правило, хотим иметь усредненное значение.

Для радиальных сетей в задачах регрессии этого можно достичь с помощью масштабирующей функции среднее/стандартное отклонение. Обучающие данные масштабируются таким образом, чтобы среднее выходное значение равнялось 0.0, а все другие значения были бы промасштабированы на стандартное отклонение выходных сигналов. При обработке входных точек, лежащих вне областей действия радиальных элементов, выходной сигнал сети будет приблизительно равен среднему значению.

Качество работы сети в задаче регрессии можно проверить несколькими способами.

Во-первых, сети можно сообщить выходное значение, соответствующее любому наблюдению (или какому-то новому наблюдению, который Вы хотели бы проверить). Если это наблюдение содержалось в исходных данных, то выдается значение разности (невязки).

Во-вторых, могут быть получены итоговые статистики. К ним относятся среднее значение и стандартное отклонение, вычисленные для обучающих данных и для ошибки прогноза. В общем случае среднее значение ошибки прогноза будет очень близко к нулю (в конце концов, нулевое среднее для ошибки прогноза можно получить, попросту оценив среднее значение обучающих данных и вовсе не обращаясь к значениям входных переменных). Наиболее важным показателем является стандартное отклонение ошибки прогноза. Если оно не окажется существенно меньше стандартного отклонения обучающих данных, это будет означать, что сеть работает не лучше, чем простая оценка по среднему. Далее, в пакете ST Neural Networks пользователю выдается отношение стандартного отклонения ошибки прогноза к стандартному отклонению обучающих данных. Если оно существенно меньше единицы (например, ниже 0.1), то это говорит о хорошем качестве регрессии. Это регрессионное отношение (точнее, величину единица минус это отношение) иногда называют долей объясненной дисперсии модели.

В-третьих, можно вывести изображение поверхности отклика. На самом деле, разумеется, эта поверхность представляет собой N+1-мерный объект, где N - число входных элементов, а оставшееся измерение соответствует высоте точки на поверхности. Понятно, что непосредственно визуально представить такую поверхность при N большем двух невозможно (а реально N всегда больше двух). Тем не менее, в пакете ST Neural Networks Вы можете выводить срезы поверхности отклика по любым двум входным переменным. При этом значения всех остальных входных переменных фиксируются, и меняются только два выбранные. Всем остальным переменным можно придать любое значение по своему усмотрению (по умолчанию система ST Neural Networks возьмет для них средние значения). Значения двух исследуемых переменных можно менять в произвольном диапазоне (по умолчанию - в диапазоне изменения обучающих данных).