You are on page 1of 24

Міністерство освіти і науки України

Чорноморський національний університет


Факультет комп’ютерних наук
Кафедра Інтелектуальних інформаційних систем

КУРСОВА РОБОТА
з дисципліни «Нейромережеві технології»
на тему «Штучні нейронні мережі»
6.050101 – КР.ПЗ.01 – 501.1510118

Виконав: студент 5 курсу, групи 501


спеціальності
122 «Комп’ютерні науки»
(шифр і назва напряму підготовки)
Тарасова А. О.
(підпис, ініціали та прізвище)
_
(дата)

Перевірив: к.т.н., доцент


Є.В. Сіденко
(підпис, ініціали та прізвище)
_
(дата)

м. Миколаїв – 2020 рік


2

ЗМІСТ
ВСТУП .........................................................................................................................3
Введення в штучні нейронні мережі .........................................................................4
Створення нейронних мереж ...................................................................................18
Програмна реалізація нейронної мережі ................................................................ 20
ВИСНОВОК...............................................................................................................23
СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ............................................................ 24
3

ВСТУП
З розвитком технологій і істотним збільшенням потужності
обчислювальних систем, стали актуальними завдання автоматизації процесів і
створення штучного інтелекту (ІІ). Головною метою ІІ є рішення задач, що
виникають на практиці.
Одним з активно розвиваються напрямків ІІ є штучні нейронні мережі
(ШНМ), що працюють за принципом біологічних нейронних мереж і вдають із
себе систему взаємодіючих між собою штучних нейронів. Серед основних
областей застосування ІНС можна виділити: розпізнавання об'єктів, обробка
звукової та текстової інформації, прогнозування, прийняття рішень,
оптимізація, аналіз даних.
У цій роботі буде розглянута програмна реалізація сверточное нейронної
мережі, завданням якої є розпізнавання певних об'єктів на першому зображенні
та виявлення зміни положення цих об'єктів на другому зображенні.
Метою курсової роботи є вивчення концепції ІНС, розбір видів ІНС, способи
навчання ІНС, ознайомлення з бібліотекою KERAS для роботи з ІНС [3].

Введення в штучні нейронні мережі


Історія розвитку ІНС
Вважається, що теорія нейронних мереж як наукова дисципліна вперше
була позначена в класичній праці Уорреном Мак-Коллока і Уолтера Питтса в
1943 р, в якій стверджувалося, що практично будь-яку логічну операцію можна
реалізувати за допомогою простої нейронної мережі. Продовжуючи
дослідження в цій області, в 1958 р Френк Розенблат винаходить одношаровий
перцептрон є однією з перших моделей нейронної мережі і демонструє його
здатність вирішувати завдання класифікації. Однак, як виявилося пізніше,
перцептрон мав серйозні обмеження. У 1969 році Марвін Лі Мінський публікує
формальний доказ про нездатність перцептрону вирішувати деякі завдання,
написавши про це цілу книгу. Лише через 20 років, нейронні мережі стали
активно використовуватися, що пов'язано з енергетичним підходом Джона
Хопфилда і створенням алгоритму зворотного поширення помилки вперше
запропонованого Вербосом і незалежно розробленого рядом інших авторів.
Алгоритм отримує популярність завдяки Румельхарту в 1986 р, який активно
використовується в наш час.
З середини 80-х років теорія нейронних мереж отримала ще більший
імпульс дослідження в зв'язку з появою високопродуктивних персональних
комп'ютерів [1].
Проблеми, які вирішуються в рамках ІНС

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


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

належність до певного класу. У такого роду завданнях, встановлюється


