Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
neurmeua.doc
Скачиваний:
45
Добавлен:
07.02.2016
Размер:
1.35 Mб
Скачать

Алгоритм навчання шестишарового персептрона

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

Традиційно для оцінки ступеня зв'язку параметрів використовують різні критерії, найбільш відомим представником яких є коефіцієнт кореляції. Однак коефіцієнт кореляції в основному застосовується лише для оцінки взаємозв'язку дійсних параметрів, у той час як у багатьох задачах розпізнавання необхідно одержувати оцінку взаємозв'язку дійсного (ознака) і дискретного (номер класу) параметрів. З іншого боку, при побудові розпізнаючих моделей бажано заздалегідь знати, скільки буде потрібно розділяючих площин для здійснення класифікації, що не можна оцінити, виходячи з коефіцієнта кореляції.

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

Узагальнюючи вищевикладене, сформулюємо алгоритм оцінки значущості ознак та розрахунку параметрів рішаючого правила.

Крок 1. Ініціалізація. Задати навчальну вибірку екземплярів, представлену у вигляді масиву даних p, у якому ознаки лініаризовані по рядках, а екземпляри – по стовпцях, а також відповідний масив t, що містить номера класів, зіставлені екземплярам навчальної вибірки (0 або 1). Створити масив nx, рівний за розміром кількості ознак N, елементи якого будуть містити число інтервалів для кожної ознаки. Установити nx(і) = 0, і = 1, ..., N, де i – номер поточної ознаки. Занести кількість екземплярів навчальної вибірки в змінну S. Установити номер поточної ознаки i = 1.

Крок 2. Якщо i N, тоді перейти на крок 3, у протилежному випадку – перейти на крок 12.

Крок 3. Занести в буфер ознаки x вектор значень i-ї ознаки з навчальної вибірки: x(j) = p(i, j), = 1, ..., S; занести в буфер класу y копію масиву t: y(j) = t(j), j = 1, ..., S.

Крок 4. Відсортувати масиви x та y в порядку зростання масиву x (кроки 4.1 - 4.7 реалізують найпростіший алгоритм бульбашкового сортування, який можна замінити на практиці більш швидкодіючим алгоритмом).

Крок 4.1 Установити номер поточного екземпляра навчальної вибірки j = 1.

Крок 4.2 Якщо S, тоді перейти на крок 4.3, у протилежному випадку – перейти на крок 5.

Крок 4.3 Установити номер поточного екземпляра: k = j + 1.

Крок 4.4 Якщо S, тоді перейти на крок 4.5, у протилежному випадку – перейти на крок 4.7.

Крок 4.5 Якщо x(j) > x(k), тоді установити: tmpx = x(j), x(j) = x(k), x(k) = tmpx, tmpy = y(j), y(j) = y(k), y(k) = tmpy, де tmpx і tmpy – буферні змінні.

Крок 4.6 Установити: + 1. Перейти на крок 4.4.

Крок 4.7 Установити: + 1. Перейти на крок 4.2.

Крок 5. Установити: s = 1, k = 1.

Крок 6. Якщо S, тоді установити tempa x(s), де tempa – буфер для збереження лівої границі k-го інтервалу i-ї ознаки, і перейти на крок 7, у протилежному випадку – перейти на крок 11.

Крок 7. Поки (S) і (y(s) = y(+ 1)) виконувати: + 1.

