Самоорганізовані карти Кохонена

Всім доброго дня!

Сьогодні ми повертаємося до найцікавішої теми, а саме до обговорення нейронних мереж. Ось попередні статті циклу:

А сьогодні ми поговоримо про ще один тип мереж під назвоюмережі Кохонена, які також називають картами Кохонена. Нам належить розібратися, який принцип їхньої роботи, які цілі вони покликані реалізовувати, загалом нас сьогодні цікавить все, що стосується нейронних мереж Кохонена.

мережі

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

  • зразки, що відносяться до однієї і тієї ж групи, повинні бути подібні один одному в деякому сенсі
  • а групи, подібні один до одного, у свою чергу розміщуватись близько один до одного.

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

Нейронна мережа Кохонена на відміну від розглянутих нами раніше мережнавчається без вчителя і носить назву карти Кохонена, що самоорганізується (SOFM – Self-Organizing Feature Map). Давайте познайомимося із її структурою ближче.

Карти Кохонена мають набір вхідних елементів, кількість яких збігається з розмірністю векторів, що подаються на вхід, і набір вихідних елементів, кожен з яких відповідає одному кластеру (групі). Якщо ми аналізуємо спортсменів за 4 ознаками – швидкість бігу, зростання, вага, витривалість, то, відповідно, ми повинні мати 4 входи, по одному для кожної ознаки. В цьому випадку як вхідний вектор виступає один із спортсменів, а його координатами є значення його ознак. Не знаю, чи вдалу я вибрав аналогію, але сподіваюся, що на таких прикладах стане зрозуміліше суть роботи самих організованих карт Кохонена )

навчання

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

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

Але перш, ніж переходити до обговорення тонкощів навчання мереж Кохонена, давайте розберемося, як взагалі мережа повинна працювати.

При подачі якогось вектора на вхід мережа повинна визначити, до якого кластера цей вектор найближчий. Як критерій близькості може бути обраний критерій мінімальності квадрата Евклідова відстані. Розглянемо вхідний вектор як точку в n-мірному просторі (n – кількість координат вектора, це число дорівнює числу вхідних нейронів, як миобговорювали раніше). Тоді нам потрібно обчислити відстань між цією точкою та центрами різних кластерів та визначити, відстань до якогось із кластерів виявиться мінімальною. Тоді цей кластер (і відповідний йому вихідний нейрон) оголошується переможцем.

А яка ж точка є центром кластера та які у неї координати у цьому просторі? Тут все дуже витончено =) Координатами центру кластера є величини ваги всіх зв'язків, які приходять до цього вихідного нейрона від вхідних елементів. Оскільки кожен вихідний нейрон (кластер) з'єднаний з кожним вхідним нейроном, ми отримуємо, n зв'язків, тобто n координат для точки, що відповідає центру кластера. Формула для обчислення квадрата Евклідова відстані виглядає так:

Тут – квадрат відстані між точкою P та кластером K. Координати точки P – , а координати центру кластера K – .

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

Давайте тепер перейдемо до процесу навчання, адже, перш ніж мережа почне правильно групувати елементи в кластери, необхідно її навчити.

Суть навчання полягає у наступному. На вхід подається вектор із навчальної вибірки. Для цього вектора визначаєтьсякластер-переможець, і для цього кластери коригують вагові коефіцієнти таким чином, щоб він виявився ще ближче до вхідного вектора. Найчастіше також коригують ваги кількох сусідів кластера-переможця.

На відміну від навчання з вчителем, розглянутого раніше, суть навчання полягає не в тому, щоб порівнювати виведення мережі з ідеальним висновком, а в підстроюванні ваги всіх зв'язків для максимальногозбіги із вхідними даними.

Для коригування ваг використовується така формула:

У цій формулі – вага на кроці t+1, а – вага на кроці t (тобто на попередньому). - Норма навчання, а - координата вхідного вектора. Зверніть увагу, що норма навчання також залежить від номера кроку та змінюється у процесі навчання. Крім того, змінюється і радіус, що визначає скільки елементів мережі будуть піддані коригування ваг. Давайте розберемо детальніше, що визначає це радіус.

Вихідні (кластерні) елементи мережі Кохонена зазвичай представляють розташованими тим чи іншим чином двомірному просторі. Розмістимо, наприклад, вихідні елементи у вигляді квадратної сітки і поставимо початковий радіус навчання рівним 2. Подаємо на вхід мережі вектор і елементом-переможцем виявляється нейрон, позначений на схемі червоним кольором. За алгоритмом навчання ми маємо оновити значення ваг цього нейрона, і навіть тих, які потрапляють у коло заданого радіусу (у разі 2) – ці елементи виділені зеленим.

Кохонена

Ближче до кінця процесу навчання радіус зменшується. Нехай він став рівним одиниці, тоді оновлюватимуться ваги наступних елементів:

самоорганізовані

Отже, розібравши всі складові процесу навчання, давайте напишемо конкретний алгоритм для цього процесу:

  • беремо навчальний вектор та обчислюємо квадрат евклідова відстані від нього до кожного із кластерних елементів мережі
  • знаходимо мінімальне з отриманих значень та визначаємо елемент-переможець
  • для нейрона-переможця, а також для нейронів, які потрапили в заданий радіус, виконуємо коригування ваг зв'язків
  • оновлюємо значення норми навчання та радіусу
  • продовжуємо навчання, якщо не виконано умову зупинення навчання

Зупинка навчання відбувається у тому випадку, якщо величини зміни ваги стають дуже маленькими.