відповідність між вихідним шаром ІНС і класом, який він представляє.
Завдання кластеризації. Завдання кластеризації, відомі так само як
класифікація образів "без вчителя", не мають навчальної вибірки з мітками
класів. Їх принцип роботи заснований на виявленні закономірностей і подоби
між образами і розміщенні цих образів в один кластер або категорію [3].
Прогнозування. Здатність нейронних мереж до передбачення результатів
обумовлена узагальненням і виділенням загальних залежностей між вхідними
та вихідними даними. Після навчання, мережа здатна передбачити майбутнє
значення деякої послідовності, ґрунтуючись на її попередні зміни. Для того що
б ІНС могла дати максимально точну відповідь, необхідно навчати її на даних, в
яких дійсно простежується якась залежність. В іншому випадку, прогнозування
швидше за все не дасть ніяких результатів.
Апроксимація функцій. Завдання апроксимації ІНС, полягає в
знаходженні оцінки невідомої функції, по її значенням. Точність апроксимації
залежить від вибору структури нейронної мережі [3].
Оптимізація. Способи оптимізації з використанням нейронних мереж,
мають на увазі знаходження такого рішення, яке задовольняє системі умов і
мінімізує цільову функцію. Як приклад можна розглянути алгоритм, який
реалізує якусь послідовність дій, який можна повністю замінити
функціонуванням нейронної мережі, використовуючи правила, за якими він
складений [3].
Структура штучного нейрона
Штучний нейрон є елементарною структурною одиницею штучної
нейронної мережі і представляє з себе спрощену моделлю біологічного
нейрона. На малюнку 1 зображено нейрон, входами якого можуть бути або
вхідні дані, або виходи від такого ж нейрона. Входи з'єднані з осередком
нейрона S за допомогою синаптичних зв'язків. Кожен синапс має свою вагу, при
передачі в осередок нейрона вхідного параметра, він відповідно збільшується
на вагу, тобто xi * wi. Стан нейрона S, визначається у вигляді формули:
6

Вихід нейрона, є функція його стану y = f (S).

Рис. 1 - Візуалізація штучного нейрона


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

Параметр a відповідає за положистість функції. Чим він менше, тим


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

Рис. 2 - сигмоїда
Архітектура нейронної мережі
Можна виділити кілька основних типів нейронних мереж: Багатошарові
мережі. У багатошарових мережах один або кілька нейронів об'єднуються в
шари (Рис 3). Шар - сукупність нейронів, на вхід яких подається один і той же
загальний сигнал. У мережах такого типу, зовнішні вхідні дані подаються на
входи нейронів першого шару, а вихідні дані є результатом останнього
вихідного шару. Крім вхідного і вихідного шарів, в багатошарових мережах так
само присутній один або кілька прихованих шарів. Зв'язки виходів нейронів від
деякого шару i до деякого шару i + 1 називають послідовним.
Повнозв'язні нейронні мережі. У полносвязной нейронної мережі кожен нейрон
передає свій сигнал іншим нейронам (Рис 4).
8

Вихідними сигналами, можуть бути всі або деякі сигнали нейронів після
кількох тактів функціонування. Всі вхідні сигнали, подаються на вхід всіх
нейронах [6].

Рис. 3 - Багатошарова нейронна мережа


9

Рис. 4 - Повнозв'язна нейронна мережа

Рис. 5 - сверточное нейронна мережа


Існують так само розгортають нейронні мережі (deconvolutional networks
DN), так само звані зворотними графічними мережами і є зворотними до CNN
(Рис 6). Їх завдання генерувати зображення по заданих ознаках. Наприклад, при
передачі мережі слова "кіт" вона повинна буде згенерувати зображення схожі на
котів.
10

Рис. 6 - розгортає нейронна мережа


Для передбачення слів у реченні, передбаченні наступного числа в
послідовності, виділення головної думки тексту, генерації нової інформації
схожою на дану використовуються рекурентні нейронні мережі (recurrent neural
network RNN). У рекурентних нейронних мережах нейрони обмінюються
інформацією між собою, наприклад, в добавок до нового шматочку входять
даних нейрон так само отримує інформацію про попередньому стані мережі
(Малюнок 7). Таким чином, в мережі реалізується так звана "пам'ять", що
принципово змінює характер її роботи і дозволяє аналізувати будь-які
послідовності даних.

Рис. 7 - Рекурентна нейронна мережа


11

Найпростішими нейронними мережами, є мережі прямого поширення


(feedforward neural network FFN), які взяті за основу для створення багатьох
інших мереж. Дані мережі прямолінійні і передають інформацію від входу до
виходу. Нейрони кожного шару не пов'язані між собою, а сусідні шари зазвичай
повністю пов'язані. Вид FFN можна розглядати як багатошарову мережу
(Малюнок 3) [7].

