Поздравляем с Новым Годом!
   
Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: LVIII Международной научно-практической конференции «Вопросы технических и физико-математических наук в свете современных исследований» (Россия, г. Новосибирск, 21 декабря 2022 г.)

Наука: Информационные технологии

Секция: Инженерная геометрия и компьютерная графика

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Маркеев М.В. МЕТОДИКА ПОВЫШЕНИЯ ТОЧНОСТИ РАБОТЫ НЕЙРОСЕТЕЙ С ПОМОЩЬЮ КОМБИНИРОВАНИЯ ЭМБЕДДИНГОВ // Вопросы технических и физико-математических наук в свете современных исследований: сб. ст. по матер. LVIII междунар. науч.-практ. конф. № 12(49). – Новосибирск: СибАК, 2022. – С. 24-32.
Проголосовать за статью
Дипломы участников
У данной статьи нет
дипломов

МЕТОДИКА ПОВЫШЕНИЯ ТОЧНОСТИ РАБОТЫ НЕЙРОСЕТЕЙ С ПОМОЩЬЮ КОМБИНИРОВАНИЯ ЭМБЕДДИНГОВ

Маркеев Максим Валерьевич

независимый исследователь,

РФ, г. Нижний Новгород

A TECHNIQUE FOR IMPROVING THE ACCURACY OF NEURAL NETWORKS BY COMBINING EMBEDDINGS

 

Maksim Markeev

Independent Researcher,

Russia, Nizhny Novgorod

 

АННОТАЦИЯ

Нейросети применяются для решения множества полезных задач, например, классификация изображений с последующей идентификацией. Несмотря на то, что точность их работы постоянно растет, все равно очень часто есть необходимость в ее повышении. Для повышения точности работы нейросетей существует несколько вариантов. Как правило, в таких случаях есть смысл применять не одну, а несколько различных нейросетей, желательно максимально отличающихся друг от друга по структуре. У каждой такой модели есть свои сильные и слабые стороны. Комбинирование моделей позволяет использовать сильные стороны каждой модели и сглаживать слабые стороны. Один из вариантов комбинирования моделей нейросетей рассмотрен в этой статье. Методика заключается в подборе эмбеддингов моделей, которые дают наилучший результат при объединении с точки зрения необходимой метрики, а далее в их конкатенации. Т.е. получении комбинированного эмбеддинга и дальнейшее использование этого составного эмбеддинга для решения нужной задачи. Как правило, использование составного эмбеддинга дает лучший результат, чем самая лучшая модель из сочетаемых. Методика апробирована на большом объеме данных.

ABSTRACT

Neural networks are used for many useful tasks, such as image classification followed by identification. Despite the fact that their accuracy is constantly growing, there is still very often a need to improve it. There are several variants for increasing accuracy of neural networks. As a rule, in such cases it makes sense to use not one but several different neural networks, preferably differing as much as possible from each other in structure. Each such model has its own strengths and weaknesses. Combining models allows to use strengths of each model and to smooth out weaknesses. One of variants of combining neural network models is considered in this article. The method consists in the selection of embeddings of models which give the best result when combined in terms of the required metric, and then in their concatenation. I.e., obtaining a combined embedding and the further use of this composite embedding for solving the required problem. As a rule, the use of the combined embedding gives a better result than the best combined model. The methodology has been tested on a large volume of data.

 

Ключевые слова: нейронные сети, машинное обучение, искусственный интеллект, TensorFlow, Keras, эмбеддинг, Python.

Keywords: neural networks, machine learning, artificial intelligence, TensorFlow, Keras, Embedding, Python.

 

Введение

