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

ПРАКТИЧЕСКАЯ ЗАДАЧА НА КРЕДИТОСПОСОБНОСТЬ КЛИЕНТА

Содержание:

Введение

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

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

Нейроные сети берут свое начало с середины 40-х годах прошлого века. Двумя первыми и основополагающими являются работы Уорена Маккалока и Уолтера Питтса, вышедщая в 1943 году, и Дональда Хебба, увидевшая свет в 1949 году. Маккалок и Питтс в своей работе описали математическую модель нейронной сети. Хебб же выпустил книгу «Организация поведения», в ней он расписал процесс самообучения искусственных сетей.

Чуть позже один американский ученый Фрэнк Розенблатт изобрел «персептрон» - математическая или компьютерная модель восприятия информации мозгом (кибернетическая модель мозга). В 1969 году интерес к нейронным сетям угасает. Марвин Минский раскритиковал в своей скандальной статье персептрон, он указал задачи которые персептрон не может решить и при каких условиях его работа неэффективна.

В 1974 году Пол Вербос разрабатывает алгоритм обратного распространения ошибки, который используется и по сей день для обучения искусственных нейронных сетей. Начиная с 1985 года Джон Хопфилд предлагает миру свое виденье устройства и работы нейронные сети, которая способна решать некоторые виды задач. Именно работы Джона Хопфилда вновь разогревают нешуточный интерес мировой общественности к искусственным нейронным сетям. В 90-е годы прошлого века алгоритм обратного распространения ошибки получил существенное развитие, за счет чего былая критика Минского касательно неработоспособности сетей окончательно опровергнута. На сегодняшний день искусственные нейронные сети является главным подразделом машинного обучения.

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

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

Рис. 1

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

В человеческом мозге насчитывается порядка миллиарда нейронов. Биологически нейрон представляет собой специализированную клетку, адаптировавшуюся для передачи управляющих импульсов. В составе типичного нейрона обычно выделяют: дендриты – многочисленные короткие отростки, через которые в нейрон поступает входная информация; аксон – как правило, один длинный отросток (от 0,1мм до 1 метра), через который нейрон выдает выходную информацию; синапсы, или синаптические окончания – участки «стыковки» дендритов и аксонов, непосредственно обеспечивающие передачу нервных сигналов от клетки к клетке.

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

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

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

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

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

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

Рис.2

Здесь множество входных сигналов, обозначенных x1, x2,…, xn, поступает на искусственный нейрон. Эти входные сигналы соответствуют сигналам, приходящим в синапсы биологического нейрона. Каждый сигнал умножается на соответствующий вес w1, w2,…, wn, и поступает на суммирующий блок. Каждый вес соответствует «силе» одной биологической синаптической связи. Текущее состояние нейрона определяется, как взвешенная сумма его входов:

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

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

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

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

Рис. 3

Элементы, обозначенные на рис. 3 цифрами от 1 до m представляют собой слой нейронов. Первый слой нашей сети, на который подаются входные сигналы X1…Xn, играет роль распределительного слоя нейронной сети. Каждый элемент распределительного слоя нейронной сети имеет связи со всем нейронами следующего слоя, называемого обрабатывающим слоем. Заметим, что хотя сеть фактически и состоит из двух слоев, одна называется однослойной. Первый распределительный слой не считается, так как он не занят обработкой информации, а играет вспомогательную роль.

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

Рис.4

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

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

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

Рис.5

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

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

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

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

Правило обучения Хэбба.

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

Правило обучения Хебба имеет биологические предпосылки. Оно является основой многих методов обучения нейронных сетей. Согласно этому правилу, обучение происходит в результате усиления силы связи (синаптического веса) между одновременно активными нейронами. Исходя из этого, часто используемые в сети связи усиливаются, что объясняет феномен обучения путем повторения и привыкания. Пусть имеются два нейронных элемента i и j, между которыми существует сила связи, равная wij, тогда правило обучения Хебба запишется как:

,

где t – время;

xi и yj– соответственно выходное значение i-го и j-го нейронов.

В начальный момент времени предполагается, что:

Правило Хеббо для нейронной сети можно представить в виде выражений:

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

Правило обучения Розенблатта

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

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

Математическую формулировку правила обучения Розенблатта можно представить в следующем виде:

