🔴 Сложный ⏱️ 50 минут

Обратная функция

📋 Содержание урока

Обратная функция 🔄

Ты обучил модель предсказывать цену квартиры. Но перед обучением ты, как положено, отмасштабировал целевую переменную: взял логарифм, потому что цены распределены с длинным хвостом и линейная модель на сырых рублях работала отвратительно. Модель обучилась, выдала предсказание: 3.87. И вот в этот момент возникает вопрос, который в учебниках почему-то стыдливо обходят стороной: а сколько это в рублях? Число 3.87 нельзя показать заказчику. Нужно проделать путь обратно — от результата преобразования к исходной величине. Именно это и делает обратная функция.

Такая ситуация в работе с данными не исключение, а норма. Ты стандартизируешь признаки перед градиентным спуском — потом надо вернуть коэффициенты в исходные единицы, чтобы их можно было интерпретировать. Нейросеть-классификатор выдаёт вероятность $0{,}83$ — а внутри она оперировала логитами, и чтобы понять, насколько модель «уверена» в сыром масштабе, нужна функция, обратная сигмоиде. Генеративные модели класса normalizing flows вообще построены целиком на идее обратимости: они учат преобразование, которое переводит сложное распределение данных в простой гауссов шум, а потом разворачивают его назад, чтобы генерировать новые картинки. Без обратной функции всё это просто не работает.

Но тут есть подвох, и он математический, а не программистский. Развернуть можно не любую функцию. Если ты возвёл число в квадрат и получил $9$, то исходное число — это $3$ или $-3$? Информация о знаке потерялась безвозвратно. Функция $y = x^2$ на всей числовой прямой необратима, и никакой код это не починит. То же самое с softmax: он выдаёт одинаковый ответ для логитов $(1;\,2;\,3)$ и $(101;\,102;\,103)$ — сдвиг на константу теряется. Понимать, когда обращение возможно, а когда нет, — это ровно тот навык, который отличает «я написал inverse_transform и надеюсь» от «я знаю, что здесь произойдёт».

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

🎯 Ты узнаешь:

  • Что такое обратная функция и почему её обозначение $f^{-1}$ не означает дробь $\dfrac{1}{f}$
  • При каком условии функция обратима, и почему монотонность — это гарантия обратимости
  • Алгоритм из трёх шагов, которым находится формула обратной функции для любого примера
  • Почему график $y = f^{-1}(x)$ симметричен графику $y = f(x)$ относительно прямой $y = x$
  • Как обратные функции работают в ML: логит и сигмоида, обратная нормализация, log-трансформация таргета, обратимость в normalizing flows

История: откуда это взялось?

Идея «отменить действие» родилась гораздо раньше, чем само слово «функция». Уже вавилонские писцы около 1800 года до н. э. решали задачи вида «найди сторону квадрата по его площади» — то есть фактически применяли операцию, обратную возведению в квадрат, и вели таблицы квадратов и квадратных корней на глиняных табличках. Но это была ещё не функция, а рецепт: конкретная процедура для конкретного числа.

Настоящий переворот случился в XVII веке. Джон Непер в 1614 году опубликовал «Mirifici Logarithmorum Canonis Descriptio» — таблицы логарифмов. Он решал абсолютно прикладную задачу: астрономам и мореходам приходилось перемножать многозначные числа вручную, и на одно умножение уходили часы, с высоким риском ошибки. Непер придумал, как заменить умножение сложением: если перевести числа в логарифмы, сложить, а затем вернуться обратно — получится произведение. И вот это «вернуться обратно» и есть первая по-настоящему массово используемая обратная функция в истории: антилогарифм, то есть показательная функция. Двадцать лет спустя логарифмическая линейка на основе этой идеи стала главным вычислительным инструментом инженеров — и оставалась им вплоть до появления карманных калькуляторов в 1970-х.

Строгий язык для всего этого создали позже. Леонард Эйлер в «Introductio in analysin infinitorum» (1748) впервые последовательно работал с функциями как с самостоятельными объектами и явно рассматривал пары «функция — обратная к ней». А обозначение $f^{-1}$ вошло в обиход в XIX веке, когда математики (в том числе Джон Гершель, около 1813 года) стали трактовать применение функции как операцию, у которой есть «обратный элемент» — по аналогии с тем, как у числа есть обратное по умножению. Отсюда, кстати, и растёт главная путаница школьников: значок $-1$ здесь наследие алгебры операций, а не степень. Полностью же понятие обратимости оформилось в XX веке в теории множеств, где выяснилось: обратная функция существует ровно тогда, когда отображение биективно — то есть не склеивает разные входы в один выход.

И сегодня это ровно та же логика. Когда в normalizing flows (Dinh et al., 2014, модель NICE; затем RealNVP и Glow от OpenAI в 2018) инженеры конструируют слой нейросети, они специально проектируют его так, чтобы преобразование было обратимым аналитически — потому что иначе модель не сможет ни считать плотность вероятности, ни генерировать сэмплы. Четыреста лет спустя после Непера главный вопрос остался тем же: можно ли вернуться назад?


Что такое обратная функция: машина, работающая задом наперёд

Интуиция

Представь функцию как автомат по обмену валюты. Ты кладёшь в него рубли, он выдаёт доллары по фиксированному курсу. Это и есть $f$: вход — рубли, выход — доллары. Теперь представь второй автомат, стоящий рядом: кладёшь доллары — получаешь ровно те же рубли, что были у тебя вначале. Второй автомат — это $f^{-1}$, обратная функция. Ключевое свойство: если пропустить деньги через оба автомата подряд, ты вернёшься к исходной сумме. Ничего не потерялось.

Тот же образ, но ближе к работе с данными: функция — это шифрование, обратная функция — дешифрование. Ты преобразовал признак: вычел среднее, поделил на стандартное отклонение. Получилось число $-0{,}75$. Обратное преобразование «расшифровывает» его назад в исходную единицу измерения — в килограммы, рубли, миллисекунды. И заметь: расшифровка возможна только если шифр не терял информацию. Если бы преобразование округляло всё до целых, часть данных исчезла бы навсегда — и точного возврата не получилось бы.

Давай разберёмся с формальной стороной. Функция $f$ ставит в соответствие каждому $x$ из области определения ровно одно значение $y$. Обратная функция делает противоположное: по значению $y$ восстанавливает то самое $x$, из которого оно получилось. Из этого сразу следует ключевая деталь: область значений исходной функции становится областью определения обратной. Обратная функция «умеет обрабатывать» ровно те числа, которые исходная функция умела выдавать — и ни одним больше.

Определение: Пусть функция $f$ каждому $x$ из области определения $D(f)$ ставит в соответствие единственное значение $y \in E(f)$, причём разным $x$ соответствуют разные $y$. Тогда функция $g$, которая каждому $y \in E(f)$ ставит в соответствие то единственное $x$, для которого $f(x) = y$, называется обратной к функции $f$ и обозначается $f^{-1}$.

Формально это записывается двумя тождествами, которые стоит запомнить как «контрольную проверку»:

$$f^{-1}(f(x)) = x \quad \text{для всех } x \in D(f)$$$$f(f^{-1}(y)) = y \quad \text{для всех } y \in E(f)$$

⚠️ Самое важное предупреждение урока. Запись $f^{-1}(x)$ — это не $\dfrac{1}{f(x)}$. Значок $-1$ здесь означает «обратная операция», а не «минус первая степень». Для $f(x) = x + 3$ обратная функция это $f^{-1}(x) = x - 3$, а вовсе не $\dfrac{1}{x+3}$. Это две абсолютно разные вещи, и путаница между ними — ошибка номер один по частоте.

Примеры с разбором

Пример 1 (простой): найди функцию, обратную к $f(x) = x + 7$

Решение:

Шаг 1. Разберёмся, что делает функция: она прибавляет $7$ к аргументу.

Шаг 2. Чтобы отменить прибавление, нужно вычесть то же самое число:

$$f^{-1}(x) = x - 7$$

