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

Определение расхода воды на полив

Содержание:

Введение

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

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

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

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

Источниками информации являются работы проверенных авторов из библиотеки и известных интернет ресурсов.

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

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

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

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

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

В 1954 году в Массачусетском технологическом институте с использованием компьютеров Фарли и Кларк разработали имитацию сети Хебба. Также исследования нейронных сетей с помощью компьютерного моделирования были проведены Рочестером, Холландом, Хебитом и Дудой в 1956 году.

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

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

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

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

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

Алгоритм параллельной распределённой обработки данных в середине 1980 годов стал популярен под названием коннективизма. В 1986 году в работе Руммельхарта и Мак-Клелланда коннективизм был использован для компьютерного моделирования нейронных процессов.

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

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

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

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

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

Кора головного мозга человека является плоской, образованной из нейронов поверхностью, толщиной от 2 до 3 мм площадью около 2200 см2, что вдвое превышает площадь поверхности стандартной клавиатуры. Кора главного мозга содержит около 1011 нейронов, что приблизительно равно числу звезд Млечного пути. Каждый нейрон связан с 103 - 104 другими нейронами. В целом мозг человека имеет приблизительно от 1014 до 1015 взаимосвязей.

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

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

Нейрон (нервная клетка) является особой биологической клеткой, которая обрабатывает информацию. Она состоит из тела клетки - сомы (soma), и двух типов внешних древовидных ответвлений: аксона (axon) и дендритов (dendrites). Тело клетки содержит ядро (nucleus), которое содержит информацию о наследственных свойствах нейрона, и плазму, обладающую молекулярными средствами для производства необходимых нейрону материалов. Нейрон получает сигналы (импульсы) от других нейронов через дендриты (приемники) и передает сигналы, сгенерированные телом клетки, вдоль аксона (передатчика), который в конце разветвляется на волокна (strands). На окончаниях волокон находятся синапсы (synapses)[3].

Рисунок 2.1 - Биологический нейрон

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

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

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

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

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

Во-первых, основу каждой нейросети составляют относительно простые, в большинстве случаев – однотипные, элементы (ячейки), имитирующие работу нейронов мозга. Далее под нейроном будет подразумеваться искусственный нейрон, то есть ячейка нейросети. Каждый нейрон характеризуется своим текущим состоянием по аналогии с нервными клетками головного мозга, которые могут быть возбуждены или заторможены. Он обладает группой синапсов – однонаправленных входных связей, соединенных с выходами других нейронов, а также имеет аксон – выходную связь данного нейрона, с которой сигнал (возбуждения или торможения) поступает на синапсы следующих нейронов. Общий вид нейрона приведен на рисунке 3.1. Каждый синапс характеризуется величиной синаптической связи или ее весом wi, который по физическому смыслу эквивалентен электрической проводимости.

Рисунок 3.1 - Искусственный нейрон

Текущее состояние нейрона определяется, как взвешенная сумма его входов:

(1)

Выход нейрона есть функция его состояния:

y = f(s) (2)

Нелинейная функция f называется активационной и может иметь различный вид, как показано на рисунке 3.2.

http://ai.obrazec.ru/photos/Image41.gif

Рисунок 3.2 - Нелинейная функция f

Одной из наиболее распространеных является нелинейная функция с насыщением, так называемая логистическая функция или сигмоид (т.е. функция S-образного вида):

(3)

При уменьшении α сигмоид становится более пологим, в пределе при α=0 вырождаясь в горизонтальную линию на уровне 0.5, при увеличении α сигмоид приближается по внешнему виду к функции единичного скачка с порогом T в точке x=0. Из выражения для сигмоида очевидно, что выходное значение нейрона лежит в диапазоне [0,1]. Одно из ценных свойств сигмоидной функции – простое выражение для ее производной, применение которого будет рассмотрено в дальнейшем.

(4)

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

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

В качестве примера простейшей нейросети рассмотрим однослойный перцептрон (рисунок 3.3), то есть такую сеть, нейроны которой имеют активационную функцию в виде единичного скачка[1]*.

http://ai.obrazec.ru/photos/Image44.gif

Рисунок 3.3 - Однослойный перцептрон

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

, j=1...3 (5)

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

Y=F(XW) (6)

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

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

