Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кондрашов ВСЕ.doc
Скачиваний:
8
Добавлен:
01.05.2025
Размер:
12 Мб
Скачать
☆

Последовательность этапов решения практических задач с использованием нейронных сетей и рекомендации по их проведению.

Последовательность решения практических задач с использованием нейронных сетей включает несколько типовых этапов.

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

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

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

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

Последними этапами можно считать проведение тестирования нейросети и ее запуск для получения прогноза.

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

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

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

Можно привести конкретный пример. Предположим, что мы хотим с помощью нейросети предсказывать стоимость акции с погрешностью 20%. Сегодня акции стоят 95 долл., а завтра будут стоить 100. Что может быть спрогнозировано с большей точностью абсолютная цена акций, изменение цены или направление движения рынка? В первом случае прогноз будет в пределах 80-120$, что явно не представляет интерес. При прогнозе изменения цены результат будет находиться в интервале 4-6$., что соответствует абсолютной цене 99-101$ и более приемлем. Предугадать направление движения рынка вообще можно с еще большей точностью. Таким образом, результат зависит уже от того, как сформулирован целевой параметр.

При значительной величине вводимого параметра резко снижается точность представления величины. Чтобы избежать потерь в точности и огрубления результата, желательно все параметры представлять в виде их первой разности. В критичных случаях, когда данные не имеют выраженного тренда, необходимо усечь параметр на минимальное значение диапазона.

К основным преобразованиям исходных данных относятся масштабируемость данных, проверка коррелируемости, анализ периодичности. Их цель облегчить нейросетевой модели поиск функциональной зависимости между входными и выходными величинами.

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

Предположим, что данные по одному из параметров лежат в диапазоне . Тогда наиболее простым способом нормирования будет:

где: - исходное значение параметра; -значение, подаваемое на вход НС.

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

Так в случае если то распределение данных на входе может принять вид

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

Рассмотрим также преобразование качественных данных в числовые, которое может потребоваться для моделирования ряда практических задач. Качественные данные можно разделить на две группы: упорядоченные (ординальные) и неупорядоченные.

Примером упорядоченных данных могут являться данные, например, о дополнительных факторах риска при данном заболевании:

Нет

Ожирение

Алкоголь

Курение

Гипертония

Возможным примером может быть возраст больного:

До 25 лет

25-39 лет

40-49 лет

50-59 лет

60 и старше

Опасность каждого фактора возрастает в таблицах при движении слева направо.

В первом случае видно, что у больного может быть несколько факторов риска одновременно. В таком случае необходимо использовать такое кодирование, при котором отсутствует ситуация, когда разным комбинациям факторов соответствует одно и то же значение. Наиболее распространен способ кодирования, когда каждому фактору ставится в соответствие разряд двоичного числа. 1 в этом разряде говорит о наличии фактора, а 0 о его отсутствии. Параметру «нет» можно поставить в соответствии число 0. Таким образом, для представления всех факторов достаточно 4-х разрядного двоичного числа. Число означает наличие у больного гипертонии и употребления алкоголя, а числу соответствует отсутствие у больного факторов риска. В результате факторы риска будут представлены числами в диапазоне .

Во втором случае также можно кодировать все значения двоичными весами, но это будет нецелесообразно, т.к. набор возможных значений будет слишком неравномерным. В этом случае более правильным будет установка в соответствие каждому значению своего веса, отличающегося на 1 от веса соседнего значения. Так число 3 будет соответствовать возрасту 50-59лет. В результате возраст будет закодирован числами в диапазоне .

В принципе аналогично можно поступать и для неупорядоченных данных, поставив в соответствие каждому значению какое-либо число. Однако это вводит нежелательную упорядоченность, которая может исказить данные, и сильно затруднить процесс обучения.

В качестве одного из способов решения этой проблемы можно предложить поставить в соответствие каждому значению один из входов НС. В этом случае при наличии этого значения соответствующий ему вход устанавливается в 1 или в 0 при противном случае.

При большом количестве вариантов входного значения число входов НС разрастается до огромного количества. Это резко увеличит затраты времени на обучение. В качестве варианта обхода этой проблемы можно использовать несколько другое решение. В соответствие каждому значению входного параметра ставится бинарный вектор, каждый разряд которого соответствует отдельному входу НС. Например, если число возможных значений параметра 128, то можно использовать 7 разрядный вектор. Тогда 1 значению будет соответствовать вектор 0000000 а 128 - вектор 1111111, а 26 значению – 0011011. Тогда число требуемых для кодирования параметров входов можно определить как:

где: - количество значений параметра, - количество входов

Длина обучающей выборки для динамических процессов имеет большое значение в случае высокой волатильности входных и выходных параметров. Под волатильностью понимается стандартное историческое отклонение величины параметра во времени.

В наиболее простом случае волатильность параметра не меняется при изменении длины периода наблюдений. Это происходит, если параметр имеет постоянные динамику и тренд в течение всего горизонта наблюдений. В общем случае параметр меняет поведение с определенной периодичностью. Внутри более коротких периодов волатильность низкая, а при более широком охвате она резко возрастает.

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

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