Шаг 3. Проверим наш ответ через тождество композиции:

$$f^{-1}(f(x)) = f^{-1}(x + 7) = (x + 7) - 7 = x \quad ✅$$$$f(f^{-1}(x)) = f(x - 7) = (x - 7) + 7 = x \quad ✅$$

Ответ: $f^{-1}(x) = x - 7$


Пример 2 (средний): найди функцию, обратную к $f(x) = 3x - 6$

Решение:

Шаг 1. Обозначим $y = 3x - 6$ и выразим $x$ через $y$. Прибавим $6$ к обеим частям:

$$y + 6 = 3x$$

Шаг 2. Разделим обе части на $3$:

$$x = \frac{y + 6}{3}$$

Шаг 3. Теперь переименуем переменные: у обратной функции аргумент принято обозначать буквой $x$:

$$f^{-1}(x) = \frac{x + 6}{3}$$

Проверим наш ответ на конкретном числе. Возьмём $x = 5$: $f(5) = 3 \cdot 5 - 6 = 9$. Теперь применим обратную к девятке: $f^{-1}(9) = \dfrac{9 + 6}{3} = \dfrac{15}{3} = 5$ ✅ — вернулись ровно туда, откуда стартовали.

Ответ: $f^{-1}(x) = \dfrac{x + 6}{3}$

📌 Обрати внимание на логику «раздевания луковицы»: исходная функция сначала умножает на $3$, потом вычитает $6$. Обратная выполняет противоположные действия в обратном порядке: сначала прибавляет $6$, потом делит на $3$. Это универсальный принцип — как снимать одежду в порядке, обратном тому, в котором надевал.


Пример 3 (сложный, прикладной): признак «рост человека» стандартизирован по формуле $z = \dfrac{x - 170}{8}$, где $x$ — рост в сантиметрах. Модель выдала предсказание $z = 1{,}5$. Какому росту это соответствует?

Решение:

Шаг 1. Запишем преобразование как функцию: $f(x) = \dfrac{x - 170}{8}$. Это классическая z-нормализация: из значения вычитается среднее $\mu = 170$, результат делится на стандартное отклонение $\sigma = 8$.

Шаг 2. Найдём обратную функцию. Обозначим $z = \dfrac{x - 170}{8}$ и выразим $x$. Умножим обе части на $8$:

$$8z = x - 170$$

Шаг 3. Прибавим $170$:

$$x = 8z + 170$$

То есть $f^{-1}(z) = 8z + 170$.

Шаг 4. Подставим предсказание модели $z = 1{,}5$:

$$x = 8 \cdot 1{,}5 + 170 = 12 + 170 = 182$$

Проверим наш ответ: $f(182) = \dfrac{182 - 170}{8} = \dfrac{12}{8} = 1{,}5$ ✅

Ответ: рост $182$ см.

Что здесь важно понять помимо арифметики. Обратное преобразование к z-нормализации линейно с коэффициентом $\sigma$. Это значит, что любая ошибка в стандартизованной шкале при возврате в исходные единицы умножается на $\sigma$. Если модель ошибается в среднем на $0{,}25$ по $z$, в сантиметрах это $0{,}25 \cdot 8 = 2$ см. Именно поэтому метрику качества почти всегда считают в исходных единицах, а не в нормализованных — иначе число красивое, но бессмысленное для заказчика.

Почему это важно

Практически любой ML-пайплайн — это цепочка преобразований данных, и почти каждое из них рано или поздно приходится разворачивать. StandardScaler, MinMaxScaler, PowerTransformer в scikit-learn — у всех есть метод inverse_transform, и это буквально реализация обратной функции. Логарифмирование целевой переменной перед обучением регрессии обязано сопровождаться экспонированием предсказаний. Кодирование категорий числами требует обратного словаря, чтобы вернуть человеку название класса, а не индекс 17. Даже токенизация текста в LLM — это функция «строка → последовательность чисел», и детокенизация, превращающая ответ модели обратно в читаемый текст, есть не что иное, как обратная к ней функция. Пока ты не научился думать о преобразованиях парами «туда — обратно», в коде будут регулярно всплывать предсказания в непонятных единицах.


Когда обратная функция существует: обратимость и монотонность

Интуиция

Представь турникет в метро, который считает людей, но не запоминает, кто именно прошёл. По числу «сорок семь» невозможно восстановить, какие конкретно люди прошли. Информация склеилась. Ровно то же самое происходит с функцией $y = x^2$: она склеивает $3$ и $-3$ в одно и то же значение $9$. И теперь, глядя на девятку, невозможно сказать, откуда она пришла. Обратной функции нет — не потому, что мы плохо ищем формулу, а потому, что информация физически потеряна.

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

Как проверить это на графике? Есть визуальный тест, который работает мгновенно: тест горизонтальной прямой. Проведи мысленно горизонтальную линию $y = c$ на любой высоте. Если хотя бы одна такая линия пересекает график больше одного раза — функция необратима, ведь двум разным $x$ соответствует одинаковый $y$. Для параболы $y = x^2$ прямая $y = 9$ пересекает график дважды (в точках $x = -3$ и $x = 3$) — приговор.

А теперь главный практический критерий, которым пользуются постоянно:

Теорема (достаточное условие обратимости): Если функция строго монотонна (строго возрастает или строго убывает) на промежутке, то на этом промежутке она обратима, и обратная функция монотонна в том же направлении.

Почему это работает? Строго возрастающая функция никогда не возвращается к уже принятому значению: как только $x$ увеличился, $y$ обязан увеличиться. Значит, склеивания не бывает в принципе. Это невероятно удобно: вместо того чтобы возиться с определением инъективности, достаточно посмотреть на монотонность.

Определение: Функция $f$ называется обратимой на множестве $D$, если для любых $x_1, x_2 \in D$ из $x_1 \neq x_2$ следует $f(x_1) \neq f(x_2)$. Иными словами, каждое своё значение функция принимает ровно при одном значении аргумента.

И самый полезный приём на практике: если функция необратима на всей области определения, её почти всегда можно сузить до промежутка, где она монотонна, и обратить уже там. Парабола $y = x^2$ необратима на $\mathbb{R}$, но на $[0;+\infty)$ она строго возрастает — и там у неё есть законная обратная $y = \sqrt{x}$. Именно так, кстати, определяются арксинус и арккосинус: синус необратим на всей прямой (он периодичен и склеивает бесконечно много точек), поэтому его сужают до отрезка $\left[-\frac{\pi}{2}; \frac{\pi}{2}\right]$.

Примеры с разбором

Пример 1 (простой): обратима ли функция $f(x) = x^2$ на всей числовой прямой?

Решение:

Шаг 1. Проверим определение обратимости: попробуем найти два разных аргумента с одинаковым значением.

Шаг 2. Возьмём $x_1 = 4$ и $x_2 = -4$. Тогда:

$$f(4) = 16, \qquad f(-4) = 16$$

Шаг 3. Аргументы разные ($4 \neq -4$), а значения совпали. Условие обратимости нарушено.

Ответ: функция необратима на $\mathbb{R}$. Контрпример: $f(4) = f(-4) = 16$.


Пример 2 (средний): найди обратную к $f(x) = x^2$ на промежутке $[0; +\infty)$ и укажи её область определения

Решение:

Шаг 1. На $[0; +\infty)$ функция $y = x^2$ строго возрастает (чем больше неотрицательное $x$, тем больше квадрат), значит, она обратима.

Шаг 2. Найдём область значений: при $x \geq 0$ квадрат пробегает все значения от $0$ до $+\infty$, то есть $E(f) = [0; +\infty)$.

Шаг 3. Выразим $x$ из уравнения $y = x^2$ при условии $x \geq 0$. Извлекаем корень, и поскольку $x$ неотрицателен, берём только арифметический корень:

$$x = \sqrt{y}$$

Шаг 4. Переименуем переменную: $f^{-1}(x) = \sqrt{x}$. Область определения обратной функции равна области значений исходной:

