1   ...   15   16   17   18   19   20   21   22   23
Ім'я файлу: Богайчук Нейронні мережі.docx
Розширення: docx
Розмір: 1578кб.
Дата: 14.03.2021
скачати
Пов'язані файли:
strategichniy_menedzhment_.doc

Залежність тестової похибки нейронної мережі типу MLP від об’єму навчальної множини



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

Мал. 2.12 Залежність точності класифікації на тестовій (суцільна лінія) та тренувальній (пунктирна лінія) вибірках для нейронної мережі типу MLP від кількості елементів в тренувальній множині
Експеримент проводився три рази при однакових умовах (синя, червона та зелена лінії відповідно кожному експерименту). Суцільна лінія показує похибку на тестовій вибірці для кожного з експериментів, пунктирна - на навчальній.

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

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

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

    1. Висновки



Було описане дослідження впливу набору навчальних даних на результати класифікації нейронною мережею. Розглянулася кореляція між об’ємом навчальної вибірки та точністю класифікації на двох рохроблених тестових моделях – згортковій нейронній мережі (CNN) та багатошаровому персептроні (MLP). Для багатошарового персептрона обрано оптимальну конфігурацію, а саме кількість нейронів в кожному прихованому шарі. Були проведені експерименти по навчанню нейронних мереж на постійно збільшуваній кількості навчальних даних, за результатами яких побудовані графіки. Як видно з побудованих графіків, точність класифікації мережі досить значно залежить від об’єму навчальних даних, особливо на початкових етапах. Як бачимо, зі збільшенням кількості навчальних прикладів, різниця між тренувальною та тестовою точністю зменшується, що показує зменшення рівня перенавчання. Це показує найголовнішу перевагу збільшення навчальної вибірки - зменшення рівня перенавчання при сталих параметрах мережі, що характерне для обох тестових моделей.

  1. РЕАЛІЗАЦІЯ ТА ТЕСТУВАННЯ ШТУЧНОГО ЗБІЛЬШЕННЯ НАВЧАЛЬНОЇ МНОЖИНИ




    1. Вступ



Проаналізований раніше процес створення датасету та навчання нейронної мережі, опис особливостей роботи контроллерів Internet of things, а також експериментально підтверджена висока залежність між якістю навчання нейронної мережі та об’ємом датасету говорять про перспективність рішення про штучне збільшення об’ємів навчальних даних за допомогою спеціалізованих програмних засобів. Метою цієї роботи було обрано оптимізацію процесу навчання штучної нейронної мережі для задоволення особливостей роботи в технології інтернету речей через зменшення необхідної кількості навчальних даних, тому буде реалізовано та досліджено ефективність підходу збільшення навчальної вибірки в просторі даних (аugmentation in data- space). Роздуття даних в просторі ознак (аugmentation in feature-space) розглядатися на практиці не буде, так як виходячи з існуючих сучасних досліджень [9, 23], цей підхід не дає значних результатів в порівнянні з збільшення навчальної вибірки в просторі даних, а також потребує значно більших ресурсів, що критично для використання в IoT. Тестування буде проводитися на двох найбільш поширених архітектурах нейронних мереж - CNN (convolutional neural network - згорткова нейронна мережа) та MLP (multi- layer perceptron - багатошаровий персептрон), моделі яких вже були імплементовані та протестовані в попередньому розділі. Основний виграш, який планується отримати в результаті використання підходу аugmentation - це зменшення перенавчання мережі в умовах, коли подальше збільшення реальних даних неможливе.
    1. Розробка програмного додатку на мові Python



Був розроблений додаток на мові Python, задачею якого є створення штучних зображень на основі вже існуючих. Для цього були використані потужності бібліотек skimage та matplotlib , які призначені для просунутої роботи з зображеннями, а також середовище PyCharm від JetBrains, яке вже описувалося раніше.
from skimage import transform

from skimage.transform import rotate from matplotlib import pyplot as plt from matplotlib import image as img import glob

import random import os

for nums in range(0, 10): # ітерування по кількості класів в датасеті

augm_from_dir = "/home/den/PycharmProjects/mlp_fault/mnist_png/training/"

+ str(nums) + "/*.png" # вибір директорії з датасетом

filelist = glob.glob(augm_from_dir) # створення масиву доступних навчальних зображень

augm_from = 500 # вибір кількості оригінальних зображень кожного класу

make_num = 4500 # вибір необхідної кількості штучних зображень, яка буде створена

if make_num < augm_from: make_num = augm_from

multiplyer = make_num / augm_from

for fname in filelist: # ітерування по масиву доступних навчальних зображень

if augm_from != 0: augm_from -= 1 print(fname)

image = img.imread(fname) # зчитування зображення

mul = multiplyer # показник розмноження

while (mul > 0): mul -= 1

rand_angle = random.randint(0, 360) # поворот на випадковий кут

print("Angle = " + str(rand_angle)) image_rotated = rotate(image, rand_angle)

# plt.imshow(image_rotated, cmap=plt.cm.gray) # plt.show()

rand_scale = random.randint(80, 150) / 100 print("Scale = " + str(rand_scale))

tf_sc = transform.SimilarityTransform(scale=rand_scale) # масштабування на