Навчання нейронних мереж

Процес навчання нейронної мережі є необхідним, для її здатності


виконувати поставлені завдання. Цей процес може бути розглянутий як
настройка архітектури мережі і ваг зв'язків за допомогою моделювання
середовища, в яку ця мережа вбудована. Властивість нейронної мережі
навчатися на прикладах дозволяє спростити завдання умов для вирішення
конкретного завдання, в порівнянні з системами, які слідують набору певних
правил, складених експертами. Розділяють алгоритми навчання з вчителем і без
вчителя [3].
Процес навчання з учителем передбачає пред'явлення мережі вибірки
навчальних прикладів. Кожен зразок подається на вхід нейронної мережі, потім
проходить процедуру обробки всередині ІНС. Після обчислення вихідного
сигналу ІНС порівнює отриманий результат з відповідним значенням цільового
вектора, що представляє собою необхідний вихід мережі. Обчисливши помилку,
відбувається зміна вагових коефіцієнтів зв'язків всередині мережі за обраним
алгоритмом. Ваги підлаштовуються під кожен вектор до тих пір, поки помилка
по всьому масиву вхідних даних не досягне заданого рівня.
Навчання без вчителя не вимагає знання правильної відповіді на кожен
приклад навчальної вибірки. В цьому випадку розкривається внутрішня
структура даних або кореляція в системі даних, що дозволяє розподілити образи
за категоріями.
Залежно від розв'язуваної задачі в навчальній вибірці використовуються ті
чи інші типи даних і різні розмірності вхідних / вихідних сигналів. Вхідні дані
12

прикладів навчальної вибірки - зображення, таблиці чисел, розподілу. Типи


вхідних даних - бінарні (0 і 1), біполярні (-1 і 1) числа, цілі або дійсні числа з
деякого діапазону. Вихідні сигнали мережі - вектора цілих або дійсних чисел.
Для вирішення практичних завдань часто потрібні навчальні вибірки великого
обсягу. Через жорстко обмеженого обсягу оперативної пам'яті комп'ютера
розмістити в ній великі навчальні вибірки неможливо. Тому вибірка ділиться на
сторінки - групи прикладів. У кожен момент часу лише одна сторінка прикладів
розташовується в пам'яті комп'ютера, інші - на жорсткому диску. Сторінки
послідовно завантажуються в пам'ять комп'ютера. Навчання мережі
відбувається по всій сукупності сторінок прикладів, по всій навчальній вибірці.
В даний час відсутня універсальна методика побудови навчальних вибірок.
Набір навчальних прикладів формується за бажанням користувача програми
моделювання нейронних мереж індивідуально для кожної конкретної
розв'язуваної задачі [4].
Якщо в ненавчених нейронну мережу ввести вхідний сигнал одного з
прикладів навчальної вибірки, то вихідний сигнал мережі буде істотно
відрізнятися від бажаного вихідного сигналу, визначеного в навчальній вибірці.
Функція помилки чисельно визначає подібність всіх поточних вихідних
сигналів мережі і відповідних бажаних вихідних сигналів навчальної вибірки.
Найбільш поширеною функцією помилки є середньоквадратичне відхилення.
Однак запропоновані й інші функції помилки.
Для навчання нейронних мереж можуть бути використані різні алгоритми.
Можна виділити дві великі групи алгоритмів - градієнтні і стохастичні.
Градієнтні алгоритми навчання мереж засновані на обчисленні приватних
похідних функції помилки за параметрами мережі. Серед градієнтних
розрізняють алгоритми першого і другого порядків. В стохастичних алгоритмах
пошук мінімуму функції помилки ведеться випадковим чином [2].
При навчанні мереж, як правило, використовується один з двох наступних
критеріїв зупинки: зупинка при досягненні деякого мінімального значення
функції помилки, останов в разі успішного вирішення всіх прикладів
навчальної вибірки.
13

Перед навчанням виконується ініціалізація нейронної мережі, тобто


