Нейронная сеть для решения задачи XOR

Автор: Пользователь скрыл имя, 04 Апреля 2013 в 17:11, дипломная работа

Краткое описание

Цель - изучение основных принципов работы искусственной вычислительной модели биологического нейрона и их демонстрация на примере решения задачи XOR.
Задачи
Изучение общих вопросов организации искусственных нейронных сетей;
Анализ способности к обучению искусственных нейронных сетей;
Изучение проблемы ограниченности возможностей однослойных персептронов;
Создание программного приложения, демонстрирующего решение проблемы XOR – исключающего ИЛИ.

Оглавление

Введение 3
1 Интеллектуальные системы на основе искусственных нейронных сетей 6
1.1 Аппаратное моделирование структур, подобных структуре мозга 6
1.2 Архитектура нейронной сети 13
1.3 Обучение искусственных нейронных сетей. 25
2 Многослойные сети прямого распространения 33
2.1 Ограниченность возможностей однослойных персептронов. 33
2.2 Принцип обучения многослойной нейронной сети с помощью алгоритма обратного распространения 37
2.3 Пример решения задачи XOR - исключающего ИЛИ 50
Заключение 59
Список используемой литературы 61
Приложение А 62

Файлы: 1 файл

Диплом Дорошева Виталия.docx

— 580.55 Кб (Скачать)

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

Рисунок 2.9

 

Пример решения задачи XOR - исключающего ИЛИ

Часто, для того чтобы продемонстрировать ограниченные возможности однослойных  персептронов при решении задач  прибегают к рассмотрению так  называемой проблемы XOR – исключающего ИЛИ.

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

Рисунок 2.10 Однонейронная сеть

Обозначим один вход через X1, а другой через X2 (См рис 2.8), тогда все их возможные комбинации будут состоять из четырех точек на плоскости. Таблица ниже показывает требуемую связь между входами и выходом, где входные комбинации, которые должны давать нулевой выход, помечены A0 и A1, единичный выход – B0 и B1.

 

Точки

Значение X1

Значение X2

Требуемый выход

A0

0

0

0

B0

0

1

1

B1

1

0

1

A1

1

1

0


 

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

Рисунок 2.11

 

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

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

 

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

 

Рисунок 2.13

 

Тогда результат работы такой нейронной  сети можно представить в виде следующей таблицы:

 

Точки

Значение X1

Значение Х2

Требуемый выход

OUT1

OUT2

OUT3

A0

0

0

0

0

0

0

B0

0

1

1

1

0

1

B1

1

0

1

0

1

1

A1

1

1

0

0

0

0


 

Каждый из двух нейрон первого слоя формирует решающую поверхность (см рис 2.12) в виде произвольной прямой (делит плоскость на две полуплоскости), а нейрон выходного слоя объединяет эти два решения, образуя решающую поверхность в виде полосы, образованной параллельными прямыми нейронов первого слоя :

Рисунок 2.14

 

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

Ниже  приведен внешний вид программы:

 

Рисунок 2.15 Внешний вид программы

 

Заключение

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

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

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

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

 

