Русский   English
ДонНТУ   Портал магістрів

Реферат за темою випускної роботи

Зміст

Вступ

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

1 Нейрон і нейронна мережа

1.1 Біологічний нейрон

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

Схематично біологічний нейрон виглядає, так як представлено на мал.1.1.

Схематичний вид біологічного нейрона.

Малюнок 1.1 - Схематичний вид біологічного нейрона.

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

1.2 Математична модель нейрона

Математична модель нейрона представлена на мал.1.2.

Математична модель нейрона

Рис.1.2 - Математична модель нейрона

У математичної моделі входами є x0-xn, яких може бути будь-яке кінцеве кількість. Як синаптичного зв'язку виступають ваги w0-wn, які визначають на скільки той чи інший вхід інформативний для даного нейрона. Як тіла нейрона представлений акумулятор, який складає всі вступники на нього входи, а також враховує відхилення b. Сигнал з виходу суматора передається на деяку функцію, яка називається функцією активації і визначає чи буде в цей момент часу вихід y знаходиться в збудженому стані.

Математична модель нейрона описується наступним виразом:

Формула 1

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

Найпростішою функцією активації є порогова функція, яка виглядає так, як показано на мал. 1.3.

Порогова функція активації нейрона

Мал. 1.3 - Порогова функція активації нейрона

Також на практиці часто застосовуються:

  1. лінійна функція активації:
    Лінійна функція активації нейрона

    Мал 1.4 - Лінійна функція активації нейрона

  2. сигмоїдальна функція активації:
    Сигмоїдальна функція активації нейрона

    Мал 1.5 - Сигмоїдальна функція активації нейрона

  3. гіперболічний тангенс:
    Функція активації - гіперболічний тангенс

    Мал 1.6 - Функція активації - гіперболічний тангенс

1.3 Основні типи архітектур нейронних мереж

При проектуванні НС важливим моментом є вибір її архітектури. Вибір архітектури впливає на здатність до навчання мережі, вибираючи різні архітектури НС може як навчатися з різною швидкістю, так і з різною точністю. Таким чином при виборі невірної архітектури мережі мережа не зможе правильно навчитися поставленому завданню.

У загальному вигляді мережа являє собою безліч пов'язаних між собою певним чином нейронів.

Основними типами архітектур НС є:

  1. Мережі прямого поширення. У таких НС сигнал йде від входу тільки в сторону виходу НС. Такі нейронні мережі можуть мати як один шар нейронів, так і відразу кілька шарів. Приклад одношарової нейронної мережі прямого поширення представлений на мал. 1.7.
    Одношарова нейронна мережа прямого поширення.

    Мал. 1.7 - Одношарова нейронна мережа прямого поширення.

    Приклад багатошарової нейронної мережі прямого поширення представлений на мал 1.8.

    Багатошарова нейронна мережа прямого поширення.

    Мал. 1.8 - Багатошарова нейронна мережа прямого поширення.

  2. Мережі зі зворотними зв'язками. У таких НС інформація з наступних шарів передається на попередні. Зворотними зв'язками можуть охоплюватися як окремі нейрони, так і шари НС, а також і вся мережа повністю. Введення зворотного зв'язку може як позитивно позначитися на роботі мережі, розширивши її функціонал, так і негативно, вплинувши на її стійкість. Приклад НС із зворотними зв'язками представлений на мал 1.9.
    Нейронна мережа із зворотними зв'язками

    Мал 1.9 - Нейронна мережа із зворотними зв'язками

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

    Мережа Хопфілда

    Мал. 1.10 - Мережа Хопфілда

  3. Регулярні або конкуруючі мережі. У таких НС нейрони розташовуються в основних вузлах деякої регулярізаціонной решітки. Кожен нейрон такий НС певним чином пов'язаний зі своїми сусідами. Сусідство нейронів визначається типом використовуваної регулярізаціонной решітки. Приклад конкуруючої нейронної мережі представлений на мал. 1.11.
    Конкуруюча нейронна мережа Кохонена

    Мал 1.11 - Конкуруюча нейронна мережа Кохонена

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

У відомих нейронних мережах можна виділити кілька типів структур нейронів: гомогенні і гетерогенні. Гомогенні НС складаються з однотипних нейронів, що мають однакову функцію активації.

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

1.4 Основні уявлення про нейронних мережах