присвоювання параметрам мережі деяких початкових значень. Як правило, ці
початкові значення - деякі малі випадкові числа.
Для формування навчальних вибірок, ініціалізації і навчання в програмах
моделювання нейронних мереж використовуються спеціальні процедури.
Можливість використання багатосторінкового навчання є дуже важливою при
вирішенні практичних завдань за допомогою нейронних мереж, що
моделюються на звичайних комп'ютерах.
Навчання - це итерационная процедура, яка при реалізації на звичайних
комп'ютерах, вимагає значного часу. Алгоритми навчання істотно розрізняються
по швидкості збіжності. Одною з найважливіших характеристик програм для
моделювання нейронних мереж є швидкість збіжності алгоритму (або
алгоритмів) навчання, які реалізовані в програмі [2].
Теорія навчання розглядає три фундаментальні властивості, пов'язаних з
навчанням за прикладами: ємність, складність зразків і обчислювальна
складність. Під ємністю розуміється, скільки зразків може запам'ятати мережа, і
які функції і межі прийняття рішень можуть бути на ній сформовані. Складність
зразків визначає число навчальних прикладів, необхідних для досягнення
здатності мережі до узагальнення. Занадто мала кількість прикладів може
викликати "перенавчання" мережі, коли вона добре дає собі раду на прикладах
навчальної вибірки, але погано - на тестових прикладах, підлеглих того ж
статистичному розподілу. Відомі 3 основних типи правил навчання: корекція
помилково, машина Больцмана і правило Хебба.
Правило корекції помилково. При навчанні з учителем для кожного
вхідного прикладу заданий бажаний вихід d. Реальний вихід мережі y може не
збігатися з бажаним. Принцип корекції помилково при навчанні полягає у
використанні сигналу (d-y) для модифікації ваг, що забезпечує поступове
зменшення помилки. Навчання має місце тільки в разі, коли персептрон
помиляється. Відомі різні модифікації цього алгоритму навчання [2].
Навчання Больцмана. Являє собою стохастичне правило навчання, яке
випливає з інформаційних теоретичних і термодинамічних принципів. Метою
14

навчання Больцмана є така настройка вагових коефіцієнтів, при якій стану


видимих нейронів задовольняють бажаного розподілу ймовірностей. Навчання
Больцмана може розглядатися як спеціальний випадок корекції помилково, в
якому під помилкою розуміється розбіжність кореляцій станів в двох режимах.
Правило Хебба. Найстарішим навчальним правилом є постулат навчання
Хебба. Хебб спирався на наступні нейрофізіологічні спостереження: якщо
нейрони з обох сторін синапсу активізуються одночасно і регулярно, то сила
синаптичного зв'язку зростає. Важливою особливістю цього правила є те, що
зміна синаптического ваги залежить тільки від активності нейронів, які
пов'язані з даними синапсом. Це істотно спрощує ланцюга навчання.
Для того що б перевірити навички, набуті нейронною мережею в процесі
навчання, використовується імітація функціонування мережі. У мережу
вводиться деякий сигнал, який, як правило, не збігається ні з одним з вхідних
сигналів прикладів навчальної вибірки. Далі аналізується вийшов вихідний
сигнал мережі. Тестування навченої мережі може проводитися на одиночних
вхідних сигналах, або на контрольній вибірці, яка має структуру, аналогічну
навчальній вибірці [2].

Алгоритм зворотного поширення помилки

Алгоритм зворотного поширення помилки (back propagation) відноситься


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

1) Вибірка вхідних даних (безліч образів, класифікованих учителем)


розбивається на дві: навчальну і контролюючу послідовності. Зазвичай
навчальна послідовність містить більше образів, ніж перевірочна.
2) Проводиться ініціалізація всіх ваг, включаючи граничні, невеликими
випадковими величинами (зазвичай в діапазоні [-1; +1]). Це визначає початкову
точку на поверхні помилок для методу градієнтів, позиція може виявитися
вирішальною для збіжності мережі.
3) Проводиться прямий прохід мережі для першого способу з навчальної
вибірки від вхідного шару через приховані шари до вихідного прошарку: кожен
нейрон підсумовує твори входів на ваги і видає результат функції активації,
застосованої до цієї суми, на нейрони наступного рівня.
4) Обчислюється різниця між дійсним і бажаним вихідним значенням
кожного нейрона вихідного шару. При їх розбіжності має місце помилка в
розпізнаванні (класифікації) образів.
5) Проводиться процедура зворотного поширення цих помилок зі зв'язків
від вихідних нейронів до вхідних і визначаються помилки для кожного нейрона.
Розглянемо цю процедуру докладніше. Припустимо, вихідне значення
нейронної мережі було 0.5, а бажане 0. Нехай помилка визначається за
формулою:

