Share This
Связаться со мной
Крути в низ
Categories
//Введение в глубокое обучение: пошаговое руководство

Введение в глубокое обучение: пошаговое руководство

09.06.2021Category : Python

Вы когда-нибудь задумывались, как работает Amazon Alexa или Google Translate? В основе работы этих и многих других систем лежит глубокое обучение.

Глубокое обучение (англ. Deep Learning, DL), будучи разновидностью машинного обучения (англ. Machine Learning, ML), произвело революцию в мире технологий и нашло свое применение во всех сферах бизнеса.

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

  1. Что такое глубокое обучение и где оно применяется?
  2. Глубокое обучение vs. машинное обучение
  3. Что такое нейронные сети и как они работают?
  4. Платформы глубокого обучения
  5. Введение в TensorFlow
  6. Реализация кейса при помощи TensorFlow

Что такое глубокое обучение?

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

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

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 158994d - Введение в глубокое обучение: пошаговое руководство

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

Применение глубокого обучения

Теперь давайте познакомимся с несколькими вариантами применения глубокого обучения на практике.

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

Глубокое обучение vs. машинное обучение

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

Что такое нейронные сети?

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

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

Каждый нейрон в нейронной сети выполняет следующие операции:

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

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 255fb75 - Введение в глубокое обучение: пошаговое руководство

Функция потерь

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

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 1cabd5e - Введение в глубокое обучение: пошаговое руководствоY — фактическое (правильное) значение, а Y с шапкой — прогнозируемое значение

Как работают нейронные сети?

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

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 626ae5c - Введение в глубокое обучение: пошаговое руководство

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

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo bb6bb95 - Введение в глубокое обучение: пошаговое руководство

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

Шаг 1: x1*w1 + x2*w2 + b1

Шаг 2: Φ(x1* w1 + x2*w2 + b1)

(Ф — это функция активации).

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo c9a9fd5 - Введение в глубокое обучение: пошаговое руководство

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

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo a86fed3 - Введение в глубокое обучение: пошаговое руководство

Как видите, наш правильный результат был квадратом, но нейронная сеть предсказала круг. Итак, что-то пошло не так?

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

Функция потерь определяет ошибку прогноза и сообщает об этом нейронной сети. Это называется алгоритмом обратного распространения ошибки (backpropagation).

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 8902ef1 - Введение в глубокое обучение: пошаговое руководство

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

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 474f421 - Введение в глубокое обучение: пошаговое руководство

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

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo af9f17f - Введение в глубокое обучение: пошаговое руководство

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

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo bd5efe2 - Введение в глубокое обучение: пошаговое руководство

Больше материалов по машинному обучению

Подписывайтесь на нас в Телеграм

Подписаться ×

Платформы глубокого обучения

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

Torch

Torch был разработан с использованием языка LUA и реализован на языке C. Реализация на языке Python называется PyTorch.

Keras

Keras — это фреймворк Python для глубокого обучения. Его большим плюсом является возможность использовать код как на CPU, так и на GPU.

TensorFlow

TensorFlow — это библиотека глубокого обучения с открытым исходным кодом, созданная Google. Она разработана на C++ и реализована на Python. Keras можно запускать поверх TensorFlow.

DL4J

Deep Learning for Java (DL4J) — первая библиотека глубокого обучения, написанная для Java и Scala. Она интегрирована с Hadoop и Apache Spark.

Введение в TensorFlow

TensorFlow от Google в настоящее время является самой популярной библиотекой глубокого обучения в ​​мире. Она основана на концепции тензоров, которые являются векторами или матрицами в n-мерном пространстве.

Ниже приведен пример одномерного, двухмерного и трехмерного тензоров.

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 19c6a78 - Введение в глубокое обучение: пошаговое руководство

Все вычисления, выполняемые с использованием TensorFlow, включают в себя тензоры.

Ниже представлена ​​простая архитектура работы TensorFlow:

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 64ac9c1 - Введение в глубокое обучение: пошаговое руководство

Реализация кейса при помощи TensorFlow

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

