Самообучающиеся системы и их применение для принятия решений

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 19.07.2012
Размер файла 103,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Самообучающиеся системы и их применение для принятия решений

Введение

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

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

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

Построенные в соответствии с этими принципами самообучающиеся системы имеют следующие недостатки:

· относительно низкую адекватность баз знаний возникающим реальным проблемам из-за неполноты и / или зашумленности обучающей выборки;

· низкую степень объяснимости полученных результатов;

· поверхностное описание проблемной области и узкую направленность применения из-за ограничений в размерности признакового пространства.

Индуктивные системы позволяют обобщать примеры на основе принципа индукции «от частного к общему». Процедура обобщения сводится к классификации примеров по значимым признакам. Алгоритм классификации примеров включает следующие основные шаги.

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

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

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

Проверка окончания процесса классификации. Если какое-то подмножество примеров принадлежит одному подклассу, т.е. у всех примеров этого подмножества совпадает значение классификационного признака, то процесс классификации заканчивается.

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

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

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

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

· получение информации о текущей проблеме;

· сопоставление полученной информации со значениями признаков прецедентов из базы знаний;

· выбор прецедента из базы знаний, наиболее близкого к рассматриваемой проблеме;

· адаптация выбранного прецедента к текущей проблеме;

· проверка корректности каждого полученного решения;

· занесение детальной информации о полученном решении база знаний.

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

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

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

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

Для извлечения значимой информации из хранилищ данных имеются специальные методы (OLAP-анализа, DataMining или KnowledgeDiscovery), основанные на применении методов мате-матической статистики, нейронных сетей, индуктивных методов построения деревьев решений и других.

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

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

Нейронные сети применяются для решения задач классификации или кластеризации многомерных данных. Основная идея лежащая в основе нейронных сетей - это последовательное преобразование сигнала, параллельно работающими элементарными функциональными элементами. Основой нейронной сети является нейрон. Нейрон состоит из 3 логических блоков: входы, функция преобразования, выход. На каждый вариант входа (вектор) функция преобразования нейрона вырабатывает определённый сигнал (выход) (обычно скаляр), и передает его на входы другим нейронам сети. Подавая на входы некоторым нейронам сигналы извне, и отметив выходы части нейронов, как выходы сети в целом, мы получим систему осуществляющею отображение Rn > Rk, где n - размерность входа (информации из вне), а k - размерность выхода. Нейронные сети различаются функцией преобразования в нейронах, внутренней архитектурой связей между нейронами и методами настройки (обучения).

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

Отметим наиболее интересные нейросетевые архитектуры и результаты их применения:

· Модель Хопфильда с ассоциативной памятью.

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

· Рекурсивные сети Элмана, способные обрабатывать последовательности векторов.

· Вероятностные сети, аппроксимирующие Байесовские классификаторы с любой степенью точности.

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

· Модель формального кибернетического нейрона.

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

· Модель формального нейрона. Пунктирной рамкой выделен блок функции преобразования.

Блок функции преобразования можно так же разделить на части: синаптические веса, блок суммирования, функция нелинейного преобразования.

Итак, опишем алгоритм работы блока функции преобразования:

Входные сигналы умножаются на коэффициенты (синаптические веса или просто веса). Для каждого входа - свой коэффициент.

Умноженные на веса входы суммируются.

Результат суммирования подаётся на вход функции преобразования. Обычно .

Результат функции подаётся на выход.

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

простой порог,

линейно-пороговая функция,

сигмоида,

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

Данная модель формально кибернетического нейрона, была предложена Мак-Каллоком и Питтсом в 1943 году и встречается во многих нейросетях, но не является догмой. Существуют нейронные сети и с другими моделями нейронов: о них подробнее мы поговорим ниже.

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

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

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

· Предадим синаптическим весам некоторые начальные значения.

· Предъявим сети вектор из обучающей выборки.

· Вычислим отклонения выхода сети от желаемого.

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

Повторим шаги 2-4 пока сеть не станет выдавать ожидаемый выход на векторах из обучающей выборки или пока отклонение не станет ниже некоторого порога.

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

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

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

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

Классические нейросетевые архитектуры.

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

Для описания любой нейронной сети нужно определить для неё следующие положения:

