Показать сообщение отдельно

Нейронные сети (НС)
  #9  
Старый 04.11.2008, 15:56
Sinay
Постоянный
Регистрация: 01.09.2007
Сообщений: 866
Провел на форуме:
2022674

Репутация: 1224


Отправить сообщение для Sinay с помощью ICQ
По умолчанию Нейронные сети (НС)

От автора.

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

Немного теории.

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

О биологическом нейроне.

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


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

Математическая модель.

Как представить человеческий нейрон в виде математической модели? Это будет функция, которой передается N параметров - это дендриты. Wn - это вес синапсов каждого дендрита. Для простоты будем считать, что дендритов имеется три. К синапсам поступают импульсы силы X1, X2, X3. После прохождения синапсов к нейрону поступают импульсы силы W1*X1, W2*X2, W3*X3. Суммарный полученный импульс равен S = W1*X1+ W2*X2+ W3*X3. Сила исходящего импульса задается некоторой функцией F(S) = F(W1*X1+ W2*X2+ W3*X3).



Обучение сети.

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

Рассмотрим пример обучения сети на примере изучения алфавита(капча ):

Обучение нейронной сети похоже на обучение ребенка - мы показываем ему букву "А" и спрашиваем, что это за буква. Ребенок ответил неправильно - нужно сказать, что ему показали букву "А". Так будем повторять, пока ребенок не запомнит все буквы алфавита, и точно так же происходит процесс обучения нейронной сети.
Обучение сети заключается в том, чтобы подобрать значения весов так, чтобы сеть выдавала правильные ответы. Например, чтобы не получилось так, что на входе изображение буквы "L", а сеть сообщает, что ей передали значение "G". Обучение нейросети - это очень сложный процесс, потому что на практике количество весов может составлять 10-20 тысяч. Практически для каждой архитектуры нейронной сети разработаны специальные алгоритмы обучения, которые позволяют относительно быстро подобрать веса сети. Например, для обучения сети перцептрона используется метод Error Back Propagation (EBP) - метод обтачного распространения ошибки.

Примерно так выглядит искусственный нейрон:


Вернемся к примеру обучения сети английскому алфавиту. Пусть имеется база данных, содержащая картинки - наборы изображений букв. На вход нейронной сети передаем изображение буквы "D", а в ответ получаем какой-нибудь символ. Сначала ответ будет неправильным - это нормально, так как сеть еще ничего "не знает". Мы-то знаем правильный ответ, а сеть - нет, поэтому нужно сообщить ей, какую букву мы ей показали. Для этого на внешнем выходе, который ассоциируется с буквой "D", устанавливаем максимальный уровень сигнала - (0,0,0,1,0,0…). Буква "D" - четвертая в алфавите, поэтому четвертая компонента вектора будет равна 1, все остальные - 0. Можно так повторить все 26 раз, а можно использовать алгоритм EBP.
Сначала вычисляем разницу между полученным ответом и правильным ответом (получим вектор ошибки), а затем, согласно алгоритму EBP, вводим необходимые поправки в веса сети. Одну и ту же букву можно повторять несколько раз, пока сеть не будет ее узнавать с вероятностью 100% - вот так тренируется сеть. После многократного повторения система весов сети стабилизируется и сеть начинает давать правильные ответы почти на все вопросы. При работе с нейронными сетями нужно помнить, что сеть может ошибаться - это нормальное явление, и человеку точно так же свойственно ошибаться. В процессе обучения суммарное количество ошибок постепенно уменьшается. Когда количество ошибок равно 0 (или очень близко к этому значению в процентном соотношении), сеть считается обученной - ее можно использовать.
"Умственные" способности сети, как и человека, зависят от образования - того набора данных, которые получила сеть в процессе обучения. Наша сеть может отлично знать английский алфавит, но если вы передадите ей на вход изображение буквы "Б", сеть или ничего не ответит, или ответ будет неправильным. Изображения буквы "Б" не было в той базе данных, которая использовалась для обучения сети. Обучение сети - это очень сложный процесс, который во многом зависит от той самой базы данных: чем больше примеров в базе, тем лучше будет работать сеть.

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

Использование и применение сети.

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

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

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

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

З.Ы.

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

Рекомендую посетить и почитать:

http://ai.obrazec.ru/-статьи

http://www.gotai.net/documents/doc-nn-007.aspx-статьи

http://www.intuit.ru/department/ds/neuronnets/-лекции

http://www.orc.ru/~stasson/neurox.html-статьи,книги

В создании статьи пользовался:

http://ru.wikipedia.org/
http://www.gotai.net/documents/doc-nn-007.aspx
 
Ответить с цитированием