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

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

Проще говоря, большинство моделей глубокого обучения включают наложение нескольких слоев нейронных сетей в определенном архитектурном макете либо для задачи прогнозирования, либо для классификации (архитектуры подкрепления и генерации имеют дело с другим набором реальных проблем) . Нейронные сети универсальны, надежны и масштабируемы, и они могут легко справляться с задачами высокой размерности (огромное количество наборов функций; например, при распознавании объектов - определить, содержит ли изображение кошку или собаку, каждый цветовой канал пикселя будет функцией; изображение размером 120x120 приводит к матрице из 14400 пикселей и умножается на три, чтобы получить интенсивность канала RGB. В итоге мы получим 43200 функций для начала)

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

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

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

Концепция искусственной нейронной сети не была чем-то новым для мира компьютерных наук. Он был впервые предложен Уорреном Маккалоком и Уолтером Питтсом в 1943 году, а в 1957 году Управление военно-морских исследований США поручило Фрэнку Розенблатту построить алгоритм перцептрона (нейронной сети). Однослойный перцептрон не оправдал ожиданий, поскольку он мог захватывать только ограниченные линейные шаблоны, наложение двух или более нейронных слоев (нейронная сеть с прямой связью или многослойный перцептрон) улучшило производительность, но все еще не может предсказать функцию XOR.

Марвин Мински и Сеймор Паперт в своей книге «Персептроны» показали, что в 1969 году эти сети не могли моделировать простую функцию XOR. В течение многих лет цитирование книги ограничивало прогресс в области ИНС. Лишь в 1980-х годах алгоритм снова стал активно исследоваться, и в 2012 году Джеффри Хинтон продемонстрировал использование обобщенного алгоритма обратного распространения ошибки для обучения многослойных нейронных сетей в задаче Imagenet, которая произвела революцию в области глубокого обучения. .

Рост использования DL также следует отнести к благоприятным полям. В середине 2010 года в области обработки данных произошли революционные изменения. Распределенная экосистема Hadoop изменила способ обработки и хранения данных. Вычислительная мощность одноядерных процессоров многократно возросла по сравнению с процессорами 1980-х годов, а появление Интернета устройств сделало возможным сбор огромного количества данных, которые предоставили столь необходимые обучающие данные для нейронных сетей. Графические процессоры лучше справляются с матричным умножением по сравнению с многоядерными процессорами, а нейронные сети сильно зависят от матричных операций для выполнения необходимых вычислений. Благодарности всем игрокам во всем мире благодаря им, теперь нейронные сети можно обучать намного быстрее на графических процессорах. Без ваших неустанных усилий и решимости в этом мире не будет лучших графических процессоров.

Фундаментальной единицей нейронной сети является отдельный нейрон, который был смоделирован по образцу нейронов в биологическом мозге. Каждый нейрон в данном слое (т. Е. Слое 1) будет связан со всеми или таким же количеством нейронов в следующем слое (т. Е. Слое 2). Связи между нейронами имитируют синапсы в биологическом мозге. Нейрон будет выдавать выходной сигнал только в том случае, если он получил достаточно входного сигнала (по величине, чтобы пересечь установленный порог) от своих предшественников.

Список методов, которые со временем улучшили производительность нейронных сетей и помогли ей превзойти SVM:

1. Обратное распространение: многослойный перцептрон (MLP) имеет входной, скрытый и выходной нейронный слой. Обучение MLP - непреодолимая задача, пока в 1986 году Рамельхарт не опубликовал статью, в которой описывался алгоритм обучения обратного распространения ошибки (также известный как градиентный спуск с использованием автодифференции в обратном режиме). Для каждой обучающей записи (точки данных) алгоритм вычисляет выход нейрона из каждого слоя, а затем, наконец, в выходном слое делает прогноз (прямой проход), основываясь на том, насколько далеко прогноз отличается от фактического вывода, он вычисляет ошибку прогнозирования. Затем ошибка прогнозирования используется для изменения весов нейронов на всех предыдущих уровнях (обратное распространение), пока не достигнет входного уровня, чтобы повысить общую точность прогнозирования сети.