· Модель формального нейрона (функция преобразования и т.д.);

· Структура связей нейронов сети;

· Метод обучения сети;

· В дальнейшем мы будем придерживаться именно такого плана изложения.

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

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

т.е. простым порогом.

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

Отметим, что на входе и на выходе у персептрона - двоичные вектора, то есть персептрон осуществляет некоторое двоичное отображение (функцию). Действительными числами являются только веса связей соединяющих рецепторы и ассоциативный слой. Для j-го нейрона сети определён вектор Vj. Таким образом, персептрон определяется матрицей W размерности mxn, где Wij - вес связи i-ого рецептора с j-м ассоциативным нейроном.

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

Начальными значениями элементов матрицы весов W (t=0) положим случайные неотрицательные числа.

Пусть на входной вектор xб сеть формирует выход

Вычислим ошибку

Подстроим веса по следующей формуле:

,

где 0<з<1.

Будем повторять шаги 2-4 пока на всех обучающих векторах не будет нулевой ошибки, или пока суммарная ошибка не будет меньше некоторого малого числа.

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

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

Такая сеть должна осуществлять двоичную функцию от двух аргументов. К таким функциям относятся многие основные функции алгебры логики, такие как логическое «и», «или», сложение по модулю 2.

Проведём некоторые преобразования. Как известно выход данной сети

где f - функция преобразования, x1 и x2 - входы, W1 и W2 - веса связей. Следовательно

иными словами нейрон является линейным классификатором, т.е. разделяет пространство входных векторов(образов) на 2 класса гиперплоскостью, в нашем случае прямой x1W1 + x2W2 - И = 0.

Как видно на картинке множества белых и чёрных точек нельзя разделить прямой. Одна из известных двоичных функций не представимых с помощью персептрона - исключающие «или» (сложение по модулю 2). Когда рецепторов больше двух, получим общее уравнение гиперплоскости в n мерном пространстве:

.

Так как в персептроне ассоциативные нейроны не зависят друг от друга, то в общем случае (n рецепторов, k ассоциативных нейронов), мы всё равно получим k линейных классификаторов. Этот недостаток и послужил причиной забвения персептрона.

Многослойный Персептрон. Сразу после краха персептрона Розенблата начались попытки создать нейросеть без свойства линейной разделимости. Основной идеей являлось увеличение количества слоёв ассоциативных нейронов, однако долгое время не существовало алгоритма обучения таких сетей. Первым алгоритмом обучения многослойной нейросети был алгоритм обратного распространения ошибки (errorbackpropagation). Итак опишем многослойный персептрон и методы его обучения.

Модель нейрона претерпела изменения. Теперь нейроны рецепторы принимают на вход действительные числа (обычно от 0 до1), а ассоциативные нейроны используют сигмоидальную функцию преобразования

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

Областью значений функции является интервал (0,1).

Функция бесконечное число раз непрерывно дифференцируема.

Её производная выражается только через неё саму: f' = f (1 - f).

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

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

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

Обучение многослойного персептрона происходит по схеме «обучение с наставником». Опишем самый популярный метод обучения многослойного персептрона - метод обратного распространения ошибки. Сначала изложим основную идею метода. Итак, мы хотим изменять веса связей нейронов пропорционально их вкладу в ошибку. Для последнего слоя вычисление ошибки довольно очевидное действие, но как вычислить ошибку для предыдущих слоёв? Главной идеей метода обратного распространения ошибки является предположение, что ошибка распространяется по нейросети в обратном направлении (от выхода к входам). То есть вклад веса связи в ошибку пропорционален значению проходящего по связи сигнала и ошибке (дальнего по ходу сигнала) нейрона. Таким образом ошибка связи двух нейронов зависит от ошибки ближнего к выходу сети нейрона и прошедшего по связи сигнала. Ошибка как бы распространяется от выходов к входам - отсюда и название метода. Опишем его в точных математических терминах. Пускай у нас есть обучающая выборка из пар (Xб, Yб), б=1,2., p. Будем использовать для обучения метод градиентного спуска:

Пусть W - матрица весов связей нейронов скрытого слоя, V - матрица весов выходного слоя. Придадим им в начальный момент случайные значения

