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

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

Тензоры:

Тензоры в TensorFlow похожи на многомерные массивы, которые имеют согласованный тип данных, известный как dtype. Подобно numpy.ndarray, тензоры в TensorFlow обладают такими свойствами, как спецификация типа данных и определение формы.

import tensorflow as tf

# Creating a tensor using TensorFlow
tensor = tf.constant([1, 2, 3, 4, 5])

# Output of the tensor:
# tf.Tensor([1 2 3 4 5], shape=(5,), dtype=int32)

Слои:

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

TensorFlow является мощным, поскольку предлагает предопределенные слои, такие как

  • полносвязные слои (плотные)
  • сверточные слои (Conv2D)
  • повторяющиеся слои (LSTM)

Вы можете создавать модели нейронных сетей слой за слоем с помощью функции tf.keras.models.Sequential(), как показано ниже:

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

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

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

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

1. Среднеквадратическая ошибка (MSE):

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

Преимущество:

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

Недостаток:

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

2. Средняя абсолютная ошибка (MAE)

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

Преимущество:

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

Недостаток:

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

3. Среднеквадратическая логарифмическая ошибка (MSLE)

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

Преимущество:

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

Недостаток:

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

Категориальная функция потерь:

1. Бинарная кросс-энтропия:

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

2. Категориальная кросс-энтропия:

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

Multi-label vs Multi-categorial:

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

Многоуровневая классификация:

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

Instance 1: [1, 0, 1, 0, 1]  # Labels: [Label1, Label2, Label3, Label4, Label5]
Instance 2: [0, 1, 1, 1, 0]  # Labels: [Label2, Label3, Label4]
Instance 3: [1, 0, 0, 0, 1]  # Labels: [Label1, Label5]

Мультикатегориальная классификация:

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

Instance 1: [1, 0, 0, 0, 0]  # Label1
Instance 2: [0, 1, 0, 0, 0]  # Label2
Instance 3: [0, 0, 0, 0, 1]  # Label5

КЛ-расхождение:

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

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

Функция активации:

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

Основные функции активации, такие как

Сигмоид (логистика):

Выход сигмовидной функции всегда будет между 0 и 1.

Тан:

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

Выпрямленная линейная единица (ReLU):

Есть два преимущества ReLU, которые делают его популярным выбором в качестве функции активации.

  1. Эффективные вычисления, так как производная ReLU равна 1 для положительного входа.
  2. У Doss нет проблемы распространения градиента (исчезновение), поскольку она не имеет асимптотической верхней и нижней границы по сравнению с двумя другими традиционными функциями активации.

Умирающий РеЛУ

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

А. Инициализация веса:

Используя инициализацию Xavier, единицы активации ReLU инициализируются таким образом, что поощряет баланс, при котором дисперсия вывода приближается к 1.

B. Регулировка скорости обучения:

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

C. Пакетная нормализация:

Нормализуйте ввод, чтобы он не зависел от конкретного веса, что делает модель более общей.

D. Вариант ReLU:

1. Дырявый ReLU

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

2. PReLU (параметрический ReLU)

Он вводит обучаемый параметр для управления градиентом отрицательной части функции. Формула почти такая же, как Leaky-ReLU. Разница в том, что здесь параметр alpha является обучаемым в модели, а не нами.

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

3. ELU (экспоненциальная линейная единица)

Хотя Leaky ReLU решил некоторые проблемы, связанные с ReLU, у него есть свои ограничения. Есть еще проблемы, которые необходимо решить, такие как непрерывность функций и проблема насыщения.

Преимущество:

  1. Непрерывный: в отличие от других форм ReLU, которые являются кусочно-линейными, ELU является гладкой и непрерывной функцией. Это свойство способствует более быстрой сходимости и улучшенной оптимизации во время обучения.
  2. Среднее нулевое значение: активация ELU имеет среднее значение, близкое к нулю по сравнению с другими функциями активации, что, как считается, способствует более быстрому процессу обучения. Это связано с тем, что значения активации, сосредоточенные вокруг нуля, помогают сети получать более детализированные и сбалансированные представления данных.
  3. Отрицательное насыщение: ELU решает проблему отрицательного насыщения более эффективно, чем Leaky ReLU.

Существует также расширение ELU, которое называется SeLU (масштабируемая экспоненциальная линейная единица). Он имеет свойство поддерживать среднее значение вывода равным 0 и дисперсию вывода 1 (с указанными alpha , lambda). Это может помочь стабилизировать обучение и улучшить сходимость в глубоких нейронных сетях.

4. GELU (линейная единица ошибки Гаусса)

Существует также еще одна важная функция активации, которая широко используется в больших языковых моделях, таких как BERT, GPT-2, GPT-3, которая представляет собой GELU (линейная единица ошибки Гаусса).

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

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

Swish — Вариант сигмовидной функции

Говоря о варианте, есть также одно важное расширение сигмоида, которое стоит упомянуть в наши дни, это Swish. Ниже представлена ​​функция Swish из этой бумаги.

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

Рекомендации на основе слоев

Выходной слой:

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

  • Регрессия: линейная активация
  • Двоичная классификация: сигмовидная активация
  • Мультикатегориальная классификация: активация Softmax

  • Многоуровневая классификация: активация сигмовидной кишки

Скрытые слои:

Некоторые рекомендации по изучению выбора функции активации в скрытых слоях:

  • ReLU:
    Часто рекомендуется начинать с ReLU в скрытых слоях, и его следует использовать только в скрытых слоях.
  • Sigmoid и Tanh:
    Рекомендуется избегать использования функций активации сигмоида и tanh в скрытых слоях. Эти функции могут привести к исчезновению градиентов, особенно в более глубоких сетях, что может помешать эффективному обучению и конвергенции.
  • Swish:
    Было высказано предположение, что Swish может быть особенно полезен в глубоких нейронных сетях с большим количеством слоев (например, более 40 слоев).

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

Пожалуйста, не переключайтесь!

Ссылка:
https://subscription.packtpub.com/book/data/9781789132212/3/ch03lvl1sec30/understanding-categorical-cross-entropy-loss
https ://towardsdatascience.com/visualizing-intermediate-activation-in-convolutional-neural-networks-with-keras-260b36d60d0
https://github.com/khipu-ai/practicals-2019/blob/ master/1b_optimization.ipynb
https://arxiv.org/pdf/1710.05941v1.pdf?source=post_page
https://arxiv.org/pdf/1606.08415.pdf