$$D(f^{-1}) = E(f) = [0; +\infty)$$

Проверим наш ответ: $f(3) = 9$, а $f^{-1}(9) = \sqrt{9} = 3$ ✅

Ответ: $f^{-1}(x) = \sqrt{x}$, $D(f^{-1}) = [0; +\infty)$

📌 Если бы мы сузили параболу на $(-\infty; 0]$, обратной оказалась бы функция $f^{-1}(x) = -\sqrt{x}$ — минус появляется потому, что мы восстанавливаем отрицательный аргумент. Один и тот же «кусок» алгебры даёт две разные обратные функции в зависимости от того, какую ветвь мы выбрали.


Пример 3 (сложный): функция $f(x) = x^2 - 4x + 3$ задана на промежутке $[2; +\infty)$. Докажи обратимость и найди $f^{-1}$

Решение:

Шаг 1. Выделим полный квадрат — это сразу покажет и вершину, и монотонность:

$$x^2 - 4x + 3 = (x^2 - 4x + 4) - 4 + 3 = (x-2)^2 - 1$$

Шаг 2. Вершина параболы находится в точке $x = 2$, ветви направлены вверх. Значит, на $[2; +\infty)$ функция строго возрастает — а строго монотонная функция обратима. Обратимость доказана.

Шаг 3. Найдём область значений. При $x = 2$ имеем минимум $f(2) = -1$; дальше значения растут неограниченно:

$$E(f) = [-1; +\infty)$$

Шаг 4. Выразим $x$. Из $y = (x-2)^2 - 1$ получаем:

$$(x - 2)^2 = y + 1$$

Шаг 5. Извлекаем корень. Здесь критический момент: $x \geq 2$, поэтому $x - 2 \geq 0$, и перед корнем ставим плюс:

$$x - 2 = \sqrt{y + 1} \quad \Longrightarrow \quad x = 2 + \sqrt{y+1}$$

Шаг 6. Записываем ответ и область определения:

$$f^{-1}(x) = 2 + \sqrt{x+1}, \qquad D(f^{-1}) = [-1; +\infty)$$

Проверим наш ответ: возьмём $x = 4$. Тогда $f(4) = 16 - 16 + 3 = 3$. Обратно: $f^{-1}(3) = 2 + \sqrt{4} = 2 + 2 = 4$ ✅

Ответ: $f^{-1}(x) = 2 + \sqrt{x+1}$ на $[-1; +\infty)$

Почему это важно

Вопрос «а не склеивает ли моё преобразование информацию?» — один из самых практически весомых в работе с данными. Классический пример из ML: softmax необратим. Он превращает вектор логитов в вероятности, но при этом $\text{softmax}(\mathbf{z}) = \text{softmax}(\mathbf{z} + c)$ для любой константы $c$ — сдвиг всех логитов на одно и то же число ничего не меняет в выходе, потому что общий множитель $e^{c}$ сокращается в числителе и знаменателе. Информация о «абсолютном уровне» логитов теряется навсегда, как знак у квадрата. Именно поэтому по вероятностям нельзя однозначно восстановить логиты — можно только зафиксировать соглашение (например, потребовать, чтобы первый логит был нулём), то есть сузить область определения, как мы сужали параболу.

Тот же вопрос всплывает и в архитектуре сетей. Функция активации ReLU, $\text{ReLU}(x) = \max(0, x)$, необратима: все отрицательные входы она склеивает в ноль. Это одна из причин, почему в normalizing flows её не используют — там нужны строго монотонные активации (или специальные обратимые связывающие слои). А вот эмбеддинги, свёртки и вообще любые матричные умножения обратимы ровно тогда, когда матрица невырождена, то есть $\det A \neq 0$ — это тот же самый критерий «не склеивать разные входы», просто записанный на языке линейной алгебры.


Как найти формулу обратной функции: алгоритм из трёх шагов

Интуиция

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

Представь, что у тебя есть рецепт: «возьми число, умножь на 4, прибавь 3, потом извлеки квадратный корень». Чтобы восстановить исходное число по результату, ты идёшь по рецепту задом наперёд, заменяя каждое действие противоположным: «возведи в квадрат, вычти 3, раздели на 4». Алгебра просто формализует эту идею, чтобы она работала и там, где «раздевание луковицы» напрямую не видно — например, когда $x$ встречается в формуле дважды.

Алгоритм поиска обратной функции:

1. Записать $y = f(x)$ и убедиться, что функция обратима (монотонна) на рассматриваемом промежутке.

2. Решить уравнение относительно $x$: выразить $x$ через $y$. Если корней формально получается два, выбрать тот, который попадает в область определения исходной функции.

3. Поменять обозначения переменных местами: то, что выражено через $y$, записать как функцию от $x$. Указать $D(f^{-1}) = E(f)$.

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

Примеры с разбором

Пример 1 (простой): найди обратную к $f(x) = 5x + 2$

Решение:

Шаг 1. Записываем $y = 5x + 2$. Функция линейная с угловым коэффициентом $5 \neq 0$, значит, строго возрастает на всей прямой и обратима.

Шаг 2. Выражаем $x$:

$$y - 2 = 5x \quad \Longrightarrow \quad x = \frac{y - 2}{5}$$

Шаг 3. Меняем обозначения:

$$f^{-1}(x) = \frac{x - 2}{5}$$

Проверим наш ответ: $f(3) = 17$, $f^{-1}(17) = \dfrac{15}{5} = 3$ ✅

Ответ: $f^{-1}(x) = \dfrac{x-2}{5}$, $D(f^{-1}) = \mathbb{R}$


Пример 2 (средний): найди обратную к дробно-линейной функции $f(x) = \dfrac{2x+1}{x-3}$

Решение:

Шаг 1. Область определения: знаменатель не равен нулю, значит $x \neq 3$, то есть $D(f) = (-\infty; 3) \cup (3; +\infty)$.

Шаг 2. Записываем $y = \dfrac{2x+1}{x-3}$ и умножаем обе части на $(x-3)$:

$$y(x - 3) = 2x + 1$$

Шаг 3. Раскрываем скобки и собираем все слагаемые с $x$ в одну сторону:

$$yx - 3y = 2x + 1$$$$yx - 2x = 3y + 1$$

Шаг 4. Выносим $x$ за скобку:

$$x(y - 2) = 3y + 1$$

Шаг 5. Делим на $(y-2)$ — обрати внимание, деление законно при $y \neq 2$, и это как раз означает, что значение $y = 2$ функция $f$ никогда не принимает:

$$x = \frac{3y + 1}{y - 2}$$

Шаг 6. Меняем обозначения:

$$f^{-1}(x) = \frac{3x + 1}{x - 2}, \qquad D(f^{-1}) = (-\infty; 2) \cup (2; +\infty)$$

Проверим наш ответ на числе. Возьмём $x = 4$: $f(4) = \dfrac{2 \cdot 4 + 1}{4 - 3} = \dfrac{9}{1} = 9$. Обратно: $f^{-1}(9) = \dfrac{3 \cdot 9 + 1}{9 - 2} = \dfrac{28}{7} = 4$ ✅

Ответ: $f^{-1}(x) = \dfrac{3x+1}{x-2}$ при $x \neq 2$

📌 Заметь красивую симметрию: у исходной функции выколота точка $x = 3$ в области определения и значение $y = 2$ в области значений. У обратной всё ровно наоборот — выколота точка $x = 2$ в области определения и значение $y = 3$ в области значений. Это не совпадение, а прямое следствие правила $D(f^{-1}) = E(f)$ и $E(f^{-1}) = D(f)$.


Пример 3 (сложный, прикладной): найди функцию, обратную к сигмоиде $\sigma(x) = \dfrac{1}{1 + e^{-x}}$

Сигмоида — главная функция бинарной классификации: она берёт логит (любое вещественное число) и превращает его в вероятность из интервала $(0; 1)$. Обратная к ней называется логит-функцией, и именно она стоит в основе логистической регрессии.

Решение:

Шаг 1. Проверим обратимость. Показательная функция $e^{-x}$ строго убывает, значит $1 + e^{-x}$ тоже убывает и всегда положительна, а обратная величина $\dfrac{1}{1+e^{-x}}$ — строго возрастает. Функция монотонна, следовательно, обратима. Область значений: при $x \to -\infty$ знаменатель уходит в бесконечность и $\sigma \to 0$, при $x \to +\infty$ знаменатель стремится к $1$ и $\sigma \to 1$. Значит $E(\sigma) = (0; 1)$ — концы не достигаются.

Шаг 2. Обозначим $y = \dfrac{1}{1 + e^{-x}}$ и перевернём обе части (обе положительны, так что это законно):

$$\frac{1}{y} = 1 + e^{-x}$$

Шаг 3. Выразим экспоненту:

$$e^{-x} = \frac{1}{y} - 1 = \frac{1 - y}{y}$$

Шаг 4. Логарифмируем обе части. Логарифм законен, потому что при $0 < y < 1$ дробь $\dfrac{1-y}{y}$ строго положительна:

$$-x = \ln\!\left(\frac{1-y}{y}\right)$$

Шаг 5. Умножаем на $-1$ и пользуемся свойством $-\ln a = \ln \dfrac{1}{a}$:

$$x = \ln\!\left(\frac{y}{1-y}\right)$$

Шаг 6. Меняем обозначения:

$$\sigma^{-1}(x) = \operatorname{logit}(x) = \ln\!\left(\frac{x}{1-x}\right), \qquad D(\sigma^{-1}) = (0; 1)$$

Проверим наш ответ. Возьмём $x = 0$: $\sigma(0) = \dfrac{1}{1+e^{0}} = \dfrac{1}{2} = 0{,}5$. Обратно: $\operatorname{logit}(0{,}5) = \ln \dfrac{0{,}5}{0{,}5} = \ln 1 = 0$ ✅

Ответ: $\sigma^{-1}(x) = \ln\dfrac{x}{1-x}$, определена только при $0 < x < 1$

Практический вывод, за который тебе скажут спасибо в проде. Область определения логита — открытый интервал $(0;1)$. Если модель по каким-то причинам выдала ровно $0$ или ровно $1$ (например, из-за переполнения при вычислении экспоненты в float32), логит вернёт $-\infty$ или $+\infty$, и градиент дальше по цепочке превратится в NaN. Именно поэтому в реальном коде всегда делают клиппинг: p = np.clip(p, 1e-7, 1 - 1e-7). Это не «магия из шаблона» — это прямое следствие того, что у обратной функции есть область определения, и точки $0$ и $1$ в неё не входят.

Почему это важно

Алгоритм «выразить $x$» — это ровно то, чем занимается инженер, когда пишет обратное преобразование вручную. Но в ML он играет и более глубокую роль. Логистическая регрессия построена именно на том, что логит — обратная к сигмоиде: модель предсказывает $\ln \dfrac{p}{1-p} = w^{T}x + b$, то есть линейна в шкале логитов, а не вероятностей. Понимание этого объясняет кучу практических вещей: почему коэффициенты логистической регрессии интерпретируются как логарифмы отношения шансов, почему изменение признака на единицу даёт постоянный прирост логита, но переменный прирост вероятности, и почему вблизи $p = 0{,}5$ модель «чувствительнее», чем на краях. Дробно-линейные функции, которые мы разбирали во втором примере, тоже не абстракция: преобразования такого вида появляются в проективной геометрии и в компьютерном зрении, где перевод координат камеры в координаты изображения описывается именно дробно-линейными (гомографическими) формулами, и обращать их приходится постоянно.


График обратной функции: зеркало по прямой y = x

Интуиция

Представь, что ты записал точку на графике функции: $(2;\,8)$ для $f(x) = x^3$. Это значит «вход $2$, выход $8$». А что означает та же информация для обратной функции? «Вход $8$, выход $2$» — то есть точка $(8;\,2)$. Координаты просто поменялись местами.

А теперь ключевое геометрическое наблюдение: обмен координат точки местами — это и есть отражение относительно прямой $y = x$. Возьми лист бумаги с нарисованными осями, сложи его точно по биссектрисе первого координатного угла — точка $(2;8)$ ляжет ровно на $(8;2)$. Значит, весь график обратной функции получается из графика исходной одним движением: зеркальным отражением относительно прямой $y = x$.

Свойство: Графики функций $y = f(x)$ и $y = f^{-1}(x)$, построенные в одной системе координат, симметричны относительно прямой $y = x$.

Это невероятно мощный инструмент. Тебе не нужно строить таблицу значений для обратной функции — достаточно нарисовать исходную и мысленно отразить её. Именно так проще всего запомнить вид графика логарифма: это отражённая экспонента. И вид графика арксинуса: это отражённый кусок синуса.

Из симметрии вытекает и полезное следствие про точки пересечения. Если функция строго возрастает, то точки пересечения графиков $y = f(x)$ и $y = f^{-1}(x)$ лежат на прямой $y = x$ — а значит, уравнение $f(x) = f^{-1}(x)$ можно заменить на гораздо более простое $f(x) = x$. ⚠️ Но для убывающих функций этот приём не работает — к этому мы вернёмся в разделе про ошибки.

Примеры с разбором

Пример 1 (простой): точка $(3;\,10)$ лежит на графике обратимой функции $f$. Какая точка обязательно лежит на графике $f^{-1}$?

Решение:

Шаг 1. Принадлежность точки $(3;10)$ графику $f$ означает $f(3) = 10$.

Шаг 2. По определению обратной функции: если $f(3) = 10$, то $f^{-1}(10) = 3$.

Шаг 3. Значит, графику обратной функции принадлежит точка с координатами $(10;\,3)$ — те же числа, поменянные местами.

Ответ: точка $(10;\,3)$


Пример 2 (средний): найди точки пересечения графика $f(x) = 2x - 4$ с графиком обратной функции

Решение:

Шаг 1. Найдём обратную: $y = 2x - 4 \Rightarrow x = \dfrac{y+4}{2}$, то есть $f^{-1}(x) = \dfrac{x+4}{2}$.

Шаг 2. Функция $f$ строго возрастает (угловой коэффициент $2 > 0$), поэтому пересечение с обратной ищем на прямой $y = x$:

$$2x - 4 = x$$

Шаг 3. Решаем: $x = 4$.

Шаг 4. Проверим напрямую, приравняв функции друг к другу:

$$2x - 4 = \frac{x+4}{2} \quad \Longrightarrow \quad 4x - 8 = x + 4 \quad \Longrightarrow \quad 3x = 12 \quad \Longrightarrow \quad x = 4$$

Результат совпал ✅

Проверим наш ответ: $f(4) = 2 \cdot 4 - 4 = 4$, и $f^{-1}(4) = \dfrac{4+4}{2} = 4$. Обе функции проходят через точку $(4;4)$, которая действительно лежит на прямой $y = x$ ✅

Ответ: единственная точка пересечения — $(4;\,4)$

Почему это важно

Симметрия относительно $y = x$ — это не только способ быстро нарисовать график. Она объясняет одно из самых полезных соотношений математического анализа, которое ты встретишь дальше в курсе:

$$\left(f^{-1}\right)'(y) = \frac{1}{f'(x)}, \quad \text{где } y = f(x)$$

Производная обратной функции — величина, обратная производной исходной. Геометрически это и есть отражение: касательная с наклоном $k$ после отражения относительно $y=x$ получает наклон $\frac{1}{k}$. А в машинном обучении это соотношение работает буквально в проде: в normalizing flows модель обучается на плотностях вероятности, и при замене переменных плотность домножается на модуль якобиана обратного преобразования. Чтобы обучение было вычислительно посильным, слои специально конструируют так, чтобы этот якобиан был треугольной матрицей и его определитель считался за $O(n)$, а не за $O(n^3)$. Вся архитектура RealNVP и Glow — это, по сути, инженерное решение одной задачи: «как построить обратимое преобразование с дешёвым якобианом».


