Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Нечеткая логика и нейронные сети

Содержание:

Введение

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

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

Основными задачами, поставленными для достижения цели можно считать:

- рассмотрение теоретических аспектов функционирования нейронной сети;

- исследование истории развития и методов обучения нейронных сетей;

- практическое применение нечеткой логики при решении задач с помощью программного комплекса MatLab.

Объектом исследования являются нейронные сети.

Предметом исследования являются история развития и обучение нейронных сетей.

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

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

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

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

Часть I. Теоретическая часть

1. История развития нейронных сетей

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

В то же время, Мак-Каллоком и Питтсом были проведены первые работы, в которых были получены основные результаты в данном направлении. В 1943 году они разработали компьютерную модель нейронной сети на основе математических алгоритмов и теории деятельности головного мозга. Ими было выдвинуто предположение, что нейроны можно упрощённо рассматривать как устройства, работающие с двоичными числами, эта модельбыла названа ими «пороговой логикой». Подобно биологическим нейронам нейроны Мак-Каллока–Питтса могли обучаться подстройкой параметров, описывающих синаптическую проводимость. Ученые предложили конструкцию сети из электронных нейронов, идея заключалась в том, что любая связь типа "вход-выход" может быть реализована искусственной нейронной сетью. Тогда им казалось, что подобная сеть может выполнять практически любые вообразимые числовые или логические операции. Они предположили, что такая сеть может обладать всеми чертами интеллекта и сможет также обучаться, обобщать, распознавать образы.

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

В это время происходит разделение в области моделирования процесса мышления на два независимых направления: логическое и нейрокибернетическое. Логическое рассматривает применение нейронных сетей для решения различных прикладных задач в качестве метода искусственного интеллекта. Позже с появлением «экспертных систем» (в начале 80-х годов) это направление развилось в научно-технологическое направление информатики занимающееся созданием т. н. «систем, основанных на знаниях». С этим направлением обычно ассоциируют термин «искусственный интеллект». Второе направление ориентированное на изучение биологических процессов в головном мозге, — нейрокибернетическое — основывалось на построении самоорганизующихся систем, состоящих из множества элементов, подобных нейронам головного мозга. Это направление началось с концепции формального нейрона Мак-Каллока-Питтса, исследований в Массачусетском технологическом институте 1954 году Фарли и Кларк, которые с использованием компьютеров разработали имитацию сети Хебба. Также исследования нейронных сетей с помощью компьютерного моделирования в 1956 году проводились Рочестером, Холландом, Хебитом и Дудой.

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

В 1959 году Бернард Видров и Марсиан Хофф разработали модели ADALINE и MADALINE (Множественные Адаптивные Линейные Элементы (Multiple ADAptive LINear Elements)). MADALINE действовала, как адаптивный фильтр, устраняющих эхо на телефонных линиях. Эта нейросеть до сих пор в коммерческом использовании.

В 1969 году началось снижение интереса к нейронным сетям в связи с публикацией Минского и Пайперта "Перцептроны», формально доказав ограниченность перцептрона и его неспособность решать достаточно широкий круг задач. Были вскрыты основные вычислительные проблемы, возникающие при компьютерной реализации искусственных нейронных сетей. Во-первых однослойные нейронные сети не могли совершать «сложение по модулю 2», то есть реализовать функцию «Исключающее ИЛИ». Во-вторых, компьютеры того времени не обладали достаточной вычислительной мощностью, чтобы эффективно обрабатывать вычисления для больших нейронных сетей. Все это приводит к снижению интереса многих исследователей к нейронным сетям до начала 80-х.

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

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

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

1987 г. - Роберт Хехт-Нильсон, разработал сети встречного распространения ошибки, работая над временными ограничениями сети обратного распространения ошибки. В результате время обучения с обратным распространением может уменьшаться в таких сетях в сто раз. Другая проблема искусственных нейронных сетей была проблема стабильности-пластичности, которая заключалась в том, что обучение новому образу уничтожает или изменяет результаты предшествующего обучения. Эту проблему в 1987 году решил Гроссберг, создав адаптивную резонансную теорию и, построенную на ее основе модель нейронных сетей. Сети и алгоритмы адаптивной резонансной теории сохраняют пластичность, которая нужна для изучения новых образов, и предотвращает изменение ранее запомненных образов.

2000-е годы применение стохастических методов обучения, таких как «Обучение Коши» и «Больцмановское обучение» помогло решить проблему попадания в локальный минимум. В университете Торонто Джеффри Хинтон в 2007 году, используя ограниченную машину Больцмана при обучении нижних слоев сети, создал алгоритмы глубокого обучения многослойных нейронных сетей. Эти алгоритмы можно использовать для изучения промежуточных представлений, с выходным сигналом, и без него, чтобы понять основные особенности распределения сенсорных сигналов, поступающих на каждый слой нейронной сети. Сейчас разработано достаточно много других моделей нейронных сетей, имеющих свои особенности.

