Что такое глубокое обучение? Учебник для начинающих

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

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

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

Приступим!

Вот что мы рассмотрим сегодня:

  • Что такое глубокое обучение?
  • Инструменты глубокого обучения
  • Практика глубокого обучения: персептрон
  • Что изучать дальше

Изучите глубокое обучение с помощью практических проектов

Изучите все лучшие методы и инструменты машинного обучения, не просматривая обучающие видео.

Руководство по глубокому обучению для новичков

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

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

Глубокое обучение и другие методы ИНС позволяют компьютерам учиться на примерах аналогично человеческому мозгу. Это достигается путем прохождения входных данных через несколько уровней обработки нейронной сети для преобразования данных и сужения возможных прогнозов на каждом этапе пути.

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

  • Обработка неструктурированных данных : после обучения со структурированными данными модели глубокого обучения могут автоматически распознавать неструктурированные данные . Это означает, что компании могут подключать все доступные данные, которые у них есть, без их предварительного форматирования или стандартизации.
  • Распознавать неожиданные шаблоны . Большинство моделей требуют от инженеров выбора шаблона для алгоритма машинного обучения. буду искать. Любые корреляции, выходящие за рамки выбранных напрямую, остаются незамеченными. Алгоритмы глубокого обучения могут отслеживать все корреляции, даже те, которые не запрашиваются инженерами.
  • Непревзойденная точность : глубокое обучение обеспечивает более точные результаты и лучше масштабируется с большими пулами данных, чем другие методы.

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

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

Система распознавания знаков DL для знаков остановки

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

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

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

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

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

Как модели глубокого обучения учатся классифицировать изображения

Например, инженер может передать 10 000 фотографий, из которых 5 000 будут помечены как слон , а еще 5 000 — помечены как не слон . Модель просматривает все 1000 изображений и выделяет черты, присущие изображениям слонов, такие как «четвероногий» или «хобот».

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

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

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

Всеобъемлющие данные обучения :

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

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

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

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

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

Традиционные нейронные сети до глубокого обучения будут передавать данные только через 2-3 скрытых слоя до завершения. Глубокое обучение увеличивает это количество до 150 скрытых слоев для повышения точности результатов.

Визуализация однослойной нейронной сети
  • Входной слой — это необработанные данные. Он грубо классифицируется и отправляется в соответствующий узел скрытого слоя.

  • Первый скрытый слой содержит узлы, которые классифицируются по широчайшим критериям.

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

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

Deep Learning vs. Machine Learning

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

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

Процесс машинного обучения

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

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

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

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

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

Визуализация глубокого обучения и невысокой эффективности обучения

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

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

Инструменты глубокого обучения

Языки глубокого обучения

  • Python : Python является наиболее часто используемым языком для всех типов машинного обучения, а не только для глубокого обучения. Более 55% специалистов по обработке данных используют Python в качестве основного языка. Это связано с множеством библиотек Python, ориентированных на машинное обучение, и его легким в освоении синтаксисом.
  • Java : Java — второй по популярности язык для машинного обучения, в первую очередь для протоколов безопасности на основе машинного обучения, таких как обнаружение мошенничества на основе классификации. С каждой версией Java получает больше инструментов машинного обучения, таких как новые строковые и файловые методы, добавленные в Java 11.
  • R : R — это язык, основанный на графике. используется для статистического анализа и визуализации в машинном обучении. R — отличный язык для графического представления и изучения результатов алгоритмов машинного обучения. Он особенно популярен для презентаций медицинских технологий и биологических исследований.

Библиотеки глубокого обучения

  • TensorFlow : TensorFlow — это библиотека с открытым исходным кодом, ориентированная на глубокое обучение нейронные сети. Он предоставляет варианты развертывания моделей машинного обучения на локальном устройстве, в локальной базе данных или через облако.. TensorFlow необходим современным специалистам по обработке данных Python, поскольку он позволяет инструментам создавать и обучать модели машинного обучения с использованием новейших методов.
  • Scikit-learn : Sklearn добавляет поддержку для различные алгоритмы контролируемого или неконтролируемого обучения, включая глубокое обучение. Это самая популярная библиотека машинного обучения для Python, которая позволяет различным другим библиотекам, таким как SciPy и Pandas, хорошо работать вместе.
  • Keras : Keras — это ML API, который предоставляет интерфейс Python для искусственных нейронных сетей (ИНС) и действует как интерфейс для TensorFlow. Он позволяет быстро экспериментировать с глубокими нейронными сетями и предоставляет часто используемые строительные блоки нейронных сетей для ускорения разработки.
  • NumPy : NumPy добавляет поддержку многомерных массивов и матрицы, а также сложные статистические операции. Они необходимы для различных моделей машинного обучения.
  • Theano : Theano — это инструмент оптимизации, используемый для управления и оценки матричных вычислений. Theano отлично подходит для моделей глубокого обучения, поскольку он автоматически оптимизирует вычисления для эффективной работы на графических процессорах.
  • PyTorch : PyTorch — это библиотека машинного обучения, разработанная Facebook AI и основанная на популярная библиотека Torch. PyTorch в основном используется для обработки естественного языка и компьютерного зрения в таких компаниях, как Tesla, Uber и HuggingFace.