Крок 8. Якщо (s = S) і (y(s) = y(s – 1), тоді установити: Kx(i, k) = y(s), Ax(i, k) = tempa, Bx(i, k) = x(s), k = + 1, s = + 1, перейти на крок 10. Тут Kx(i, k) – номер класу зіставлений екземплярам навчальної вибірки, значення i-ї ознаки яких попадає у середину k-го інтервалу; Ax(ik) і Bx(i, k) – ліва і права границі k-го інтервалу i-ї ознаки, відповідно.

Крок 9. Якщо (s < S) і (y(s) y(s + 1)), тоді установити: Kx(i, k) = y(s), Ax(i, k) = tempa, Bx(i, k) = x(s), + 1, + 1, nx(i) = nx(i) + 1, у протилежному випадку – установити: Kx(і, k) = y(s), Ax(і, k) = x(s), Bx(і, k) = x(s), k = + 1, s = + 1.

Крок 10 Перейти на крок 6.

Крок 11 Установити: і =і + 1, перейти на крок 2.

Крок 12 Останов.

У результаті виконання кроків 1 – 12 для навчальної пари {p, t} ми одержимо масив nx, що містить для кожної ознаки кількість інтервалів на який він розбивається (для оцінки інформативності ознак необхідно прийняти NNx(і) = min(nx) / nx(і), і = 1, ..., N), а також масиви Ax, Bx і Kx, що містять інформацію про границі інтервалів і номери класів, зіставлених їм для всіх ознак. На основі цих масивів будемо здійснювати класифікацію.

Одновимірну класифікацію за i-ю ознакою будемо здійснювати наступним способом. Знайдемо інтервал, у який попадає значення ознаки і віднесемо екземпляр за даною ознакою до класу, номер якого зіставлений інтервалу, у який потрапило значення ознаки. Якщо значення ознаки не попадає в жоден інтервал із визначених у масивах Ax і Bx, тоді віднесемо екземпляр за даною ознакою до класу, зіставленому екземплярам найближчого інтервалу.

Зробивши одновимірні класифікації екземпляра за всіма ознаками, відобразимо результати класифікацій з інтервалу [0, 1] на інтервал [-1, 1] і знайдемо їхню суму, зважену за допомогою коефіцієнтів NNx(і). Очевидно, що результати одновимірної класифікації для значимих ознак у цьому випадку будуть вносити більший вклад у суму, ніж результати класифікації за малозначимими ознаками. Розрахувавши зважену суму, відобразимо її на інтервал [0, 1], що і буде підсумковим результатом класифікації екземпляра за всіма ознаками.

Для оцінки відносної надійності класифікації для декількох екземплярів розділимо модуль зваженої суми результатів класифікації (без відображення на інтервал [0, 1]) на максимальне за модулем значення зваженої суми для даних екземплярів.

Узагальнюючи вищесказане, запишемо алгоритм класифікації.

Крок 1. Ініціалізація. Задати масиви p, nx, Ax, Bx і Kx.

Крок 2. Знайти оцінки значимості для ознак: NNx(і) = min(nx(і)) / nx(і), і = 1, ..., N.

Крок 3. Установити номер поточного екземпляра j = 1.

Крок 4. Якщо S, тоді перейти на крок 5, у протилежному випадку – перейти на крок 15

Крок 5. Установити значення зваженої суми результатів одновимірних класифікацій j-го екземпляра rj = 0, номер поточної ознаки j-го екземпляра: i = 1.

Крок 6. Якщо N, тоді перейти на крок 7, у протилежному випадку – перейти на крок 12

Крок 7. Установити результат класифікації для j-го екземпляра за i-ю ознакою r(i) = 0;

Крок 8. Визначити інтервал, до якого відноситься j-ий екземпляр за i-ю ознакою і номер класу, зіставлений даному інтервалу.

Крок 8.1 Якщо p(і, j) < Ax(і, 1), тоді r(і) = Kx(і, 1), перейти на крок 9, у протилежному випадку – перейти на крок 8.2.

Крок 8.2 Якщо p(ij) > Bx(inx(i) + 1), тоді установити r(i) = Kx(inx(i) + 1) і перейти на крок 9, у протилежному випадку – перейти на крок 8.3.

Крок 8.3 Установити: k = 1.

Крок 8.4 Якщо k nx(i) + 1, тоді перейти на крок 8.5, у протилежному випадку – перейти на крок 9.

Крок 8.5 Якщо (p(i, jAx(i, k)) і (p(i, jBx(i, k)), тоді установити r(i) = Kx(i, k) і перейти на крок 9, у протилежному випадку – перейти на крок 8.6.

Крок 8.6 Якщо (nx(і) + 1) і (p(і, j) > Bx(і, k)) і (p(і, j) < Ax(і, k + 1)), тоді перейти на крок 8.7, у протилежному випадку – перейти на крок 8.8.

Крок 8.7 Якщо (Ax(і, k + 1) – p(і, j)) < (p(і, j) – Ax(і, k + 1)), тоді установити r(і) = Kx(і, k + 1), у протилежному випадку – встановити r(і) = Kx(і, k).

Крок 8.8 Установити: + 1, перейти на крок 8.4

Крок 9. Якщо r(і) > 0, тоді встановити r(і) = 1, у протилежному випадку встановити r(і) = –1.

Крок 10. Установити: rj = rj + (r(і)NNx(і)).

Крок 11. і = і + 1, перейти на крок 6.

Крок 12 Установити pr(j) = rj, де pr(j) – масив, що містить оцінки відносної впевненості (надійності) класифікації.

Крок 13. Якщо rj > 0, тоді встановити t(j) = 1, у протилежному випадку – встановити t(j) = 0. Тут t – масив результатів класифікації.

Крок 14. Установити: + 1, перейти на крок 4.

Крок 15. Установити: pr = |pr| / max(|pr|).

Розглянутий алгоритм класифікації є неітеративним і може бути використаний для побудови і настроювання ваг нейронної мережі прямого поширення – шестишарового персептрона.

Для цього функції активації для всіх нейронів мережі варто задати як

Ваговий коефіцієнт q-го входу ρ-го нейрона μ-го шару встановити відповідно до формул:

k = 1, .., nx(i); i = 1, ..., N.

Схема персептрона, ваги якого настроєні по запропонованій формулі представлена на рисунку 8.

Рисунок 8 – Схема персептрона

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]