Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

Tanh (Hyperbolic Tangent)

Tanh отображает входные значения в диапазон от −1 до 1 с помощью S-образной кривой с центром в нуле. Рассматриваются формула, градиент, применение в RNN, GAN и системах управления, а также код на PyTorch.

Гиперболический тангенс, tanh(x) = (eˣ − e^(−x)) / (eˣ + e^(−x)), — это функция активации, которая отображает любое действительное число в значение от −1 до 1 по S-образной кривой с центром в нуле. Это масштабированная сигмоида: tanh(x) = 2σ(2x) − 1. Форма кривой такая же, как у сигмоиды, но для отрицательных входных значений результат тоже отрицательный, а наклон в начале координат равен 1. До конца 1990-х и в 2000-х годах tanh была стандартной функцией активации скрытых слоёв нейросетей. Сегодня она формирует скрытое состояние рекуррентных нейросетей (RNNs), ограничивает выходные значения генераторов изображений и управляющих политик, а также удерживает значения в заданном диапазоне внутри более крупных моделей.

Формула и свойства#

Tanh — нечётная функция: tanh(−x) = −tanh(x), а tanh(0) = 0. Вблизи нуля она почти линейна: tanh(x) ≈ x, а при значениях примерно за пределами ±3 выравнивается, приближаясь к ±1. Производная функции, 1 − tanh²(x), в начале координат равна 1 — это в четыре раза больше максимального значения производной сигмоиды, равного 0.25; по мере насыщения кривой производная стремится к нулю. Приведённый ниже фрагмент кода для PyTorch вычисляет tanh и её градиент, а затем сравнивает средние выходные значения tanh и сигмоиды для входных данных с нулевым средним:

import torch

x = torch.tensor([-3.0, -1.0, 0.0, 1.0, 3.0], requires_grad=True)
y = torch.tanh(x)

# The derivative of tanh is 1 - tanh(x)^2, which peaks at 1 when x = 0
y.sum().backward()
print(f"Tanh:     {[round(v, 3) for v in y.tolist()]}")
print(f"Gradient: {[round(v, 3) for v in x.grad.tolist()]}")

# For zero-mean inputs, tanh outputs average near 0 and sigmoid outputs near 0.5
torch.manual_seed(0)
z = torch.randn(100_000)
print(f"Mean output, tanh: {torch.tanh(z).mean():.3f}, sigmoid: {torch.sigmoid(z).mean():.3f}")

Код выводит значения tanh для [-0.995, -0.762, 0.0, 0.762, 0.995] и градиенты для [0.01, 0.42, 1.0, 0.42, 0.01], поэтому градиент при ±3 в сто раз меньше, чем при нуле. Для 100,000 входных значений со стандартным нормальным распределением среднее выходное значение tanh составляет примерно 0.0, а сигмоиды — примерно 0.5.

Чем полезны выходные значения с центром в нуле#

Градиенты весов нейрона пропорциональны его входным значениям. Если все входные значения положительны, как всегда бывает с выходами сигмоиды, то при каждом обновлении градиенты всех весов нейрона имеют одинаковый знак. Поэтому веса могут только одновременно увеличиваться или уменьшаться и достигают оптимума зигзагообразно. Выходные значения tanh примерно поровну положительны и отрицательны, поэтому каждый вес может изменяться независимо, а входные значения следующего слоя остаются близкими к нулевому среднему, где градиентный спуск сходится быстрее. По этой причине в руководстве Yann LeCun и коллег «Efficient BackProp» за 1998 год для скрытых слоёв рекомендовались симметричные функции вместо логистической сигмоиды, в частности масштабированная функция 1.7159 · tanh(2x/3). Однако tanh всё равно насыщается, а при последовательном объединении множества слоёв tanh градиенты уменьшаются во время обратного распространения ошибки — это проблема затухающего градиента.

Где используется tanh#

  • Рекуррентные сети: простая RNN обновляет состояние по формуле hₜ = tanh(Wxₜ + Uhₜ₋₁ + b), а tanh — нелинейная функция по умолчанию в nn.RNN PyTorch. В ячейках LSTM и GRU tanh формирует содержимое-кандидат, а в LSTM также сжимает состояние ячейки перед выводом. Сигмоидальные вентили определяют, какую его часть использовать. Ограниченный диапазон не позволяет состоянию, которое передаётся обратно на каждом шаге, неограниченно расти.
  • Генераторы GAN: DCGAN завершает генератор функцией tanh, чтобы значения пикселей сгенерированных изображений находились в диапазоне от −1 до 1, к которому масштабированы обучающие изображения. Этому примеру следуют многие более поздние генеративно-состязательные сети (GANs).
  • Ограниченные действия: политики непрерывного управления в обучении с подкреплением пропускают выходные значения через tanh, чтобы удерживать каждую команду в пределах возможностей исполнительных механизмов. Soft Actor-Critic таким способом сжимает выборки из гауссовской политики.
  • Ограничение логитов: языковые модели Google Gemma 2 вычисляют cap · tanh(logits / cap), где cap равен 50 для логитов внимания и 30 для итоговых логитов. Небольшие логиты проходят почти без изменений, а большие не могут превысить cap.
  • Аппроксимация GELU: выражение 0.5x(1 + tanh(√(2/π)(x + 0.044715x³))) даёт точную аппроксимацию GELU. В исходном коде GPT-2 и BERT GELU вычисляется именно так.
  • Нормализующие потоки: потоки в стиле RealNVP часто завершают каждую сеть масштабирования функцией tanh, поэтому каждый слой связки масштабирует входные значения коэффициентом от e⁻¹ до e, что обеспечивает численную стабильность обучения. Модели оценки позы YOLO26 обучаются с функцией потерь оценки остаточного логарифмического правдоподобия. Используемый в ней шестислойный поток RealNVP, где каждая сеть масштабирования завершается tanh, моделирует отклонение предсказанных ключевых точек от эталонных.
  • Сигмоида: Tanh — это сигмоида, растянутая до диапазона от −1 до 1 и сжатая по горизонтали вдвое, что увеличивает максимальный наклон с 0.25 до 1. Диапазон сигмоиды от 0 до 1 делает её подходящей функцией для вероятностей и вентилей.
  • Hardtanh: кусочно-линейная функция, ограничивающая входные значения диапазоном [−1, 1]. Она вычисляется быстрее, а её градиент точно равен 0 за пределами этого диапазона.
  • ReLU: max(0, x) не насыщается при положительных входных значениях и требует всего одного сравнения. Поэтому ReLU и её гладкие последующие варианты, например SiLU, заменили tanh в скрытых слоях глубоких свёрточных нейросетей (CNNs) и трансформеров. В статье об AlexNet четырёхслойная CNN с ReLU достигла ошибки обучения 25% на CIFAR-10 в шесть раз быстрее той же сети с блоками tanh.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

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

Компьютерное зрение в аэрокосмической отрасли

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

Компьютерное зрение в сфере безопасности

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

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

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

Компьютерное зрение в розничной торговле

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

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

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

Компьютерное зрение в сельском хозяйстве

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

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения