Ім'я файлу: Лаб№3_Гогулов.docx
Розширення: docx
Розмір: 21кб.
Дата: 20.12.2022
скачати
Пов'язані файли:
Створення ботів для Telegram. Основи бібліотеки Aiogram (1).docx

Лабораторна робота № 2



Тема: Машинне навчання моделей-класифікаторів друкованих текстів. Розв’язання задачі атрибуції текстів.

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

Реалізація завдання.
1. Ознайомлення. Ознайомився з принципами побудови нейронних мереж.
2. Визначення середовища. Визначив в якому середовищі планую будувати нейронну мережу. Вирішив не використовувати середовище MATLAB, а певну бібліотеку, яку можна буде під’єднати до свого коду (скрипта).

Перелік бібліотек з якими ознайомився:

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

  • TensorFlow.js. Теж що і TensorFlow але апаратно-прискорена бібліотека JavaScript з відкритим кодом для навчання та розгортання моделей машинного навчання у браузері або Node.js.

  • Theano.  Бібліотека та оптимізувальний компілятор Python для маніпулювання математичними виразами та їх обчислення , особливо матричнозначних.

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

  • Scikit-learn. (також відома як sklearn або scikits.learn) — це безкоштовна програмна бібліотека машинного навчання для мови програмування Python.

  • Keras. Keras відкрита нейромережна бібліотека, написана мовою Python. Вона здатна працювати поверх TensorFlow, Microsoft Cognitive Toolkit, R, Theano та PlaidML. Спроєктовану для уможливлення швидких експериментів з мережами глибинного навчання


Вирішив обрати бібліотеку TensorFlow.js, оскільки її легко можна використовувати в бекендових додатках на JavaScript. Написаний скрипт будемо запускати за допомогою будь-якого браузера. Бібліотека має можливість використання WebGL, що забезпечує GPU-доступ до бібліотеки, а в результаті матимемо прискорене навчання моделі.
3. Побудова нейронної мережі. За допомогою бібліотеки TensorFlow.js побудував нейромережу з 151 входоми (кількість ознак описаних в файлі Додаток лаб_2) на який будуть подаватися масиви матриць з ознаками текстів різних авторів, як для навчання нейромережі так і для визначення автора, та 4 виходи. Кожен вихід буде показувати з якою ймовірністю текст відноситься до відповідного автора.

Виходи нейромережі/автори:

  • 1 – Плющ Олексій Львович

  • 2 – Кобринська Наталі Іванівна

  • 3 – Яцків Михайло Юрійович

  • 4 - Дніпрова Чайка (Людмила Олексіївна Василевська-Березіна)


Структура нейронної мережі яку було побудовано:

________________________________________________________________________________ Layer (type) Input Shape Output shape Param #

======================================================================= input1 (InputLayer) [[null,151]] [null,151] 0

________________________________________________________________________________

dense_Dense1 (Dense) [[null,151]] [null,4092] 621984

_______________________________________________________________________________

dense_Dense2 (Dense) [[null,4092]] [null,2048] 8382464

________________________________________________________________________________

dense_Dense3 (Dense) [[null,2048]] [null,1024] 2098176

________________________________________________________________________________

dense_Dense4 (Dense) [[null,1024]] [null,512] 524800

________________________________________________________________________________

dense_Dense5 (Dense) [[null,512]] [null,256] 131328

________________________________________________________________________________

dense_Dense6 (Dense) [[null,256]] [null,64] 16448

_______________________________________________________________________________

dense_Dense7 (Dense) [[null,64]] [null,16] 1040

________________________________________________________________________________

dense_Dense8 (Dense) [[null,16]] [null,4] 68

=======================================================================

Total params: 11776308

Trainable params: 11776308

Non-trainable params: 0
4. Навачання нейронної мережі.

З додаток лаб_2 скопіював матрицю характеристичних ознак та векторів класифікаційної ознаки моделі №1 з неї побудував тензори, які в свою чергу подав на вхід та вихід нейромережі для навчання.

Виконав 1000 циклів навчання.

Навчання виконано приблизно за 20 сек.
5. Тестування моделі нейронної мережі.

На вхід подав матрицю характеристичних ознак та векторів класифікаційної ознаки моделі №1 в розрізах авторів
Результат:
Реакція нейромережі на характеристичні ознаки текстів Плюща:

[[0.9998234, 0.0001189, 0.0000232, 0.0000346],]

[[0.9997812, 0.0001144, 0.0000729, 0.0000316],]

[[0.9999552, 0.0000368, 0.0000065, 0.0000014],]

[[0.9999168, 0.0000237, 0.0000497, 0.0000098],]

[[0.9999235, 0.0000125, 0.0000441, 0.0000199],]

[[0.9993467, 0.0005463, 0.0000824, 0.0000247],]

[[0.9995437, 0.0003147, 0.0000244, 0.0001173],]

[[0.9995887, 0.000379, 0.0000219, 0.0000104],]
Реакція нейромережі на характеристичні ознаки текстів Кобринська:

[[0.0002202, 0.9992344, 0.0002593, 0.000286],]

[[0.0001201, 0.9992887, 0.0002984, 0.0002928],]