В современном мире нейросети используются для решения огромного количества задач. Например, распознавание лиц, поиск похожих товаров в интернет-магазинах, борьба со спамом в почтовых сервисах, прогнозирование различных событий, предсказание формы белков, распознавание голоса, предсказание злокачественных новообразований по фотографии и так далее. Точность работы таких нейросетей с каждым годом увеличивается, тем не менее часто возникает потребность в том, чтобы получить хотя бы еще немного более лучший результат. Это особенно актуально для компаний, работающих с большими объемами данных. Например, если крупный банк сможет снизить процент мошеннических транзакций на 0.1 %, то это потенциально может принести ощутимый результат. Или, если страховая компания сможет улучшить свои алгоритмы прогнозирования наступления страхового случая на 0.1 %, то это может увеличить прибыль всей компании на несколько процентов, что при больших оборотах может быть очень весомо.

Чтобы этого добиться, то есть, чтобы получить результат лучше, чем самая лучшая доступная модель – следует использовать несколько моделей. Но здесь возникает вопрос как лучше всего эти модели объединить. Какие модели лучше сочетаются между собой, а от каких можно отказаться. Методика, предложенная в данной статье, позволяет объединять несколько моделей с целью повышения итогового результата с точки зрения необходимой метрики.

Для этой статьи используется библиотека Искусственного интеллекта TensorFlow [1] с оболочкой Keras от компании Google*. Программный код приведен на языке программирования Python.

Сбор данных для методики

Для объединения моделей методика использует эмбеддинги (Embedding [2], в русском языке иногда встречается термин «Вложения») моделей. Эмбеддинг – это то, как модель представляет себе суть изображения (сжатое изображение), записанное в виде вектора. Рассмотрим получение эмбеддинга для изображения на примере нейросети EfficientNetB0 [3]. 

 

Рисунок 1. Пример работы нейросети EfficientNetB0

 

Нейросеть EfficientNetB0, которая обучена на наборе данных ImageNet (в котором 1000 различных категорий картинок) получает на вход изображение в формате 3-х мерной матрицы размером 224 x 224 x 3. С шириной и высотой в 224 пикселя и 3 каналами RGB. На выходе получается вектор, который содержит вероятности для каждого для 1000 классов, на которых обучена нейросеть. Как правило, нам не нужно предсказывать 1000 классов, а нужно приспособить модель для решения своей задачи. Например, классифицировать собак и кошек. В отличии от стандартной работы модели здесь нам нужен не выходной слой, а нужен промежуточный. Это и есть эмбеддинг. У разных моделей размер эмбеддинга может быть разным, а также можно брать не последний выходной слой(N), а более глубокий, например N-1, но обычно используется именно последний слой перед выходным, так как именно он хранит в себе, то, как модель понимает суть изображения на входе.

После таких преобразований для датасета получим матрицу размером: Количество изображений в датасете X Размер эмбеддинга нейросети. Такие матрицы лучше сохранять в отдельные файлы для их дальнейшей обработки с помощью предложенной методики.

Принцип работы методики

Предполагается, что изначально есть датасет с изображениями и несколько моделей. Для каждой такой модели мы получаем предсказанные эмбеддинги. Далее создаем свою нейросеть на входе которой будет эмбеддинг, а на выходе, то, что нам нужно. Например, бинарная классификация. Пример создания такой модели с помощью библиотеки TensorFlow, на языке программирования Python:

def get_model(shape): 

   

    inp = tf.keras.layers.Input(shape = [shape], name="input")

    x = tf.keras.layers.BatchNormalization()(inp)

    output = tf.keras.layers.Dense(1, activation = 'sigmoid')(x)

    model = tf.keras.models.Model(inputs = [inp], outputs = [output])

    model.compile(  optimizer="adam", loss=tf.keras.losses.BinaryCrossentropy(), metrics=["accuracy"]   )

    return model

 

model = get_model(1280)

model.summary()

 

1-й слой модели это Input (вход). На вход к функции get_model подается размер эмбеддинга, который мы собираемся использовать. Например, для модели EfficientNetB0 размер эмбеддинга это вектор, размера 1280. Далее нужен слой нормализации пакета данных Batch Normalization [4]. Он нужен для того, если эмбеддинг будет составным, полученным путем конкатенации эмбеддингов от разных моделей, чтобы выравнивать их между собой.  3-й слой — это слой выхода, в нашем случае это слой плотности размера 1 (бинарная классификация) с функцией активации sigmoid [5]. Далее создается сама модель, с указание входов и выходов и осуществляется компиляция с модели с указанием оптимизатора, лосс-функции и отслеживаемой метрики. В нашем случае оптимизатор – это Adam [6], лосс-функция – это бинарная кросс-энтропия, метрика – простая точность.

 