Структуры глубокого обучения

  • Caffe : Caffe — это фреймворк глубокого обучения, предназначенный для распознавания изображений и сегментации изображений. Он написан на C ++ с интерфейсом Python.
  • Microsoft Cognitive Toolkit (CNTK) : CNTK — это структура глубокого обучения Microsoft, которая описывает нейронные сети как серию вычислительных событий управляемый графиком. Microsoft больше не разрабатывает CNTK, но иногда используется в старых моделях глубокого обучения.

Продолжайте узнавать о глубоком обучении.

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

Руководство по глубокому обучению для новичков

Практика глубокого обучения: персептрон

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

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

Визуализация персептрона, находящего границу между двумя классами

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

1. Граничная линия

Граничная линия, разделяющая два класса:

w1w_1 w 1 x1 x_1 x 1 + w 2 + w_2 + w 2 x2 x_2 x 2 + b = 0 + b = 0 семантика> + b = 0

Здесь:

x1x_1 x 1 И x2 x_2 x 2 — входные данные

w 1 w_1 w 1 и w2 w_2 w 2 — веса

b b b — смещение

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

2. Дискретное прогнозирование с прямым распространением

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

Это дискретный прогноз, потому что наша реализация просто возвращает «да» или «нет», а не процент уверенности в этом прогнозе..

 импорт  numpy as npdef step (weighted_sum): # функция активации шага # Активация шага применяется к выходу перцептрона, который # возвращает 0, если взвешенная сумма меньше 0, и 1 в противном случае return (weighted_sum> 0) * 1 def forward_propagation (input_data,  веса, смещение): # Вычисляет операцию прямого распространения перцептрона # и возвращает результат после применения функции активации шага # берет скалярное произведение входных данных и весов и добавляет шаг возврата смещения (np.dot (input_data, weights)  + bias) # Инициализировать параметры X = np.array ([2, 3]) # объявление двух точек данныхY = np.array ([0]) # labelweights = np.array ([2.0, 3.0]) # веса перцептронных смещений = 0,1  # значение смещенияY_predicted = forward_propagation (X, weights.T, bias) # predicted labelprint ("Predicted label:", Y_predicted) 

Объяснение кода:

Вызов функции forward_propagation :

После инициализации параметров вызывается функция прямого распространения.

forward_propagation function

  • Принимает входную переменную X и веса, затем вычисляет скалярное произведение с помощью np.dot и добавляет смещение для вычисления взвешенной суммы.
  • Применяет функцию шага к вычисленной взвешенной сумме.

Функция шага :

Принимает взвешенную сумму и возвращает 1, если значение больше 0, и 0 в противном случае.

Переменные Определение ng>
X Вход Массив NumPY со значениями функций 2 и 3
Y Метка вывода со значением 0
веса Веса перцептрона с начальными значениями 2 и 3 соответственно.
bias Значение смещения, инициализированное 0

3. Логистическая регрессия

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

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

 import numpy as npdef sigmoid (x): # Функция активации сигмоида возвращает 1/(1 + np.exp (  -x)) # применение сигмоидной функцииdef forward_propagation (input_data, weights, bias): # Вычисляет операцию прямого распространения перцептрона и # возвращает результат после применения сигмоидной функции активации # возьмите скалярное произведение входных данных и веса и добавьте  bias return sigmoid (np.dot (input_data, weights) + bias) # уравнение персептрона # Инициализация параметров X = np.array ([2, 3]) # объявление двух точек данныхY = np.array ([0]) # labelweights =  np.array ([2.0, 3.0]) # веса смещения перцептрона = 0,1 # выход значения смещения = forward_propagation (X, weights.T, bias) # предсказанный labelprint ("Выходные данные прямого распространения:", выход) Y_predicted =  (output> 0.5) * 1 ## применить сигмовидный отпечаток активации ("Label:", Y_predicted) 