Де E - помилка мережі, yi - бажане значення на i-му виході нейронної мережі, di


- вихідне значення мережі на i-му виході.
В даному випадку, на виході помилка буде дорівнює E = 0.5-0 = 0.5. Якщо
розглядати в якості функції активації сигмоид, то розрахунок Δw, на який
необхідно зрушити ваги синаптичних зв'язків передостаннього останнього
шару, буде здійснюватися за формулою:
16

Тут sigmoid (x) dx - похідна функції активації, рівна sigmoid (x) (1-sigmoid
(x)). Під x мається на увазі значення, яке було отримано шляхом підсумовування
всіх вихідних значень нейронів передостаннього шару, відповідно помножених
на wi. Завершальний крок корекції ваг синаптичних зв'язків між останнім і
передостаннім шаром буде проводитися за такою формулою:

mi - вихідні значення i нейрона передостаннього шару


l - параметр відповідає за швидкість навчання
Після того як ваги пораховані, ми можемо порахувати помилку вихідного
значення mi за формулою E = wi * Δw. Знаючи помилку кожного нейрона на
попередньому шарі, застосовуючи формули, які використовувалися вище,
можемо знайти відхилення ваг і значення нейронів на попередніх шарах.
6) Знову проводиться прямий прохід мережі вже для чергового способу
навчальної вибірки …
Кроки 3-6 повторюються до досягнення деякого критерію,
наприклад, досягнення помилкою встановленої межі.
По завершенню навчальної фази мережу перевіряється за допомогою
контролюючої послідовності, що містить образи, не пред'явлені раніше. (При
цьому не проводиться корекція ваг, а лише обчислюється помилка). У разі, якщо
якість роботи знайдено задовільним, мережа вважається готової до роботи. В
іншому випадку мережа піддається повторному навчання, при якому можлива
зміна деяких параметрів (початкові ваги, кількість нейронів в прихованих
шарах, додаткові навчальні образи і т.п.) [2].

Деякі проблеми ІНС

Однією з головних проблем нейронних мереж є необхідність в дуже


великих обсягах даних. Кілька років тому, були продемонстровані алгоритми,
17

здатні розпізнавати образи на зображеннях краще, ніж людина. Що б


перевершити людини, мереж довелося вивчити більше 1,2 мільйона зображень,
в той час як дитина, може навчитися визначати новий об'єкт або тварина після
однієї побаченої фотографії. Практично для будь-якої задачі розпізнавання
образів, штучних нейронних мереж необхідно в сотні тисяч разів більше
інформації ніж людині.
Іншою проблемою, є не пристосованість нейронних мереж до
мультизадачности. Сучасні алгоритми призначені тільки для вирішення одного
завдання. ІНС можна навчити розпізнавати собак або створювати музику. Але
на сьогоднішній момент, не існує таких мереж, які могли б виконувати обидві ці
задачі. Якщо розглянути нейронну мережу з фіксованою кількістю шарів і
нейронів в кожному шарі, то при постійному збільшенні, наприклад, тих, яких
навчають образів, рано чи пізно нейронна мережа перестане піддаватися
обробці. Або якщо вже навчену нейронну мережу розпізнавати обличчя, почати
навчати розпізнавати кішок, то вона почне забувати про особи для звільнення
пам'яті для нової інформації [5].
У 2016 році був проведений експеримент. Дослідники хотіли визначити,
на яку частину зображення "дивиться" нейронна мережа що б виконати
завдання. Вони показали нейронної мережі фотографію спальні і запитали у неї
"Що висить на вікнах?". Замість того, щоб подивитися на вікна, ІНС стала
дивитися на підлогу, після чого на ліжко, з чого зробила висновок, що на вікні
висять фіранки. Справа в тому, що неможливо подивитися "вглиб" нейронних
мереж, для того що б зрозуміти, як вони працюють.
Так само, однією з проблем нейронних мереж є її правильне
проектування, наприклад, невідомо скільки шарів необхідні для даного
завдання, скільки потрібно вибрати елементів у кожному шарі, як мережа буде
реагувати на дані, які не включені в навчальну вибірку (яка здатність мережі до
узагальнення) і який розмір навчальної вибірки необхідний для здатності
мережі до узагальнення. Найчастіше, дані параметри визначаються шляхом
проб і помилок. Існуючі теоретичні результати дають лише слабке уявлення про
те, якими мають бути ці параметри [5].
18

