Нейронные сети, в последнее время называемые глубоким обучением, представляют собой набор алгоритмов, способных выполнять интенсивные вычисления, которые до недавнего времени (начало 2000-х годов) было трудновыполнимо. В настоящее время нейронные сети позволяют нам решать многие проблемы в таких областях, как:
- распознавание изображений (например, лица или общие изображения)
- распознавание речи (т. е. транскрипция, распознавание голоса, распознавание настроения в голосе)
- обработка естественного языка (классификация текста в электронной почте как спама или мошеннических страховых требований)
- автономные транспортные средства
Ниже приводится краткое изложение нейронных сетей, которое, я надеюсь, предоставит полезный ресурс для ключевых терминов и понятий. Конечно, учитывая сложность нейронных сетей и широкий спектр их использования, я надеюсь, что этот блог может послужить началом вашего путешествия в нейронные сети.
Обучение с учителем и обучение без учителя
Нейронные сети умеют работать с размеченными данными. После обучения данных алгоритм определяет, какую метку следует присвоить новым данным, на основе шаблонов или ассоциаций, полученных в ходе обучения. Помеченные данные могут включать в себя классификацию того, является ли электронное письмо спамом или нет, или может ли пациент быть предрасположен к определенному заболеванию.
Кроме того, нейронные сети не требуют меток для обнаружения сходства в данных. Благодаря глубокому обучению мы можем обнаруживать ассоциации или кластеры в наших данных. Примеры немаркированных данных включают необработанные носители, такие как изображения, аудиозаписи и текст.
Подводя итог, нейронные сети можно использовать для контролируемого и неконтролируемого обучения.
Архитектура — упрощение!
Нейронные сети состоят из:
- слои
- узлы
- веса
- функции активации
- Данные передаются на уровень ввода, состоящий из узлов. Каждый узел содержит отдельную информацию о данных (например, изображение или текст).
- Узел объединяет ввод данных с набором весов, которые либо усиливают, либо ослабляют ввод (какой ввод наиболее полезен?).
- Произведения входных данных каждого узла и присвоенного ему веса затем суммируются и передаются через функцию активации, чтобы определить, в какой степени этот сигнал должен продвигаться дальше по сети. Если этот сигнал активирован, он будет передаваться на следующий скрытый слой.
- Шаг 3 будет продолжаться для каждого слоя, пока не будет достигнут выходной слой. После выходного слоя произойдет другая функция активации, и будет получен прогноз. Вы выбираете количество скрытых слоев, через которые проходят данные.
Общие идеи и примечания
Скрытые узлы и скрытые слои:
- Вы выбираете количество скрытых узлов и слоев, но они определяют сложность вашей модели. Слишком много любого из них может привести к переобучению ваших данных, что сделает вашу модель недостаточно обобщенной, чтобы быть эффективной на новых данных (данных, на которых вы не обучали свою модель).
- Чем больше скрытых слоев, тем больше узнаётся общая сложность взаимосвязей внутри данных.
- Чем больше скрытых узлов, тем больше отношений изучается.
- В выходном слое может быть несколько узлов (несколько ассоциаций или классов).
Функции активации:
- Функция активации — это функция преобразования, применяемая к выходным данным слоя.
- Активации в скрытых слоях обеспечивают преобразование, которое позволяет нейронной сети изучать более сложные взаимосвязи по мере прохождения вычислений по сети.
- Активации выходного слоя определяют, какую форму примут наши прогнозы (многоклассовую или бинарную).
- Если ваши выходные данные имеют тип регрессии, вам не нужно преобразовывать выходные данные, поскольку вы прогнозируете количество (в отличие от вероятности между 0 и 1). Однако решение проблем регрессии может быть не идеальным с использованием глубокого обучения!
Типичные функции активации:
Сигмоид
- варьируется от 0 до 1
- часто используется в качестве выходной активации для моделей двоичной классификации (данные относятся к одному из двух классов?).
- больше не используется на скрытых слоях
Выпрямленная линейная единица (ReLU)
- наиболее распространенная активация для скрытых слоев
- не активируется, пока не будет достигнут некоторый порог
Гиперболический тангенс (tanh)
- варьируется от -1 до +1
- иногда используется как активация скрытого слоя, но обычно работает не так хорошо, как ReLU
- иногда используется как активация вывода для двоичной классификации
Софтмакс
- варьируется от 0 до 1 для каждого элемента (выходного узла) и в сумме составляет 1
- расширение сигмоиды для мультиклассовой классификации
- используется в качестве выходной активации для мультиклассовой классификации
Нейронные сети: нужно ли вам глубокое обучение для решения вашей проблемы?
Учитывая мощь нейронных сетей, неудивительно, почему популярность использования этой ветви алгоритмов так сильно возросла. Однако обучение и работа с нейронными сетями требует гораздо больше времени, мощности компьютера и хорошего понимания того, как они работают. В большинстве случаев грубая сила нейронных сетей приводит к переобучению ваших данных, что требует множества методов для регуляризации. Нейронные сети эффективны, но ключ в том, чтобы знать, нужна ли вам магия нейронных сетей или нет.
Спасибо за чтение и удачи в дальнейшем погружении в глубокий мир глубокого обучения!