Рассказывая о искусственных нейронных сетях нельзя не упомянуть про эмпирический тест предложенный в 1950 году Аланом Тьюрингом для определения может ли машина мыслить, идея которого была опубликована в статье «Вычислительные машины и разум» в философском журнале Mind. Во время теста человек-судья, общаясь с «думающей машиной» и другим человеком, должен определить кто из собеседников действительно человек, а кто нет. Если он не может сказать определённо, кто из собеседников является человеком, то считается, что машина прошла тест. Чтобы судья не мог сделать заключение исходя из скорости ответов, переписка производится через определенные промежутки времени. Если во времена Тьюринга это правило было необходимо т.к. компьютеры реагировали медленнее человека, то сейчас это необходимо, потому что они реагируют гораздо быстрее, чем человек. Тест критикуют за ярко выраженную направленность в сторону человека: проверяется только способность машины походить на человека, а не разумность машины вообще, За непрактичность, что он не может быть по-настоящему полезным при разработке разумных машин и др. Но несмотря на это у теста и множество достоинств. Сильной стороной теста Тьюринга является то, что можно разговаривать о чем угодно и особенно его простота.

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

С 1991 года проводится ежегодный конкурс на получение премии Лебнера, являеющийся платформой для практического проведения тестов Тьюринга. Соревнование было организовано с целью продвижения вперёд исследований, связанных с искусственным интеллектом. За время проведения конкурса серебряная (текстовая) и золотая (аудио и зрительная) медали никогда ещё не вручались. Бронзовой медалью судьи награждают компьютерную систему, которая из представленных на конкурс, по их мнению, продемонстрирует «наиболее человеческое» поведение в разговоре. Например в 2000, 2001 и 2004 году бронзовую медаль завоевывала программа «Искусственное лингвистическое интернет-компьютерное существо» (Artificial Linguistic Internet Computer Entity - A.L.I.C.E.), а в 2005 и 2006 побеждала программа Jabberwacky, способная к обучению.

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

2. Аналогия нейронных сетей с мозгом и биологическим нейроном

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

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

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

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

Нейрон

Рис. 2.1 – Нейрон

Нейрон (нервная клетка) является особой биологической клеткой, которая обрабатывает информацию (Рис. 2.1). Он состоит из тела клетки или сомы, и двух типов внешних древоподобных ветвей: аксона и дендритов. Тело клетки включает плазму, которая производит необходимые для нейрона материалы, и ядро, которое содержит наследственную информацию. Нейрон получает импульсы от других нейронов через приемники - дендриты и передает сигналы, сгенерированные телом клетки, вдоль аксона, который в конце разделяется на волокна. На окончаниях этих волокон находятся синапсы (рис. 2.2).

Синапс

Рис. 2.2 – Синапс

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

Нейроны головного мозга действуют медленнее, чем транзисторы компьютера. Нейрон получает входные сигналы и, объединяя их, принимает решение генерировать либо нет импульс, для передачи синапсам соседних нейронов. Обычный нейрон может выполняет такую операцию и возвращается в исходное состояние за 5 миллисекунд. То есть за 1 секунду он выполняет около 200 таких операций! Современные компьютеры выполняет несколько сотен миллиардов операций в секунду. Значит, одна компьютерная операция выполняется в миллиарды раз быстрее, чем обычная операция в человеческом мозге.

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

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

3. Понятие искусственного нейрона

Одна из первых успешных попыток построения формальной модели реальных нейронов была предпринята в 1943 году Уорреном Мак-Каллоком и Уолтером Питтсом. Они считали, что произвольную высшую нервную деятельность, можно представить, как некоторую активность в сети, состоящей из логических элементов, принимающих только два состояния (1 или 0). А для каждого логического выражения можно сопоставить сеть логических элементов, обладающих  поведением, которое описывается некоторым выражением. На Рис. --- изображена модель формального нейрона, которая была предложена в дополнении к теории. Нейрон вычисляет взвешенную сумму n входных сигналов xj, j = 1,2..n, и формирует на выходе сигнал величины 1, если эта сумма превышает определенный порог u, и 0 – в противном случае. Положительные синаптические веса Wi соответствуют возбуждающим связям, а отрицательные – тормозным. Мак-Каллок и Питтс доказали, что если подобрать веса соответствующим образом, то система параллельно работающих нейронов будет способна выполнять универсальные действия. Таким образом, можно провести аналогию между биологическим и формальным нейроном: взаимосвязь имитируется аксонами и дендритами, веса связей соответствуют синапсам, а пороговая функция отражает активность сомы. Входные сигналы преобразуются нейроном в выходной сигнал с использованием трех функциональных блоков: локальной памяти, блока суммирования и блока нелинейного преобразования(рис 3.1).

Формальный нейрон

Рис. 3.1 Функциональная схема формального нейрона Мак-Каллока и Питтса

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

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

