Вы когда-нибудь задумывались, как работает Amazon Alexa или Google Translate? В основе работы этих и многих других систем лежит глубокое обучение.
Глубокое обучение (англ. Deep Learning, DL), будучи разновидностью машинного обучения (англ. Machine Learning, ML), произвело революцию в мире технологий и нашло свое применение во всех сферах бизнеса.
В этом вступлении в глубокое обучение мы рассмотрим следующие темы:
Прежде чем мы углубимся в глубокое обучение, его приложения и платформы, нам сперва нужно понять, что вообще из себя представляет глубокое обучение.
Глубокое обучение — это подраздел машинного обучения, который занимается алгоритмами, основанными на структуре и функциях мозга. Глубокое обучение — это разновидность машинного обучения, которое, в свою очередь, является частью сферы искусственного интеллекта (ИИ).
Искусственный интеллект — это способность машины имитировать разумное поведение человека. Машинное обучение позволяет системе автоматически обучаться и улучшать свой собственный опыт. Глубокое обучение — это разновидность машинного обучения, которая использует сложные алгоритмы и глубокие нейронные сети для обучения моделей.
Теперь давайте познакомимся с несколькими вариантами применения глубокого обучения на практике.
Теперь, когда вы знаете, что такое глубокое обучение, где оно применяется и чем отличается от машинного обучения, давайте рассмотрим нейронные сети и их работу.
Нейронная сеть — это система, смоделированная на основе человеческого мозга, состоящая из входного слоя, нескольких скрытых слоев и выходного слоя. Данные поступают на вход нейронной сети. Далее информация передается на следующий уровень с применением соответствующих весов и смещений. На выходе сети оказывается окончательное значение, предсказанное искусственным нейроном.
Каждый нейрон в нейронной сети выполняет следующие операции:
Функция потерь — один из важнейших компонентов нейронной сети. Потери — это разность между полученным результатом нейронной сети и правильным ответом из размеченного набора обучающих данных. Минимизация функции потерь посредством корректировки весов и смещений производится на протяжении всего процесса обучения.
В этом разделе мы рассмотрим, как нейронная сеть обучается распознавать различные формы. Формы представляют собой изображения размером 28 х 28 пикселей.
Каждый пиксель подается на вход нейронов первого слоя, а скрытые слои будут повышать точность вывода. Данные передаются от слоя к слою по каналам, где они умножаются на разные веса. Причем каждый нейрон в одном слое имеет разные веса по отношению к каждому нейрону в следующем слое.
Каждый нейрон в первом скрытом слое принимает подмножество входных данных и обрабатывает их. Все входные данные умножаются на соответствующие веса и к ним еще добавляется смещение. Результаты функции активации определяют, данные из каких нейронов будут переданы в следующий слой.
Шаг 1: x1*w1 + x2*w2 + b1
Шаг 2: Φ(x1* w1 + x2*w2 + b1)
(Ф — это функция активации).
Вышеупомянутые шаги выполняются снова во втором скрытом слое, после чего информация достигает выходного слоя. А затем один из нейронов в выходном слое должен активироваться (в зависимости от значения функции активации).
Как видите, наш правильный результат был квадратом, но нейронная сеть предсказала круг. Итак, что-то пошло не так?
Нейронную сеть необходимо обучать до тех пор, пока прогнозируемые выходные данные не будут совпадать с правильными. Сравнение осуществляется путем вычисления функции потерь.
Функция потерь определяет ошибку прогноза и сообщает об этом нейронной сети. Это называется алгоритмом обратного распространения ошибки (backpropagation).
Чтобы уменьшить ошибку, мы корректируем веса, и сеть продолжает обучение с ними.
Снова вычисляется функция потерь, и процедура обратного распространения ошибки запускается вновь — до тех пор, пока ошибки не перестанут уменьшаться.
Точно так же нашу сеть можно обучить предсказывать круги и треугольники.
[machinelearning_ad_block]Теперь, когда вы хорошо понимаете, как работают нейронные сети, давайте кратко рассмотрим некоторые из основных платформ глубокого обучения.
Torch был разработан с использованием языка LUA и реализован на языке C. Реализация на языке Python называется PyTorch.
Keras — это фреймворк Python для глубокого обучения. Его большим плюсом является возможность использовать код как на CPU, так и на GPU.
TensorFlow — это библиотека глубокого обучения с открытым исходным кодом, созданная Google. Она разработана на C++ и реализована на Python. Keras можно запускать поверх TensorFlow.
Deep Learning for Java (DL4J) — первая библиотека глубокого обучения, написанная для Java и Scala. Она интегрирована с Hadoop и Apache Spark.
TensorFlow от Google в настоящее время является самой популярной библиотекой глубокого обучения в мире. Она основана на концепции тензоров, которые являются векторами или матрицами в n-мерном пространстве.
Ниже приведен пример одномерного, двухмерного и трехмерного тензоров.
Все вычисления, выполняемые с использованием TensorFlow, включают в себя тензоры.
Ниже представлена простая архитектура работы TensorFlow:
Давайте воспользуемся набором данных из репозитория машинного обучения UCI и предскажем (на основе определенных критериев), превышает ли доход человека 50 тысяч долларов в год.
Этот набор данных имеет следующие атрибуты:
Приступим к демонстрации:
2. Определим пути, где расположены наши данные, а также зададим переменные столбцов.
3. При помощи библиотеки Pandas создадим тестовый и обучающий набор данных:
4. Выведем на экран размер тестового и обучающего набора данных:
5. Установим для столбца label значение 0 — если оно <= 50 000, и 1 — если оно >= 50 000.
6. Подсчитаем общее количество уникальных значений в наборах данных:
7. Проверим типы данных в наших столбцах:
8. Разделим переменные на категориальные и числовые (непрерывные):
9. Создадим непрерывные переменные:
10. Создаем переменную relationship
, добавляем категориальные переменные:
11. Создаем модель с двумя классами и непрерывными и категориальными переменными:
12. Присваиваем значения и определяем функцию:
13. Обучаем модель:
14. Оцениваем модель:
15. Возводим переменную age
в квадрат:
16. Создаем новый датафрейм, состоящий из обучающих и тестовых данных:
17. Заново определяем категориальные и непрерывные переменные:
18. Создаем модель с линейным классификатором:
19. Присваиваем новые значения и заново определяем функцию:
20. Обучаем модель:
21. Оцениваем модель:
22. Осуществляем предсказание при помощи обученной модели:
23. Проверяем предсказание на тестовом наборе данных:
Как видите, модель успешно смогла предсказать два результата из набора тестовых данных.
Надеемся, что после прочтения этой статьи вы уже лучше понимаете, как работают нейронные сети, что такое веса, смещения и функции активации. Также вы узнали о TensorFlow и о том, как работают тензоры. Наконец, вы знаете, как использовать TensorFlow для классификации людей по их заработной плате на основе конкретных характеристик.
Pydantic - это мощная библиотека проверки данных и управления настройками для Python, созданная для повышения…
Python предлагает набор библиотек, удовлетворяющих различные потребности в визуализации, будь то академические исследования, бизнес-аналитика или…
В Python для представления данных в двоичной форме можно использовать байты. Из этой статьи вы…
В этой статье рассказывается о том, что такое Werkzeug и как Flask использует его для…
При работе с датами часто возникает необходимость прибавлять к дате или вычитать из нее различные…
В этом руководстве мы рассмотрим, как добавить социальную аутентификацию с помощью GitHub и Google в…