Машинное обучение и нейронные сети

Содержание лекции:

1. Машинное обучение

2. Нейронные сети

1. Машинное обучение

- Это подраздел искусственного интеллекта, который занимается моделированием человеческого интеллекта, иногда находя аналогии с интеллектом животных. Основой машинного обучения является обучение по большому количеству прецедентов, то есть примеров: некоторых входных данных и связанных результатов.

Этапы применения машинного обучения

  1. Сначала человек сталкивается с рутинной, повторяющейся задачей. Считаем, что этот человек знаком с IT-специалистами, которые помогут ему пройти дальнейшие этапы.
  2. Далее под задачу подбирается подходящая модель. Это может оказаться модель, которая решает задачу без использования машинного обучения со 100% точностью и приемлемой скоростью работы, тогда на этом можно остановиться. Если для повышения точности решения продолжает требоваться ручная работа, то переходим к следующему этапу.
  3. Перед тем, как выполнять обучение, готовится выборка данных: обычно 1000 - 10000 примеров на класс для начала. Начиная с 1000 примеров можно начать эксперименты с моделью. Для полноценной работы обычно требуется 10000 примеров на класс и более. Т. е. допустим, у нас два класса: кошка, собака. Сколько в таком случае нужно подготовить примеров? На самом деле 30000, т. к. на картинке могут отсутствовать и кошка, и собака и это будет отдельный класс - негативная выборка. Для некоторых задач может потребоваться и значительно меньшее количество примеров - напр. если заранее известна сцена и объект имеет повторяющуюся форму.
  4. После сбора данных выполняется обучение. В зависимости от объёма данных и модели, а также используемого оборудования, обучение может занимать от нескольких минут до нескольких недель. Если обучение занимает больше недели, стоит задуматься, насколько модель подходит и насколько сохранится актуальность примеров через неделю.
  5. Далее выполняется оценка точности. Дальше рассмотрим детальнее, как выполняется оценка точности.
  6. В конце принимается решение об эксплуатации. По результатам оценки точности выполняется сравнение моделей. Если результат устраивает, то решение берётся в эксплуатацию. Если результат не устраивает, то следует консервировать исследования: описать причину, результаты сравнения и что требуется для того, чтобы повысить точность, напр. большая производительность или ожидается публикация нового, более точного решения.

Основные метрики для оценки точности

  1. За основу берутся метрики верных и ложных срабатываний и несрабатываний. Нас интересует метрика верных срабатываний, так что она берётся за основу в других метриках.
  2. Например, точностью называют отношение верных срабатываний к сумме верных и ложных срабатываний. То есть точность показывает, сколько результатов из выбранных было выбрано корректно.
  3. Также есть такая метрика, как полнота: отношение верных срабатываний к сумме верных срабатываний и ложных несрабатываний. Эта метрика показывает, сколько результатов из необходимых было выбрано.
  4. Также есть более сложная метрика - F1. Она основывается на двух предыдущих и даёт более полную картину.

Оценка для обнаружения объектов

Отдельно стоит отметить, каким образом оценивается точность для моделей обнаружения объектов. Т. к. объект занимает некоторую площадь на кадре, то вводится такая метрика, как Intersection over Union или отношение пересечения действительной области с найденной. Действительной будет считать область, выделенная вручную человеком.

2. Нейронные сети

Машинное обучение включает в себя большое количество подходов. Одним из подразделов являются искусственные нейронные сети. Искусственные нейронные сети - это подход к построению моделей в машинном обучении, предполагающих использование сетей искусственных нейронов.

Какие бывают слои нейронных сетей

Искусственные нейронные сети состоят из множества слоёв связанных нейронов. Давайте посмотрим на основные типы таких слоёв:

  1. Полносвязные/Dense/Residual - слои, в которых каждый нейрон связан с каждым предыдущим. Об этом следует помнить, когда оцениваешь объём памяти, требуемый для работы нейросети: на каждую связь требуется дополнительная память.

2. Свёрточные/Convolutional - основа основ использования нейросетей в компьютерном зрении. Свёрточные слои позволяют обучаться находить признаки на изображении и связывать их и их взаимное расположение с определёнными классами объектов.