Рисунок 2. Пример работы методики комбинирования эмбеддингов

 

Описание методики комбинирования эмбеддингов заключается в следующем:

1.Выбираем 1-ю модель для составления комбинированного эмбеддинга. Для этого прогоняем предсказанные эмбеддинги для всех моделей, которые сохранены в файлах, через нужную нейронную сеть, например, описанную выше.  Оставляем в качестве 1-й модели, ту при которой результат по нужной метрике получается лучше

2.Путем перебора добавляем к эмбеддингу, выбранному в пункте 1 остальные эмбеддинги путем конкатенации. И по очереди прогоняем через нейросеть

3.Устанавливаем порог для добавления эмбеддинга. Это нужно, чтобы ограничить количество добавляемых моделей

4.Если при добавлении нового эмбеддинга результат улучшается на значение больше порога, установленного в пункте 3, то оставляем составной эмбеддинг и продолжаем добавлять, переходя к пункту 2. Если же не удается повысить метрику больше, чем на пороговое значение, то останавливаем перебор.

В конце такого перебора получится составной эмбеддинг от нескольких моделей. Их и предполагается использовать для работы над поставленной задачей.

Стоит отметить, что, если добавление нескольких разных эмбеддингов приносит одинаковый результат – стоит добавить тот, чья корреляция с уже добавленными эмбеддингами будет меньше. Таким образом, можно добиться большей диверсификации моделей и получить более устойчивый результат.

Если моделей очень много и нужно еще повысить результат, то следует составить еще несколько комбинированных эмбеддингов по предложенной методике, выбирая в качестве 1-го эмбеддинга разные модели, а затем просто усреднить полученный результат.

Почему это работает

Разные модели основаны на разных алгоритмах и имеют свои сильные и слабые стороны. Поэтому комбинируя их, как правило, можно получить лучший результат. Особенно большая прибавка к метрике получается, если смешивать эмбеддинги от моделей, имеющих максимально разную структуру. Это придает повышенную устойчивость общей работе. Дополнительно, можно использовать одну модель, но разные размеры изображений или поворот, фильтры, сдвиги, разную яркость-контрастность. А потом, по методике сложить результат. Такой пример показан ниже.

Пример работы методики

Для примера использован датасет URL: https://www.kaggle.com/datasets/tongpython/cat-and-dog, состоящий из 8000 изображений (4000 кошек и 4000 собак). Задача: классификация. Если просто прогнать изображения через обученную нейросеть EfficientNetB0, получить эмбеддинг, а потом применить алгоритм снижения размерности UMAP [7] с 1280-ти до 2-х, то можно увидеть, что модель прекрасно понимает структуру данных. Даже без дальнейшего обучения нейросети, а просто если применить метод ближайшего соседа [8], то точность будет свыше 95%. 

 

Рисунок 3. Визуализация эмбеддинга с использованием UMAP

 

На рисунке 3 присутствует 2 ярко выраженных кластера. Один – это собаки, другой – кошки. Также видно, что небольшая часть опознана неверно.

Далее получаем эмбеддинги от модели EfficientNetB0 для различных вариаций размеров изображений. Отметим, что изначально модель обучена на размерах 224x224. Для обучения нашего бинарного классификаторы использован программный код выше. Данные разбиваются на 4000 обучающих и 4000 для проверки. После другие 4000 данных используются для обучения, на оставшихся производиться замер результата. Итоговый результат усредняется по 2-м обучениям.

 

Рисунок 4. Точность работы модели в зависимости от высоты и ширины изображения

 

При стандартной работе модели на разрешении 224х224 получается точность 0.9960, что далеко не является лучшим результатом. Лучшие результаты представлены на рисунке 4 и в таблице 1.

