Министерство образования и науки российской федерации федеральное агентство по образованию санктпетербургский государственный университет
Скачать 1.41 Mb.
|
5. Нейронные сети 5.1. Принцип построения нейронных сетей Стандартный способ решения любой задачи с применением компьютера заключается в том, что задача исследуется, составляется алгоритм, который реализуется на языке программирования в виде программы. После отладки программа готова к эксплуатации. Пусть нам поручено создать робот, играющий в баскетбол, а именно, та его часть, которая отвечает за бросание мяча в корзину. Первое, с чего нужно начать, это составить дифференциальные уравнения для полета мяча с разных позиций, внести поправки на сопротивление воздуха, параллакс датчиков по отношению к исполнительному устройству и т.д. После этого можно приступать к программированию. В то же время вряд ли кто-нибудь предположит, что Шакил О’Нил знает хотя бы элементарную математику, не говоря о высшей. Человеческий мозг, очевидно, решает эту задачу принципиально другим способом. Все знают, какой это способ – многократное повторение. В предыдущем разделе мы рассматривали обучение, результатом которого являются вероятности наступления тех или иных событий. А возможно ли создать такую вычислительную структуру, которая бы без всякого программирования, на основе многократных повторений, могла бы обучаться решению задач. Такая структура называется нейронной сетью. Идея позаимствована у природы. Нейронная сеть представляет собой совокупность нейронов – вычислительных элементов (иногда называемых персептронами), каждый из которых имеет несколько входов-синапсов и один выход-аксон. Рис.5.1. Одиночный нейрон Интеллект одиночного нейрона (рис.5.1) невысок. Можно считать, что он реализует в сете простую регрессионную модель для N независимых переменных. Если же объединить множество нейронов, в сетевые структуры, то и реализуемая функция может быть сколь угодно сложной. Изображенная на рисунке 5.2 сеть имеет явно выраженные слои, т.е. ряды нейронов, равноудаленные от входа (выхода). Могут создаваться и другие структуры, в том числе с обратными связями (рекуррентные). Y X 1 X N X 2 58 Рис.5.2. Нейронная сеть Реализация такой сети может быть аппаратной, когда каждый нейрон выполнен на отдельном микропроцессоре, или программной, если нейроны эмулируются в специальных программах, подобных электронным таблицам. Структура отдельного нейрона может быть произвольной, но чаще всего используется следующая (рис.5.3): Рис.5.3. Структура нейрона Входные сигналы (переменные) X i взвешиваются (умножаются на коэффициенты W i , называемые синаптическими весами), затем суммируются, и полученная взвешенная сумма S = W 1 X 1 +W 2 X 2 +…+W N X N подвергается изменению функцией f(S), называемой функцией активации. Выходной сигнал Y также может повергаться взвешиванию (масштабированию). В качестве функции активации чаще всего используются сигмоидная функция Y = 1 / (1 + exp(-λS)), а также гиперболический тангенс, логарифмическая функция, линейная и другие. Основное требование к таким функциям – монотонность. W 1 W 2 W N X 1 X 2 X N f(S) Y 59 Рис.5.4. Функция логистического сигмоида Рассмотрим теперь, каковы вычислительные возможности единичного нейрона. Пусть число синапсов равно трем, и синаптические веса W 1 , W 2 , W 3 равны 1.0 , а функция активации имеет следующий вид, представленный графиком (это функция логистического сигмоида, смещенная вдоль оси Х вправо на 0,5 (рис.5.5): Рис.5.5. Вид функции активации для реализации булевых функций Пусть входные сигналы принимают значения 0 или 1. В этом случае на выходе будет приблизительно 1 в случае, если хотя бы один из входных сигналов равен 1, то есть функцию дизъюнкции. Если же синаптические веса W 1 , W 2 , W 3 установить в 0.2, то этот же нейрон будет реализовывать функцию конъюнкции. 5.2. Обучение нейронной сети Аналогия с мозгом не заканчивается на структуре нейрона и сети нейронов. Из природы позаимствована также идея обучения нейронных сетей. Известно, что человеческий мозг способен к самообучению, причем достигает успехов зачастую, не зная природы процессов, лежащих в основе выполняемых действий. Например, чтобы попасть мячом в баскетбольное кольцо, робот- баскетболист должен измерить расстояние до кольца и направление, рассчитать 60 параболическую траекторию, и совершить бросок с учетом массы мяча и сопротивления воздуха. Человек же обходится без этого только через тренировки. Многократно совершая броски и наблюдая результаты, он корректирует свои действия, постепенно совершенствуя свою технику. При этом в его мозгу формируются соответствующие структуры нейронов, отвечающие за технику бросков. Таким образом, непременным атрибутом обучения является многократное повторение и возможность немедленной оценки полученного результата. Для нейронных сетей это процесс может быть представлен следующим алгоритмом (рис.5.6): Рис.5.6. Процесс создания и использования нейронной сети Выбор структуры нейросети представляет собой отдельную задачу и заключается в выборе топологии сети и функций активации каждого нейрона. Вначале параметры нейронов устанавливаются произвольно. Обучение заключается в том, что на вход сети подаются специальные тренировочные данные, то есть такие входные данные, выходной результат для которых известен. На выходе формируются результирующие данные, результаты сравниваются с ожидаемыми, и вычисляется значение ошибки. После этого в определенной последовательности выполняется коррекция параметров нейросети с целью минимизации функции ошибки. Если удовлетворительной точности достигнуть не удается, следует изменить структуру сети и повторить обучение на множестве тренировочных данных. После того, как сеть обучена, выполняется тестирование, то есть контроль точности на специальных тестовых данных. Это означает, что все данные следует разбить на два подмножества: на первом из них выполняется обучение сети, а на втором – тестирование. Это разбиение может быть случайным или регулярным, например, каждая вторая запись исходного массива данных может использоваться для тестирования. Тестирование от обучения отличается тем, что на тестовых данных только проверяется точность, а, поскольку эти данные Формирование структуры сети Обучение Тестирование Использование 61 не используются для подбора параметров сети, они могут служить критерием качества обучения. По аналогии с обучением человека тестирование можно уподобить экзамену. В качестве примера рассмотрим задачу оптического распознавания текстов. Пусть на вход сети в качестве входных сигналов подается матрица точек выделенного фрагмента изображения, соответствующая распознаваемому символу (рис.5.7). Пусть на вход сети подается матрица точек распознаваемого знака. На выходе формируются сигналы, соответствующие распознанному знаку. Обучение сети заключается в многократном «предъявлении» сети разных вариантов начертания символов вместе с готовыми «ответами». Рис.5.7. Нейронная сеть в задаче распознавания символов Заметим, что сеть не пытается запомнить все возможные варианты начертания каждого символа, а лишь формирует выходной сигнал Y j = f(X 1 , X 2 ,…X n ) как функцию от входных переменных. Заметим, что такой подход к распознаванию текстов обладает существенным преимуществом перед прочими в быстродействии. Так же и человек: чтобы прочитать текст, не спрашивает названия шрифта, и не ищет в памяти все возможные начертания символов. Ассоциации в мозгу устанавливаются мгновенно. Задача обучения сети имеет огромную размерность. Так, для обучения сети, состоящей всего из 10 нейронов, в каждом из которых по 3 синапса, необходимо подобрать значения по меньшей мере 40 параметров (30 значений W i – синаптических весов, и 10 параметров функций активации λ i ). Если каждый из параметров подбирать с дискретностью 1/100, то общее число прогонов сети на множестве тренировочных данных составит 100 40 . Очевидно, что такая задача не под силу даже суперкомпьютерам. Данная задача удовлетворительно решается с помощью алгоритма обратного распространения (back propagation), который заключается в следующем. Вначале все параметры сети устанавливаются произвольно. 1. Через сеть прогоняются тренировочные данные, и вычисляется суммарная функция ошибки E = sum(E i 2 ), где E i = Y i - y i , Y i – вычисленное значений выходной величины, y i – ожидаемое значение. Нейронная сеть ASCII код символа 62 2. Вычисляется значение производных функции ошибки по каждому па- раметру, а на их основе – расчет поправок к параметрам нейронной сети. 3. Параметры сети корректируются на величину поправок, после чего шаги 2 и 3 повторяется с начала до тех пор, пока функция ошибки не снизится до заданного уровня. Несмотря на простоту, данный алгоритм является весьма трудоемким, и его ускорение представляет собой актуальную задачу. Если в результате обучения не был получен удовлетворительный результат, то необходимо изменить структуру сети. Это может быть сделано вручную, либо структура может выбираться из заранее созданного набора (библиотеки структур). Программные продукты, поддерживающие такие решения, существуют. Но наиболее удачным следует признать подход, при котором структура сети формируется автоматически. Примером может служить нейросеть NGO компании BioComp Systems Inc. ( www.biocompsystems.com) Данный подход заключается в применении к этой задаче генетических алгоритмов. Дело в том, что в процессе обучения сети выявляются «сильные» нейроны и связи между ними (чувствительные к изменению параметров) и «слабые» (параметры которых можно менять произвольно без существенного влияния на конечный результат). Используя эти данные, можно управлять популяцией нейронов. Слабые нейроны и синапсы должны отмирать, а для развития структуры, а также чтобы предотвратить всеобщее «вымирание», сеть подвергается «мутации»: в нее случайным образом или другим способом, например, для усиления «сильных» нейронов добавляются новые нейроны и синаптические связи. Таким образом, через множество поколений, количество которых может достигать десятков тысяч, сеть будет иметь оптимальную структуру. В связи с этим может возникнуть вопрос: а зачем тратить такое количество времени на оптимизацию структуры сети, если обучение сети максимальной размерности с полным набором связей займет заведомо меньшее время? К тому же ранее было сказано, что быстродействие обученной нейронной сети достаточно велико. Причины здесь две. Первая заключается в том, что зачастую обученная сеть в дальнейшем реализуется на другой платформе, в частности, на аппаратном уровне. Вторая причина – оптимизация часто приводит к существенному снижению количества входных переменных за счет исключения избыточных, не влияющих на конечный результат. Этот факт придает нейросетям качественно новое свойство: можно не заботиться о том, какие входные данные являются важными, а какие нет – в процессе обучения лишние будут отброшены. В статистике подобную функцию выполняют пошаговая линейная регрессия, дисперсионный и факторный анализ. Например, мы пытаемся использовать нейросеть для предсказания курса доллара. В качестве исходных данных мы можем подставить поведение этого курса в течение нескольких лет (кстати, такой способ предсказания величин на 63 основе только их поведения в прошлом называется «технический анализ»), экономические индикаторы и индексы (Dow Jones, NASDAQ, потребительские цены), а также любые другие, вплоть до данных метеонаблюдений. Если на всех этих данных будет получена нейросеть, дающая хорошие прогнозы, то пользоваться ею будет довольно утомительно, а иногда и дорого. При этом выявление значимых параметров само по себе представляет ценный результат. Если окажется, что на курс доллара оказывает влияние температура воздуха, можно исследовать природу данного феномена. Мне могут возразить, что такую связь можно обнаружить, сравнивая графики температуры воздуха и курса доллара. Однако, прямое сравнение позволяет обнаружить, главным образом, линейную зависимость, к тому же здесь в работу включается интеллект человека. 5.3. Особенности использования нейронных сетей Полная автоматизация выбора топологии и параметров нейросети, предоставляемая пакетами программ, подобным NGO, может создать иллюзию того, что можно совсем не управлять процессом моделирования с помощью нейронной сети. Однако, применение нейронных сетей, как и статистических методов анализа, является творческим процессом, требующим понимания принципов работы данного инструмента. Следствиями неправильного построения и обучения нейросети, в основном, являются обобщение или переобучение. Обобщением называется излишнее упрощение сети, при котором она не воспроизводит мелкие зависимости. Например, обобщение сети для прогнозирования погоды приведет к тому, что она будет выдавать среднюю температуру для данного сезона. Крайняя степень обобщения в этой задаче – среднегодовая температура. Естественно, пользы от такого прогноза будет немного. Переобучение – это другая крайность, при которой нейронная сеть имеет излишне сложную структуру и в процессе обучения слишком тщательно подгоняет результаты к желаемым. Как результат, на данных, не участвующих в обучении, сеть показывает худшие результаты. Признак переобучения – существенная разница погрешностей на этапе обучения и на этапе тестирования. Еще одна опасность слишком длительного обучения в сочетании с генетической модификацией топологии сети – обесценивание результатов тестирования. Если при однократной процедуре обучения данные тестирования заведомо не участвуют в процессе обучения, то при модификациях сети данные тестирования используются для отбраковки неудачных топологий и, тем самым, оказывают влияние на конечную сеть. Существенный недостаток нейронных сетей — неспособность к экстраполяции. Иными словами, нейросеть, обученная в некотором диапазоне значений входных переменных, не в состоянии прогнозировать за пределами этого диапазона. На практике это обычно выражается в том, что за пределами области обучения выходная переменная не меняется, как показано на рис.5.8. Если сеть обучена в диапазоне -0,5 < X < 0,5, то за пределами этого диапазона 64 график выходной функции обычно лежит горизонтально. Рис. 5.8. Поведение нейронной сети вне области обучения Несмотря на то, что нейронная сеть берет на себя любое, даже самое сложное преобразование входных переменных в выходные, предварительная обработка данных обычно не лишена смысла. Так, в случае прогнозирования на фондовом рынке, вероятно, целесообразным является переход от абсолютных значений котировок к относительным, т.е. к приращениям от одного наблюдения к другому. В таком случае для нейронной сети безразлично, колебания вокруг каких уровней использовать для обучения, если нас интересует лишь направление изменения котировок, вверх или вниз. В абсолютных же значениях сеть, обученная на колебаниях котировок вокруг значений 1000 или 5000 абсолютно бесполезна для прогнозирования в окрестности цифры 3000. Факт Прогноз 65 6. Экспертные системы Экспертная система – это программа, которая в состоянии заменить собой человека-эксперта в его профессиональной деятельности. Структурно экспертная система состоит из базы знаний, машины вывода и пользовательского интерфейса. База знаний имеет тот же смысл, что и в Прологе, т.е. состоит из фактов и правил. Машина вывода (inference engine) обращается к базе знаний (knowledge base) и преобразует запрос пользователя в ответ, задавая ему при необходимости вопросы, используя пользовательский интерфейс. Такая структура позволяет развивать экспертные системы, добавляя в нее новые знания, и при этом не требуется переписывать программу. Пустая экспертная система (без базы знаний) называется оболочкой (expert system shell) и может использоваться для многих предметных областей. Создание экспертной системы заключается в формализации, т.е. преобразования знаний эксперта в форму, которая требуется для оболочки экспертной системы. Иными словами, требуется человек-эксперт, который является носителем знаний и в состоянии эти знания сформулировать для занесения в базу знаний. Этот факт является определяющим для выбора экспертной системы в качестве инструмента решения задачи. Человек-эксперт далеко не всегда в состоянии изложить свои знания в том виде, как этого требует формат базы знаний. В таких случаях вступает в действие инженер по знаниям (knowledge engineer), который является «переводчиком» между экспертом и базой знаний. Рассмотрим работу экспертной системы на простом примере. Пусть наша база знаний предназначена для классификации животных. Предположим, что мы увидели животное и хотим ее идентифицировать. Пусть база знаний содержит всего двух животных, зебру и леопарда. Правила для описания этих животных (не в синтаксисе конкретной базы знаний, а в вольном переводе на русский язык) выглядят следующим образом: «ЕСЛИ животное относится к классу млекопитающих И животное относится к виду хищников И животное имеет черные пятна, ТО животное – леопард» «ЕСЛИ животное относится к классу млекопитающих И животное относится к виду травоядных И животное имеет черные и белые поперечные полосы, ТО животное – зебра» Экспертная система начинает проверять гипотезы в порядке их расположения в базе знаний, в данном случае, начиная с леопарда. Чтобы установить истинность этой гипотезы, экспертная система должна сначала установить, относится ли животное к классу млекопитающих. Для этого она должна найти в базе знаний правило: «ЕСЛИ женская особь животного имеет молочные железы, ТО животное относится к классу млекопитающих». 66 Теперь, чтобы установить принадлежность животного к млекопитающим, предстоит выяснить, имеет ли оно молочные железы. Если соответствующего правила в базе знаний нет, то пользователь должен сам дать ответ на этот вопрос. В этом случае экспертная система должна задать вопрос: |