Выбор структуры нейросети осуществляется в соответствии с особенностями и сложностью задачи. Для решения некоторых отдельных типов задач уже существуют оптимальные, на сегодняшний день, конфигурации, описанные, например, в [2],[3],[4]. Если же задача не может быть сведена ни к одному из известных типов, разработчику приходится решать сложную проблему синтеза новой конфигурации. При этом он руководствуется несколькими основополагающими принципами: возможности сети возрастают с увеличением числа ячеек и плотности связей между ними и числом выделенных слоев; введение обратных связей наряду с увеличением возможностей сети поднимает вопрос о ее динамической устойчивости; сложность алгоритмов функционирования сети (в том числе, например, введение нескольких типов синапсов – возбуждающих, тормозящих и др.) также способствует усилению мощи нейросети. Вопрос о необходимых и достаточных свойствах сети для решения того или иного рода задач представляет собой целое направление нейрокомпьютерной науки. Так как проблема синтеза нейронной сети сильно зависит от решаемой задачи, дать общие подробные рекомендации затруднительно. В большинстве случаев оптимальный вариант получается на основе интуитивного подбора.

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

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

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

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

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

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

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

Двухслойный перцептрон

глааРисунок 3.4 - Двухслойный перцептрон

Здесь уместно отметить важную роль нелинейности активационной функции, так как, если бы она не обладала данным свойством или не входила в алгоритм работы каждого нейрона, результат функционирования любой p-слойной нейросети с весовыми матрицами W(i), i=1,2,...p для каждого слоя i сводился бы к перемножению входного вектора сигналов X на матрицу

W(Σ)=W(1)⋅W(2) ⋅...⋅W(p) (7)

то есть фактически такая p-слойная нейросеть эквивалентна однослойной сети с весовой матрицей единственного слоя W(Σ):

Y=XW(Σ) (8)

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

(9)

или даже

(10)

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

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

Теперь рассмотрим один нюанс, преднамеренно опущенный ранее. Из рисунка функции единичного скачка видно, что пороговое значение T, в общем случае, может принимать произвольное значение. Более того, оно должно принимать некое произвольное, неизвестное заранее значение, которое подбирается на стадии обучения вместе с весовыми коэффициентами. То же самое относится и к центральной точке сигмоидной зависимости, которая может сдвигаться вправо или влево по оси X, а также и ко всем другим активационным функциям. Это, однако, не отражено в формуле (1), которая должна была бы выглядеть так:

(11)

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

, (12)

где w0 = –T, x0 = 1.

Очевидно, что различие формул (1) и (12) состоит лишь в способе нумерации входов.

Из всех активационных функций, изображенных на рисунке 3.2, одна выделяется особо. Это гиперболический тангенс, зависимость которого симметрична относительно оси X и лежит в диапазоне [-1,1]. Выбор области возможных значений выходов нейронов во многом зависит от конкретного типа сети и является вопросом реализации, так как манипуляции с ней влияют на различные показатели эффективности сети, зачастую не изменяя общую логику ее работы

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

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

  • нейронные сети проходящие обучение с учителем;
  • нейронные сети проходящие обучение без учителя.

Рассмотрим эти виды немного подробнее.

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

Предоставляется выходной вектор, определяется выход сети и сравнивается с представленными векторами.

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

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

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

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

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

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

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

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

Модели нейронной сети которые чаще всего используются на данный момент

Сети прямого распространения – все связи этой сети имеют строгое направление от входных нейронов к их выходам. Среди таких сетей хочется отметить: простейший персептрон автором которого является Фрэнк Розенблатт и многослойный персептрон.

Нейронные сети Реккурентного типа – данные с выходных нейронов или из скрытого слоя передается частично обратно на входные нейроны.

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

Они были предложены в работах Broomhead and Lowe (1988) и Moody and Darkin (1989).

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

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

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

Сеть Кохонена имеет всего два слоя: выходной и входной, составленный из радиальных элементов[1],[3].

Глава 5. Обучение искусственных нейронных сетей

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

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

http://neuronus.com/images/theory/algorithm/140614.jpg

Рисунок 5.1 - Иллюстрация процесса обучения НС

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

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

Пусть решением некоторой задачи является функция Y = F(X), заданная параметрами входных-выходных данных (X1, Y1), (X2, Y2), …, (XN, YN), для которых Yk = F(Xk) (k = 1, 2, …, N).

Обучение состоит в поиске (синтезе) функции G, близкой к F в смысле некоторой функции ошибки E. (см. рис. 1.8).

Если выбрано множество обучающих примеров – пар (XN, YN) (где k = 1, 2, …, N) и способ вычисления функции ошибки E, то обучение нейронной сети превращается в задачу многомерной оптимизации, имеющую очень большую размерность, при этом, поскольку функция E может иметь произвольный вид обучение в общем случае – многоэкстремальная невыпуклая задача оптимизации.