http://uran.donntu.org/~masters/2006/kita/kornev/library/l6_clip_image002.gif

Рис. 3.2. Структура искусственного нейрона

 Нейрон в целом реализует скалярную функцию векторного аргумента. Математическая модель нейрона:

http://uran.donntu.org/~masters/2006/kita/kornev/library/l6_clip_image003.gif

Y = f(S)

где Wi, - вес синапса; b - значение смещения; S - результат суммирования; Xi - компонент входного вектора; Y - выходной сигнал нейрона; n - число входов нейрона; f - нелинейное преобразование - функция активации.

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

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

На входной сигнал (S) нелинейный преобразователь отвечает выходным сигналом f(S), который представляет собой выход Y нейрона. Примеры активационных функций представлены в табл. 3.1. и на рис. 3.3.

Таблица 3.1

http://uran.donntu.org/~masters/2006/kita/kornev/library/l6_clip_image004.gif

http://uran.donntu.org/~masters/2006/kita/kornev/library/l6_clip_image005.gif

Рис. 3.3. Примеры активационных функций
а - функция единичного скачка; б - линейный порог (гистерезис); 
в - сигмоид (логистическая функция); г - сигмоид (гиперболический тангенс)

Одной из самых часто используемых является нелинейная функция активации с насыщением, так называемая логистическая функция или сигмоид:

http://medznate.ru/tw_refs/47/46900/46900_html_m2aee3840.gif

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

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

4. Виды искусственных нейронных сетей

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

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

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

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

4.1 Однослойные сети

Примером простейшей однослойной ИНС может служить трехней­ронный перцептрон (рис. 4.1), На рисунке маленькие круги слева (xi) служат лишь для распределения входных сигналов. Они не выполняют каких - либо вычислений, и поэтому не считаются слоем. Каждый элемент из множества входов Х отдельным весом соединен с каждым искусственным нейроном, и каждый нейрон дает на выход Y взвешенную сумму входов.

http://medznate.ru/tw_refs/47/46900/46900_html_78f0f140.png

Рис.4.1 Однослойный перцептрон

На n входов поступают некие сигналы, проходящие по синапсам на 3 нейрона, образующие единственный слой этой ИНС и выдающие три выходных сигнала:


http://medznate.ru/tw_refs/47/46900/46900_html_423e78c1.gifj=1...3

Все весовые коэффициенты синапсов одного слоя нейронов можно свести в матрицу W, в которой каждый элемент wij задает величину i-ой синаптической связи j-ого нейрона. Таким образом, процесс, происходящий в ИНС, может быть записан в матричной форме:


Y=F(XW)


где X и Y – соответственно входной и выходной сигнальные векторы, F(W) – активационная функция, применяемая поэлементно к компонентам вектора W.

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

http://scorcher.ru/neuro/science/perceptron/mem29.files/image001.jpg

Рис. 4.2. Элементарный персептрон Розенблатта

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

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

Нейронная сеть Коско (рис.4.3) или двунаправленная ассоциативная память (ДАП) — это однослойная нейронная сеть с обратными связями, базирующаяся на двух идеях: адаптивной резонансной теории Стефана Гросбера и модели нейронной сети Хопфилда.

DAP.png

Рис.4.3 Нейронная сеть Коско

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

4.2 Многослойные сети

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

Классификация искусственных нейронных сетей
Рис. 4.4. Архитектуры нейронных сетей: а – полносвязная сеть, б – многослойная сеть с последовательными связями, в – слабосвязные сети

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

В многослойных (или многосвязных) сетях нейроны объединяются в слои. Слой содержит совокупность нейронов с общими входными сигналами. Число нейронов в каждом слое может быть любым и никак не связано с количеством нейронов в других слоях. Внешние входные сигналы подаются на входы нейронов первого слоя (входной слой часто нумеруют как нулевой). Выходами сети являются выходные сигналы последнего слоя. Вход нейронной сети можно рассматривать как выход «нулевого слоя» вырожденных нейронов, которые служат лишь в качестве распределительных точек, суммирования и преобразования сигналов здесь не производится. Кроме входного и выходного слоев в многослойной нейронной сети есть один или несколько промежуточных (скрытых) слоев.
Связи от выходов нейронов некоторого слоя q к входам нейронов следующего слоя (q + 1) называются последовательными.

В свою очередь, среди слоистых сетей выделяют следующие типы.
Сети без обратных связей (прямого распространения). В таких сетях нейроны входного слоя получают входные сигналы, преобразуют их и передают нейронам 1-го скрытого слоя, далее сигнал срабатывается 1-м скрытым слоем и так далее до последнего слоя, который дает выходные сигналы (рис. 4.4-б). Обычно каждый выходной сигнал q-го слоя подается на вход всех нейронов (q+l)-го слоя; однако возможено соединение q-го слоя с произвольным (q+р)-м слоем.

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

