Курсова робота_СТАРАЯ. Зміст
Скачать 1.63 Mb.
|
ЗМІСТЗМІСТ 10 ВСТУП 9 1ДОСЛІДЖЕННЯ ТА АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ 11 1.1Машинне навчання 11 1.2Глибинне навчання 13 1.3Задача розпізнавання 13 1.2.1 Основні поняття задачі розпізнавання 14 1.2.2 Підходи до розпізнавання образів 16 1.2.3 Системи розпізнавання образів 19 1.2.4 Класифікація 21 1.2.5 Післяобробка 21 1.4 Нейронні мережі для задачі розпізнавання 21 1.3.1 Найпопулярніші активаційні функції 23 1.3.2 Архітектура нейронних мереж 26 1.5Згорткові нейронні мережі 30 2ОГЛЯД БІБЛІОТЕК ДЛЯ ГЛИБИННОГО МАШИННОГО НАВЧАННЯ 35 2.1TensorFlow 35 2.2MXNet 38 2.3CNTK 41 2.4Caffe 44 2.5PyTorch 48 3ПРАКТИЧНЕ ЗАСТОСУВАННЯ PYTORCH 52 3.1Постановка задачі 52 3.2Структура проекту 52 3.3Навчання моделі 52 3.4Результат роботи моделі 56 ВИСНОВКИ 58 ПЕРЕЛІК ПОСИЛАНЬ 59 Додаток А РЕАЛІЗАЦІЯ РОБОТИ ДОДАТКУ 59 ВСТУПТема даної курсової роботи є актуальною, оскільки нейронні мережі використовуються все ширше, наприклад, у таких галузях як медична діагностика (виявлення вад на рентгенівських знімках), розпізнавання текстів, мови, технічна діагностика, системи контролю. Нейронні мережі дозволяють розв’язувати складні задачі класифікації, у яких без автоматизації було б задіяно велику кількість людських ресурсів. Очевидно, що для розробки таких систем краще використовувати вже готові рішення, які значно понижують поріг входження у галузь розробки систем розпізнавання та спрощують розробку в цілому. Бібліотеки машинного навчання полегшують реалізацію систем на основі нейронних мереж та дозволяють сфокусуватись на архітектурі системи, на задачах, що вона розв’язує, а не на розробці конкретного програмного забезпечення. Перша нейромережева машина появилась в 1951 році під назвою SNARС “Stochastic neural analog reinforcement calculator”. PyTorch – це фреймворк, в основному розроблений дослідницькою групою із штучної інтелектуальної роботи Facebook, на основі якого побудовано програмне забезпечення Uber's "Pyro" для імовірнісного програмування, реалізований на С++ з інтерфейсом на мові програмування Python, який надає дві основні високорівневі функції: а) тензорні обчислення, що нагадують аналогічні обчислення на NumPy, але виконуються з використанням GPU-прискорення; б) глибокі нейронні мережі, побудовані на основі алгоритму автоматичного диференціювання. Є кілька причин, чому було обрано саме цей фреймворк: – його новий гібридний фронтенд дозволяє легко переходити між режимом поточного виконання і графовим режимом, щоб забезпечити гнучкість і швидкість; – масштабоване розподілене навчання і оптимізації, вбудовані в PyTorch, роблять дослідження з його використанням більш швидкими з точки зору часу розробки; – глибока інтеграція в Python дозволяє використовувати популярні бібліотеки та пакети для легкого написання нових шарів нейронних мереж в Python, а не в С++, як це потребує, наприклад, Tensorflow; – велика екосистема інструментів і бібліотек доповнює PyTorch і підтримує його використання у комп'ютерному зорі, обробці природної мови і багатьох інших задачах. PyTorch являє собою бібліотеку для машинного навчання з відкритим кодом для Python, що використовується для створення таких додатків, як обробка природної мови, розпізнавання лиць, тощо. ДОСЛІДЖЕННЯ ТА АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІМашинне навчанняМашинне навчання – це галузь комп'ютерних наук, яка використовує статистичні методи, щоб дати комп'ютерним системам можливість "вчитися" (наприклад, поступово покращувати продуктивність у конкретному завданні) з даними, без явного використання програмування алгоритмів. Машинне навчання використовується здебільше для вирішення проблем, які є занадто складними та потребують адаптації. Тобто це такий клас задач, який неможливо вирішити певним чітким алгоритмом, необхідно зважати на вже отримані результати. Прикладами таких задач є: Завдання, що виконуються тваринами / людьми: є багато завдань, які люди, виконуємо регулярно, але наш аналіз відносно як ми робимо їх, недостатньо продуманий, щоб видобути чітко визначений алгоритм. Прикладами таких завдань є водіння, розпізнавання мови та розпізнавання образів. У всіх цих завданнях програми, що використовують машинне навчання, програм, які "навчаються з їхнього досвіду", досягають цілком задовільних результатів, коли навчаються на великій кількості тренувальних даних; Завдання, що виходять за рамки людських можливостей: Ще один широкий клас завдань, що мають користь від машинного навчання, пов'язані з аналізом дуже великих і складних наборів даних: астрономічні дані, трансформація медичних архівів у медичні знання, прогноз погоди, двигун для веб-пошуку та електронної комерції. Із зростанням накопленої цифрової інформації стає очевидно, що серед всієї накопленої інформації є дійсно важлива, яку людина сама не може знайти, адже даних занадто багато і вони дуже складні. Навчитися виявляти значущі моделі в великих і складних наборах даних є перспективною областю, в якій поєднання програм, які навчаються з майже необмеженою ємністю пам’яті і постійно зростаючою швидкістю обробки даних, значно полегшує роботу з цим типом задач; Адаптивність. Однією з обмежених можливостей звичайних програм є їх жорсткість – програма була написана і встановлена, далі вона залишається незмінною. Однак багато завдань змінюються з плином часу або від одного користувача до іншого. Інструменти машинного навчання - програми, поведінка яких пристосовується до їхніх вхідних даних - пропонують вирішення таких питань; вони, за своїм характером, є адаптивними до змін у середовищі, з яким вони взаємодіють. Типове успішне застосування машинного навчання включає програми, які розпізнають рукописний текст, де фіксована програма може адаптуватися до варіацій між почерком різних користувачів; програми виявлення спаму, автоматично адаптується до змін характеру спам-листів; програми розпізнавання мови. Загалом, машинне навчання використовуються для розв’язку задачі класифікації: коли певний образ, вхідні дані необхідно віднести до того чи іншого класу, якщо вони вже відомі (навчання з учителем), і для розв’язку задачі кластеризації, де необхідно виділити певні ознаки, за якими можна розділити вхідні дані і згрупувати їх за цими ознаками (навчання без учителя). У даній роботі буде розглядатись задача класифікації. Класифікатор (classifier) – це система, яка вводить (як правило) вектор дискретних та / або неперервних функцій і виводить одне дискретне значення класу. Наприклад, фільтр спаму класифікує повідомлення електронної пошти на "спам" або "не спам". Машинне навчання проводиться за використанням різних алгоритмів, проте для всіх алгоритмів найважливішими є 3 компоненти: Представлення. Класифікатор повинен бути представлений за допомогою формальної мови, яку комп'ютер може обробляти. І навпаки, вибір представлення для учня рівносильний вибору набору класифікаторів, яким він може навчитися. Цей набір називається гіпотезою простору (hypothesis space) учня. Якщо класифікатор не знаходиться в гіпотезі простору, то він не можу бути вивчений; Оцінка. Функція оцінки (також звана цільова функція (objective function) або функція оцінки (scoring function)) потрібна для виділення хороших класифікаторів від поганих. Функція оцінювання, яка використовується всередині алгоритму, може відрізнятись від зовнішньої, яку ми хочемо оптимізувати для класифікатора, для простоти оптимізації; Оптимізація. Нарешті, нам потрібен метод пошуку серед класифікаторів того, який буде класифікувати найбільш швидко і правильно. Вибір методу оптимізації є ключовим елементом ефективності учня, а також допомагає визначити вибраний класифікатор, якщо функція оцінки має більше одного оптимуму. Для нових учнів найкраще почати використовувати загальноприйняті оптимізатори, які пізніше замінюються спеціально розробленими. |