3. Рекуррентные/Recurrent - слои, которые используются для оценки динамики, напр. могут использоваться для анализа последовательности кадров видео. Здесь стоит также отметить, что для рекуррентных слоёв может потребоваться значительный объём памяти.

4. Вычисляемые:

  • Pooling - слои, которые позволяют выбрать наиболее подходящие данные.

  • Concat - слои, которые позволяют объединить результаты нескольких слоёв.

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

Что такое Deep Learning?

Deep Learning - это совокупность методов машинного обучения, основанных на обучении извлечению признаков. DNN - глубинная/многослойная нейронная сеть.

Для решения каких задач используются нейронные сети?

Принципы использования

  1. Много данных, сложно построить мат. модель.
  2. Много вычислительных ресурсов, мало времени.

Примеры использования нейросетей

  1. Классификация:
  • Обнаружение объектов.

  • Семантическая сегментация.

  • Выявление аномалий.

2. Прогнозирование:

  • Повышение разрешения.

  • Генерация кадров.

3. Кластеризация:

  • Классификация без предварительной разметки.

Как происходит обучение нейронной сети?

Сбор данных для обучения

  1. Открытые датасеты.
  2. Сбор датасета.
  3. Разметка датасета.
  4. Генерация изображений.
  5. Аугментация.
  6. Конвертация данных.

Выбор модели

  1. Ищем готовую модель, с помощью который уже решали подобную задачу.
  2. Определяемся с типом задачи: напр. классификация, семантическая сегментация. Выбираем модель под тип задачи.
  3. Если подходящих моделей несколько, выбираем по точности результата: напр. по метрике mAP.
  4. Можно взять модель из научных работ, например, с arxiv и реализовать в коде.

Обучение

  1. Определяем границы обучения:
  2. Длительность по времени/кол-во итераций.
  3. Точность.
  4. Определяем шаг обучения:
  5. Большой шаг - точность может не сойтись.
  6. Маленький шаг - медленнее и точность может сойтись на менее точном решении.
  7. Определяемся с функцией потерь для измерения расхождения.

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

Проверка результата обучения

  1. Для проверки результата используем изображения, отличные от тех, которые использовались для обучения.
  2. Изображения также должны быть предварительно размечены вручную.
  3. Результат обучения проверяется по интересующим метрикам.

Примеры моделей нейронных сетей

VGG-16

Основная идея в том, что последовательно извлекаются признаки и по признакам определяется класс объекта.

U-Net

UpConv and UpSampling difference. Данная модель используется для семантической сегментации изображений. Модель похожа на VGG-16 с дополнительными слоями, развёрнутыми в обратную сторону. Первая половина называется энкодером, а вторая - декодером. Также данная модель реализует идею конкатенации результатов кодирования и декодирования.

YOLOv3

Данная модель реализует две идеи:

  1. Локализация объектов на изображении.
  2. Выполнение локализации одновременно на нескольких отдельных слоях для повышения точности обнаружения объектов.

Inception v3

Данная модель также привносит две идеи:

  1. Используется несколько наборов свёрток с разными размерами ядра. Это позволяет находить на изображении равноправно как большие объекты, так и мелкие.
  2. Модель большая и у неё есть несколько выходов, расположенных на разных уровнях слоёв: это позволяет усилить распространение ошибки от последних слоёв, так как в ином случае ошибка попросту может обнулиться до того, как вернётся к началу модели.

Практическое задание:
Назовите примеры задач, для решения которых можно использовать нейронные сети.
Домашнее задание:
Воспроизвести пример из лекции. Выполнить обучение нейросети и подготовить отчёт:
1. Указать время, которое заняло обучение.
2. Указать модель процессора, на котором выполнялось обучение.
3. Выбрать по 1 изображению для каждого класса, указать его название и соответствующее значение predict.

Отчёт оформить в виде текстового файла.

Можете выполнить обучение на собственном классе объектов, в таком случае приложите код и датасет.

Выкладывайте результаты на диск, создавайте папку с фамилией

Завершить и продолжить  
Обсуждение

0 Комментарии