За допомогою одного нейрона можна класифікувати об'єкти лінійно роздільні на классифицирующей поверхні. Приклад такої поверхні представлений на мал. 1.12.

Два лінійно поділюваних класу

Мал. 1.12 - Два лінійно поділюваних класу

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

Нелінійна залежність

Мал. 1.13 - Нелінійна залежність

Для побудови нейронної мережі необхідно визначитися з:

  1. архітектурою НМ;
  2. функцією втрат;
  3. методом оптимізації;
  4. метриками.

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

Cреднеквадратічная помилка

Також найбільш використовуваними є наступні функції втрат:

  1. Крос-ентропія, яка обчислюється за формулою:
  2. Крос-ентропія
  3. Експоненціальна функція втрат:
  4. Експоненціальна функція втрат

Під кожну конкретну задачу необхідно розумно вибирати свою функцію втрат.

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

Графічне представлення методу градієнтного спуску

Мал 1.14 - Графічне представлення методу градієнтного спуску

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

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

1.5 Сверточні нейронні мережі

Для роботи з такими даними як зображення на практиці застосовуються згорткові нейронні мережі. Такі мережі з великою точністю вирішили задачу розпізнавання рукописних цифр, які містяться в бібліотеці MNIST. Також з'явилося безліч архітектур згортальних нейронних мереж, які змогли вирішити задачу ImageNet Challenge, який полягає в тому, щоб навчити НС розпізнавати 1000 різних класів на датасета розміром в 150 000 прикладів. Суть згортальних НС полягає в тому, щоб за допомогою згортки (фільтрації) відсівати що не несе жодної корисну для нейронної мережі інформацію, а також для того, щоб розпізнавати різні класи незалежно від їх розташування та розміру на зображенні.

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

Першою сверточною нейронною мережею здійснила прорив в розпізнаванні стала мережа LeNet, представлена в 1998 році і архітектура даної мережі представлена на vfk. 1.15.

Архітектура сверточної нейронної мережі LeNet

Мал. 1.15 - Архітектура сверточної нейронної мережі LeNet

Після цього згорткові НС стали удосконалюватися таким чином, щоб показати якомога кращі результати на навчальному датасета MNIST. З'явилися такі архітектури як:

  1. AlexNet (2012 год), представлена на рис. 1.16;
  2. Архітектура сверточної нейронної мережі AlexNet

    Мал. 1.16 - Архітектура сверточної нейронної мережі AlexNet

  3. VGG (2014 год), представлена на рис. 1.17;
  4. Архітектура сверточної нейронної мережі VGG

    Мал. 1.17 – Архітектура сверточної нейронної мережі VGG

  5. GoogLeNet (2015 рік), є модифікованим варіантом архітектури LeNet від корпорації Google, представлена на мал. 1.18.
  6. Архитектура сверточной нейронной сети GoogLeNet

    Мал. 1.18 – Архітектура сверточної нейронної мережі GoogLeNet

  7. ResNet, представлена на мал. 1.19.
  8. Архитектура сверточной нейронной сети ResNet

    Мал. 1.19 – Архітектура сверточної нейронної мережі ResNet

2. 2. Нейронна мережа для розпізнавання кольору в пакеті прикладних програм MATLAB

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


from PIL import Image
for i in range(240,256):
    for j in range(230,256):
        for k in range(0,40):
            img = Image.new("RGB", (140,140), (i,j,k))
            img.save("D:\\colors\\yellow\\" + str(i) + "_" + str(j) + "_" + str(k) + ".jpg","JPEG")

Скрипт написаний на мові програмування Python і виконує наступні дії: для певного діапазону кольорів RGB-форматі генерує робочу площину розміром 140 на 140 пікселів і заповнює її пікселями поточного кольору, далі результат зберігається в певній папці з ім'ям, відповідному цьому кольору. Далі за допомогою вкладених циклів колір змінюється і дії повторюються. Це зроблено для того, щоб врахувати різні відтінки кольорів. Даний скрипт запускається для 6 окремих діапазонів, які відповідають різним кольорам: білий, жовтий, помаранчевий, червоний, зелений, синій. В цілому було отримано 76 021 навчальний приклад, чого цілком достатньо для навчання НМ.

Результат генерації навчальної вибірки

Мал. 2.1 – Результат генерації навчальної вибірки

Далі в пакеті прикладних програм MATLAB створюється m-файл, за допомогою якого і буде відбуватися навчання НМ.