Классификация искусственных нейронных сетей
Рис. 4.5 Частично-рекурентные сети: а – Элмана; б – Жордана

Слабосвязные сети (нейронные сети с локальными связями) представляют собой слоистые сети с небольшим количеством связей (рис 1-в).

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

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

253055_html_268b8665-1024x473.png

Рис.4.6 Многослойная нейронная сеть

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

http://ok-t.ru/studopedia/baza6/1003659081536.files/image029.png

Рис. 4.7. Двухслойная нейронная сеть.

Если активационная функция линейна для каждого слоя, то вычисление выхода слоя заключается в умножении входного вектора на первую весовую матрицу с последующим умножением результирующего вектора на вторую весовую матрицу, то Y=F(XW1(W2))=F(X(W1W2)) Значит, двухслойная линейная сеть эквивалентна одному слою. Это показывает, что двухслойная линейная сеть эквивалентна одному слою с весовой матрицей, равной произведению двух весовых матриц. Следовательно многослойные сети с линейной активационной функцией не приводят к увеличению вычислительной мощности по сравнению с однослойной сетью, любая многослойная линейная сеть может быть заменена эквивалентной однослойной сетью.

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

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


https://habrastorage.org/files/ecf/14b/b8c/ecf14bb8c80a4ccda622b2d51ef6e458.png

Рис.4.8 Архитектура нейронной сети Хопфилда

Каждый нейрон может находиться в одном из 2-х состояний(«возбужденном» и «заторможенном»):

S(t) ϵ{-1;+1}

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

Динамика состояния во времени i-ого нейрона в сети из N нейронов описывается дискретной динамической системой:

формула 1.png

где Ji,j— матрица весовых коэффициентов, описывающих взаимодействие дендритов i-ого нейрона с аксонами j-ого нейрона.

Отметчу, что Ji,j=0, i=1,…,N и случай формула 2.png не рассматриваются.

Нейронную сеть можно использовать в качестве ассоциативной памяти, а также для обработки неупорядоченных и упорядоченных во времени или пространстве образцов. Нейронная сеть Хопфилда устроена так, что её отклик на запомненные m {\displaystyle m} эталонные «образы» составляют сами эти образы, а если образ немного исказить и подать на вход, он будет восстановлен и в виде отклика будет получен оригинальный образ. Таким образом, сеть Хопфилда осуществляет коррекцию ошибок и помех. Эта модель является наиболее распространенной математической моделью в нейронауке, что обусловлено ее простотой и наглядностью. Сеть Хопфилда показывает, каким образом может быть организована память в сети из элементов, которые не являются очень надежными. Экспериментальные данные показывают, что при увеличении количества вышедших из строя нейронов до 50%, вероятность правильного ответа все равно крайне близка к 100%.

Развитием нейронной сети Хопфилда является - Нейронная сеть Хэмминга. Это вид нейронной сети, которую используют для классификации бинарных векторов, основным критерием в которой является расстояние Хэмминга. В отличие от сети Хопфилда, выдаёт не сам образец, а его номер. Сеть была предложена с 1987 году Ричардом Липпманом.

https://upload.wikimedia.org/wikipedia/commons/thumb/8/8f/Elman_srnn.png/220px-Elman_srnn.png

Рис. 4.9 Сеть Элмана

Нейронная сеть Элмана (рис. 4.9, рис 4.10) представляет из себя трёхслойную нейронную сеть, вход, выход и скрытый слой. Дополнительно к сети добавлен слой «контекстных нейронов». Скрытый слой соединён с контекстным блоком с фиксированным весом, равным единице. С каждым тактом времени на вход поступает информация, которая проходит прямой ход к выходному слою в соответствии с правилами обучения. Благодаря фиксированным обратным связям в контекстном блоке сохраняются предыдущие значения скрытого слоя (до того как скрыты слой поменяет значение в процессе обучения). Таким образом сеть сохраняет своё состояние, что может использоваться в предсказании последовательностей, выходя за пределы мощности многослойного перцептрона.

http://textarchive.ru/images/1078/2154063/154480d5.png

Рис.4.10 сети Элмана

Нейронная сеть Джордана похожа на сети Элмана. Только в ней блок контекстных нейронов связаны не со срытым, а с выходным слоем. Контекстный блок таким образом сохраняет своё состояние. Они обладают рекуррентной связью с собой.

Сеть Джордана (рис.4.11) — вид нейронных сетей, который получается из многослойного перцептрона, если на его вход подать, помимо входного вектора, выходной с задержкой на один или несколько тактов.

При прохождении сигнала через сеть Джордана, он поступает на группу рецепторов соединенных с внешним миром (INPUT) и проходит в скрытый слой (HIDDEN). Обработанный скрытым слоем сигнал попадает на выходной слой (OUTPUT) и выходит из сети, а его копия попадет на задержку. Далее в сеть, на рецепторы, воспринимающие внешние сигналы, поступает второй образ, а на контекстную группу рецепторов (CONTEXT) — выходной образ с предыдущего шага. Затем сигнал из контекстного блока и входа идет в скрытый слой, от туда на выходной и так далее.