Анализ корреляции входных и выходных параметров. Наличие корреляции между прогнозируемой величиной и некоторым входным значением является явным указанием на обоснованность выбора указанного входа ввиду наличия явной его зависимости от выхода либо наоборот.

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

Что касается количество слоев и нейронов в них, то в настоящий момент не разработано исчерпывающей и однозначной методики для определения количества скрытых слоев и количества нейронов в них.

Размерность входного сигнала и число нейронов последнего слоя в многослойных нейронных сетях определяются заданной обучающей выборкой. Определение числа нейронов в скрытых слоях представляет из себя нетривиальную задачу.

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

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

Количество обучающих фактов F:

2 * ( I + H + O ) < = F < = 10 * ( I + H + O ),

где: I - количество входов сети, H - количество спрятанных нейронов, O - количество выходов сети.

Количество скрытых нейронов H:

F / 10 - I - O < = H < = F / 2 - I - O,

где: I - количество входов сети, F - количество фактов обучающей выборки, O - количество выходов сети.

Во время обучения сети необходимо предусмотреть возможность динамического сокращения ошибки обучения. В процессе обучения нейронная сеть "блуждает" по поверхности ошибки. При этом она часто попадает в локальные минимумы ("рытвины" и "овраги" ) сложной поверхности. Степень точности, которая допускается при сравнении реального выхода сети и обучающей матрицы, сильно влияет на скорость обучения. Чем больше допустимая ошибка, тем больше разброс величин коррекции весов сети от факта к факту. Например, при точности 0,25 и потребном выходе 1,0 ответ сети 0,76 не вызовет необходимой коррекции, тогда как ответ 0,74 заставит сеть скорректировать веса в соответствии с разностью, равной 0,24, что довольно значительно и заставит сеть " скакнуть" далеко по гиперповерхности ошибки, возможно, в высокий локальный максимум, с которого сеть будет спускаться обратно в течение следующих нескольких циклов обучения. Визуально данное утверждение можно наблюдать на графике среднеквадратичной ошибки в процессе обучения с высоким допустимым отклонением.

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

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

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

Попытки заставить искусственную нейронную сеть как можно более точно воспроизводить выходные факты обучающей выборки в большинстве простых случаев приводят к значительному успеху. Однако впоследствии оказывается, что предъявление сети фактов, которые сеть еще не "видела", порождает большие ошибки (чем с большей точностью обучена сеть, тем значительней ошибки в тестовых испытаниях).

Таким образом, стремление обучить сеть на выборке из неограниченного и/или непрерывного множества с высокой точностью приводит к "запоминанию" ей лишь обучающей выборке, а не к желаемому обобщению предъявляемых данных.

Для избежания вышерассмотренной ситуации существует множество методик, основной из которых является внесение шумов в вектор входных величин. Это реализуется случайным непериодическим умножением отдельных величин вектора на малую константу, например, на 0,05 (изменение в пределах 5%). В результате получаем ограниченную, но непрерывную обучающую выборку, где один и тот же факт повторяется крайне редко. Ясно, что сеть никогда не обучиться всем фактам данной выборки с точностью, большей 5%. Однако это резко увеличивает способность сети к обобщению и при тестировании на всем множестве фактов количество неправильных ответов сильно снижается.

Случайность процесса обучения и порядок набора обучающих фактов. Процесс обучения сети несомненно случаен. Даже при абсолютно одинаковых начальных условиях инициализация весов сети перед обучением носит случайный характер. Сильно влияет на процесс обучения порядок обучающих фактов. Для оптимизации результатов можно создать и обучить несколько сетей, отличающихся только порядком обучающей выборки. В результате должны появиться несколько различных выходов на предъявляемые факты, которые в усреднении дадут более адекватный вариант.

Контрольные вопросы:

  1. Какие имеются типовые этапы решения практических задач с использованием нейронных сетей?

  2. Как задается область значений целевого параметра? Приведите примеры.

  3. Что такое масштабирование данных? Как производится масштабирование?

  4. Какие бывают качественные данные?

  5. Как преобразуются качественные данные в количественные?

  6. Что такое волатильность входных и выходных параметров?

  7. Что нужно делать при высокой волатильности?

  8. Что такое периодичностью временного процесса?

  9. Что нужно делать, если периодичность имеется?

  10. Для чего нужен анализ корреляции входных и выходных параметров?

  11. Для чего нужно перемешивание обучающих фактов?

  12. Как определить количество слоев и нейронов в них? Приведите формулы для оценки.

  13. Почему необходимо предусмотреть возможность динамического сокращения ошибки обучения?

  14. Что такое контроль "здоровья" сети? Как он производится?

  15. Зачем используются шумы в обучающем процессе? Как вносятся шумы?

  16. Что такое случайность процесса обучения? Как увеличить точность прогноза?