Пускай на входной образ Xб сеть вырабатывает выходной образ . Запишем как функционирует скрытый слой:

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

Начнём с выходного слоя. Согласно методу градиентного спуска

где h - темп обучения. Так как

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

Теперь перейдём к скрытому слою. Опять по методу градиентного спуска имеем:

Как и на предыдущем шаге применяя формулы неявного дифференцирования и свойства сигмоды вычислим .

В формуле (*) для вычисления ошибки нейрона скрытого слоя и раскрывается главный смысл метода обратного распространения ошибки о котором мы говорили выше.

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

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

Можно было заметить, что мы проводили все вычисления с параметром функции преобразования И = 0. Это было сделано для упрощения. Как же нам учесть его? Легко заметить, что параметр И можно заменить, так называемым, фиктивным входом x0 = -1 с весом W0 = И. Таким образом для любого нейрона выход равен

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

Сложность этого алгоритма линейная от числа нейронов, то есть . Главными недостатками метода являются:

Медленная сходимость (свойство метода градиентного спуска).

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

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

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

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

· Прогнозирование поведения рынка;

· Распознавание речи;

· Анализ изображений;

· Экспертные системы.

2. Рекурсивные сети. Программа Акинатор

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

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

Модель нейрона такая же, как и в многослойном персептроне.

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

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

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

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

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

Что же происходит? Рассмотрим прохождение последовательности сигналов через сеть. Сигнал поступает на вход проходит в скрытый слой. Преобразованный скрытым слоем сигнал пойдёт на выходной слой, а его копия - на задержку. Сигнал, пройдя через выходной, слой выйдет из сети. Далее в сеть поступает второй сигнал. Поступив на входы он пойдёт на скрытый слой, просуммированный с сигналом, находящимся на задержки. После этого выход скрытого слоя пойдёт в выходной, а его копия опять сохранится в задержке. И так далее. Обычно, перед суммированием сигнал из задержки умножается на некоторый коэффициент W меньше единицы. Чем больше этот коэффициент, тем сильней влияние предыдущих сигналов на выход сети. Иногда между сигналом в задержке и входным сигналом берётся среднее арифметическое. Из структуры понятно, что количество нейронов скрытого слоя и количество входов (размерность входного образа) должны быть равны. Такой вариант рекурсивной сети реализован, например, в NeuralNetworksToolbox в системе MatLab.

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

Сделаем несколько общих для всех рекурсивных нейросетей замечаний:

Единицей обработки является не один образ, а последовательность.

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

Сеть сохраняет все свойства многослойного персептрона.

Для первого элемента обрабатываемой последовательности все рекурсивные элементы предполагаются неактивными или принимают заранее предопределённое состояние.

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

Итак, пускай у нас есть обучающая выборка:

{Xб, Yб}; б = 1,2,…, p,

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

Возьмём некоторую последовательность {Xnб, Ynб} из обучающей выборки.

Для пары образов {X1б, Y1б}, проведём коррекцию весов с помощью алгоритма обратного распространения ошибки, считая задержку пустой (нулевой сигнал), заполнив все элементы задержки, согласно конкретной архитектуре связей.

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

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

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

Способность обрабатывать последовательности образов, учитывая связь между элементами последовательности.

Способность вырабатывать последовательности в ответ как на последовательности, так и на единичные образы (достаточно дополнить образ до последовательности нулевыми сигналами).

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

Рекурсивные нейросети широко используются в:

Задачах обработки звука и речи.

Анализе электронных схем.

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

Акинатор - интернет-игра, разработанная двумя французскими программистами в 2007 году. Игрок должен загадать любого персонажа, а Акинатор должен его отгадать. В качестве персонажа могут выступать как реальные личности, так и выдуманные персонажи из любых произведений: рассказов, фильмов, сказок и т.д. Акинатор, внешне напоминающий джинна, задаёт 20 вопросов. У него есть две дополнительные попытки (в каждой из которых несколько дополнительных вопросов) на тот случай, если он не смог отгадать загаданного игроком персонажа за отведённые 20 вопросов. Или же, наоборот, он может задать меньше вопросов, если смог отгадать персонажа быстрее. Согласно Google Trends, игра стала популярной в ноябре 2008 года. В настоящее время игра представлена на 10 языках, в том числе и на русском. Также существует мобильная версия Акинатора.