# коефіцієнт від 0.8 до 1.5 image_scaled = transform.warp(image_rotated, tf_sc, output_shape=(28, 28)) rand_translX = random.randint(0, 10) - 5

rand_translY = random.randint(0, 10) - 5 # зрушення по осі абсцис та ординат на

# випадкову кількість пікселів в межах -5;5

print("Shift = [" + str(rand_translX) + ", " + str(rand_translY) + "]")

tf_shift = transform.SimilarityTransform(translation=[rand_translX, rand_translY]) image_shifted = transform.warp(image_scaled, tf_shift, output_shape=(28, 28)) # plt.imshow(image_shifted, cmap=plt.cm.gray)

# plt.show()

aug_dir = "/home/den/PycharmProjects/mlp_fault/augmented/" + str(nums) + "/" if not os.path.exists(aug_dir):

os.makedirs(aug_dir) # створення директорії для збереження штучно # створених зображень

img.imsave(str(aug_dir) + "aug" + str(nums) + "_"

+ str(augm_from) + "_" + str(int(mul)) + ".png",

image_shifted, cmap=plt.cm.gray) # збереження штучно створених

# зображень

Як бачимо з коду, проводиться ітерування по директоріям оригінальної навчальної вибірки та береться augm_from зображень кожного класу. Далі створюється make_num штучних зображень для кожного класу. Для прикладу ми вказали, що для кожного класу з 500 наявних зображень необхідно створити ще 4,500. Це говорить що на основі кожного елементу навчальної вибірки буде створено 9 штучних. У випадку датасету MNIST, є 10 класів, що відповідають цифрам від 0 до 9, тобто буде створено 45,000 штучних зображень.

Для аугментації даних використовуються методи skimage.transform.rotate(), transform.SimilarityTransform(scale), а також transform.SimilarityTransform(translation). Ці методи виконують поворот на випадкову величину від 0 до 360 градусів, масштабування від 80% до 150%, та зсув по осям абсцис та ординат на величину від -5 до 5 пікселів (нагадаємо, що розмір зображень датасету складає 28 на 28 пікселів).

Для візуалізації роботи алгоритму, приведено рисунок 16 та 17. На першому з них (рис. 3.1) результат роботи алгоритму при створенні 32 штучних зображень з усього лише одного оригінального зображення. На другому рисунку (рис. 3.2) зображено результати аугментації з 8 оригінальних зображень. Як бачимо, навчальні дані у другому випадку більш різноманітні та такі, що дадуть кращі результати при навчанні нейронної мережі через значно більшу ентропію.



Рис. 3.1 Результат роботи алгоритму аугментації для створення 32 штучних зображень на основі одного оригінального

Рис. 3.2 Результат роботи алгоритму аугментації для створення 32 штучних зображень на основі 8 оригінальних

    1. Дослідження підходу для мереж типу CNN та MLP



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

елементів (500 оригінальних та 1000 штучних), 2000 та так далі до 5000 (500 оригінальних та 4500 штучних).




Рис. 3.3 Залежність тестової (суцільна лінія) та тренувальної (пунктирна лінія) похибки нейронної мережі типу CNN від кількості елементів в тренувальній множині. Синя лінія показує оригінальну навчальну вибірку. Червона лінія показує вибірку, що була отримана шляхом штучного збільшення навчальних даних.
На рисунку 3.3 показана продуктивність CNN при навчанні на датасеті, що містить частину штучно створених даних, а саме залежність похибки на навчальній та тренувальній множині в залежності від об’єму датасету. Як і в попередньому випадку, ми бачимо, що збільшення кількості навчальних даних покращує результати класифікації мережі. Найважливішим є те, що величина похибки на тестовій множині спадає протягом усього процесу збільшення доступних навчальних даних за допомогою штучних зображень. Декілька послідовних експериментів, як бачимо, показали досить схожі та стабільні результати. На відміну від навчання на повністю оригінальних даних, навчання

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

Як результат, бачимо, що похибка на тестовій множині для навчального набору 500+4500 вийшла в результат приблизно 1,3%, що, в свою чергу, відповідає набору повністю реальних даних в кількості приблизно 1750 елементів. Таким чином, за допомогою методів аугментації даних, ми зменшили кількість необхідних реальних прикладів приблизно в 3.5 рази для досягнення того ж результату навчання мережі.

Далі таким же чином було проведено навчання на вибірках в 500, 1000, 1500, 2000 елементів та так далі до 5000 (500 оригінальних та 4500 штучних) для багатошарового персептрону (MLP).



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

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

Як результат, бачимо, що точність на тестовій множині для навчального набору 500+4500 вийшла в результат приблизно 0.933, що, в свою чергу, відповідає набору повністю реальних даних в кількості приблизно 1300 елементів. Таким чином, за допомогою методів аугментації даних, ми зменшили кількість необхідних реальних прикладів приблизно в 2.6 рази для досягнення того ж результату навчання мережі. Зауважимо, що точність класифікації, на відміну від CNN, не досягла асимптотичного рівня, а продовжувала зростати з набором штучних даних та, можливо, вийшла б на коефіцієнт 3.5, як і згорткова мережа.



1   ...   15   16   17   18   19   20   21   22   23

скачати

© Усі права захищені
написати до нас