Свойства обратной функции: что меняется местами, а что сохраняется

Интуиция

Обратная функция — это не какая-то новая независимая сущность, а «зеркальный двойник» исходной. Поэтому все её свойства выводятся из свойств оригинала по простому правилу: роли входа и выхода меняются местами, а характер поведения сохраняется. Если исходная функция росла — обратная тоже растёт (отражение относительно $y=x$ не переворачивает направление). Если исходная убывала — обратная тоже убывает.

Давай соберём все свойства в одном месте.

Свойства обратной функции:

1. $D(f^{-1}) = E(f)$ и $E(f^{-1}) = D(f)$ — области определения и значений меняются местами.

2. $f^{-1}(f(x)) = x$ и $f(f^{-1}(x)) = x$ — композиция функции с обратной даёт тождественное преобразование.

3. $\left(f^{-1}\right)^{-1} = f$ — обратная к обратной есть исходная функция.

4. Если $f$ строго возрастает, то $f^{-1}$ строго возрастает; если $f$ строго убывает, то и $f^{-1}$ строго убывает.

5. Графики $f$ и $f^{-1}$ симметричны относительно прямой $y = x$.

6. Если $f$ непрерывна и монотонна на промежутке, то $f^{-1}$ тоже непрерывна на соответствующем промежутке.

Свойство 3 стоит прочувствовать: пара «функция — обратная» абсолютно симметрична. Логарифм обратен экспоненте, и экспонента обратна логарифму — ни одна из них не «главнее». Точно так же нормализация и денормализация — просто два взгляда на одну связку.

Примеры с разбором

Пример 1 (средний): для функции $f(x) = \sqrt{x-1} + 2$ найди $f^{-1}$, а также $D$ и $E$ обеих функций

Решение:

Шаг 1. Найдём область определения исходной функции. Подкоренное выражение должно быть неотрицательным:

$$x - 1 \geq 0 \quad \Longrightarrow \quad D(f) = [1; +\infty)$$

Шаг 2. Найдём область значений. Корень $\sqrt{x-1}$ пробегает все значения от $0$ до $+\infty$, прибавление двойки сдвигает всё вверх:

$$E(f) = [2; +\infty)$$

Шаг 3. Проверим обратимость: корень строго возрастает, сдвиг на константу монотонности не меняет, значит функция строго возрастает и обратима.

Шаг 4. Выразим $x$ из $y = \sqrt{x-1} + 2$. Переносим двойку:

$$\sqrt{x-1} = y - 2$$

Шаг 5. Возводим в квадрат (законно, так как $y - 2 \geq 0$ по области значений):

$$x - 1 = (y-2)^2 \quad \Longrightarrow \quad x = (y-2)^2 + 1$$

Шаг 6. Меняем обозначения и выписываем области по свойству 1:

$$f^{-1}(x) = (x-2)^2 + 1, \qquad D(f^{-1}) = [2; +\infty), \qquad E(f^{-1}) = [1; +\infty)$$

Проверим наш ответ: $f(5) = \sqrt{4} + 2 = 4$, а $f^{-1}(4) = (4-2)^2 + 1 = 4 + 1 = 5$ ✅

Ответ: $f^{-1}(x) = (x-2)^2 + 1$ на $[2; +\infty)$

⚠️ Обрати внимание: формула $(x-2)^2 + 1$ сама по себе — парабола, определённая на всей прямой. Но как обратная функция она живёт только на $[2;+\infty)$. Без указания области определения ответ был бы неверным: например, $f^{-1}(0) = 5$ формально посчиталось бы, хотя значение $0$ функция $f$ никогда не принимает.


Пример 2 (сложный): известно, что $f$ строго убывает и обратима, $f(1) = 8$, $f(5) = 2$. Найди $f^{-1}(8)$, $f^{-1}(2)$ и определи характер монотонности $f^{-1}$

Решение:

Шаг 1. По определению обратной функции равенство $f(1) = 8$ равносильно $f^{-1}(8) = 1$.

Шаг 2. Аналогично $f(5) = 2$ равносильно $f^{-1}(2) = 5$.

Шаг 3. Определим монотонность обратной. Сравним два известных значения: аргумент вырос с $2$ до $8$, а значение обратной функции упало с $5$ до $1$. Больший аргумент — меньшее значение, значит $f^{-1}$ убывает.

Шаг 4. Это согласуется со свойством 4: у убывающей функции обратная тоже убывает.

Ответ: $f^{-1}(8) = 1$, $f^{-1}(2) = 5$, функция $f^{-1}$ строго убывает.

Почему это важно

Свойство «$D$ и $E$ меняются местами» — это ровно то, что ломает продакшн чаще всего. Ты обучил MinMaxScaler на трейне, где признак «возраст» лежал в диапазоне от $18$ до $65$. Обратное преобразование умеет корректно работать с числами из $[0;1]$. Если модель выдаст $1{,}3$ (а линейная регрессия легко может выдать значение вне диапазона обучения), обратное преобразование честно вернёт возраст $79$ лет — формально арифметика сработает, но это экстраполяция за пределы области определения, и доверять ей нельзя. Понимание, что у обратной функции есть своя область определения, унаследованная от области значений исходной, — это и есть тот самый «математический санитарный контроль» над пайплайном.

А свойство сохранения монотонности объясняет важный практический факт: монотонное преобразование целевой переменной не меняет порядок объектов. Если ты обучаешь ранжирующую модель и логарифмируешь таргет, взаимный порядок предсказаний сохранится — потому что логарифм строго возрастает, и его обратная тоже. Поэтому метрики, зависящие только от порядка (NDCG, ROC-AUC), к монотонным преобразованиям скора нечувствительны. А вот метрики, зависящие от абсолютных значений (MAE, RMSE), меняются радикально — и считать их нужно только после обратного преобразования.


Обратные функции в машинном обучении: практический слой

Интуиция

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

Логарифм и экспонента. Целевая переменная со скошенным распределением (цены, зарплаты, длительность сессий) обычно логарифмируется: $t = \ln(1 + y)$. Обратная связка: $y = e^{t} - 1$. Единица тут не для красоты — она позволяет корректно обрабатывать $y = 0$, потому что $\ln 0$ не определён, а $\ln 1 = 0$.

Стандартизация и её обращение. $z = \dfrac{x - \mu}{\sigma}$ и обратно $x = \sigma z + \mu$. Линейная пара, самая простая и самая частая.

Сигмоида и логит. Разобрали выше: $p = \dfrac{1}{1+e^{-x}}$ и $x = \ln\dfrac{p}{1-p}$.

Матричное умножение и обратная матрица. Преобразование $\mathbf{y} = A\mathbf{x}$ обратимо тогда и только тогда, когда $\det A \neq 0$; обратное преобразование — $\mathbf{x} = A^{-1}\mathbf{y}$. Это тот же критерий «не склеивать разные входы», перенесённый на многомерный случай.

Примеры с разбором

Пример 1 (средний, прикладной): модель обучалась предсказывать $t = \ln(1+y)$, где $y$ — цена в тысячах рублей. На тестовом объекте модель выдала $t = 3{,}87$. Какова предсказанная цена?

Решение:

Шаг 1. Запишем преобразование как функцию: $f(y) = \ln(1+y)$, определена при $y > -1$, строго возрастает (логарифм возрастает, внутренняя функция возрастает), значит обратима.

Шаг 2. Выразим $y$. Из $t = \ln(1+y)$ по определению логарифма:

$$1 + y = e^{t}$$

Шаг 3. Получаем обратную функцию:

$$f^{-1}(t) = e^{t} - 1$$

Шаг 4. Подставляем $t = 3{,}87$. Используем $e^{3{,}87} \approx 47{,}94$:

$$y \approx 47{,}94 - 1 = 46{,}94$$

Ответ: предсказанная цена приблизительно $46{,}9$ тысяч рублей.