Для решения этой задачи могут использоваться следующие (итерационные) алгоритмы[1]:

  1. алгоритмы локальной оптимизации с вычислением частных производных первого порядка:
  • градиентный алгоритм (метод наискорейшего спуска),
  • методы с одномерной и двумерной оптимизацией целевой функции в направлении антиградиента,
  • метод сопряженных градиентов,
  • методы, учитывающие направление антиградиента на нескольких шагах алгоритма;
  1. алгоритмы локальной оптимизации с вычислением частных производных первого и второго порядка:
  • метод Ньютона,
  • методы оптимизации с разреженными матрицами Гессе,
  • квазиньютоновские методы,
  • метод Гаусса-Ньютона,
  • метод Левенберга-Марквардта и др.;
  1. стохастические алгоритмы оптимизации:
  • поиск в случайном направлении,
  • имитация отжига,
  • метод Монте-Карло (численный метод статистических испытаний);
  1. алгоритмы глобальной оптимизации (задачи глобальной оптимизации решаются с помощью перебора значений переменных, от которых зависит целевая функция).

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

Задача на определение расхода воды на полив

В задаче требуется определить расход воды при поливе с/х угодий. Входные сигналы: а) количество с/ч культур (много культур, мало культур), б) температура воздуха летом (засушливое лето, нормальное лето, холодное лето). Выходной сигнал: расход воды на полив (большой расход, средний расход, маленький расход). Правила: 1. Если с/х культур много, лето засушливое, то расход воды большой. 2. Если с/х культур много, лето нормальное, то расход воды средний. 3. Если с/х культур мало, лето холодное, то расход воды маленький.

Диапазон изменения параметров и их обозначения приведены в таблице 6.1

Таблица 6.1

название параметра

диапазон

обозначение

обозначение значений

количество с/х культур

от 10 до 100 га

number

little, many

температура воздуха летом

от 10 до 40 0С

temp

low, norm, high

расход воды на полив

от 0 до 1000 м3

water

little, norm, many

Одна из целей пакета Fuzzy Logic Toolbox состоит в облегчении понимания и создания фаззи-систем управления. Фаззи-систему можно создавать, используя командную строку главного окна MATLAB. Однако намного проще сделать это графически с помощью инструментов графического интерфейса пользователя (GUI или ГИП), имеющихся в Fuzzy Logic Toolbox. Имеются пять инструментов GUI для создания, редактирования и наблюдения фаззи-систем в среде Fuzzy Logic Toolbox (приложение А). Это Fuzzy Inference System Editor или FIS Editor – Редактор фаззи-инференционной системы, Membership Function Editor - Редактор функций принадлежности, Rule Editor - Редактор правил, Rule Viewer - Просмотр правил и Surface Viewer - Просмотр поверхности (пространства управления). Эти инструменты GUI динамически связаны между собой: используя один из них в FIS и производя изменения, можно затем увидеть их действия в других инструментах GUI. В дополнение к этим пяти инструментам Fuzzy Logic Toolbox включает в себя графический редактор GUI ANFIS, который используется для создания и анализа Sugeno-типа адаптивных нейросистем с нечеткой логикой – adaptive neuro-FIS (ANFIS).

FIS редактор решает проблемы верхнего уровня системы: сколько входных и выходных переменных и каковы их имена?

Fuzzy Logic Toolbox не имеет ограничений по числу входов фаззи-системы – все зависит от доступной памяти компьютера.

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

Rule Editor используется для редактирования списка правил, который определяет функционирование фаззи-системы.

Rule Viewer и Surface Viewer используются только для просмотра результатов, но не редактирования фаззи-системы. Rule Viewer показывает диаграмму функционирования. Используя его в качестве диагностического средства, можно увидеть, например, какие правила активны, или как индивидуальные функции принадлежности влияют на результаты. Surface Viewer используется для показа зависимости выхода от одного или двух из входов системы, то есть показывается диаграмма поверхности пространства управления системы. Все пять инструментов GUI могут взаимодействовать и обмениваться информацией между собой. Любой из них может считывать и сохранять данные в рабочем пространстве MATLAB и на жестком диске компьютера[6].

Построение системы начнем с определения количества входов и выходов в редакторе свойств фаззи-системы – FIS Editor. Для его вызова необходимо в рабочем окне MATLAB ввести команду fuzzy[5].

Окно редактора FIS Editor показано на рисунке 6.1. На этой диаграмме указываются названия всех входов (input) и выходов (output). Для данной системы это – количество с/х культур (number), температура воздуха летом (temp), расход воды на полив (water). Ниже диаграммы - название системы ( field) и типа используемого вывода (mamdani). Еще ниже указаны методы фаззи-процедур:

  • операции “И” (AND) – произведения (product –prod);
  • операции “ИЛИ”(OR) – вероятностного ИЛИ (probabilistic or – probor);
  • импликации (prod);
  • аггрегации (max);
  • дефаззификации (centroid)[7].

Fuzzy Logic Toolbox поддерживает два встроенных метода AND – min (minimum) и prod (product); два встроенных метода OR – max (maximum) и probor – probabilistic or, определяемого формулой алгебраического суммирования вероятностей probor(a,b) = a + b – ab).