На каждый вопрос предлагается выбрать один из пяти вариантов ответа: «Да», «Возможно, частично», «Я не знаю», «Скорее нет, не совсем», «Нет». После того, как игрок ответил на вопрос, Акинатор задаёт следующий.

Примеры вопросов Акинатора: «Ваш персонаж существует на самом деле?», «Ваш персонаж женщина?», «Ваш персонаж носит усы?», «Ваш персонаж герой мультфильма?».

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

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

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

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

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

В каком-то смысле дерево - это очень «механистический», «машинный» способ игры, крайне неустойчивый к малейшим неточностям. Нам же нужно играть так, как стал бы играть рациональный человек. Тем, кто более-менее знаком с теорией вероятности, должно быть известно, что у нее существует так называемая Байесовская интерпретация, а также основанный на ней Байесовский подход. В основе этого подхода лежит описание знаний с помощью распределений случайных величин с последующим преобразованием априорных знаний в апостериорные на основе наблюдений при помощи знаменитой формулы Байеса. Более того, такой подход является единственным обобщением классической алгебры логики на случай неопределенности (об этом можно прочитать, например, тут). Это наводит многих ученых на мысль, что Байесовский подход является эталоном рационального мышления. Что же, нам только этого и нужно. Попробуем применить его к нашей задаче. Итак, вспоминаем формулу Байеса: P (A|B) = P (B|A) P(A)/P(B). А теперь словами. Пусть нам нужно оценить вероятность того, что произошло событие A, при условии, что событие B точно произошло (то есть мы его гарантированно пронаблюдали; именно поэтому B часто называют наблюдением). По формуле Байеса эта вероятность пропорциональна произведению двух других. Первая из них, P (B|A), называется правдоподобием и показывает, с какой вероятностью событие B происходит при условии, что произошло A. Второй множитель, P(A), - это так называемая априорная вероятность события A, то есть вероятность, что оно в принципе произойдет (вне зависимости от B). По сути, эта вероятность отражает информацию, которую мы знали об A до того, как узнали о том, что произошло B. В знаменателе формулы также присутствует величина P(B), которая в данном случае просто играет роль нормировочного коэффициента и может быть проигнорирована.