путь>

путь>

Пояснение к коду:

сигмоидальная функция

Для данного входного значения x значение сигмоида может быть вычислено как 1 / 1 + n p.ex p ( — x ) 1/1 + np.exp (-x) 1/1 + np.exp (−x).

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

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

4. Функция ошибки: перекрестная энтропия

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

Ошибка функции используются для количественной оценки достоверности прогноза. Например, вместо того, чтобы просто иметь логически определенное «да» или «нет», мы сможем увидеть, насколько уверена программа в своем прогнозе.

Кросс-энтропия — это функция ошибок. используется для моделей классификации.

E = — ( y l o g (y′ ) + ( 1 — y ) l o g ( 1 — y ′ ) ) E = — (y log (y ‘) + (1-y) log (1-y’)) E = — (ylog (y ′) + (1 −y) log (1 − y ′))

Минимизированная перекрестная энтропия указывает максимальную вероятность того, что класс принадлежит предсказанному типу.

 импортировать numpy как npdef sigmoid (x): #  функция активации сигмоида "" "return 1/(1 + np.exp (-x)) def forward_propagation (input_data, weights, bias): # Вычисляет операцию прямого распространения  perceptron и # возвращает результат после применения сигмоидной функции активации # возьмите скалярное произведение входных данных и веса и добавьте сигмоид возврата смещения (np.dot (input_data, weights) + bias) def calculate_error (y, y_predicted): # Вычисляет  двоичная ошибка кросс-энтропии "" "return - y * np.log (y_predicted) - (1 - y) * np.log (1 - y_predicted) def ce_two_different_weights (X, Y, weights_0, weights_1, bias): # Вычисляет сумму  ошибка с использованием двух разных весов и одинакового смещения "" "sum_error1 = 0.0 sum_error2 = 0.0 для j в диапазоне (len (X)): Y_predicted_1 = forward_propagation (X [j], weights_0.T, bias) # предсказанная метка sum_error1 = sum_error1  + calculate_error (Y [j], Y_predicted_1) # сумма ошибок с весами_0 Y_predicted_2 = forward_propagation (X [j], weights_1.T, bias) # предсказанная метка sum_error2 = sum_error2 + calculate_error (Y [j], Y_predicted_2) # сумма  error with weights_1 return sum_error1, sum_error2 # Инициализировать параметры X = np.array ([[2, 3], [1, 4], [-1, -3], [-4, -5]]) # объявление  две точки данныхY = np.array ([1.0, 1.0, 0.0, 0.0]) # фактические веса меток_0 = np.array ([0.0, 0.0]) # веса перцептронвесов_1 = np.array ([1.0, -1.0]) # веса  перцептронных смещений = 0. 0 # значения смещенияum_error1, sum_error2 = ce_two_different_weights (X, Y, weights_0, weights_1, bias) print ("sum_error1:", sum_error1, "sum_error2:", sum_error2) 

Пояснение кода :

ce_error_different_weights function

  • Функции принимают параметры, функции входных данных X , метки Y , weights_0 , weights_1 и смещение .

  • Строка 18–27 : при просмотре обучающих данных вычисляется прогнозируемое значение и ошибка. . Он также продолжает добавлять ошибку предыдущей итерации в переменную sum_error1 ( строка 20 ) и sum_error2 ( строка 22 ) при использовании обоих весов по отдельности.

  • Строка 27 : возвращает сумма кросс-энтропийной ошибки по каждому из весов.

Что изучать дальше

Поздравляем, теперь вы сделали простой классификатор Perceptron! Теперь вы можете перейти к другим популярным проектам глубокого обучения , например:

  • Система классификации букв
  • Система распознавания лиц
  • Система распознавания цифр
  • Система классификации музыкальных жанров

Классификация — это наиболее распространенное использование глубокого обучения, поэтому вы Я хочу получить как можно больше практики с ними!

Чтобы помочь вам на этом пути, компания Educative создала курс Руководство по глубокому обучению для новичков . Курс знакомит вас с основными концепциями глубокого обучения на доступном уровне. Затем у вас будет возможность попрактиковаться в каждой концепции на практическом примере.

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

Удачного обучения!

Продолжить чтение о глубоком обучении

  • Создание проекта генератора текста для глубокого обучения с использованием цепочек Маркова
  • Тенденции глубокого обучения: 20 лучших вариантов использования GPT-3 по OpenAI
  • отключить отраслевое глубокое обучение ч/б и университетские курсы
Оцените статью
nanomode.ru
Добавить комментарий