Для объединения или агрегации всех правил Fuzzy Logic Toolbox использует три встроенных метода: max (maximum), probor (probabilistic or) и sum (просто сумма всех выходов установленных правил).

Для дефаззификации Fuzzy Logic Toolbox использует пять встроенных методов: centroid (координата – абсцисса – центра тяжести фигуры под кривой), bisector (координата – абсцисса – делящая площадь фигуры под кривой пополам), mom (mean of the maximum – середина интервала максимальных значений ), lom (largest of maximum – верхняя граница интервала максимальных значений) и som (smallest of maximum – нижняя граница интервала максимальных значений). Наиболее часто используемым методом дефаззификации является метод centroid, который определяет абсциссу центра тяжести плоской фигуры под кривой.

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

Рисунок 6.1 - Окно редактора свойств фаззи-системы регулирования расхода воды

Для задания функций принадлежности переменных FIS используется редактор Membership Function Editor, который вызывается пунктом Edit membership functions меню View или двойным щелчком по одному из входов или выходов диаграммы FIS. В этом редакторе щелчком мыши по блоку в левой части выбирается переменная и ее функции принадлежности (рисунки 6.2-6.4) появляются на графике в правой верхней части окна редактора. При этом в левой нижней части отражаются имя (Name) namber тип (Type) Input, границы изменения (Range) [10 100] и отображения (Display Range) [10 100] активизированной переменной. Функций принадлежности возьмем gaussmf.

Рисунок 6.2 - Окно редактора Membership Function Editor для входа number

Рисунок 6.3 - Окно редактора Membership Function Editor для входа temp

Рисунок 6.4 - Окно редактора Membership Function Editor для выхода water

После определения всех переменных и задания типа и вида функций принадлежности перейдем к созданию правил в редакторе Rule Editor (рисунок 6.5). Для этого в меню View нужно выбрать пункт Edit Rules[7].

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

Рисунок 6.5 - Редактор Rule Editor

По окончанию создания правил фаззи-управления просмотрим зависимость выходной величины от значений входных параметров системы. Для этого в меню View выбрем пункт View rules. В просмотрщике Rule Viewer (рисунки 6.6-6.8) под каждой входной и выходной переменной показаны в виде графиков её параметры и результат вычислений. Удобство Rule Viewer заключается в том, что как при грубом, так и при точном изменении параметров входов можно сразу увидеть изменение выходной величины.

Рисунок 6.6 - Просмотрщик Rule Viewer для входных параметров

55га и 250С

Рисунок 6.7 - Просмотрщик Rule Viewer для входных параметров

78,9га и 14,90С

Рисунок 6.8 - Просмотрщик Rule Viewer для входных параметров

10га и 35,80С

Выбрав пункт View Surface в меню View, можно посмотреть трехмерную зависимость выхода от входа – пространство управления фаззи-системы (рисунок 6.9).

Рисунок 6.9 - Просмотрщик Surface Viewer

На этой диаграмме можно увидеть зависимость выхода и от четырёх входов или зависимость различного выхода от разных входов.

На графике, изменив числа в строках X grid и Y grid, можно менять количество по-перечных и продольных линий. В пункте Plot меню Options можно изменить сам график для лучшего его восприятия. В этом же меню Options в пункте Color Map можно так же поменять цвета поверхности управления[8].

Заключение

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

Во второй части была рассмотрена задача на нечеткую логику определения расхода воды для с/х полей, которая выполнилось в программном комплексе MATLABFuzzyLogicToolbox. После построения модели системы, она была проверена на правильность работы тремя различными параметрами. По результатам которых можно сказать, что система адекватно реагирует на изменение входных параметров (соответствует требованиям, приведённых в задании для практической части).

Список использованных источников

  1. А. И. Галушкин. Нейронные сети. Основы теории. - М.: Горячая Линия — Телеком, 2010.
  2. Татузов А.Л. Нейронные сети в задачах радиолокации. – М.: Радиотехника, 2009.
  3. Саймон Хайкин. Нейронные сети. Полный курс. – М.: Вильямс, 2006.
  4. Яхъяева Г.Э. Нечеткие множества и нейронные сети. – М.: Бином, 2006.
  5. Лукас В.А. Введение в Fuzzy-регулирование. – Екатеринбург: Изд-во УТГГА, 1997. – 36 с.
  6. Стальский В.В., Проскуряков Р.М. Нечеткая логика и ее применение в автоматическом регулировании. - СПб.: СПГИ, 1998. – 94 с.
  7. Fuzzy Logic Toolbox. For Use with MATLAB: User’s Guide. - Natick: The MathWorks, Inc., 1998. - 235 p.

Приложение А

Структура фаззи-инференционной системы – FIS

FIS фаззи

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