где tj – эталонное значение j-го выхода нейронной сети;

α – коэффициент, характеризующий скорость обучения сети.

Величина скорости обучения характеризуется следующими значениями: , 0 < α ≤ 1.

Процедура обучения Розенблатта состоит из следующих шагов:

  1. Весовые коэффициенты W нейронной сети инициализируются случайным образом или устанавливаются в нулевое состояние.
  2. На входы сети поочередно подаются входные образы X из обучающей выборки, которые трансформируются в выходные сигналы нейронных элементов Y.
  3. Если реакция нейронной сети yj совпадает с эталонным значением tj, т.е. если yj=tj, то весовой коэффициент wij не изменяется.
  4. Если выходная реакция сети yj не совпадает с эталонной, т.е. если yj ≠tj, то производится модификация весовых коэффициентов по правилу.
  5. Шаги 2-4 повторяются до тех пор, пока не станет yj=tj, для всех входных образов, или не перестанут изменяться весовые коэффициенты.

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

Правило обучения Видроу-Хоффа

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

где E(k) – среднеквадратичная ошибка сети для k-го образа;

и – соответственно выходное и эталонное значение нейронной сети для k-го образа.

Среднеквадратичная ошибка нейронной сети для одного входного образа определяется по формуле:

.

Алгоритм обратного распространения ошибки

Алгоритм обратного распространения ошибки является одним из наиболее эффективных средств для обучения многослойных нейронных сетей. Алгоритм минимизирует среднеквадратичную ошибку сети. Для любого скрытого слоя i ошибка i-го нейронного элемента определяется рекурсивным образом через ошибки нейронов следующего слоя j:

,

где m – число нейронов следующего слоя по отношению к слою i;

– синаптическая связь между i-м и j-м нейронами различных слоев;

– взвешенная сумма j-го нейрона.

Производные среднеквадратичной ошибки по весовым коэффициентам и порогам нейронных элементов для любых двух слоев i и j многослойной сети определяются следующим образом:

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

где α – скорость обучения.

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

В вычислительную среду MATLAB интегрированы десятки прикладных инженерных и математических программ, одним из них является Fuzzy Logic Toolbox. Пакет Fuzzy Logic Toolbox поддерживает все фазы разработки нечетких систем, включая синтез, исследование, проектирование, моделирование, и внедрение в режиме реального времени. Ключевыми особенностями Fuzzy Logic Toolbox являются:

  • специализированные GOI-модули для создания нечеткого вывода;
  • реализация популярных алгоритмов нечеткого вывода Мамданим и Сугено;
  • библиотека функций принадлежности;
  • настройка функций принадлежности ANFIS-алгоритмов;
  • экстракция нечетких правил с помощью кластеризации данных;
  • возможность внедрения систем вывода в Simulink через модуль «нечеткий контроллер»;
  • Си-код алгоритмов нечеткого вывода, позволяющий использовать спроектированные нечеткие системы вне среды MATLAB.

Fuzzy Logic Toolbox включает следующие GUI-модули:

  • Fuzzy Inference System Editor – редактор общих свойств системы нечеткого вывода. Позволяет установить количество входов и выходов системы, выбрать тип системы, реализации логических операций, в также вызвать другие GUI-модули.
  • Membership Function Editor – редактор функций принадлежности. Выводит на экран графики функций принадлежности входных и выходных переменных. Позволяет задать тип и параметры функций принадлежности.
  • Rule Editor – редактор нечеткой базы знаний. Поволяет создавать и редактировать правила, выбирая нужные сочетания.
  • Rule Viewer – браузер нечеткого вывода. Графически показывает выполнение нечеткого вывода по каждому правилу.
  • Surface Viewer – браузет поверхности «входы-выход» нечеткой системы. Выводит графики зависимости выходной переменной от любых двух входных переменных.

Задача на кредитоспособность клиента

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

Решение задачи

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

С начала в окне отображен один вход. С помощью команды Edit→Add variable…→Input добавляем второй вход. Переименуем оба входа с помощью функции Name. Один назовем «кредитистория», второй – «платежеспособность».

Рис.6

Так же у нас есть выходной блок системы. Переименуем его в «ставкакредита».

Рис.7

А также дадим имя нашей системе: «Newzadaca».

Рис.8