2. Количество скрытых слоев и нейронов на каждый скрытый слой: однослойная нейронная сеть может дать разумные результаты, но их объединение улучшает обучаемость сети. Многослойная нейронная сеть для распознавания лиц превосходит однослойную нейронную сеть. При наложении нижние слои могут захватывать детали более низкого уровня (т. Е. Линии, отделяющие лицо от фона), средний скрытый слой может захватывать детали среднего уровня (т. Е. Квадраты и круги), а выходной слой может определять высокие -уровневые характеристики (то есть расположение глаза в пикселях). Добавление большего количества слоев и большего количества нейронов на слой приведет к переобучению модели, увеличению времени обучения и проблеме исчезающих / взрывающихся градиентов, поэтому эти параметры потребуют тщательного рассмотрения.

3. Функции активации (исчезающие и увеличивающиеся градиенты - ненасыщающиеся функции активации): функция активации определяет, когда нейрон сработает, и величину выходного сигнала на основе входных сигналов от предшественника. Это может быть сигмовидный, tanh, softmax или вариант ReLU. Обычно в качестве функции активации для входных и скрытых слоев используется ReLU (Rectified Linear Unit). Для выходного слоя либо softmax, если это задача классификации, либо фактическое значение, если это прогноз. Когда RELU используется в нейронной сети с глубокими слоями, сигнал обратного распространения либо уменьшится до нуля, либо увеличится до большого числа, когда он достигнет входного слоя, без надлежащего сигнала обратного распространения веса никогда не изменится в нижних слоях. На помощь приходят варианты ReLU. Leaky ReLU, Рандомизированное утечка ReLU, Параметрическая утечка ReLU и экспоненциальная линейная единица (ELU). Тесты производительности показали следующий порядок предпочтения.

4. Пакетная нормализация: Сергей Иоффе и Кристиан Сегеди предложили BN в своей статье в 2015 году для решения проблемы исчезающих и взрывающихся градиентов. Непосредственно перед функцией активации каждого слоя установите нулевой центр и нормализуйте входные данные, затем масштабируйте и сдвигайте двумя новыми параметрами (один для масштабирования, другой для сдвига). Это позволяет модели узнать оптимальный масштаб и среднее значение обучающих данных на каждом слое.

5. Повторное использование предварительно обученных слоев (передача обучения). Веса нижнего уровня предварительно обученной модели можно использовать повторно вместо обучения новой модели с нуля. Если мы строим модель для определения собачьего хлеба, то мы можем использовать вес нижнего слоя модели, который определяет, является ли животное на изображении собакой или нет.

6. Более быстрые оптимизаторы: оптимизаторы вычисляют сигналы обратного распространения, и это помогает сети корректировать веса нейронов на всех уровнях. Производительность и скорость оптимизатора напрямую влияют на скорость обучения сети. Оптимизация моментума Борисом Поляком в 1964 году была родоначальником всех оптимизаторов. Позже появились Nesterov Accelerated Gradient, AdaGrad, RMSProp и оптимизация Adam. Адам работает лучше, чем другие оптимизаторы

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

8. Ранняя остановка и регуляризация l1 и l2: прекратите обучение сети, когда производительность фактически упадет по сравнению с предыдущими эпохами. Регуляризация веса нейрона (а не смещения) с использованием нормы l1 или l2 помогает избежать переобучения сети под данные обучения.

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

10. Увеличение количества данных. Помеченные данные более ценны, чем любой драгоценный металл в стране DL. Каждая сеть потребует значительного количества помеченных данных для обучения (т. Е. При обнаружении объекта для кошки и собаки на данном изображении нам нужны маркированные изображения для обучения - когда изображения были помечены человеком как кошка или собака) . Однако, когда у нас достаточно размеченных обучающих данных, можно добавить некоторые модификации к помеченной точке данных, чтобы сгенерировать больше помеченных обучающих данных (то есть, повернув изображение кошки на угол или изменив интенсивность пикселей в несколько пикселей).

Изучите тенденции в статьях на сайте acade.microsoft.com, чтобы определить ведущий алгоритм:

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

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