clear all;
clc;
%Выборка
path = 'D:\diploma\colors';
imds =imageDatastore(path,"IncludeSubfolders",true,"LabelSource","foldernames");
train = imds.splitEachLabel(1000,'randomize');
validation = imds.splitEachLabel(500,'randomize');

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

Для проектування і використання НС в пакеті прикладних програм необхідний пакет Deep Learning Toolbox, який дозволяє в графічному редакторі спроектувати нейронну мережу, після чого по створеної архітектурі можна створити код MATLAB, який і використовується для навчання НМ.

Далі створюється НМ з архітектурою, представленої на Мал. 2.2.

Архітектура створеної НМ

Мал 2.2 – Архітектура створеної НМ

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

options = trainingOptions('sgdm','InitialLearnRate',0.001,'ValidationData',validation,'ValidationFrequency',20,'MaxEpochs',3,'MiniBatchSize',100,'Shuffle','every-epoch','Plots','training-progress');
net = trainNetwork(train,lgraph,options)

Процес навчання нейронної мережі буде виводитися на графіках, а також кожні 50 ітерацій результати буде виводитися в командний рядок. Результати навчання НС представлені на мал. 2.3 і мал. 2.4.

Графік процесу навчання НМ.

Мал. 2.3 - Графік процесу навчання НМ.

Результати навчання НМ, що виводяться в командний рядок MATLAB MATLAB

Мал. 2.4 - Результати навчання НМ, що виводяться в командний рядок MATLAB

У підсумку на фінальній ітерації навчання НМ точність передбачення на валідаційних даних становить 99.6%, що є досить для вирішення поставленого завдання.

За допомогою команди save (net, 'net'), можна зберегти навчену нейронну мережу і при запуску програми завантажувати її в робочу область за допомогою команди load (net).

Для перевірки можливості використання навченої НМ для реальних завдань була зроблена фотографія кубика Рубіка, представлена на мал. 2.5 і завантажена в MATLAB.

Фотографія кубика Рубика.

Мал. 2.5 - Фотографія кубика Рубика.

Далі необхідно точно визначати кольору елементів кубика Рубика. Для кожного елемента вибирається область розміром 140 на 140 пікселів і по черзі дані області передаються на вихід НМ. Подаючи на вхід НМ область першого елемента, представлену на мал. 2.6, на виході було отримано, що з імовірністю 1.0000 - це область зеленого кольору.

Область першого елемента кубика Рубіка, що подається на вхід НМ

Мал. 2.6 - Область першого елемента кубика Рубіка, що подається на вхід НМ

Далі на вхід НМ були подані області, представлені на рис. 2.7 і мал. 2.8. Для даних областей на виході було отримано такі результати: на мал. 2.7 з ймовірністю 0.9998 - область оранжевого кольору, а на мал. 2.8 з ймовірністю 0.9999 - область синього кольору.

Друга область, яка подається на вхід НМ

Мал. 2.7 - Друга область, яка подається на вхід НМ

Третя область, що подається на вхід НМ

Мал. 2.8 - Третя область, що подається на вхід НМ

Результати роботи створеної НМ задовольняють поставлену задачу і добре справляються з реальними даними.

Висновки

Була спроектована система технічного зору робота-маніпулятора з ортогональними захопленнями.

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

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

Перелік посилань

  1. Ф. Уоссерман. Нейрокомпьютерная техника: теория и практика/ под ред. А.И. Галушкина. М.: Мир. 1986.
  2. В.В.Круглов,В.В.Борисов.Искусственные нейронные сети.-М:Горячая линия.-Телеком,2001.-382с.
  3. Л.Г.Комарцова,А.В.Максимов.Нейрокомпьютеры.-Москва:МГТУ им.Баумана.2002.-320с.
  4. О.Г.Руденко, Е.В.Бодянский. Основы терии искусственных нейронних сетей.-Харьков:2002.-2002.-317с.
  5. В.Дьяконов,В.В.Круглов. Математические пакеты расширения МАТЛАБ.Специальный справочник.Спб:Питер.-2001.-480с.
  6. В.С.Медведев, В.Г.Потемкин. Нейронные сети.МАТЛАБ.-М:Диалог.-МИФИ.-2002.-496с.
  7. С.Осовский. Нейронные сети для обработки информации.Москва: Финансы и статистика .-2002.-344с.