Створення нейронних мереж


Середовище розробки штучних нейронних мереж

В останні кілька років спостерігається вибух інтересу до нейронних


мереж. Все більше і більше матеріалу про нейронні мережі на різних мовах
можна знайти на просторах інтернету. Для спрощення створення ІНС стали
створюватися різні фреймворки, в яких вже реалізована апаратна частина, що
відповідає за обчислення функцій помилок, подання нейронів і їх синаптичних
зв'язків між собою, створення архітектур нейронних мереж, їх типів і багато
іншого. Більш того, стали з'являтися програмні засоби, що дозволяють
створювати складні нейронні мережі без необхідності писати код.
Одним з лідируючих мов в створенні штучних нейронних мереж є
скриптова мова python. Через свою простоту у використанні і великою
кількістю бібліотек для нейронних мереж написаних для нього він становить
найбільший інтерес у створенні ІНС.
Найбільш часто використовуваними бібліотеками є TensorFlow,
розроблена компанією Google, Theano основним розробником якої є група
машинного навчання в Монреальському університеті і бібліотека Keras, що
представляє із себе надбудову над одним з перерахованих вище фреймворків
[1].
Приклад елементарної мережі на Keras
Як приклад, розглянемо програмну реалізацію нейронної мережі на Keras
(Малюнок 8)

Рис. 8 - Програмна реалізація мережі на Keras


19

Як x в даному прикладі виступає numpy-масив, що складається з 5000


елементів від 0 до 10. Даний масив перемішується, після чого знаходиться
функція y = x * x. Дані масиви можна розглядати як вхідні і вихідні дані для
нейронної мережі. За допомогою бібліотеки Keras, створюємо модель
Sequential, в яку по черзі додаємо шари з 64 нейронів з сігмоідной функцією
активацією і ще один шар, що складається з одного нейрона, який є вихідним.
Для навчання мережі використовується функція fit, яка приймає вектор
вхідних параметрів (x), вектор вихідних параметрів (y), кількість епох, в даному
випадку 1000. На кожному кроці (епохи), помилка зменшується. Після навчання
мережі, як тестування відправимо їй два вхідних значення 11 і 9. Як ми можемо
помітити (Малюнок 9) отримані результати 114 і 81 не є точними. Все тому, що
для завдання екстраполяції більше підходять рекурентні нейронні мережі, в той
час як з завданням апроксимації нейронна мережа впоралася з невеликою
похибкою. Використовуючи більш складні структури нейронної мережі,
додавши більше епох навчання і шарів з нейронами, можна домогтися більш
точних результатів.

Рис. 9 - навчання мережі та отримання тестових результатів


Даний приклад, демонструє лише малу частину всіх можливостей
бібліотеки Keras. Його інструментарій дозволяє так само створювати рекурентні
і згорткові нейронні мережі [8].
20

Програмна реалізація нейронної мережі

Постановка завдання

Дано два зображення. Необхідно використовуючи нейронну мережу


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

Вибір середовища розробки

Для створення даного проекту планувалося використання Tensorflow


