- я компонента вхідного вектора. p>
Крок 4. Кроки 1-3 повторюються для всіх навчальних векторів. Один цикл послідовного пред'явлення всієї вибірки називається епохою. p> Навчання завершується після закінчення декількох епох, коли мережа перестане помилятися.
Зауваження 1. Коефіцієнт швидкості навчання? є параметром даного алгоритму. Як правило, його вибирають з діапазону [0.5, 0.7] (я взяв 0.5). У деяких випадках (при великому обсязі навчальної вибірки) доцільно поступово зменшувати значення?, Починаючи, наприклад, з 1. p> Зауваження 2. Використовувана на кроці 3 формула модифікує тільки вагові коефіцієнти, що відповідають ненульовим значенням входів, оскільки тільки вони впливали на величину, а, отже, і на значення у . Очевидно , що якщо> y (отриманий неправильний нульової вихід замість правильного одиничного), то, оскільки? > 0, вагові коефіцієнти (а разом з ними і величина s ) будуть збільшені і тим самим зменшать помилку. В іншому випадку вагові коефіцієнти будуть зменшені, і s теж зменшиться, наближаючи тим самим y до значення. br/>
Інтерфейс користувача
Головне вікно програми (рис. 3) містить панель для малювання та 4 кнопки (В«Визначити фігуруВ», В«ОчиститиВ», В«НавчитиВ», В«ВихідВ»).
В
Рис. 3. Головне вікно програми
При першому запуску програми персептрон ще не навчений і видаватиме випадковий результат. Наприклад, зобразимо на панелі малювання трикутник рис. 4. br/>В
Рис. 4. br/>
При натисканні на кнопку В«Визначити фігуруВ» видається повідомлення
В
Натискаємо кнопку В«НавчитиВ», при натисканні якої перераховуються ваги. Потім знову натискаємо кнопку В«Визначити фігуруВ», видається повідомлення
В
Таким чином при тривалому навчанні програма перестане помилятися і видаватиме тільки правильні повідомлення.
В
В
Реалізація
Функції програми:
void __ fastcall TForm1 :: FormCreate (TObject * Sender) - функція створює форму і заповнює матрицю ваг випадковими числами з проміжку [-0,3; 03].
void __ fastcall TForm1 :: BitBtn1Click (TObject * Sender) - при натисканні кнопки В«Визначити фігуруВ» ця функція обнуляє вхідну матрицю, потім заповнюється 0 і 1 залежно зафарбований чи піксель i-рядка j- шпальти. Далі вважається і видається повідомлення в залежності від знаку S:
y =
void __ fastcall TForm1 :: BitBtn2Click (TObject * Sender) - при натисканні кнопки В«НавчитиВ» ця функція перераховує матрицю ваг за формулою
,
де, а вибирається залежно від y. Якщо y = 0 то. p> Якщо y = 1 то.
Вихідний код програми знаходиться в Додатку 1. [1-2]