Использовать эту формулу в контексте игры в вопросы довольно легко. Давайте считать, что Ai - это событие вида «вы загадали объект i», где i может быть как Споком, так и Девой Марией. Поскольку B - это наблюдение относительно Ai, то естественно было бы считать, что B состоит из ответов на вопросы. Единственный вариант, который я тут вижу, - это представить B в виде совместного события «На вопрос Q1 был дан ответ A1,…, на вопрос Qk был дан ответ Ak». Тогда P (Ai|B) будет для объекта i показывать вероятность того, что был загадан именно он (с учетом того, что пользователь дал ответы на k вопросов). Это именно та величина, которая нас интересует. Выбрав объект с максимальным значением P (Ai|B), можно, если значение P (Ai|B) достаточно велико, попробовать использовать его в качестве догадки. Априорную вероятность P(Ai) можно рассматривать как частный случай P (Ai|B) при k=0. Иначе говоря, это вероятность, что игрок загадал объект i при условии, что вопросов задано не было, и мы вообще ничего не знаем. С одной стороны, можно было бы дать всем объектам равные P(Ai), т.к. это честно. С другой стороны, Барака Обаму наверняка будут загадывать намного чаще, чем Холдена Колфилда. Поэтому при прочих равных (то есть когда мы не можем различить объекты), следует выбирать именно Обаму. Следовательно, естественной оценкой P(Ai) будет отношение числа игр, когда был загадан X, к общему их числу. Правдоподобие P (B|Ai) тоже получает удобную интерпретацию. Только прежде нужно воспользоваться одним небольшим трюком - предположить условную независимость ответов на вопросы при условии Ai (несколько грубое, но очень удобное для нас упрощение). В переводе на русский это значит, что по предположению вероятность P (B|Ai) может быть записана в виде произведения (по j) вероятностей P (Bj|Ai), где Bj - событие вида «На вопрос Qj был дан ответ Aj». P (Bj|Ai) в этом случае будет отношением числа раз, когда при загаданном объекте i на вопрос Qj был дан ответ Aj к числу раз, когда при загаданном объекте i в принципе был задан вопрос Qj. В целях избежания нулевых и неопределенных вероятностей предлагаю дополнительно считать, что изначально на каждый из вопросов каждый из вариантов ответов был дан по разу. То есть в случае, если вопрос Qj еще ни разу не задавался об объекте i, P (Bj|Ai) будет равно 1/Nj, где Nj - число вариантов ответа на вопрос Qj (я, к слову, использовал для всех вопросов одни и те же 4 варианта ответа: «да», «нет», «не знаю» и «вопрос не имеет смысла»). Подведем промежуточный итог. Мы нашли простую формулу, которая отображает набор пар вопрос / ответ и некоторую сущность в вероятность, что при данных ответах на вопросы была загадана именно эта сущность. Пересчитав эту вероятность для всех объектов в нашей базе данных после ответа на новый вопрос можно видеть, какие из них больше похожи на загаданный объект на настоящий момент. Более того, обучение нашей модели реализуется довольно просто: нужно просто для каждой сущности в базе хранить информацию о том, какие вопросы про нее задавались и сколько ответов каждого из типов дали пользователи. После каждой игры эту информацию можно обновлять, основываясь на ответах пользователя. Также, для учета «популярности» персоны в базе нужно хранить число раз, которое персона была загадана. Ну что же, осталось только понять, какие вопросы лучше задавать. Естественно, задавать нужно те вопросы, которые дают больше информации. Но разве мы можем как-то эту информацию измерить? Оказывается, что да. Для этого можно воспользоваться понятием информационной энтропии. Если говорить грубо, но понятно, то информационная энтропия - это такая характеристика распределения случайной величины (измеряемая, как и информация, в битах), которая показывает, насколько мы не уверены в том, какое значение эта случайная величина примет. Например, если случайная величина принимает значение 1 с вероятностью 0.99, и значение 0 - с вероятностью 0.01, то энтропия такого распределения будет очень близка к нулю. Если же случайная величина принимает, к примеру, значения 0 и 1 с равными вероятностями 0.5 (орел или решка), то энтропия такой случайной величины будет равна 1 биту (это как раз то количество информации, которое мы должны получить, чтобы устранить неопределенность).

Ладно, давайте выбирать каждый раз тот вопрос, ответ на который сильнее всего уменьшит энтропию распределения P (Ai|B), которое как раз и отвечает за наши знания о том, кого загадал игрок. Тут сразу возникает еще одна проблема: вообще говоря, разные ответы на один и тот же вопрос могут уменьшать энтропию по разному. Что же делать? Предлагается находить тот вопрос, для которого ожидаемое уменьшение энтропии будет максимальным. Ожидаемое уменьшение энтропии показывает, насколько «в среднем» уменьшится энтропия, если мы зададим некоторый вопрос. Чтобы не писать здесь еще несколько абзацев текста, приведу формулу, по которой эту величину можно посчитать. Желающие без труда поймут, почему она имеет такой вид. Итак, нужно каждый раз задавать такой вопрос j, для которого величина H [P(Ai|B, <Qj, Yes>)] P (<Qj, Yes>) +… + H [P(Ai|B, <Qj, No>)] P (<Qj, No>) минимальна. Через H[P] тут обозначена энтропия распределения вероятности P, а через «<Qj, Ans>» - событие «на вопрос Qj дан ответ Ans». Величину P (<Qj, Ans>) можно легко найти по формуле полной вероятности, просуммировав ее, обусловленную по всем известным объектам. Тоесть P (<Qj, Ans>) = sum(i) P (<Qj, Ans>|Ai) P (Ai|B).

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

Заключение

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

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

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

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

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

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

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

Есть еще множество программ «говорилок» например: Говорилка, ChatMaster, ElectronicBrain 1300, Болтун.