📌 Профессиональная тонкость. Обратное преобразование нелинейного вида даёт не среднее, а медиану исходного распределения — это следствие неравенства Йенсена: для выпуклой функции $E[e^{t}] \geq e^{E[t]}$. Проще говоря, экспонирование среднего логарифма систематически занижает среднее исходной величины. Если бизнесу нужна именно средняя цена, применяют поправку (например, поправку Даффи). Это ровно тот случай, когда знание свойств обратной функции превращается в деньги.


Пример 2 (сложный, прикладной): покажи, что softmax необратим, и объясни, как это чинят

Softmax для вектора логитов $\mathbf{z} = (z_1, \dots, z_n)$ определён как

$$p_i = \frac{e^{z_i}}{\sum_{j=1}^{n} e^{z_j}}$$

Решение:

Шаг 1. Возьмём конкретный вектор $\mathbf{z} = (1;\,2;\,3)$ и вычислим экспоненты: $e^1 \approx 2{,}718$, $e^2 \approx 7{,}389$, $e^3 \approx 20{,}086$. Сумма $\approx 30{,}193$.

Шаг 2. Получаем вероятности:

$$p \approx (0{,}090;\ 0{,}245;\ 0{,}665)$$

Шаг 3. Теперь сдвинем все логиты на $c = 1$: $\mathbf{z}' = (2;\,3;\,4)$. Каждая экспонента умножится на $e$:

$$p'_i = \frac{e \cdot e^{z_i}}{\sum_j e \cdot e^{z_j}} = \frac{e^{z_i}}{\sum_j e^{z_j}} = p_i$$

Множитель $e$ сократился — вероятности получились точно те же.

Шаг 4. Значит, двум разным входам $(1;2;3)$ и $(2;3;4)$ соответствует один и тот же выход. Условие обратимости нарушено, обратной функции не существует.

Шаг 5. Как чинят: сужают область определения — ровно тем же приёмом, которым мы сужали параболу до $[0;+\infty)$. Договариваются, например, что $z_n = 0$ (фиксируют «опорный класс»). При таком ограничении softmax становится обратимым, и восстановить логиты можно по формуле

$$z_i = \ln\frac{p_i}{p_n}$$

Проверим наш ответ на числах. Для $p \approx (0{,}090;\ 0{,}245;\ 0{,}665)$ и опорного третьего класса: $z_1 = \ln\dfrac{0{,}090}{0{,}665} \approx \ln 0{,}135 \approx -2$, $z_2 = \ln\dfrac{0{,}245}{0{,}665} \approx \ln 0{,}368 \approx -1$, $z_3 = \ln 1 = 0$. Получили $(-2;-1;0)$ — это исходный вектор $(1;2;3)$, сдвинутый на $-3$ ✅ Восстановилось всё, кроме сдвига — ровно та информация, которую softmax и терял.

Ответ: softmax необратим из-за инвариантности к сдвигу; обратимость восстанавливается фиксацией опорного класса, после чего $z_i = \ln(p_i / p_n)$.

Почему это важно

Именно здесь школьная теорема про обратимость превращается в архитектурные решения. Обратимые нейросети (i-RevNet, RealNVP, Glow) строят так, чтобы каждый слой был биекцией — тогда сеть можно прогонять в обе стороны: вперёд для распознавания, назад для генерации. Побочный бонус огромен: обратимой сети не нужно хранить активации всех слоёв в памяти при обратном распространении ошибки, потому что их можно пересчитать, «отмотав» преобразование назад. Это экономит гигабайты видеопамяти при обучении глубоких моделей. А в диффузионных моделях вся идея прямого и обратного процесса — это та же логика «прямое преобразование зашумляет, обратное восстанавливает», только вероятностная. Понимая, что значит «функция обратима», ты читаешь эти статьи не как магию, а как инженерию.


Практика: 30 заданий

Базовые (задания 1-10)

Задание 1: Найди функцию, обратную к $f(x) = x + 9$.


Задание 2: Найди функцию, обратную к $f(x) = 4x$.


Задание 3: Найди функцию, обратную к $f(x) = 2x - 8$.


Задание 4: Найди функцию, обратную к $f(x) = x^3$.


Задание 5: Найди функцию, обратную к $f(x) = x^2$ на промежутке $x \geq 0$.


Задание 6: Обратима ли функция $f(x) = x^2 - 5$ на всей числовой прямой? Обоснуй.


Задание 7: Найди функцию, обратную к $f(x) = 7 - x$. Что в ней необычного?


Задание 8: Найди функцию, обратную к $f(x) = \dfrac{1}{x}$, $x \neq 0$.


Задание 9: Известно, что $f^{-1}(3) = 5$. Чему равно $f(5)$?


Задание 10: Температура переводится из Цельсия в Фаренгейт по формуле $F = 1{,}8C + 32$. Найди обратную формулу и вычисли, скольким градусам Цельсия соответствуют $98{,}6\ °F$.


Средние (задания 11-20)

Задание 11: Найди функцию, обратную к $f(x) = \dfrac{2x+3}{5}$.


Задание 12: Найди обратную функцию для $f(x) = \sqrt{x+4}$ и укажи $D(f^{-1})$.


Задание 13: Найди обратную функцию для $f(x) = x^2 - 6x + 11$, заданной на промежутке $[3; +\infty)$.


Задание 14: Найди обратную функцию для $f(x) = \dfrac{x+2}{x-1}$.


Задание 15: Найди обратную функцию к $f(x) = 2^x$ и укажи области определения и значений обеих функций.


Задание 16: Найди обратную функцию для $f(x) = \ln x + 1$.


Задание 17: Функция $f(x) = 3x - 5$ задана на отрезке $[0; 4]$. Найди $D(f^{-1})$ и $E(f^{-1})$.


Задание 18: Признак нормализован методом min-max: $x' = \dfrac{x - 20}{80 - 20}$, где $20$ и $80$ — минимум и максимум по обучающей выборке. Модель выдала нормализованное значение $0{,}35$. Восстанови исходное значение.


Задание 19: Классификатор выдал вероятность $p = 0{,}8$. Найди соответствующий логит, то есть значение $\sigma^{-1}(0{,}8)$.


Задание 20: Для функции $f(x) = 3x + 1$ вычисли $f^{-1}(f(7))$ двумя способами: через свойство композиции и прямым счётом.


Продвинутые (задания 21-30)

Задание 21: Функция $f(x) = x^2 + 4x + 7$ задана на промежутке $[-2; +\infty)$. Найди $f^{-1}$ и её область определения.


Задание 22: Найди обратную функцию к $f(x) = x^3 - 2$ и вычисли $f^{-1}(25)$.


Задание 23: Найди все точки пересечения графика функции $f(x) = x^3$ с графиком её обратной функции.


Задание 24: Найди обратную функцию для $f(x) = \dfrac{3x-1}{x+2}$ и укажи области определения обеих функций.


Задание 25: Модель регрессии обучалась на преобразованном таргете $t = \ln(1+y)$, где $y$ — длительность сессии в секундах. На новом объекте модель предсказала $t = 3{,}5$. Найди предсказание в секундах. Известно $e^{3{,}5} \approx 33{,}12$.


Задание 26: Докажи, что softmax не имеет обратной функции. Приведи конкретный контрпример для вектора из трёх компонент.


Задание 27: Функция $f(x) = \sqrt{x} + x$ задана на $[0;+\infty)$. Докажи её обратимость и найди $f^{-1}(6)$.


Задание 28: Признак стандартизован: $z = \dfrac{x - 50}{12}$. (а) Модель предсказала $z = -0{,}75$ — восстанови исходное значение. (б) Средняя абсолютная ошибка модели в стандартизованной шкале составляет $0{,}2$. Чему она равна в исходных единицах?


Задание 29: Докажи: если функция $f$ строго возрастает и обратима на промежутке, то её обратная $f^{-1}$ тоже строго возрастает.


Задание 30: Отладка кода. Найди ошибку и исправь её.

import numpy as np

def logit(p):
    return np.log(p / (1 - p))