Таблица 1.

Результаты модели на 1-м этапе. Шаг 1

Высота

Ширина

Точность

286

202

0.997252

235

348

0.997252

365

331

0.997252

300

300

0.997252

259

348

0.997252

383

331

0.997127

 

Далее берем лучший вариант 286х202 и по методике добавляем к нему все возможные варианты и смотрим результаты таблице 2.

Таблица 2.

Результаты после добавления нового эмбеддинга. Шаг 2

Высота

Ширина

Точность

300

315

0.998001

300

365

0.998001

348

383

0.997877

272

365

0.997877

247

286

0.997877

348

365

0.997752

 

На шаге 2 лучшая точность увеличилась с 0.997252 до 0.998001, что дало прибавку в 0.075 %. Следует отметить, что чем точность ближе к 100%, тем сложнее дальше увеличивать результат. Добавляем эмбеддинг модели с разрешением 300х315 и продолжаем.

Таблица 3.

Результаты после добавления нового эмбеддинга. Шаг 3

Высота

Ширина

Точность

331

331

0.998201

348

365

0.998201

286

383

0.997988

331

365

0.997988

383

286

0.997988

348

365

0.997552

 

На шаге 3 лучшая точность еще немного увеличилась с 0.998001 до 0.998201, что дало прибавку в 0.02 %. На шаге 4 не удалось получить улучшение более чем на пороговое значение 0.01% поэтому перебор остановлен.

В итоге на этом примере с помощью методики удалось увелись точность работы нейросети с стандартных 0.9960 до 0.998201, что дало итоговую прибавку 0.2201 %. Возможно дальнейшее улучшение точности работы. Для этого нужно составить еще несколько комбинированных эмбеддингов по предложенной методике, выбирая в качестве 1-го эмбеддинга разные модели, а затем просто усреднить полученный результат.

Заключение

Чтобы повысить качество работы нейросетей зачастую следует применять не одну нейросеть, а несколько, объединяя их в группы. Обычно, их общий результат работы будет лучше, чем у каждой конкретной модели в отдельности. Каждый новый алгоритм вносит диверсификацию, что делает их общую работу более устойчивой. Предложенная методика последовательного соединения эмбеддингов от разных моделей позволяет сочетать между собой несколько нейросетей и получать лучший результат.

 

Список литературы:

  1. Abadi M. et al. TensorFlow: a system for Large-Scale machine learning //12th USENIX symposium on operating systems design and implementation (OSDI 16). – 2016. – С. 265-283.
  2. Bakarov A. A survey of word embeddings evaluation methods //arXiv preprint arXiv:1801.09536. – 2018.
  3. Tan M., Le Q. Efficientnet: Rethinking model scaling for convolutional neural networks //International conference on machine learning. – PMLR, 2019. – С. 6105-6114.
  4. Ioffe S., Szegedy C. Batch normalization: Accelerating deep network training by reducing internal covariate shift //International conference on machine learning. – PMLR, 2015. – С. 448-456.
  5. Dubey S. R., Singh S. K., Chaudhuri B. B. Activation functions in deep learning: A comprehensive survey and benchmark //Neurocomputing. – 2022.
  6. Kingma D. P., Ba J. Adam: A method for stochastic optimization //arXiv preprint arXiv:1412.6980. – 2014.
  7. McInnes L., Healy J., Melville J. Umap: Uniform manifold approximation and projection for dimension reduction //arXiv preprint arXiv:1802.03426. – 2018.
  8. Cunningham P., Delany S. J. K-nearest neighbour classifiers-a tutorial //ACM Computing Surveys (CSUR). – 2021. – Т. 54. – №. 6. – С. 1-25.
 

 

*(По требованию Роскомнадзора информируем, что иностранное лицо, владеющее информационными ресурсами Google является нарушителем законодательства Российской Федерации – прим. ред)

Проголосовать за статью
Дипломы участников
У данной статьи нет
дипломов

Оставить комментарий