Далее нам необходимо задать функции принадлежности для входных блоков «кредитистория» и «платежеспособность». Выбираем пункт меню Edit→Add MFs… в появившемся окне Membership Function выбираем MF type и Number of MFs. Для входного блока «кредитистория» это будет тип gaussmf с общим числом 2. В появившемся окне отредактируем названия функций «плохая» и «хорошая».

Рис.9

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

Рис.10

Для выходного блока «ставкакредита» это будет тип trimf с общим числом 3. В появившемся окне отредактируем названия функций «высокий», «средний» и «низкий». В поле Range установим диапазон [0 30], пусть процент по кредиту не превышает 30%.

Рис.11

Теперь создадим правила. Вспомним их:

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

Для этого выберем пункт меню Edit→Rules… в открывшемся окне Rule Editor: Newzadaca выбираем: значение первого входного блока «кредитистория» - хорошая, значение второго входного блока «платежеспособность» - хорошая, значение выходного блока «%кредита» - низкий, указываем Connection → And, нажимаем кнопку Add rule, аналогично для второго и третьего правил.

Рис.12

Сохраняем нашу систему File→Export→To File → →C:\Users\Desktop\Newzadaca.fis.

Откроем через пункт меню View/View rules… окно просмотра правил и зададим значение переменных для «кредитистория» – 1(т.е. хорошая), для «платежеспособность» – 1(т.е. хорошая). Видим ответ «ставкакредита» – 4,9 (т.е. низкий).

Рис.13

Проверим другие варианты. Зададим значение переменных для «кредитистория» – 0 (т.е. плохая), для «платежеспособность» – 0 (т.е. плохая). Видим ответ «ставкакредита» – 25,1 (т.е. высокий).

Рис.14

Зададим значение переменных для «кредитистория» – 1 (т.е. хорошая), для «платежеспособность» – 0.5 (т.е. средняя). Видим ответ «ставкакредита» – 15 (т.е. средний).

Рис.15

Посмотрим на вид поверхности отклика с помощью пункта меню View→View surface.

Рис.16

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

Заключение

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

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

1. Головко В.А. Нейронные сети: обучение, организация и применение. – Москва: «Радиотехника», 2001г.

2. Каллан Р. Основные концепции нейронных сетей. – Москва: «Вильямс», 2001г.

3. Фролов А.В., Фролов Г.В. Синтез и распознавание речи. Современные решения URL: http://www.frolov-lib.ru/books/hi/ch04.html#_Toc153187382

4.Штовба С.Д. Проектирование нечетких систем средствами MATLAB.- М.: Горячая линия – Телеком, 2007 – 288 л.

5.Ярушкина Н.Г. НАУЧНАЯ СЕССИЯ МИФИ–2004. VI ВСЕРОССИЙСКАЯ НАУЧНО-ТЕХНИЧЕСКАЯ КОНФЕРЕНЦИЯ «НЕЙРОИНФОРМАТИКА–2004»: ЛЕКЦИИ ПО НЕЙРОИНФОРМАТИКЕ. Часть 1. – М.: МИФИ, 2004. – 199 с.

Приложение 1

[System]

Name='Newzadaca'

Type='mamdani'

Version=2.0

NumInputs=2

NumOutputs=1

NumRules=3

AndMethod='min'

OrMethod='max'

ImpMethod='min'

AggMethod='max'

DefuzzMethod='centroid'

[Input1]

Name='кредитистория'

Range=[0 1]

NumMFs=2

MF1='плохая':'gaussmf',[0.4247 0.002646]

MF2='хорошая':'gaussmf',[0.4247 1]

[Input2]

Name='платежеспособность'

Range=[0 1]

NumMFs=3

MF1='плохая':'trapmf',[-0.45 -0.05 0.05 0.45]

MF2='средняя':'trapmf',[0.05 0.45 0.55 0.95]

MF3='хорошая':'trapmf',[0.55 0.95 1.05 1.45]

[Output1]

Name='ставкакредита'

Range=[0 30]

NumMFs=3

MF1='низкий':'trimf',[-15 0 15]

MF2='средний':'trimf',[0 15 30]

MF3='высокий':'trimf',[15 30 45]

[Rules]

2 3, 1 (1) : 1

2 2, 2 (1) : 1

1 1, 3 (1) : 1