[[0.0000962, 0.9996872, 0.0000082, 0.0002083],]

[[0.000026, 0.9997134, 0.0000213, 0.0002392],]

[[0.0000484, 0.9998299, 0.0000113, 0.0001105],]

[[0.0000254, 0.99997, 7e-7, 0.000004],]

[[0.0003379, 0.9989189, 0.0003217, 0.0004215],]

[[0.0002365, 0.9996421, 0.0000661, 0.0000553],]

[[0.0002404, 0.9997362, 0.0000077, 0.0000157],]
Реакція нейромережі на характеристичні ознаки текстів Яцків:

[[0.0000157, 0.0002022, 0.9994861, 0.000296],]

[[0.0000029, 0.0001136, 0.9995773, 0.0003062],]

[[0.00001, 0.0001001, 0.9995899, 0.0003],]

[[0.000005, 0.0000725, 0.9998108, 0.0001116],]

[[0.0000173, 0.0002661, 0.9996008, 0.0001158],]

[[0.0000022, 0.0000746, 0.99985, 0.0000731],]

[[0.0000201, 0.0004164, 0.9992511, 0.0003124],]

[[0.0000018, 0.0000346, 0.9999337, 0.0000297],]
Реакція нейромережі на характеристичні ознаки текстів Дніпрова Чайка:

[[0.0000063, 0.0003607, 0.0004104, 0.9992226],]

[[0.0001113, 0.0003387, 0.0003774, 0.9991727],]

[[1e-7, 0.0000014, 0.0000104, 0.9999882],]

[[0.0000265, 0.0001508, 0.0001291, 0.9996936],]

[[0.0000215, 0.0001166, 0.0000855, 0.9997764],]

[[0.0000035, 0.0000565, 0.0000028, 0.9999372],]

[[0.0000042, 0.0008793, 0.0000209, 0.9990957],]

[[0.0000099, 0.0001004, 0.0001954, 0.9996942],]

[[0.0000014, 0.0000304, 0.0000379, 0.9999303],]

6. Розпізнавання авторів моделі №2.

З додаток лаб_2 скопіював матрицю характеристичних ознак та векторів класифікаційної ознаки моделі №2 з неї побудував тензори, які в свою чергу подав на вхід навченої нейромережі.

Будемо вважати, що якщо вихід подав ймовірність більше 50%, то автора розпізнано вдало.
Результат:
Реакція нейромережі на характеристичні ознаки текстів Плюща:

[[0.9777777, 0.0145406, 0.0055223, 0.0021594],] - вдало

[[0.0499606, 0.0611112, 0.8832325, 0.0056957],]

[[0.0451264, 0.9501607, 0.0004193, 0.0042935],] - вдало

[[0.0909016, 0.9046938, 0.0018611, 0.0025434],] - вдало

[[0.066236, 0.393197, 0.289519, 0.251048],] - вдало

[[0.0371109, 0.0262231, 0.9296815, 0.0069845],] - допомагав Яцків)
Реакція нейромережі на характеристичні ознаки текстів Кобринська:

[[0.0093788, 0.823693, 0.002078, 0.1648501],] - вдало

[[0.1627175, 0.0250159, 0.3227117, 0.4895548],]

[[0.8779753, 0.0030489, 0.1187301, 0.0002458],]

[[0.3488877, 0.0157122, 0.3204689, 0.3149312],]

[[0.0045371, 0.005329, 0.0657232, 0.9244108],]

[[0.0004908, 0.0026013, 0.0061704, 0.9907375],] – допомагала Дніпрова Чайка)

[[0.0131165, 0.9769662, 0.0001723, 0.0097449],] - вдало
Реакція нейромережі на характеристичні ознаки текстів Яцків:

[[0.1084211, 0.0652875, 0.7653218, 0.0609697],] - вдало

[[0.5261413, 0.0188558, 0.4131807, 0.0418222],]

[[0.0503901, 0.0790082, 0.7472469, 0.1233548],] - вдало

[[0.0404878, 0.0237798, 0.8357143, 0.100018],] - вдало

[[0.0048092, 0.0083572, 0.457398, 0.5294357],]

[[0.2776948, 0.4340197, 0.2511058, 0.0371796],]

[[0.0005223, 0.0015416, 0.9972793, 0.0006569],] - вдало
Реакція нейромережі на характеристичні ознаки текстів Дніпрова Чайка:

[[0.0046677, 0.0034964, 0.0174499, 0.9743862],] - вдало

[[0.0014882, 0.4021117, 0.0011198, 0.5952803],] - вдало

[[0.029977, 0.0006735, 0.9190432, 0.0503063],]

[[0.1105567, 0.4705536, 0.0662051, 0.3526846],]

[[0.0224585, 0.042595, 0.8956726, 0.0392739],]

[[0.001922, 0.0178102, 0.0629244, 0.9173434],] - вдало

[[0.8832491, 0.0760969, 0.0018343, 0.0388197],]

[[0.0090552, 0.0046684, 0.0010575, 0.9852189],] - вдало

[[0.0269833, 0.7217238, 0.1782608, 0.0730321],]
8. Висновки

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

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