Aбракадабра.py








Учебные материалы для студентов

Здравоохранение, медицина



Здравоохранение, медицина



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


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

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

Основной идеей создания нейросетевых систем была попытка имитации структуры нервной ткани. Работа уже обученной системы напоминает распространение нервных импульсов. Каждому узлу (нейрону) сети приписывается некоторое числовое значение. Значение, приписываемое каждому узлу нижнего уровня, или рецептору, равно значению некоторого поля (переменной) из записи, которая в данный момент подается на вход нейронной сети. Значения, связываемые с нейронами более верхних уровней, определяются по следующему алгоритму. В обученной сети каждой связи между нейронами приписывается некоторый вес, действительное число, лежащее, как правило, в диапазоне от -1 до +1. Отдельный нейрон условно показан в нижней части (б). Чтобы определить значение, связанное с каким-либо нейроном, вычисляется входной уровень нейрона – взвешенная сумма значений всех нейронов предыдущего уровня, связанных с данным нейроном; множители равны весам соответствующих связей. Если ai - значение на нейроне, связанном с i-ым входом данного нейрона, а wi – вес соответствующей связи, то входной уровень определяется как .

Каждый нейрон имеет так называемую передаточную функцию f, которая для каждого значения порогового уровня возвращает некоторое число, приписываемое нейрону t = f(p).

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

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

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

Нейросетевые методы обладают рядом положительных свойств, определяющих области их использования:

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

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

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

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

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

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

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

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

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







(c) Aбракадабра.py :: При поддержке InvestOpen