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

1. Гипотеза (так могло бы быть).

2. Феноменологическая модель (ведем себя так, как если бы...).

3. Приближение (что-то считаем очень малым или очень большим, например, предполагаем, что погрешность в исходных данных отсутствует или очень мала).

4. Упрощение (опускаем для ясности некоторые детали).

5. Эвристическая модель (подтверждения существования аналогов в природе нет, но построенная модель способствует более глубокому пониманию вопроса).

6. Аналогия (учтем только некоторые особенности, такие как схожесть исследуемого объекта с каким-то другим, про который знаем гораздо больше).

7. Черный ящик (работу исследуемой системы считаем неизвестной, «черным ящиком», внутри которого «что-то» и «как-то» работает, а мы, не имея возможности его вскрыть, пытаемся установить взаимосвязь между входами и выходами).

8. Визуализация (наглядное отображение информации в виде графика или диаграммы, как правило, меньшей размерности).

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

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

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

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

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

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

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

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

Задачи, решаемые нейронными сетями

Классификация

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

Аппроксимация данных

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

Тестирование регрессионных моделей - более сложный процесс в сравнении с классификаторами. При высокой размерности данных имеет смысл избегать постановки задачи в форме непрерывной аппроксимации, если можно ограничиться задачей классификации с несколькими классами (в этом случае они соответствуют попаданию значений данных в определенные диапазоны). Например, в задаче с анализом курса доллара мы не ставим задачу узнать, поднимется или упадет он на 5, 10, или 15 копеек (аппроксимация), а хотим узнать, вообще поднимется он или упадет («+» или «-» - классификация).

Кластеризация

и визуализация данных

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

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

Особый вид задач - визуализация многомерных данных, изменяющихся во времени (многомерных временных рядов). Цель здесь состоит не в группировке состояний, а в кластеризации схожих сценариев изменения состояний. В этом случае визуализация заключается в «перескоке» вектора состояний из кластера в кластер. Характерным примером может послужить определение момента изменения тренда, скажем, при финансовом анализе деятельности компании - часто «ухудшение» показателей первое время не заметно, но направление тренда уже поменялось и пора «звонить в звоночек». При решении такой задачи может, например, на основе нейронной сети строиться соответствующий индикатор, который дополняет структуру KPI* руководителя компании.

Задача восстановления

пропущенных данных

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

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

Специфические сложности создания НС

Говоря об универсальности нейронных сетей по сравнению со статистикой и о широком круге решаемых ими задач, резонно задать вопрос: почему же их использование только начинается, неужели никто про их свойства ничего не знает?

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

Структура нейронной сети

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

Основу работы отдельного нейрона можно описать следующей формулой:

.

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

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

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

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

Создание «идеальной»

нейронной сети

Приведем некий общий принцип построения «идеальной» нейронной сети.

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

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

Именно поэтому основной критерий построения «идеальной» сети - принцип максимальной простоты. Другими словами, выбирается такая нейронная сеть, которая наилучшим образом описывает систему и при этом использует наименьшее число нейронов и скрытых слоев, вплоть до полного отказа от использования нейронной сети.

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

Кроме сложности подбора структуры сети, следует учитывать еще несколько особенностей.

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

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

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

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

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

Александр КАЛУГИН