p = np.array([0.0, 0.5, 0.99, 1.0])
print(logit(p))
# ожидали 4 конечных числа
# получили: [-inf  0.  4.595  inf] + RuntimeWarning: divide by zero

Частые ошибки

Ошибка 1: считают, что $f^{-1}(x)$ — это $\dfrac{1}{f(x)}$

Неправильно: для $f(x) = x + 3$ записать обратную как $f^{-1}(x) = \dfrac{1}{x+3}$.

Правильно: $f^{-1}(x) = x - 3$. Значок $-1$ означает «обратная операция», а не «минус первая степень». Проверяется мгновенно тождеством: $f^{-1}(f(2)) = f^{-1}(5) = 2$ ✅, тогда как $\dfrac{1}{f(2)} = \dfrac{1}{5}$ — никакого отношения к исходной двойке.

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


Ошибка 2: обращают квадратичную функцию, не ограничив область определения

Неправильно: для $f(x) = x^2$ написать $f^{-1}(x) = \pm\sqrt{x}$.

Правильно: запись с $\pm$ вообще не задаёт функцию — функция обязана каждому аргументу сопоставлять ровно одно значение. Сначала нужно сузить $f$ до промежутка монотонности: на $[0;+\infty)$ обратная равна $\sqrt{x}$, на $(-\infty;0]$ обратная равна $-\sqrt{x}$. Два разных промежутка — две разные обратные функции.

💡 Почему важно: без указания промежутка задача просто не имеет решения, и на экзамене за такой ответ снимают баллы целиком. А в коде это выливается в потерю знака: то же самое происходит, когда через abs() или ReLU прогоняют данные, а потом пытаются их восстановить.


Ошибка 3: забывают, что область определения обратной функции — это область значений исходной

Неправильно: для $f(x) = \sqrt{x-1} + 2$ найти $f^{-1}(x) = (x-2)^2 + 1$ и объявить, что она определена на всей числовой прямой.

Правильно: $D(f^{-1}) = E(f) = [2;+\infty)$. Формула $(x-2)^2 + 1$ технически считается и при $x = 0$, давая $5$, но это ложное значение: функция $f$ никогда не выдаёт $0$, значит и обращать нечего.

💡 Почему важно: ровно на этом ломаются пайплайны обработки данных. MinMaxScaler.inverse_transform честно посчитает результат и для значения $1{,}4$, хотя обучался на диапазоне $[0;1]$ — а это уже экстраполяция, которой в отчёте быть не должно. Область определения — это не формальность, а граница доверия к результату.


Ошибка 4: думают, что график обратной функции — отражение относительно оси $Ox$ или $Oy$

Неправильно: нарисовать график $y = \log_2 x$, отразив $y = 2^x$ относительно оси $Oy$.

Правильно: отражение всегда относительно прямой $y = x$ — биссектрисы первого и третьего координатных углов. Проверяется по точке: у экспоненты есть точка $(3;\,8)$, значит у логарифма обязана быть точка $(8;\,3)$. Отражение относительно $Oy$ дало бы $(-3;\,8)$ — а $\log_2$ отрицательных чисел вообще не существует.

💡 Почему важно: отражение относительно осей соответствует совсем другим преобразованиям ($y = f(-x)$ и $y = -f(x)$), и подмена одного другим ломает всю геометрическую интуицию, которая дальше понадобится при работе с производными и с обратными тригонометрическими функциями.


Ошибка 5: считают, что графики $f$ и $f^{-1}$ всегда пересекаются только на прямой $y = x$

Неправильно: решая уравнение $f(x) = f^{-1}(x)$, автоматически заменять его на $f(x) = x$ для любой функции.

Правильно: этот приём законен только для строго возрастающих функций. Для убывающих он даёт неполный ответ. Показательный контрпример: $f(x) = \dfrac{1}{x}$ — эта функция обратна самой себе, поэтому графики совпадают целиком, и точек «пересечения» бесконечно много, хотя на прямой $y = x$ лежат лишь две из них: $(1;1)$ и $(-1;-1)$.

💡 Почему важно: приём «сведём к $y = x$» очень удобен и потому применяется механически. Держи в голове дополнительное условие «функция возрастает» — иначе решение будет неполным.


Ошибка 6: путают обратную функцию с обратным преобразованием, теряющим информацию

Неправильно: считать, что раз в библиотеке есть метод inverse_transform, значит преобразование обратимо в математическом смысле.

Правильно: обратимость нужно проверять по существу. PCA.inverse_transform при сокращении размерности (скажем, с 100 компонент до 10) вернёт вектор той же длины, но не исходный — часть информации отброшена безвозвратно, это проекция, а не биекция. То же с квантованием весов модели и с округлением.

💡 Почему важно: метод, который называется «обратным», не обязан быть обратной функцией. Настоящий критерий один: выполняется ли тождество $f^{-1}(f(x)) = x$ для всех $x$. Если нет — у тебя аппроксимация, и её погрешность нужно измерять, а не игнорировать.


Главное запомнить

✅ Обратная функция $f^{-1}$ восстанавливает аргумент по значению: если $f(a) = b$, то $f^{-1}(b) = a$. Записывается это двумя тождествами: $f^{-1}(f(x)) = x$ и $f(f^{-1}(x)) = x$.

✅ $f^{-1}(x)$ — это не $\dfrac{1}{f(x)}$. Значок $-1$ обозначает обратную операцию, а не степень.

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

✅ Строгая монотонность гарантирует обратимость. Это главный рабочий критерий: увидел «строго возрастает» — значит, обратная существует.

✅ Если функция необратима на всей области определения, её сужают до промежутка монотонности. Так из параболы получается корень, а из синуса — арксинус.

✅ Области меняются местами: $D(f^{-1}) = E(f)$ и $E(f^{-1}) = D(f)$. Указывать область определения обратной функции — обязательная часть ответа.

✅ Алгоритм поиска формулы: записать $y = f(x)$ → выразить $x$ через $y$ → поменять обозначения переменных.

✅ Графики $f$ и $f^{-1}$ симметричны относительно прямой $y = x$; точка $(a;b)$ на одном соответствует точке $(b;a)$ на другом.

✅ Монотонность сохраняется: обратная к возрастающей возрастает, обратная к убывающей убывает. А обратная к обратной — исходная функция: $(f^{-1})^{-1} = f$.

✅ Ключевые пары в ML: логарифм ↔ экспонента, стандартизация ↔ денормализация, сигмоида ↔ логит, матрица $A$ ↔ $A^{-1}$ (при $\det A \neq 0$). Softmax и ReLU обратными не обладают — они теряют информацию.

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


Связь с другими темами курса

Что было раньше: степенная функция (урок 81) дала нам первую пару «функция — обратная»: $y = x^2$ на $[0;+\infty)$ и $y = \sqrt{x}$, $y = x^3$ и $y = \sqrt[3]{x}$. Свойства монотонности из темы про исследование функций — это тот инструмент, которым мы проверяем обратимость. Квадратичная функция и выделение полного квадрата (урок 80) понадобились нам буквально в каждом примере, где параболу приходилось обращать на промежутке.

Что дальше: следующий урок — композиция функций — доводит идею до конца: обратная функция это в точности та, композиция с которой даёт тождественное преобразование $f^{-1} \circ f = \mathrm{id}$. Дальше в курсе обратные функции всплывут ещё трижды. В теме логарифмов: логарифм определяется именно как функция, обратная показательной, и все его «странные» свойства вроде $\log(ab) = \log a + \log b$ прямо наследуются от свойств степеней через обращение. В обратных тригонометрических функциях: арксинус, арккосинус и арктангенс — это классические примеры сужения области определения ради обратимости. И в производных: формула $\left(f^{-1}\right)'(y) = \dfrac{1}{f'(x)}$ позволяет выводить производные логарифма и арксинуса, не зная их «сами по себе».

Где это применяется в жизни и в ML/данных:

