Використання методів машинного навчання на практиці

Розглянуто як можна використовувати методи машинного навчання для побудування системи класифікації тексту. Рассмотрено как можно использовать методы машинного обучения для построения системы классификации текста. The main purpose of this article is to show how it is possible to use methods of machin...

Повний опис

Збережено в:
Бібліографічні деталі
Опубліковано в: :Комп’ютерні засоби, мережі та системи
Дата:2018
Автор: Тупало, Я.О.
Формат: Стаття
Мова:Українська
Опубліковано: Інститут кібернетики ім. В.М. Глушкова НАН України 2018
Онлайн доступ:https://nasplib.isofts.kiev.ua/handle/123456789/150614
Теги: Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
Назва журналу:Digital Library of Periodicals of National Academy of Sciences of Ukraine
Цитувати:Використання методів машинного навчання на практиці / Я.О. Тупало // Комп’ютерні засоби, мережі та системи. — 2018. — № 17. — С. 101-110. — Бібліогр.: 4 назв. — укр.

Репозитарії

Digital Library of Periodicals of National Academy of Sciences of Ukraine
_version_ 1859915922930663424
author Тупало, Я.О.
author_facet Тупало, Я.О.
citation_txt Використання методів машинного навчання на практиці / Я.О. Тупало // Комп’ютерні засоби, мережі та системи. — 2018. — № 17. — С. 101-110. — Бібліогр.: 4 назв. — укр.
collection DSpace DC
container_title Комп’ютерні засоби, мережі та системи
description Розглянуто як можна використовувати методи машинного навчання для побудування системи класифікації тексту. Рассмотрено как можно использовать методы машинного обучения для построения системы классификации текста. The main purpose of this article is to show how it is possible to use methods of machine learning for constructing a system of classification of text.
first_indexed 2025-12-07T16:05:22Z
format Article
fulltext Комп’ютерні засоби, мережі та системи. 2018, № 17 101 Y. Tupalo USING MACHINE LEARNING METHODS IN PRACTICE The main purpose of this article is to show how it is possible to use methods of machine learning for constructing a system of classifi- cation of text. Key words: mashine learning, Ten- sorFlow. Рассмотрено как можно исполь- зовать методы машинного обуче- ния для построения системы классификации текста. Ключевые слова: машинное обуче- ние, тензорный поток. Розглянуто як можна використо- вувати методи машинного на- вчання для побудування системи класифікації тексту. Ключові слова: машинне навчання, тензорний потік.  Я.О. Тупало, 2018 УДК 004.4 Я.О. ТУПАЛО ВИКОРИСТАННЯ МЕТОДІВ МАШИННОГО НАВЧАННЯ НА ПРАКТИЦІ Вступ. Машинне навчання – це процес, у хо- ді якого система обробляє велику кількість прикладів, виявляє закономірності і викорис- товує їх, щоб прогнозувати характеристики нових даних. На практиці алгоритм машин- ного навчання буде виконувати таку послі- довність дій. Припустимо, є мільярд корис- тувачів і кожен з них повідомив системі на- зви десяти улюблених фільмів. Це група прикладів. Комп'ютер проаналізує її і визна- чить, що об'єднує ці фільми. Потім він знай- де закономірність у виборі користувачів. Припустимо, тим кому подобаються фільми жахів не подобаються мелодрами, зате люди часто вважають за краще кіно з знайомими акторами. Тепер, якщо комп'ютер дізнається, що вам подобається "Сяйво" з Джеком Ніко- лсоном, він зробить висновок, що вам варто запропонувати комедію "Любов за правила- ми і без", в якій також знімався Джек Нікол- сон, і зможе рекомендувати інші відео на YouTube. Процес пошуку закономірностей дуже складний. Система шукає їх навіть на рівні пікселів. Наприклад, що потрібно зро- бити Google Фото, щоб знайти фотографії на запитання "собака"? По-перше, обробити ве- личезну кількість фотографій собак з Інтер- нету, стільки ж зображень з ярликом "кішка" і мільйоном інших ярликів. По-друге, потрі- бно знайти послідовності пікселів і поєднан- ня кольорів, характерні для картинок з соба- ками, кішками та іншими об'єктами. Спочатку система тільки припускає, які набори даних можуть бути зображеннями собак. Потім вона співвідносить свої здогадки Я.О. ТУПАЛО Комп’ютерні засоби, мережі та системи. 2018, № 17 102 з фотографією собаки. Якщо виявиться, що система помилково прийняла соба- ку за кішку, вона виправить закономірності, які використовує для пошуку кар- тинок з собаками і кішками. Це повторюється близько мільярда разів: аналіз зра- зка – перевірка відповіді – коригування закономірностей. Нарешті закономірно- сті сформують модель – глибоку нейронну мережу, яка в більшості випадків зможе правильно розпізнавати на зображеннях собак, кішок, людей і не тільки. В статті розглядається приклад застосування методів машинного навчання для задачі класифікації текстів. Основна частина. За майданчик для тестів був використаний супер- ком’ютер Інституту кібернетики імені В.М. Глушкова НАН України [1], програ- ма написана на мові програмування Python з використанням бібліотеки TensorFlow [2]. Ця бібліотека – це бібліотека з відкритим кодом для машинного навчання, створена Google. Назва допомагає зрозуміти, як з нею працювати: тен- зори є багатовимірними масивами, які течуть (flow) через вузли графа. Кожне обчислення в TensorFlow представляється як граф потоку даних. У нього є два елементи: - набір tf.Operation, який представляє одиниці обчислень. - набір tf.Tensor, який представляє одиниці даних. Щоб побачити, як це все працює, створимо наступний граф потоку даних (рис. 1). РИС. 1. Граф, що виконує х + у ВИКОРИСТАННЯ МЕТОДІВ МАШИННОГО НАВЧАННЯ НА ПРАКТИЦІ Комп’ютерні засоби, мережі та системи. 2018, № 17 103 Визначимо x = [1, 3, 6] і y = [1,1,1]. Так як для подання одиниць даних граф працює з tf.Tensor, створимо тензори-константи: import tensorflow as tf x = tf.constant([1,3,6]) y = tf.constant([1,1,1]) Тепер визначимо одиницю операції: import tensorflow as tf x = tf.constant([1,3,6]) y = tf.constant([1,1,1]) op = tf.add(x,y) У нас є всі елементи графа. Час його побудувати: import tensorflow as tf my_graph = tf.Graph() with my_graph.as_default(): x = tf.constant([1,3,6]) y = tf.constant([1,1,1]) op = tf.add(x,y) Так робочий процес TensorFlow і влаштований: спочатку створюється граф, а потім виконується обчислення, дійсно «запускаючи» вузли графа з операціями. Для цього необхідно створити tf.Session. Об'єкт tf.Session інкапсу- лює середовище, в якому виконуються об'єкти Operation і оцінюються об'єкти. Щоб зробити це, необхідно визначити, який граф буде використовуватися в сесії: Я.О. ТУПАЛО Комп’ютерні засоби, мережі та системи. 2018, № 17 104 import tensorflow as tf my_graph = tf.Graph() with tf.Session(graph=my_graph) as sess: x = tf.constant([1,3,6]) y = tf.constant([1,1,1]) op = tf.add(x,y) Для виконання операцій використовується метод tf.Session.run (). Він ро- бить один «крок» обчислень TensorFlow, запускаючи необхідний фрагмент графа для виконання кожного об'єкта Operation і оцінки кожного Tensor, пере- даного в аргументі fetches. У нашому випадку запускається крок операції до- давання: import tensorflow as tf my_graph = tf.Graph() with tf.Session(graph=my_graph) as sess: x = tf.constant([1,3,6]) y = tf.constant([1,1,1]) op = tf.add(x,y) result = sess.run(fetches=op) print(result) >>> [2 4 7] Тепер, коли відомо, як TensorFlow працює, треба створити модель прогно- зування. Процес побудови моделі прогнозування показано на рис. 2. Можна помітити, що даний процес складається з алгоритму машинного на- вчання, «натренованого» на дані. З них формується модель прогнозування, далі видається відповідний результат (рис. 3). ВИКОРИСТАННЯ МЕТОДІВ МАШИННОГО НАВЧАННЯ НА ПРАКТИЦІ Комп’ютерні засоби, мережі та системи. 2018, № 17 105 РИС. 2. Процес побудови моделі прогнозування РИС. 3. Робочий процес прогнозування Мета моделі, яку ми створимо, буде полягати в класифікації тексту за кате- горіями і можуть бути встановлені: - введення: текст; - результат: категорія. У нас є набір даних для тренувань, в якому всі тексти позначені (кожна міт- ка вказує, до якої категорії вона належить). У машинному навчанні такий підхід називається навчанням з учителем. Класифікуються дані за категоріями, отже, Я.О. ТУПАЛО Комп’ютерні засоби, мережі та системи. 2018, № 17 106 це завдання класифікації [3]. Для створення моделі використовуємо нейронну мережу. У нашій нейронній мережі буде 2 прихованих шари. Завдання кожного прихованого рівня полягає у тому, щоб перетворити вхідні дані в щось, що міг би використовувати шар виведення. Щоб отримати шар виведення будемо вико- ристовувати унітарне кодування [4]. Тут тільки 1 біт дорівнює 1, а всі інші – 0. Наприклад, ми хочемо закодувати три категорії: «спорт», «космос» і «комп'юте- рна графіка»: Категорія Значення спорт 001 космос 010 комп'ютерна графіка 100 Отримаємо, що число вузлів виведення дорівнює числу класів вхідного на- бору даних. Значення шару виведення множаться на ваги, до них додається зсув, але функція активації вже інша. Ми хочемо помітити кожен текст категорією, між собою вони є взаємовиключними, тому що текст не може належати двом категоріям одночасно. Щоб досягти мети, замість ReLu візьмемо функцію Softmax. Вона перетворює висновок для кожної категорії в значення між 0 і 1, а також перевіряє, що сума всіх значень дорівнює 1. Так висновок покаже нам ймовірність приналежності тексту до кожної категорії: | 1.2 0.46| | 0.9 -> [softmax] -> 0.34| | 0.4 0.20| Тепер у нас є граф потоку даних нейронної мережі. Якщо перевести все в код, то вийде наступне: # параметри мережі n_hidden_1 = 10 # кількість ознак першого шару n_hidden_2 = 5 # кількість ознак другого шару n_input = total_words # слова в словнику n_classes = 3 # категорії def multilayer_perceptron(input_tensor, weights, biases): layer_1_multiplication = tf.matmul(input_tensor, weights['h1']) ВИКОРИСТАННЯ МЕТОДІВ МАШИННОГО НАВЧАННЯ НА ПРАКТИЦІ Комп’ютерні засоби, мережі та системи. 2018, № 17 107 layer_1_addition = tf.add(layer_1_multiplication, biases['b1']) layer_1_activation = tf.nn.relu(layer_1_addition) # Прихований шар з RELU активацією layer_2_multiplication = tf.matmul(layer_1_activation, weights['h2']) layer_2_addition = tf.add(layer_2_multiplication, biases['b2']) layer_2_activation = tf.nn.relu(layer_2_addition) # Шар виведення з лінійної активацією out_layer_multiplication = tf.matmul(layer_2_activation, weights['out']) out_layer_addition = out_layer_multiplication + biases['out'] return out_layer_addition Навчання нейронної мережі. Ваги і зміщення зберігаються в змінних tf.Variable, які містять стан у графі між викликами run (). У машинному навчанні прийнято працювати з вагами і зсувами, отриманими через нормальний розподіл [3]: weights = { 'h1': tf.Variable(tf.random_normal([n_input, n_hidden_1])), 'h2': tf.Variable(tf.random_normal([n_hidden_1, n_hidden_2])), 'out': tf.Variable(tf.random_normal([n_hidden_2, n_classes])) } biases = { 'b1': tf.Variable(tf.random_normal([n_hidden_1])), 'b2': tf.Variable(tf.random_normal([n_hidden_2])), 'out': tf.Variable(tf.random_normal([n_classes])) } Я.О. ТУПАЛО Комп’ютерні засоби, мережі та системи. 2018, № 17 108 Запустимо мережу в перший раз з вагами, отриманими за нормальним роз- поділом: input values: x weights: w bias: b output values: z expected values: expected Щоб дізнатися, чи вчиться мережа, необхідно порівняти вихідні значення z з очікуваними значеннями expected. Існує багато методів, як порахувати втрату loss. Так як ми працюємо з завданням на класифікацію, найкращим способом обчислення помилки буде перехресної ентропії [3]. Зробимо це за допомогою TensorFlow, використовуючи метод tf.nn.softmax_cross_entropy_with_logits () (функцію активації softmax), і обчислимо середню помилку tf.reduced_mean (): # конструювання моделі prediction = multilayer_perceptron(input_tensor, weights, biases) # визначення втрат entropy_loss = tf.nn.softmax_cross_entropy_with_logits(logits=prediction, labels=output_tensor) loss = tf.reduce_mean(entropy_loss) Завдання знайти найкращі значення ваг і зміщень для того, щоб мінімізува- ти помилки при виведенні – різницю між отриманим і правильним значеннями. Для цього скористаємося методом градієнтного спуску. А якщо бути точніше, то стохастическим градієнтним спуском [3]. Існує безліч алгоритмів для обчислен- ня градієнтного спуску, будемо використовувати адаптивну оцінку моментів. Передамо значення learning_rate, яке визначає крок значень для знаходження кращої ваги. learning_rate = 0.001 # конструювання моделі ВИКОРИСТАННЯ МЕТОДІВ МАШИННОГО НАВЧАННЯ НА ПРАКТИЦІ Комп’ютерні засоби, мережі та системи. 2018, № 17 109 prediction = multilayer_perceptron(input_tensor, weights, biases) # визначення втрати entropy_loss = tf.nn.softmax_cross_entropy_with_logits(logits=prediction, labels=output_tensor) loss = tf.reduce_mean(entropy_loss) optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(loss) Для тестування моделі ми наповнимо словник великого блоку, тому необ- хідно визначити його змінне значення. Функція get_batches () показує кількість текстів разом з розміром блоку. Тепер можна запустити модель: training_epochs = 10 # запуск графа with tf.Session() as sess: sess.run(init) # ініціалізація нормальним розподілом # тренувальний цикл for epoch in range(training_epochs): avg_cost = 0. total_batch = int(len(newsgroups_train.data)/batch_size) # цикл по всім блокам for i in range(total_batch): batch_x,batch_y = get_batch(newsgroups_train,i,batch_size) # запустимо оптимізацію c,_ = sess.run([loss,optimizer], feed_dict={input_tensor: batch_x, output_tensor:batch_y}) Я.О. ТУПАЛО Комп’ютерні засоби, мережі та системи. 2018, № 17 110 Тепер у нас є натренована модель. Щоб протестувати її, необхідно створити елементи графа. Будемо вимірювати точність, треба отримати індекси прогнозо- ваного значення й індекс правильного значення, тому що ми використовуємо унітарне кодування. Потім перевірити, чи рівні вони, і обчислити середнє для всього тестового набору даних. Висновки. В даній статі автор зробив дослідження, які показують як можна використовувати методи машинного навчання для побудови інтелектуальної системи, яка може класифікувати тексти. Етапи даного дослідження представле- ні фрагментами коду, які без проблем можна використовувати для задач другого типу. Даний алгоритм був протестований на суперкомп’ютері Інституту кібер- нетики імені В.М. Глушкова НАН України. СПИСОК ЛІТЕРАТУРИ 1. Головинський А.Л., Маленко А.Л., Сергієнко І.В., Тульчинський В.Г. Енергоефективний суперкомп'ютер СКІТ-4. Вісник НАН України. 2013. № 2. С. 50–59. 2. https://www.tensorflow.org/ 3. Mastering Machine Learning Algorithms: Expert techniques to implement popular machine learning algorithms and fine-tune your models Paperback – Giuseppe Bonaccorso. 4. https://ru.wikipedia.org/wiki/%D0%A3%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0 %BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%B4 Одержано 24.10.2018 https://www.tensorflow.org/ https://ru.wikipedia.org/wiki/%D0%A3%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%B4 https://ru.wikipedia.org/wiki/%D0%A3%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%B4
id nasplib_isofts_kiev_ua-123456789-150614
institution Digital Library of Periodicals of National Academy of Sciences of Ukraine
issn 1817-9908
language Ukrainian
last_indexed 2025-12-07T16:05:22Z
publishDate 2018
publisher Інститут кібернетики ім. В.М. Глушкова НАН України
record_format dspace
spelling Тупало, Я.О.
2019-04-10T16:30:51Z
2019-04-10T16:30:51Z
2018
Використання методів машинного навчання на практиці / Я.О. Тупало // Комп’ютерні засоби, мережі та системи. — 2018. — № 17. — С. 101-110. — Бібліогр.: 4 назв. — укр.
1817-9908
https://nasplib.isofts.kiev.ua/handle/123456789/150614
004.4
Розглянуто як можна використовувати методи машинного навчання для побудування системи класифікації тексту.
Рассмотрено как можно использовать методы машинного обучения для построения системы классификации текста.
The main purpose of this article is to show how it is possible to use methods of machine learning for constructing a system of classification of text.
uk
Інститут кібернетики ім. В.М. Глушкова НАН України
Комп’ютерні засоби, мережі та системи
Використання методів машинного навчання на практиці
Using machine learning methods in practice
Article
published earlier
spellingShingle Використання методів машинного навчання на практиці
Тупало, Я.О.
title Використання методів машинного навчання на практиці
title_alt Using machine learning methods in practice
title_full Використання методів машинного навчання на практиці
title_fullStr Використання методів машинного навчання на практиці
title_full_unstemmed Використання методів машинного навчання на практиці
title_short Використання методів машинного навчання на практиці
title_sort використання методів машинного навчання на практиці
url https://nasplib.isofts.kiev.ua/handle/123456789/150614
work_keys_str_mv AT tupaloâo vikoristannâmetodívmašinnogonavčannânaprakticí
AT tupaloâo usingmachinelearningmethodsinpractice