Список используемой литературы

 

  1. Круглов Владимир Васильевич, Борисов Вадим Владимирович Искусственные нейронные сети. Теория и практика.
  2. В. А. Терехов, Д. В. Ефимов, И. Ю. Тюкин Нейросетевые системы управления. 
  3. Уоссермен, Ф. Нейрокомпьютерная техника: Теория и практика = Neural Computing. Theory and Practice.
  4. Хайкин С. Нейронные сети: полный курс = Neural Networks: A Comprehensive Foundation.
  5. Роберт Каллан Основные концепции нейронных сетей = The Essence of Neural Networks First Edition. 
  6. Л.Н. Ясницкий Введение в искусственный интеллект. 
  7. Г. К. Вороновский, К. В. Махотило, С. Н. Петрашев, С. А. Сергеев Генетические алгоритмы, искусственные нейронные сети и проблемы виртуальной реальности. 
  8. Миркес Е. М., Нейрокомпьютер. Проект стандарта. — Новосибирск: Наука, 1999.
  9. Нейроинформатика. Новосибирск: Наука, 1998.
  10. Беркинблит М. Б. Нейронные сети
  11. Хакимов Б.В. Моделирование корреляционных зависимостей сплайнами на примерах в геологии и экологии
  12. Еремин Д.М., Гарцеев И.Б. Искусственные нейронные сети в интеллектуальных системах управления.
  13. Сигеру Омату, Марзуки Халид, Рубия Юсоф Нейроуправление и его приложения = Neuro-Control and its Applications 
  14. А. Н. Чернодуб, Д. А. Дзюба Обзор методов нейроуправления  Проблемы программирования. — 2011.
  15. Elman, J.L. Finding structure in time. Cognitive Science. — 1990
  16. Anil K. Jain, Jianchang Mao, K.M. Mohiuddin. Введение в искусство нейронные сети
  17. Питенко А.А. Использование нейросетевых технологий при решении аналитических задач в ГИС.
  18. Искусственный интеллект. – В 3-х кн. Кн. 2. Модели и методы: Справочник/ Под ред. Поспелова Д. А. – М.: Радио и связь, 1990. – 304
  19. Лорьер Ж.Л. Системы искусственного интеллекта. – М.: Мир, 1991. – 568 с.
  20. Уоссермен Ф., Нейрокомпьютерная техника, - М.,Мир, 1992.
  21. Горбань А.Н. Обучение нейронных сетей. - М.: ПараГраф, 1990

Приложение А

Листинг программы

unit Unit_Index;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, FannNetwork, StdCtrls, Spin, Math, FANN, jpeg, ExtCtrls;

 

type

  TForm_index = class(TForm)

    GroupBox1: TGroupBox;

    Label1: TLabel;

    Label2: TLabel;

    Label_MSE: TLabel;

    SpinEdit_epochs: TSpinEdit;

    Button_learn: TButton;

    NN: TFannNetwork;

    Label4: TLabel;

    Edit_training_speed: TEdit;

    SpinEdit_learning_rate: TSpinEdit;

    GroupBox2: TGroupBox;

    Memo_result: TMemo;

    Button1: TButton;

    SaveDialog_result: TSaveDialog;

    GroupBox3: TGroupBox;

    Label6: TLabel;

    GroupBox4: TGroupBox;

    Image1: TImage;

    procedure Button_learnClick(Sender: TObject);

    procedure Button1Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  Form_index: TForm_index;

 

implementation

 

{$R *.dfm}

 

procedure TForm_index.Button_learnClick(Sender: TObject);

var

  inputs: array [0..1] of single;

  outputs: array [0..0] of single;

  e, i, j, m, n: integer;

  MSE: single;

  c: PFann_Connection;

begin

  NN.UnBuild;

  NN.Build;

  Memo_result.Lines.Clear;

  NN.LearningRate := StrToFloat('0,' + IntToStr(SpinEdit_learning_rate.Value));

  for e := 1 to SpinEdit_epochs.Value do

    begin

    for i := 0 to 1 do

      begin

      for j := 0 to 1 do

        begin

          inputs[0] := i;

          inputs[1] := j;

          outputs[0] := i xor j;

          MSE := NN.Train(inputs, outputs);         

          Label_MSE.Caption := Format('%.4f', [MSE]);

          Application.ProcessMessages;

        end;

      end;

    if (e mod 1000 = 0) or (e = SpinEdit_epochs.Value) then

      begin

      Memo_result.Lines.Add(' Эпоха обучения: ' + IntToStr(e));

      Memo_result.Lines.Add(' СКО: ' + FloatToStr(RoundTo(MSE, -8)));

        for m := 0 to 1 do

          for n := 0 to 1 do

            begin

            inputs[0] := m;

            inputs[1] := n;

Информация о работе Нейронная сеть для решения задачи XOR