Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

РЕФЕРАТ / РЕФЕРАТ Машинное обучениеи

.pdf
Скачиваний:
60
Добавлен:
25.06.2023
Размер:
730.91 Кб
Скачать

Задачи:

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

2.На основе полученных знаний разработать и обучить нейронную сеть, распознающую рукописные цифры.

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

Прежде чем перейдем непосредственно к теме «Обучения глубоких нейронных сетей» разберемся с его материнской темой машинного обучения.

В наше время уже многие знакомы с этим термином, о его применении в разных областях говорят постоянно, немного разберемся что же это такое.

Что такое Machine Learning

Общий термин «Machine Learning» или «машинное обучение»

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

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

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

Типы и суть Machine Learning

Выделяют 2 типа машинного обучения:

1.Индуктивное или по прецедентам, которое основано на выявлении эмпирических закономерностей во входных данных;

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

Дедуктивный тип принято относить к области экспертных систем,

поэтому общий термин «машинное обучение» означает обучение по

1

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

На практике входные данные могут быть неполными, неточными и разнородными. Поэтому существует множество методов машинного обучения. Можно сказать, что машинное обучение реализует подход Case

Based Reasoning (CBR) – метод решения проблем рассуждением по аналогии,

путем предположения на основе подобных случаев (прецедентов).

Методы Machine Learning

Существует множество методов машинного обучения. Мы перечислим

самые популярные, не прибегая к подробной классификации каждого из них.

Выделяют 2 вида классического Machine Learning:

1.Контролируемое обучение (обучение с учителем, supervised

learning) подразумевает использование помеченных наборов данных,

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

Если результат, генерируемый нейронной сетью, неверен, она скорректирует свои вычисления. Это итерационный процесс,

оканчивающийся тогда, когда сеть перестает совершать ошибки.

2

Примером задачи с контролируемым обучением является предсказание погоды. Нейросеть учится делать прогноз погоды с использованием исторических данных. Обучающие данные включают в себя входные данные

(давление, влажность, скорость ветра) и выходные результаты (температура).

2.Неконтролируемое обучение (обучение без учителя,

unsupervised learning) – это машинное обучение с использованием наборов данных без определенной структуры.

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

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

К неклассическим, но весьма популярным методам относят обучение с подкреплением, в частности, генетические алгоритмы, и искусственные нейронные сети. В качестве входных объектов выступают пары «ситуация,

принятое решение», а ответами являются значения функционала качества,

который характеризует правильность принятых решений (реакцию среды).

Эти методы успешно применяются для формирования инвестиционных стратегий, автоматического управления технологическими процессами,

самообучения роботов и других подобных задач.

Ниже на рисунке 1 показана классификация наиболее часто используемых методов Machine Learning.

3

Рисунок 1 – Классификация методов Machine Learning

Отлично мы немного познакомились с тем, что такое «Machine Learning»

с его типами и методами, теперь мы можем спокойно переходить к «Deep Learning».

4

Глубокое обучение «Deep Learning»

Глубокое обучение — это метод машинного обучения. Глубокое обучение позволяет обучать модель предсказывая результат по набору входных данных. Основное различие между глубоким обучением и машинным обучением обусловлено тем, как данные представляются в систему.

Алгоритмы машинного обучения почти всегда требуют структурированных данных, в то время как сети глубокого обучения полагаются на слои ANN (искусственные нейронные сети) в соответствии с рисунком 2. Для обучения сети можно использовать как контролируемое, так и неконтролируемое обучение.

Рисунок 2 – Разница между машинным и глубоким обучением

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

образом.

Мы хотим, чтобы наш сервис предсказывал цену на авиабилет по

следующим входным данным:

o

аэропорт вылета;

o

аэропорт назначения;

o

дата отбытия;

o

авиакомпания.

 

5

Нейронные сети глубокого обучения

Давайте заглянем внутрь нашей модели. Как и у животных,

искусственная нейронная сеть содержит взаимосвязанные нейроны. На диаграмме они представлены кругами в соответствии с рисунками 3-4:

Рисунок 3 – Глубокая нейронная сеть (с двумя скрытыми слоями)