https://upload.wikimedia.org/wikipedia/ru/6/68/ANN_Jordan.png

Рис. 4.11 Сеть Джордана

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

rj[jytyjy.png

Рис.4.12 Пример карты Кохонена.

Размер каждого квадратика (рис.4.12) соответствует степени возбуждения соответствующего нейрона.

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

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

Для применения нейронных сетей Кохонена в задачах классификации требуется формализация. Каждый объект, который требуется классифицировать, представляется в виде вектора, который подается на вход нейронной сети. Количество нейронов во входном слое определяется количеством компонентов этого входного вектора. Количество выходов определяется количеством классов. Если количество классов N, то и количество нейронов в выходном слое тоже будет N. Таким образом, каждый нейрон в выходном слое «отвечает» за свой класс. Значения, которые принимают нейроны в выходном слое, отображают насколько вектор классифицируемого объекта на входе близок, по мнению нейронной сети Кохонена, к тому или иному классу. Чем больше «уверенность», что объект принадлежит к тому или иному классу, тем больше значение принимает нейрон соответствующего класса. Иногда применяют специальную функцию активации, которая делает сумму выходов со всех нейронов равной единице. В таком случае каждый выход можно трактовать, как вероятность того, что объект принадлежит к данному классу.[1]

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

rj[jytyjy2.png

Рис. 4.13 Нейронная сеть Кохонена

Нейроны входного слоя служат лишь точками разветвления и не выполняют никаких вычислений. Каждый нейрон входного слоя А соединен отдельным весом с каждым нейроном скрытого слоя B (слоем Кохонена). Например, первый нейрон слоя А соединен с первым нейроном слоя Кохонена весом WA1-B1. Нейроны слоя В суммируют поступающие значения и подают их на выходной слой C. Сигнал передается с одного нейрона слоя Кохонена на один нейрон выходного слоя. Обучение нейронной сети Кохонена - это обучение без учителя.

5. Обучение нейронных сетей

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

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

5.1 Обучение с учителем

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

Элементами этих множеств есть пары ( X, YI ), где X - вход, для обучаемой нейронной сети, YI - идеальный (желаемый) выход сети для входа X, так же определяется функция ошибки E. Обычно это средняя квадратичная ошибка:

\begin{displaymath}E=\frac{1}{P}\sum\limits_{i=1}^{P}(d_i-y_i)^2\end{displaymath}

где P - количество обработанных нейронной сетью примеров, yi - реальный выход нейронной сети, di - желаемый (идеальный) выход нейронной сети;

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

Схема обучения "с учителем" в общем виде выглядит так :

Весовые коэффициенты нейронной сети устанавливаются некоторым образом, обычно - малыми случайными значениями.

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

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

Если после нескольких итераций алгоритма обучения ошибка обучения EL падает почти до нуля, в то время как ошибка обобщения EG в начале спадает а затем начинает расти, то это признак переобучения сети. В этом случае обучение необходимо прекратить.

Обучение сети методом Розенблатта состоит в подстройке весовых коэффициентов каждого нейрона. Имеется набор пар векторов (x, y),  = 1..p, так называемая обучающая выборка. Нейронная сеть считается обученной на данной обучающей выборке, если при подаче на вход сети каждого вектора x на выходах получается соответствующий вектор y

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

Шаг 0.

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

Шаг 1.

Сети предъявляется входной образ x, в результате формируется выходной образ Y’≠Y

Шаг 2.

Вычисляется вектор ошибки δ=(Y’-Y), делаемой сетью на выходе. Дальнейшая идея состоит в том, что изменение вектора весовых коэффициентов в области малых ошибок должно быть пропорционально ошибке на выходе, и равно нулю если ошибка равна нулю.

Шаг 3.

Вектор весов модифицируется формуле: http://scorcher.ru/neuro/science/perceptron/mem29.files/image006.gif. где http://scorcher.ru/neuro/science/perceptron/mem29.files/image007.gif- скорость обучения.

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

Шаг 4.

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

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

Персептрон Розенблатта ограничивается бинарными выходами. Видроу и Хофф изменили модель Розенблатта. Их первая модель - ADALINE (Adaptive Linear Element) имела один выходной нейрон и непрерывную линейную функцию активации нейронов.

\begin{displaymath}
y=\sum\limits^n_{j=1} w_j x_j
\end{displaymath}

Метод обучения Видроу-Хоффа известен еще как дельта-правило (delta-rule). Этот метод ставит своей целью минимизацию функции ошибки E в пространстве весовых коэффициентов.

\begin{displaymath}
E=\sum\limits_{k=1}^{P}E(k)
=\frac{1}{2}\sum\limits_{k=1}^{P}(d^k-y^k)^2
\end{displaymath}

где

P - количество обработанных и сетью примеров

E(k) - ошибка для k-го примера

yk - реальный выход сети для k-го примера

dk - желаемый (идеальный) выход сети для k-го примера

Минимизация E осуществляется методом градиентного спуска 

\begin{displaymath}
w_j(t+1)=w_j(t) - a \cdot \frac{\partial E(k)}{\partial w_j(t)}
\end{displaymath}

Где

\begin{displaymath}
\frac{\partial E(k)}{\partial w_j(t)}=
\frac{\partial E(k)}{...
...}\cdot
\frac{\partial y^k}{\partial w_j}=
(y^k-d^k)\cdot x_j^k
\end{displaymath}

Таким образом весовые коэффициенты изменяются по правилу 

wj(t+1)=wj(t) - a * (yk-dk)* xjk

Пример результатов работы линейного классификатора на основе ADALINE(рис.5.1).

adaline result

Рис.5.1 результат работы ADALINE

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

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

http://ok-t.ru/studopedia/baza6/1003659081536.files/image033.png

где http://ok-t.ru/studopedia/baza6/1003659081536.files/image035.png- изменение веса связи на шаге итерации t обучающей пары вход-выход i -го нейрона, получающего входной сигнал, и j –го нейрона, посылающего выходной сигнал; µ - коэффициент, задаваемый пользователем в интервале (0,1); ɛ - величина шага сети или мера точности обучения сети. Чем меньше шаг сети, тем больше времени потребуется на обучение сети и тем больше вероятность ее попадания в окрестность локального минимума ошибки.

Общая ошибка функционирования сети определяется по формуле:

http://ok-t.ru/studopedia/baza6/1003659081536.files/image037.png

где http://ok-t.ru/studopedia/baza6/1003659081536.files/image039.pngи http://ok-t.ru/studopedia/baza6/1003659081536.files/image041.png- соответственно «эталонное» и действительное значение выходного сигнала j – го блока для p – й обучающей пары нейронов вход-выход.

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

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

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

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

5.2 Обучение без учителя

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

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

wij(t+1)=wij(t)+a * yi[n-1] * yj[n]

где yi[n-1] выходное значение нейрона i слоя n-1, yj[n] выходное значение нейрона j слоя n, wij(t) и wij(t-1) весовой коэффициент синапса, соединяющего эти нейроны, на итерациях t и t-1 соответственно, a - коэффициент скорости обучения.

Существует также дифференциальный метод обучения Хебба.

wij(t+1)=wij(t) + a * ( yi[n-1](t) - yi[n-1](t-1) ) * ( yj[n](t) - yj[n](t-1) )

Здесь yi[n-1](t) и yi[n-1](t-1) выходное значение нейрона i слоя n-1 соответственно на итерациях t и t-1, yj[n](t) и yj[n](t-1) то же самое для нейрона j слоя n. Как видно из формулы, сильнее всего обучаются синапсы, соединяющие те нейроны, выходы которых наиболее динамично изменились в сторону увеличения.

Алгоритм обучения с применением этих формул выглядит так:

1. При инициализации всем весовым коэффициентам присваиваются небольшие слу­чай­ные значения.

2. На входы сети подается входной образ, и сигналы возбуждения распространяются по всем слоям согласно по принципу классических прямопоточных сетей, то есть для каждого нейрона рассчитывается взвешенная сумма его входов, к которой затем применяется активационная функция нейрона, в результате чего получается его выходное значение yi(n), i=0...Mi-1, где Mi – число нейронов в слое i; n=0...N-1, а N – число слоев в сети.

3. На основании полученных выходных значений нейронов произво­дится изменение весовых коэффициентов.

4. Повторение шагов 2 и 3, пока выходные значения сети не застабилизируются с заданной точнос­тью. Применение этого способа определения завершения обучения, отличного от исполь­зо­вавшегося для сети обратного распространения, обусловлено тем, что подстраиваемые зна­че­ния синапсов фактически не ограничены.

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

Алгоритм обучения без учителя Кохонена – предусматривает подстройку синапсов на основании их значений от предыдущей итерации.

Обучение сводится к минимизации разницы между входными сигналами нейрона, поступающими с выходов нейронов предыдущего слоя yi(n‑1), и весовыми коэффициентами его синапсов.

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

Другой вариант выбора выигравшего нейрона - расчет расстояния между векторами в p-мерном пространстве, где p – размер векторов. «Побеждает» нейрон с наименьшим расстоянием.

где j – индекс нейрона в слое n, i – индекс суммирования по нейронам слоя (n-1), wij – вес синапса, соединяющего нейроны; выходы нейронов слоя (n-1) являются входными значениями для слоя n.

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

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

где xi – i-ая компонента вектора входного образа или вектора весовых коэффициентов, а n – его размерность.

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

где xi – i-ая компонента входного образа, n – общее число его компонент, α(t) – коэф­фи­ци­ент, изменяющийся в процессе обучения от нуля до единицы, в результате чего вначале на входы сети подаются практически одинаковые образы, а с течением времени они все больше сходятся к исходным. Весовые коэффициенты устанавливаются на шаге инициализации равными величине

где n – размерность вектора весов для нейронов инициализируемого слоя.

На основе рассмотренного выше метода строятся нейронные сети особого типа – так назы­ва­емые самоорганизующиеся структуры.

II. Практическая часть

6. Применение нечеткой логики на практике

В практической части выполню решение задачи на нечеткую логику в программном комплексе MATLAB Fuzzy Logic Toolbox.

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

Для решения этой задачи выделяются три основных правила, которые должны быть реализованы в сети:

1. Если скорость движения низкая, температура воздуха низкая, то расход топлива маленький.

2. Если скорость движения средняя, температура воздуха низкая, то расход средний.

3. Если скорость высокая, температура воздуха высокая, то расход большой.

Для решения этой задачи в программном комплексе MATLAB Fuzzy Logic Toolbox:

- создадим входы и выходы

- определим функции принадлежности для нечетких переменных

- определим правила работы системы.

Открываю редактор и создаю входы и выход сети. Вызвать фаззи-систему можно выбором в меню вкладки APPS, затем Fuzzy Logic Disigner, но наиболее простой способ вызова фаззи-системы, является написание в строке функций Matlab записи «fuzzy» с последующим нажатием Enter. Открывшийся редактор (рис.6.1) позволяет создавать входы, выходы, функции принадлежности, редактировать и смотреть работу правил. По умолчанию предлагается алгоритм логического вывода madman, который я буду использовать.

к01.jpg

Рис. 6.1 Начальное состояние редактора

В моей системе два входа скорость движения и температура окружающего воздуха. Добавляю входы в редакторе: Edit→Add Variable.. →Input. При этом в редакторе появляется новый блок с именем input2. Далее по щелчку на блок input1 изменяю его имя в графе Name на «скорость» и завершаю ввод нажатием на Enter. Аналогично меняю имя второго входа на «температура». Выходной блок назову «топливо». Присваиваю имя всей сети «Fuel» (рис. 6.2) через меню File→Export→То Workspace...

к02.jpg

Рис 6.2 Состояние редактора после создания и переименования входных и выходных сигналов

Задаю функциии принадлежности Edit→Membership Functions... Задам и отредактирую функцию принадлежности для входа «скорость». Сначала в полях Range, Display Range устанавливаю диапазон изменения переменных [0, 120]. Задаю функцию принадлежности гаусовского вида «gaussmf» с общим числом 3. Изменяю имена функций на «низкая», «средняя» и «высокая». Для функций устанавливаю следующие значения параметров «низкая» - Params [25 0], «средняя» Params [25 60], а для «высокая» - Params [25 120].

к03.jpg

Рис. 6.3 Редактирование функций принадлежности входного сигнала «скорость»

Далее редактирую функции принадлежности для входа «температура». Сделаю диапазон Range, Display Range [-30 +40] Создаю 2 функции принадлежности трапецеидальной формы «tramf» с соответствующими параметрами. Функции будут «низкая» и «высокая». Для функции «низкая» устанавливаю следующие с значения параметров Рагаms [-30 -30 15 20] и для функции «высокая» Рагаms [22 27 40 40].

к04.jpg

Рис. 6.4 Редактирование функций принадлежности входного сигнала «температура»

Далее редактирую функции принадлежности «топливо». Устанавливаю диапазон для переменной Range [0 24]. Задаю 3 функции принадлежности треугольной формы (trimf) с именами «маленький» Рагаms [0 4 8], «средний» Рагаms [8 12 16]), «большой» Рагаms [16 20 24].

к05.jpg

Рис. 6.5 Редактирование функций принадлежности выходного сигнала «топливо»

Конструирую правила. Для создания правил, соответствующий пункт меню Edit→Rules. У меня в задаче три правила:

1. Если скорость низкая, температура низкая, то расход топлива маленький.

2. Если скорость средняя, температура низкая, то расход средний.

3. Если скорость высокая, температура высокая, то расход большой.

к06.jpg

Рис. 6.6 Создание правил

Устанавливаю для каждого правила вес равный единице. На этом конструирование экспертной системы закончено.

Проверяю работу системы. Открываю через меню Wiew→Rules окно проссмотра правил и устанавливаю значения переменных: скорость=5 (т.е. медленная), температура=-20 (т.е. низкая). Увидим ответ: топливо=5,16 (т.е. низкий расход топлива).

к07.jpg

Рис. 6.7 Проверка результатов

Проверяю другие варианты. Например, выяснится, что в моей системе отдается приоритет температуры, т.е. при высокой температуре и небольшой скорости расход топлива будет больше, чем при высокой скорости и низкой температуре: при выборе «скорость= 100, температура=-20» система система говорит, что расход 12(средний), в то время как набору «скорость=20, температура=30» расход топлива будет — 20(высокий).

к08.jpg

Рис. 6.8 Проверка результатов

В подтверждение отмеченной зависимости выходной переменной от входных служит вид поверхности отклика, который представляется при выборе пункта меню View→Suгfасе.

к09.jpg

Рис. 6.9 Диаграмма результатов

Заключение

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

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

Первый формальный нейрон Мак-Каллока и Питтса создавался по подобию с естественным нейроном.

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

Еще одна классификация делит искусственные нейронные сети на синхронные и асинхронные.

Алгоритмы обучения искусственных нейронных сетей разделяются на два класса. Обучение «с учителем» искусственной нейронной сети предполагает наличие множества учебных примеров, используемых для ''настройки'' сети, и второе множество контрольных примеров, для оценки качества работы сети. В 1959 году Ф.Розенблатт предложил метод обучения итерационной подстройкой матрицы весов, последовательно уменьшающей ошибку на выходе. Метод Видроу-Хоффа минимизирует функцию ошибки в пространстве весовых коэффициентов. Существует  метод обратного распространения ошибки, предложенный Д.Румельхартом в соавторстве, главная идея которого состоит в распространении сигналов ошибки от выходов сети к её входам.

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

Я получил практический навык применения нечеткой логики для решения прикладных задач используя модуль Fuzzy Logic Toolbox из программного комплекса MATLAB Fuzzy Logic Toolbox.

Библиография

1. Горбачевская Е.Н., Краснов С.С. «ИСТОРИЯ РАЗВИТИЯ НЕЙРОННЫХ СЕТЕЙ» Вестник Волжского университета имени В.Н. Татищева № 1 (23) 2015

2. Е.И. Горожанина «Нейронные сети» Учебное пособие Поволжский Государственный Университет телекоммуникаций и информатики г.Самара 2017г. стр.23

3. Нейронные сети. Statistica Neural Networks. Методология и технологии современного анализа данных: — Москва, Горячая Линия - Телеком, 2008 г.- 392 с.

4. Нейронные сети. Основы теории: А. И. Галушкин — Москва, Горячая Линия - Телеком, 2012 г.- 496 с.

5. С.Короткий Нейронные сети: основные положения http://www.shestopaloff.ca/kyriako/Russian/Artificial_Intelligence/Some_publications/Korotky_Neuron_network_Lectures.pdf

6. Омаров Т.З. Концепция искусственной нейронной сети // Современные научные исследования и инновации. 2016. № 5 [Электронный ресурс]. URL: http://web.snauka.ru/issues/2016/05/66203

7. https://studopedia.su/6_5508_lektsiya--osnovnie-ponyatiya-teorii-iskusstvennih-neyronnih-setey.html

8. http://www.neuroproject.ru/neuro.htm

9. http://mechanoid.kiev.ua/neural-net-base.html

10. http://neuronus.com/history/5-istoriya-nejronnykh-setej.html

11. http://neuronus.com/history/4-istoriya-vozniknoveniya-ikustvennogo-intellekta.html

12. https://www.intuit.ru/studies/courses/61/61/lecture/20434?page=1

13. http://uran.donntu.org/~masters/2007/fvti/yemeliyanenko/library/3.htm

http://medznate.ru/docs/index-46900.html

14. https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D1%81%D1%82_%D0%A2%D1%8C%D1%8E%D1%80%D0%B8%D0%BD%D0%B3%D0%B0

15. https://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B5%D1%82%D1%8C_%D0%9A%D0%BE%D1%81%D0%BA%D0%BE

16. https://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B5%D1%82%D1%8C_%D0%A5%D1%8D%D0%BC%D0%BC%D0%B8%D0%BD%D0%B3%D0%B0

17. https://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B5%D1%82%D1%8C_%D0%AD%D0%BB%D0%BC%D0%B0%D0%BD%D0%B0

18. https://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B5%D1%82%D1%8C_%D0%9A%D0%BE%D1%85%D0%BE%D0%BD%D0%B5%D0%BD%D0%B0

19. https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%80%D0%B5%D0%BD%D1%82%D0%BD%D0%B0%D1%8F_%D0%BD%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B5%D1%82%D1%8C

20. https://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B5%D1%82%D1%8C_%D0%94%D0%B6%D0%BE%D1%80%D0%B4%D0%B0%D0%BD%D0%B0

21. https://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B5%D1%82%D1%8C_%D0%9A%D0%BE%D1%85%D0%BE%D0%BD%D0%B5%D0%BD%D0%B0

22. https://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B5%D1%82%D1%8C_%D0%A5%D0%BE%D0%BF%D1%84%D0%B8%D0%BB%D0%B4%D0%B0

  1. Е.И. Горожанина «Нейронные сети» Учебное пособие Поволжский Государственный Университет телекоммуникаций и информатики г.Самара 2017г. стр.23