Этот набор данных имеет следующие атрибуты:

  • age (возраст)
  • work-class
  • fnlwgt (окончательный вес)
  • education (образование)
  • education-num
  • marital-status (семейное положение)
  • occupation (вид деятельности)
  • relationship (отношения)
  • race (раса)
  • sex (пол)
  • capital-gain
  • capital-loss
  • hours-per-week
  • native-country (родная страна)
  • salary (оклад)

Приступим к демонстрации:

  1. Импортируем необходимые библиотеки:

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo c941c2c - Введение в глубокое обучение: пошаговое руководство

2. Определим пути, где расположены наши данные, а также зададим переменные столбцов.

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo ff00987 - Введение в глубокое обучение: пошаговое руководство

3. При помощи библиотеки Pandas создадим тестовый и обучающий набор данных:

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 4a1991c - Введение в глубокое обучение: пошаговое руководство

4. Выведем на экран размер тестового и обучающего набора данных:

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo e26bf31 - Введение в глубокое обучение: пошаговое руководство

5. Установим для столбца label значение 0 — если оно <= 50 000, и 1 — если оно >= 50 000.

6. Подсчитаем общее количество уникальных значений в наборах данных:

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 4d216e4 - Введение в глубокое обучение: пошаговое руководство

7. Проверим типы данных в наших столбцах:

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 53c3dc2 - Введение в глубокое обучение: пошаговое руководство

8. Разделим переменные на категориальные и числовые (непрерывные):

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 1d7271b - Введение в глубокое обучение: пошаговое руководство

9. Создадим непрерывные переменные:

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 629659b - Введение в глубокое обучение: пошаговое руководство

10. Создаем переменную relationship, добавляем категориальные переменные:

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo bb70cd2 - Введение в глубокое обучение: пошаговое руководство

11. Создаем модель с двумя классами и непрерывными и категориальными переменными:

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 7787f1b - Введение в глубокое обучение: пошаговое руководство

12. Присваиваем значения и определяем функцию:

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 5196643 - Введение в глубокое обучение: пошаговое руководство

13. Обучаем модель:

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo de196f1 - Введение в глубокое обучение: пошаговое руководство

14. Оцениваем модель:

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 917a21b - Введение в глубокое обучение: пошаговое руководствоvvedenie v glubokoe obuchenie poshagovoe rukovodstvo cefe60b - Введение в глубокое обучение: пошаговое руководство

15. Возводим переменную age в квадрат:

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 15ee89e - Введение в глубокое обучение: пошаговое руководство

16. Создаем новый датафрейм, состоящий из обучающих и тестовых данных:

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 1c25d03 - Введение в глубокое обучение: пошаговое руководство

17. Заново определяем категориальные и непрерывные переменные:

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 348ad1e - Введение в глубокое обучение: пошаговое руководство

18. Создаем модель с линейным классификатором:

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 8a77bac - Введение в глубокое обучение: пошаговое руководство

19. Присваиваем новые значения и заново определяем функцию:

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 88a1f6d - Введение в глубокое обучение: пошаговое руководство

20. Обучаем модель:

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 96ec8bc - Введение в глубокое обучение: пошаговое руководство

21. Оцениваем модель:

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 06e5bdf - Введение в глубокое обучение: пошаговое руководство

22. Осуществляем предсказание при помощи обученной модели:

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 59dade7 - Введение в глубокое обучение: пошаговое руководство

23. Проверяем предсказание на тестовом наборе данных:

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 9dfa9c6 - Введение в глубокое обучение: пошаговое руководствоvvedenie v glubokoe obuchenie poshagovoe rukovodstvo 396dfe6 - Введение в глубокое обучение: пошаговое руководство

Как видите, модель успешно смогла предсказать два результата из набора тестовых данных.

Заключение

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

vvedenie v glubokoe obuchenie poshagovoe rukovodstvo 955b6ce - Введение в глубокое обучение: пошаговое руководство

Больше материалов по машинному обучению

Подписывайтесь на нас в Телеграм

Подписаться ×

  • 10 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Связаться со мной
Close