Курсовая работа "базовая реализация персептрона для обучения и распознавания простых фигур"
Скачать:
Содержание
Введение....................................................................................................................................................................... 3
1. Аналитическая часть.............................................................................................................................................................................. 4
1.1 Описание программы.............................................................................................................................................. 4
1.2 Описание элементарного перцептрона................................................................................................................. 5
2. Конструкторская часть........................................................................................................................................................................... 7
2.1 Описание используемого перцептрона............................................................................................................. 7
3.2 Описание пользовательского интерфейса................................................................................................................. 11
Заключение.............................................................................................................................................................. 14
Список литературы....................................................................................................................................................... 15
Введение
Единого ответа на вопрос, чем занимается искусственный интеллект, не существует. Почти каждый автор, пишущий книгу об ИИ, отталкивается в ней от какого-либо определения, рассматривая в его свете достижения этой науки.
ИИ связан со сходной задачей использования компьютеров для понимания человеческого интеллекта, но не обязательно ограничивается биологически правдоподобными методами, а его методы используются для создания интеллектуальных компьютерных задач. Можно выделить два основных подхода к разработке ИИ:
Нисходящий (англ. Top-Down AI), семиотический — создание экспертных систем, баз знаний и систем логического вывода, имитирующих высокоуровневые психические процессы: мышление, рассуждение, речь, эмоции, творчество и т. д.;
Восходящий (англ. Bottom-Up AI), биологический — изучение нейронных сетей и эволюционных вычислений, моделирующих интеллектуальное поведение на основе биологических элементов, а также создание соответствующих вычислительных систем, таких как нейрокомпьютер или биокомпьютер.
В рамках данной курсовой работы используется базовая реализация персептрона для обучения и распознавания простых фигур. Данный метод относится к восходящему подходу разработки ИИ.
1. Аналитическая часть
1.1 Описание программы
Стоит задача распознать геометрические фигуры на изображении: окружность и треугольник. Для решений этой задачи разрабатываемый программный продукт должен соответствовать следующему набору требований: иметь инструментарий для создания распознаваемых графических образов, возможность загружать примеры графических образов для формирования аналога базы знаний и уметь распознавать графические образы.
1.2 Описание элементарного перцептрона
В качестве научного предмета искусственные нейронные сети впервые заявили о себе в 40-е годы. Стремясь воспроизвести функции человеческого мозга, исследователи создали простые аппаратные (а позже программные) модели биологического нейрона и системы его соединений, которые получили название перцептроны. Когда нейрофизиологи достигли более глубокого понимания нервной системы человека, эти ранние попытки стали восприниматься как весьма грубые аппроксимации. Тем не менее, именно на перцептронах были достигнуты первые впечатляющие результаты, стимулировавшие дальнейшие исследования, приведшие к созданию более изощренных сетей.
Первое систематическое изучение искусственных нейронных сетей было предпринято Маккалокком и Питтсом в 1943г. Простая нейронная модель, показанная на рисунке ниже, использовалась в большей части их работы. На вход поступает только двоичный сигнал, т.е. либо 0 либо 1. Элемент Sigma умножает каждый вход x_{N} на вес w_{N} и суммирует взвешенные входы. Если эта сумма больше заданного порогового значения, выход равен единице, в противном случае – нулю.
Именно такие системы и множество им подобных называются – перцептронами. Перцептроны состоят из одного слоя (т.е. количество слоев нейронов между входом X и выходом OUT равно одному) искусственных нейронов, соединенных с помощью весовых коэффициентов с множеством входов .
Вершины-круги в левой части рисунка служат лишь для распределения входных сигналов. Они не выполняют каких- либо вычислений, и поэтому не считаются слоем. По этой причине они обозначены в виде круга, чтобы отличать их от вычисляющих нейронов (сумматоров), обозначенных квадратами.
В 60-е годы перцептроны вызвали большой интерес и оптимизм. Розенблатт доказал замечательную теорему об обучении перцептронов. Уидроу дал ряд убедительных демонстраций систем перцептронного типа, и исследователи во всем мире стремились изучить возможности этих систем. Первоначальная эйфория сменилась разочарованием, когда оказалось, что перцептроны не способны обучиться решению ряда простых задач. Минский строго проанализировал эту проблему и показал, что имеются жесткие ограничения на то, что могут выполнять однослойные перцептроны, и, следовательно, на то, чему они могут обучаться. Так как в то время методы обучения многослойных сетей не были известны, исследователи перешли в более многообещающие области, и исследования однослойных перцептронов пришли в упадок. Недавнее открытие методов обучения многослойных сетей в большей степени, чем какой-либо иной фактор, повлияло на возрождение интереса и исследовательских усилий.
Работа Минского, возможно, и охладила пыл энтузиастов перцептрона, но обеспечила время для необходимой консолидации и развития лежащей в основе теории. Важно отметить, что анализ Минского не был опровергнут. Он остается важным исследованием и должен изучаться, чтобы ошибки 60-х годов не повторились.
Теория перцептронов является основой для многих других типов искусственных нейронных сетей, а сами перцептроны являются логической исходной точкой для изучения искусственных нейронных сетей.
2. Конструкторская часть
2.1 Описание используемого перцептрона
Программная реализация модели распознавания графических образов на основе перцептрона.
class Neyron
{
public:
int X[30][30];
int k_or_t;
int count_edin;
double S;
double W[30][30];
double W_now[30][30];
Neyron();
void Obuchenie(int k_or_t);
int Raspoznanie();
void Normirovka();
void Show();
};
Перцептрон состоит из трёх типов элементов, а именно: поступающие от сенсоров сигналы передаются ассоциативным элементам, а затем реагирующим элементам. Таким образом, перцептроны позволяют создать набор «ассоциаций» между входными стимулами и необходимой реакцией на выходе.
Важным свойством любой нейронной сети является способность к обучению. Процесс обучения является процедурой настройки весов и порогов с целью уменьшения разности между желаемыми (целевыми) и получаемыми векторами на выходе.
void Obuchenie(int k_or_t)
{
for (int a=0;a<30;a++)
for (int b=0;b<30;b++)
X[a][b]=0;
int count_dots=0;
for (int a=0; a<30;a++)
{
int n=10;
int k=0;
for (int b=0; b<30;b++)
{
count_dots=0;
for (int i=k; i<n; i++)
{
int l=a*10;
int m=l+10;
for (int j=l; j<m; j++)
{
if ( Form1->Image1->Canvas->Pixels[i][j]==clBlack )
{
count_dots++;
}
}
}
if(count_dots>20)
{
X[a][b]=1;
if(k_or_t==0)
W[a][b]=W[a][b]+1;
else
W[a][b]=W[a][b]-1;
count_edin++;
}
k=n;
n=k+10;
}
}
S=0;
for (int a=0; a<30;a++)
for (int b=0; b<30;b++)
S=S+X[a][b]*W[a][b];
this->Show();
}
Простым распознающим элементом(реагирующим, то есть действующим) называется элемент, который выдаёт сигнал +1, если сумма его входных сигналов является строго положительной, и сигнал −1, если сумма его входных сигналов является строго отрицательной. Если сумма входных сигналов равна нулю, выход считается либо равным нулю, либо неопределённым. Здесь мы имитируем его работу.
int Raspoznanie()
{
for (int a=0;a<30;a++)
for (int b=0;b<30;b++)
X[a][b]=0;
int count_dots=0;
for (int a=0; a<30;a++)
{
int n=10;
int k=0;
for (int b=0; b<30;b++)
{
count_dots=0;
for (int i=k; i<n; i++)
{
int l=a*10;
int m=l+10;
for (int j=l; j<m; j++)
{
if ( Form1->Image1->Canvas->Pixels[i][j]==clBlack )
{
count_dots++;
}
}
}
if(count_dots>20)
{
X[a][b]=1;
}
k=n;
n=k+10;
}
S=0;
for (int a=0; a<30;a++)
for (int b=0; b<30;b++)
S=S+X[a][b]*W[a][b];
if(S>0)return 0;
if(S<0)return 1;
if(S==0)return -1;
}
3.2 Описание пользовательского интерфейса
Интерфейс программы предельно прост, в качестве цвета который принадлежит пользователю выступает темно синий цвет, пользователь и компьютер поочередно ставят свои фишки в местах, которые они считают более выигрышными, оборачивая тем самым фишки противника в свой цвет.
Окно программы представляет собой игровое поле, состоящее из ячеек таблицы размерностью 8х8 (Рис. 4.1). Нижнюю часть окна занимает информирующие элементы, которые отображают, чей сейчас ход, и каков счет фишек у пользователя и компьютера.
Рис. 4. 1Вид окна программы
Ход осуществляется путем нажатия левой кнопки мыши на нужном поле. Ставить свою фишку необходимо в свободное место доски, в противном случае программа выдает уведомление о том, что такой ход не допустим (Рис. 4.2).
Рис. 4. 2Уведомление о неправильном ходе
После того как на доске не остается ни одного свободного места программа определяет кому пренадлежит перевес в фишках, и например в случае поражения пользователя выдает соответствующее сообщение (Рис. 4.2).
Рис. 4. 3Уведомление о выигрыше компьютера
Заключение
В результате выполнения работы была разработана программа реализующая алгоритм игры «Реверси». Были получены навыки реализации алгоритмов по предмету «Интеллектуальные системы».
Список литературы
1. Strategy guide // URL:http://radagast.se/othello/Help/strategy.html
2. А. Я. Архангельский Программирование в Delphi 7 Издательство: Бином-Пресс, 2003 г. ISBN 5-9518-0042-0
3. А. Я. Архангельский Приемы программирования в Delphi Издательство: Бином-Пресс, 2004 г. ISBN 5-9518-0067-6
4. А. Жуков Изучаем Delphi Издательство: Питер, 2001 г. ISBN 5-272-00202-4
5. Заметки программистера // URL:http://www.dokwork.ru/2012/11/tictactoe.html