object detection API. Для його функціонування, необхідно вибрати з уже наданих
предобученних мереж вибрати найбільш підходящу по швидкості і точності
розпізнавання. Так само, попередньо необхідно створити датасета, що містить
мітки вхідних зображень з позиціонуванням кожного розпізнається об'єкта. Для
створення датасета використовувалася програма labelimg, за допомогою якої
були створені xml файли з розміткою рук і обличчя людей на зображенні. Після
чого, дані файли були перетворені за допомогою python скрипта в файли
записи, використовувані Tensorflow object detection API. На вибір, дана
програма надає великий спектр нейронних мереж, які відрізняються своєю
архітектурою. Як приклад, була використана сверточное мережу, з назвою
"ssd_mobilenet_v2_coco". Вона є найшвидшою з усіх наявних по швидкості, але
самої неточною з розпізнавання об'єктів. У більшості випадків, її
використовують для розпізнавання об'єктів в реальному часі на камерах
мобільних телефонів. До даної мережі, додається конфігураційний файл для її
21

налаштування, де можна вказати такі параметри як швидкість навчання, функції


активації нейронів, спосіб навчання нейронної мережі. Після настройки, через
командний рядок був запущений процес навчання на даних, які були
підготовлені раніше за допомогою labelimg. Незважаючи на те, що всі
параметри для навчання були встановлені для мінімальної витрати ресурсів
комп'ютера, процес навчання нейронної мережі за підрахунками міг би зайняти
тривалий час. На кожен крок навчання нейронної мережі в середньому йшло по
60 секунд. Для нормального функціонування нейронної мережі необхідно було
приблизно 20000 кроків, що зайняло б приблизно 330 годин, тому, даний спосіб
реалізації не підходив для виконання завдання.
Для створення програми буде використаний фреймворк Keras, для Python,
що дозволяє створити нейронну мережу і уникнути проблем з великим
періодом її навчання.

Опис алгоритму реалізації

Будь-яке зображення, може бути представлено у вигляді двомірного


масиву, індексами якого є координати пікселів зображення, а їх значеннями
масив, що складається з 3 елементів (R, G, B), в діапазоні 0-255. Таким чином,
кожній точці зображення однозначно відповідає три числа, що визначають її
колір.
Надалі, за допомогою бібліотеки Keras планується створити модель
сверточное нейронної мережі Sequential, яка буде навчена на навчальної вибірки
створеної в програмі labelimg, яка спрощує роботу виділення об'єктів на
зображенні. Після навчання нейронної мережі, за допомогою бібліотеки
OpenCV (бібліотека комп'ютерного зору) буде проводитися перетворення і
завантаження даних зображень в оперативну пам'ять комп'ютера. Зображення
будуть передаватися на вхід навченої нейронної мережі, яка буде виділяти
задані об'єкти. Дані об'єкти будуть зберігатися в масиві, кожен елемент якого
буде мати позицію x і y, висоту і ширину h і w відповідно. Помістивши в масив
таким же чином дані другого зображення, всі позиції об'єктів будуть
22

порівнюватися з позиціями першого зображення, а також буде враховуватися їх


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

Де x2, y2 - координати об'єкта на першому зображенні, x1, y1 -


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

ВИСНОВОК

У курсової роботі було розглянуто теоретичні основи нейронних мереж. В


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

СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ

1. История возникновения нейронных сетей [Электронный ресурс] - https://


neuronus.com/history/5-istoriya-nejronnykh-setej.html(25.12.2018)
2. Нейронные сети: полный курс. С. Хайкин. 2-е издание, Издательский дом
Вильямс, 2008 - 1104 с.
3. Neural Networks: A Systematic Introduction. R. Rojas. Springer Science &
Business Media - 502 с.
4. Нейронные сети для обработки информации. С. Осовский. Пер. с польского
И.Д. Рудинского. — М.: Финансы и статистика, 2002. — 344 с
5. Проблемы искусственного интеллекта [Электронный ресурс] - https://ain.ua/
2017/04/21/problemy-iskusstvennogo-intellekta(23.12.2018)
6. Лекции по нейронным сетям [Электронный ресурс] -https://www.intuit.ru/
studies/courses/6/6/lecture/178(15.12.2018)
7. Разновидности нейронных сетей [Электронный ресурс] - https://tproger.ru/
translations/neural-network-zoo-1(15.12.2018)
8. Создание нейронной сети на Python для прогнозирования [Электронный
ресурс] - https://habr.com/post/327022(27.11.2018)

You might also like