📊 В машинном обучении: обратное преобразование таргета после логарифмирования, inverse_transform у скейлеров, логит как обратная к сигмоиде в логистической регрессии, обратимые слои в normalizing flows (NICE, RealNVP, Glow), где обратимость экономит видеопамять при обучении, детокенизация ответа LLM обратно в текст.

📈 В data science: возврат коэффициентов модели в исходные единицы для интерпретации, обратное преобразование Бокса-Кокса, восстановление квантилей из ранговых преобразований, обратные словари для label encoding.

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

🔬 В физике и инженерии: перевод единиц измерения (Цельсий ↔ Фаренгейт), связь между амплитудой и децибелами через логарифм и обратную к нему экспоненту, обратные задачи в томографии — восстановление внутренней структуры по внешним измерениям.


Интересные факты

💡 Логарифмическая линейка прожила 350 лет благодаря обратной функции. Идея Непера была в том, что умножение можно свести к сложению: перевёл числа в логарифмы, сложил, вернулся обратно. Логарифмическая линейка механизировала именно этот переход туда-обратно — и оставалась главным инженерным калькулятором вплоть до 1970-х. Ракеты программы «Аполлон» рассчитывались с её помощью. Умерла она буквально за пару лет, когда HP выпустила карманный калькулятор HP-35.

💡 Обозначение $f^{-1}$ — историческая ошибка юзабилити. Его популяризировал астроном Джон Гершель около 1813 года по аналогии с обратным элементом в алгебре. Но одновременно в математике прижилась запись $\sin^2 x$ для $(\sin x)^2$ — и получилось, что верхний индекс у функции означает то степень, то обращение. Отсюда вечная путаница: $\sin^{-1} x$ — это арксинус, а вовсе не $\dfrac{1}{\sin x}$ (последний называется косекансом). Многие современные учебники вообще отказались от записи $\sin^{-1}$ в пользу $\arcsin$ именно по этой причине.

💡 Обратимые нейросети экономят память, а не только генерируют картинки. У архитектуры i-RevNet и родственных ей есть неочевидный побочный эффект: если каждый слой обратим, активации промежуточных слоёв не нужно хранить в памяти для обратного распространения ошибки — их можно пересчитать, «отмотав» сеть назад. Расход видеопамяти перестаёт зависеть от глубины сети. То есть школьное свойство $f^{-1}(f(x)) = x$ напрямую превращается в возможность обучать модели, которые иначе просто не влезли бы в GPU.

💡 Существует функция, обратная самой себе, кроме очевидных. Инволюции — функции с $f(f(x)) = x$ — встречаются чаще, чем кажется: $f(x) = -x$, $f(x) = \dfrac{1}{x}$, $f(x) = c - x$, $f(x) = \dfrac{ax+b}{cx-a}$ (при любых допустимых $a,b,c$). Их графики симметричны относительно $y = x$ сами себе. В программировании ровно на этом свойстве держится шифр XOR: применил ключ один раз — зашифровал, применил тот же ключ второй раз — расшифровал. Одна функция вместо двух.

💡 Обратные задачи — целый раздел прикладной математики. Компьютерная томография восстанавливает трёхмерную структуру тела по набору плоских рентгеновских проекций. Математически это обращение преобразования Радона, и Иоганн Радон вывел формулу обращения ещё в 1917 году — за полвека до того, как появилась техника, способная её применить. Годфри Хаунсфилд и Аллан Кормак получили за практическую реализацию Нобелевскую премию по медицине 1979 года.


Лайфхаки и полезные трюки

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

Нашёл формулу — сразу возьми любое удобное $x$ (лучше не $0$ и не $1$, чтобы не «повезло» случайно), посчитай $f(x)$, затем прогони результат через $f^{-1}$. Вернулся исходный аргумент — ответ почти наверняка верен. Не вернулся — ищи ошибку в алгебре. Это занимает десять секунд и ловит подавляющее большинство описок.


2. Раздевай «луковицу» в обратном порядке

Если функция — это цепочка простых действий, обратную можно писать сразу, без выкладок. Например, $f(x) = \dfrac{(x+3)^5 - 1}{2}$ выполняет действия в порядке: прибавить $3$ → возвести в пятую степень → вычесть $1$ → разделить на $2$. Обратная делает противоположное в обратном порядке: умножить на $2$ → прибавить $1$ → извлечь корень пятой степени → вычесть $3$. Итого $f^{-1}(x) = \sqrt[5]{2x+1} - 3$. Проверка: $f(-1) = \dfrac{32-1}{2} = 15{,}5$, и $f^{-1}(15{,}5) = \sqrt[5]{32} - 3 = 2 - 3 = -1$ ✅


3. Для дробно-линейных функций собирай $x$ и выноси за скобку

Формулы вида $\dfrac{ax+b}{cx+d}$ обращаются всегда одним и тем же движением: умножить на знаменатель → раскрыть скобки → перенести все слагаемые с $x$ влево, остальные вправо → вынести $x$ за скобку → поделить. Три строчки, и никакой изобретательности не требуется.


4. Значение обратной функции в точке ищи через уравнение, а не через формулу

Если нужен только $f^{-1}(a)$, не выводи общую формулу обратной — просто реши уравнение $f(x) = a$. Для функций вроде $\sqrt{x} + x$, $x^5 + x$ или $x + \ln x$ общая формула либо чудовищна, либо не выражается в элементарных функциях, а конкретное значение находится за пару строк.


5. Проверяй обратимость через монотонность, а не через определение

Вместо того чтобы доказывать «разным $x$ — разные $y$», покажи, что функция строго возрастает или строго убывает. Полезные готовые кирпичики: сумма возрастающих функций возрастает; возрастающая функция от возрастающей возрастает; при $k > 0$ умножение на $k$ монотонность сохраняет, при $k < 0$ — переворачивает. Этого хватает почти на все школьные примеры.


6. В коде помни про область определения обратного преобразования

Перед применением любой обратной функции спроси себя: какие значения она вообще принимает на вход? Для логита это открытый интервал $(0;1)$ — значит, нужен клиппинг. Для $\sqrt{\ }$ это $[0;+\infty)$ — значит, нужна проверка знака. Для обратной матрицы это $\det A \neq 0$ — значит, нужна регуляризация вроде $A + \lambda I$. Практическое правило: там, где обратная функция «взрывается», всегда стоит защита в виде $\varepsilon$ — и теперь ты знаешь, откуда она берётся математически.


7. Помни про «зеркало $y = x$» при построении графиков

Тебя просят нарисовать график обратной функции? Не строй таблицу значений. Нарисуй исходную и отрази её относительно биссектрисы первого и третьего координатных углов. Асимптоты при этом тоже отражаются: вертикальная становится горизонтальной и наоборот. Именно поэтому у экспоненты горизонтальная асимптота $y = 0$, а у логарифма — вертикальная $x = 0$.


Обратная функция — одна из тех тем, где школьная математика и рабочая инженерия совпадают буквально дословно. Каждый раз, когда ты пишешь inverse_transform, разворачиваешь логарифм таргета в рубли, клиппишь вероятности перед логитом или читаешь статью про обратимые архитектуры, ты работаешь ровно с тем, что разобрано в этом уроке: с вопросом «можно ли вернуться назад и что для этого нужно». А главный урок здесь даже не алгебраический, а мировоззренческий: обратимость — это про сохранение информации. Функция, которая склеивает разные входы, теряет что-то навсегда, и никакая библиотека этого не починит. Научившись видеть, где информация сохраняется, а где исчезает, ты начинаешь понимать не только формулы, но и то, почему модели устроены именно так.

Дальше — композиция функций, где мы соберём из простых функций сложные и увидим, что обратная функция это просто «то, что возвращает композицию к тождеству». Оттуда прямая дорога к логарифмам и производным, и там наш сегодняшний разговор про зеркало $y = x$ сыграет ещё раз — уже совсем неожиданным образом. 🚀

Понял тему? Закрепи в боте! 🚀

Попрактикуйся на задачах и получи персональные рекомендации от AI

💪 Начать тренировку
💬 Есть вопрос? Спроси бота!