Нейроны сгруппированы в три различных типа слоев: o входной слой;

o скрытый слой (слои); o выходной слой.

Входной слой принимает входные данные. В нашем случае имеется четыре нейрона на входном слое: аэропорт вылета, аэропорт назначения, дата вылета и авиакомпания. Входной уровень передает эти данные в первый скрытый слой.

Скрытые слои выполняют математические вычисления со входными данными. Одна из задач при создании нейронных сетей — определение количества скрытых слоев и нейронов на каждом слое.

Слово «глубина» в термине «глубокое обучение» означает наличие

более чем одного скрытого слоя.

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

билет.

6

Рисунок 4 – Пример возможного представления модели для предсказывания цены авиабилетов

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

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

Рисунок 5 – Пример связи искусственных нейронов Каждый нейрон имеет функцию активации. Ее смысл трудно понять без

привлечения математических рассуждений. Одной из ее целей является

«стандартизация» данных на выходе из нейрона.

После того, как набор входных данных прошел через все слои нейронной

7

сети, функция активации возвращает выходные результаты через выходной

уровень.

Обучение глубокой сети

Обучение нейросети — самая сложная часть глубокого обучения.

Почему?

o Вам нужен большой набор данных.

o Вам нужно большое количество вычислительной мощности.

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

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

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

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

Как уменьшить значение функции потерь?

Нужно менять веса между нейронами. Можно делать это случайным

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

Вместо этого мы будем использовать метод градиентного спуска.

Градиентный спуск — это метод, который позволяет найти минимум функции.

В нашем случае мы ищем минимум функции потерь.

Суть метода состоит в небольшом изменении весов после каждой итерации. Вычисляя производную (или градиент) функции потерь при определенном наборе весов, можно определить, в каком направлении

8

находится минимум.

Рисунок 6 – Функция потерь Для минимизации функции потерь нужно многократно перебирать

данные. Именно поэтому нам требуется большая вычислительная мощность.

Уточнение весов с помощью градиентного спуска выполняется автоматически. В этом и состоит магия глубокого обучения!

После обучения можно использовать разработанный нами сервис для прогнозирования цен на авиабилеты.

В сухом остатке:

o Глубокое обучение использует нейронную сеть для воспроизведения интеллекта животных.

o Существует три типа слоев нейронов в нейронной сети: входной слой, скрытый слой (слои) и выходной слой.

o Связи между нейронами имеют вес, определяемый важностью элемента входных данных.

o Для обучения глубокой нейронной сети необходим реально большой набор данных.

o Итерационно сравнивая выходные результаты со включенными в набор данными, можно вычислить функцию потерь, указывающую, насколько сильно ошибается алгоритм.

9

o После каждой итерации (epoch) веса между нейронами

перераспределяются с помощью метода градиентного спуска для минимизации функции потерь.

ПРАКТИЧЕСКАЯ ЧАСТЬ (РАСПОЗНАВАНИЕ РУКОПИСНЫХ

ЦИФР)

Обучающая и тестовая выборки

Начнем это с выбора данных для обучения и тестирования нашей

нейронной сети. Для этого воспользуемся готовой базой данных образцов рукописного написания цифр MNIST (сокращение от Modified National Institute of Standards and Technology) находящейся в пакете открытой программной библиотеки для машинного обучения TensorFlow. Данная база данных содержит 2 выборки для обучения и тестирования нейронной сети.

Первая включает в себя 60000 изображений, вторая 10000, а также каждой выборке изображений соответствует вектор со значениями, изображенными на картинках. Каждое изображение в выборке имеет размер 28х28 пикселей и представлено в градациях серого (0 – черный цвет, 255 - белый) в соответствии с рисунком 7.

Рисунок 7 – Пример изображения из выборки Для каждого изображения необходимо провести нормализацию данных

так чтобы все значения принимали значения [0, 1]. Для этого достаточно значение каждого пикселя в изображении поделить на количество цветов,

которое он может принимать.

Структура нейронной сети

Построим полносвязную нейронную сеть. На вход будем подавать

пиксели изображения (разрешение изображения 28 х 28 дает нам 784 пикселя

10