Самообучающиеся программы для защиты почты, например программы анти спам например: VanquishPersonalAntiSpam, AlchemySpamFilter, SpamTerrier, CAMELOT Security. Препятствуют доступу почтового «мусора», спам-изображений, вирусов, шпионящих приложений. Блокируют спамерские рассылки, защищают личную переписку. Запоминаютссылки с которых рассылается спам и их блокируют.

Существует нейросеть которая угадывает мысли за 20 вопросов ее адрес http://y. 20 q.net/anon. 20Q.net - это эксперимент в области искусственного интеллекта. Система задает наводящие вопросы и таким образом угадывает, какой предмет вы загадали. Это вариант старой игры «20 вопросов», но только с применением современных нейросетевых технологий, которые обучаются с каждой игрой. В отличие от классической игры, здесь максимальное количество вопросов составляет 30. Можно давать не только категоричные ответы, но и относительные, например, «может быть», «обычно», «частично» и т.д. Если выбрать «неизвестно», то вопрос заменяется, а ответ не сохраняется в базе знаний.

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

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

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

кластеризация акинатор рекурсивный нейронный

Список источников

1. С. Терехов. Лекции по теории и приложениям нейронных сетей. ВНИИТФ, Снежинск, 2005 г.

2. J.L. ELMAN. Finding Structure in Time. COGNITIVE SCIENCE, 14, 179-211, 2001.

3. H. NINOMIYA, A SASAKI. A Study on Generalization Ability of 3-Layer Recurrent. NeuralNetworks. IJCNN, 2002.

4. T. Koskela, M. Lehtokangas, J. Saarinen, K. Kaski. Time Series Prediction with Multilayer Perceptron, FIR and Elman Neural Networks. 2001.

5. Лисицын Е. Radial Based Functions (Функции Радиального Вида) // On-line журнал «Графика и мультимедиа» Выпуск 2, 2003 г.

Размещено на Allbest.ru


Подобные документы

  • Характеристика моделей обучения. Общие сведения о нейроне. Искусственные нейронные сети, персептрон. Проблема XOR и пути ее решения. Нейронные сети обратного распространения. Подготовка входных и выходных данных. Нейронные сети Хопфилда и Хэмминга.

    контрольная работа [1,4 M], добавлен 28.01.2011

  • Сущность и понятие кластеризации, ее цель, задачи, алгоритмы; использование искусственных нейронных сетей для кластеризации данных. Сеть Кохонена, самоорганизующиеся нейронные сети: структура, архитектура; моделирование кластеризации данных в MATLAB NNT.

    дипломная работа [3,1 M], добавлен 21.03.2011

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

    курсовая работа [1,1 M], добавлен 06.12.2010

  • История возникновения, примеры использования и основные виды искусственных нейронных сетей. Анализ задач, решаемых при помощи Персептрона Розенблатта, создание схемы имитационной модели в среде Delphi. Исходные коды компьютерной программы Perseptron.

    дипломная работа [933,1 K], добавлен 18.12.2011

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

    презентация [1,3 M], добавлен 23.09.2015

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

    реферат [270,4 K], добавлен 07.03.2009

  • Основы нейрокомпьютерных систем. Искусственные нейронные сети, их применение в системах управления. Алгоритм обратного распространения. Нейронные сети Хопфилда, Хэмминга. Современные направления развития нейрокомпьютерных технологий в России и за рубежом.

    дипломная работа [962,4 K], добавлен 23.06.2012

  • Возможности программ моделирования нейронных сетей. Виды нейросетей: персептроны, сети Кохонена, сети радиальных базисных функций. Генетический алгоритм, его применение для оптимизации нейросетей. Система моделирования нейронных сетей Trajan 2.0.

    дипломная работа [2,3 M], добавлен 13.10.2015

  • Механизм работы нервной системы и мозга человека. Схема биологического нейрона и его математическая модель. Принцип работы искусственной нейронной сети, этапы ее построения и обучения. Применение нейронных сетей в интеллектуальных системах управления.

    презентация [98,6 K], добавлен 16.10.2013

  • Базовые архитектуры компьютеров: последовательная обработка символов по заданной программе и параллельное распознавание образов по обучающим примерам. Искусственные нейронные сети. Прототип для создания нейрона. Поведение искусственной нейронной сети.

    контрольная работа [229,5 K], добавлен 28.05.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.