класс ⏱️ 60 мин

Дроби

Дроби 🍕

Представь: ты обучаешь нейросеть, и перед тобой вектор весов [0.3, 0.5, 0.2]. Эти три числа — не целые. Это дроби. Они же — вероятности выходного слоя после softmax. Они же — attention weights в трансформере. Они же — доли классов в датасете. Дроби — это язык, на котором говорит машинное обучение.

Почти вся математика ML живёт не в целых числах, а в числах от 0 до 1 (или вообще любых рациональных). Нормализация фичей, learning rate, dropout rate, cosine similarity — всё это дроби. Если не понимать, как они устроены, половина формул в статьях будет выглядеть как иероглифы.

Хорошая новость: дроби — это просто. Мы разберём их с абсолютного нуля, без пропусков, и дойдём до того, как они работают прямо внутри нейросетей.

Ты узнаешь: 🎯 Что такое дробь и зачем она вообще нужна
🎯 Как складывать, вычитать, умножать и делить дроби
🎯 Почему $\frac{1}{2} = \frac{2}{4} = \frac{50}{100}$ — это один и тот же объект
🎯 Где дроби живут в embeddings, attention и нормализации данных
🎯 Как быстро считать в уме, не мучаясь с вычислениями


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

Дробям примерно 4000 лет. Первыми их начали использовать египтяне — и не от хорошей жизни. Им нужно было делить зерно между работниками, земельные участки после разлива Нила, пайки в армии. Целых чисел для этого не хватало.

Но египтяне были странными: они записывали почти все дроби только с единицей в числителе. $\frac{1}{2}$, $\frac{1}{3}$, $\frac{1}{7}$ — окей. А вот $\frac{3}{4}$ для них было $\frac{1}{2} + \frac{1}{4}$. Такие дроби называют «египетскими». Папирус Ахмеса (~1650 до н.э.) — старейший из дошедших до нас математических текстов — на треть состоит из таблиц таких дробей.

Привычную нам запись $\frac{a}{b}$ с чертой придумали арабские математики в Средние века. Аль-Хасар в XII веке первым написал числитель над знаменателем через горизонтальную черту. Европа подхватила это через ещё пару столетий. Сегодня та же идея — «часть от целого» — живёт в каждом слое нейросети: softmax превращает любые числа в дроби, сумма которых равна 1. Египетский писец и разработчик LLM решают, по сути, одну задачу: как честно распределить что-то между частями.


Что такое дробь и зачем она нужна

На пальцах: когда целых чисел не хватает

Целые числа хороши, когда считаешь что-то неделимое: 3 сервера, 10 нейронов в слое, 1000 эпох обучения. Но что делать, когда нужно описать часть?

Представь: у тебя датасет из 1000 изображений, и 300 из них — кошки. Какая доля датасета — кошки? Не 300 (это количество), а именно доля — часть от целого. Вот тут и появляется дробь:

$$\frac{300}{1000} = \frac{3}{10}$$

Три десятых. Тридцать процентов. Это и есть дробь в действии.

Аналогия с пиццей (классика, но работает):
Пицца порезана на 8 кусков. Ты съел 3. Ты съел $\frac{3}{8}$ пиццы. Три восьмых. Здесь 3 — это сколько взял, а 8 — на сколько разделили.

Строгое определение

Определение: Дробь $\dfrac{a}{b}$ — это запись деления числа $a$ на число $b$, где $a$ называется числителем, $b$ называется знаменателем, и $b \neq 0$.

Обозначения: - $a$ (верхнее число) — числитель (от лат. numerator — «считающий»): сколько частей взяли - $b$ (нижнее число) — знаменатель (от лат. denominator — «называющий»): на сколько частей делим целое - черта между ними — знак деления

Почему знаменатель не может быть нулём?
Потому что делить на ноль — математически бессмысленно. Если пицца порезана на 0 кусков… что ты вообще едишь? В ML деление на ноль вызывает NaN или inf — и обучение рушится. Поэтому в функциях потерь часто добавляют маленький $\varepsilon = 10^{-8}$, чтобы избежать деления на ноль.


Примеры с подробным разбором

Пример 1 (простой): Точность модели

Твоя модель классификации из 20 тестовых примеров угадала 15 правильно. Какова точность (accuracy)?

Шаг 1: Определяем, что такое «часть» и что такое «целое».
Правильно угаданных (часть) = 15
Всего примеров (целое) = 20

Шаг 2: Записываем дробь. $$\text{accuracy} = \frac{15}{20}$$

Шаг 3: Читаем дробь: «пятнадцать двадцатых».

Ответ: Точность равна $\dfrac{15}{20}$, или 75%.


Пример 2 (средний): Dropout

В нейросети dropout rate = 0.3. Это значит, что при каждом проходе случайно «выключается» 3 нейрона из 10. Запиши это как дробь и объясни смысл.

Шаг 1: 0.3 — это десятичная запись дроби. Переводим: $$0.3 = \frac{3}{10}$$

Шаг 2: Числитель = 3 (нейроны, которые выключаются), знаменатель = 10 (все нейроны в слое).

Смысл: Из каждых 10 нейронов 3 случайно обнуляются во время обучения. Это предотвращает переобучение (overfitting), заставляя сеть не полагаться на конкретные нейроны.

Ответ: $\dfrac{3}{10}$ нейронов выключается при каждом forward pass.


Пример 3 (сложный): Attention weights

В механизме self-attention трансформера для токена «кот» в предложении «кот сидит на коврике» получили scores: [2, 5, 1, 3, 4]. После softmax каждый score превращается в дробь, и все дроби в сумме дают 1. Первый attention weight равен:

$$w_1 = \frac{e^2}{e^2 + e^5 + e^1 + e^3 + e^4}$$

Это дробь! Числитель — «важность» этого токена, знаменатель — сумма важностей всех токенов. Так модель «решает», на какие слова обращать внимание.

Почему это важно: Вся интерпретируемость трансформеров строится на анализе этих дробей-весов. Понимая дроби, ты понимаешь, как GPT «думает».


Правильные и неправильные дроби

На пальцах

Если ты взял меньше, чем целое — дробь правильная (числитель меньше знаменателя):
$\dfrac{3}{8}$ — взял 3 из 8 кусков пиццы. Меньше целой пиццы. ✅

Если ты взял больше, чем целое — дробь неправильная (числитель больше или равен знаменателю):
$\dfrac{11}{8}$ — взял 11 кусков из порции по 8. Это больше одной целой пиццы.

Правило:
- $\dfrac{a}{b}$, где $a < b$ → правильная дробь (значение от 0 до 1)
- $\dfrac{a}{b}$, где $a \geq b$ → неправильная дробь (значение ≥ 1)

В ML правильные дроби встречаются чаще — это вероятности, веса, нормализованные значения. Все они лежат в $[0, 1]$.

Смешанное число — это неправильная дробь, записанная как целая часть + правильная дробь: $$\frac{11}{8} = 1\frac{3}{8}$$

(одна целая и три восьмых)


Равные дроби и сокращение

Главный секрет дробей

Вот вопрос: тебе платят $\dfrac{1}{2}$ зарплаты или $\dfrac{50}{100}$ зарплаты — разница есть?

Математически — никакой. Это одна и та же дробь, просто записанная по-разному. Если числитель и знаменатель умножить или разделить на одно и то же ненулевое число — дробь не изменится.

$$\frac{1}{2} = \frac{1 \times 50}{2 \times 50} = \frac{50}{100}$$

Основное свойство дроби

Основное свойство: При умножении числителя и знаменателя на одно и то же ненулевое число $k$ дробь не изменяется: $$\frac{a}{b} = \frac{a \cdot k}{b \cdot k}$$

Сокращение дроби

Сокращение — это деление числителя и знаменателя на их общий делитель. Цель: получить дробь в несократимом виде (когда числитель и знаменатель больше не имеют общих делителей, кроме 1).

Пример 1 (простой): Сократи $\dfrac{12}{18}$

Шаг 1: Найдём наибольший общий делитель (НОД) чисел 12 и 18.
Делители 12: 1, 2, 3, 4, 6, 12
Делители 18: 1, 2, 3, 6, 9, 18
Общие делители: 1, 2, 3, 6. Наибольший: 6.

Шаг 2: Делим числитель и знаменатель на 6: $$\frac{12}{18} = \frac{12 \div 6}{18 \div 6} = \frac{2}{3}$$

Ответ: $\dfrac{2}{3}$ — несократимая дробь.


Пример 2 (ML-контекст): Нормализация вектора

В feature engineering у тебя вектор [120, 80, 40] — это оценки трёх пользователей. Чтобы нормализовать, нужно разделить каждый элемент на максимум (120):

$$\frac{120}{120} = 1, \quad \frac{80}{120} = \frac{2}{3}, \quad \frac{40}{120} = \frac{1}{3}$$

Нормализованный вектор: [1, 2/3, 1/3][1.0, 0.667, 0.333]. Вот откуда берутся эти «странные» числа в нормализации — это просто сокращённые дроби!


Сложение и вычитание дробей

Когда знаменатели одинаковые

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

$$\frac{a}{c} + \frac{b}{c} = \frac{a + b}{c}$$

Аналогия: У тебя 3 куска пиццы из 8 и ещё 2 куска из той же пиццы. Итого 5 кусков из 8.

$$\frac{3}{8} + \frac{2}{8} = \frac{5}{8}$$

Знаменатель говорит «на сколько частей порезано» — это не меняется при сложении частей!

Пример (ML): Суммирование вероятностей классов

Бинарная классификация: вероятность класса «кот» = $\dfrac{3}{10}$, класса «не кот» = $\dfrac{7}{10}$.

$$\frac{3}{10} + \frac{7}{10} = \frac{10}{10} = 1$$

Сумма вероятностей = 1. Это фундаментальное свойство распределения вероятностей — и это просто сложение дробей с одинаковым знаменателем.


Когда знаменатели разные

Вот тут чуть сложнее. Нельзя просто сложить числители — у нас разные «единицы» измерения (разные размеры кусков).

Нужно привести к общему знаменателю — найти наименьшее общее кратное (НОК) знаменателей.

$$\frac{a}{b} + \frac{c}{d} = \frac{a \cdot d}{b \cdot d} + \frac{c \cdot b}{d \cdot b} = \frac{a \cdot d + c \cdot b}{b \cdot d}$$

Пример 1 (простой): $\dfrac{1}{3} + \dfrac{1}{4}$

Шаг 1: Найти НОК(3, 4). Кратные 3: 3, 6, 9, 12, … Кратные 4: 4, 8, 12, … НОК = 12.

Шаг 2: Приводим каждую дробь к знаменателю 12. $$\frac{1}{3} = \frac{1 \times 4}{3 \times 4} = \frac{4}{12}$$ $$\frac{1}{4} = \frac{1 \times 3}{4 \times 3} = \frac{3}{12}$$

Шаг 3: Складываем: $$\frac{4}{12} + \frac{3}{12} = \frac{7}{12}$$

Ответ: $\dfrac{7}{12}$


Пример 2 (ML): Усреднение метрик из разных батчей

Допустим, в первом батче (3 примера) точность $\dfrac{2}{3}$, во втором батче (4 примера) точность $\dfrac{3}{4}$. Средняя точность по батчам (не взвешенная):

$$\frac{\frac{2}{3} + \frac{3}{4}}{2} = \frac{\frac{8}{12} + \frac{9}{12}}{2} = \frac{\frac{17}{12}}{2} = \frac{17}{24} \approx 0.708$$

Вычитание работает аналогично. Приводим к общему знаменателю и вычитаем числители.

Пример: $\dfrac{3}{4} - \dfrac{1}{6}$

НОК(4, 6) = 12. $$\frac{3}{4} - \frac{1}{6} = \frac{9}{12} - \frac{2}{12} = \frac{7}{12}$$


Умножение дробей

На пальцах

Умножение дробей — это самая простая операция. Никаких общих знаменателей.

Правило: Числитель на числитель, знаменатель на знаменатель. $$\frac{a}{b} \cdot \frac{c}{d} = \frac{a \cdot c}{b \cdot d}$$

Аналогия: $\dfrac{1}{2}$ от $\dfrac{1}{3}$ пиццы — это $\dfrac{1}{6}$ пиццы. Берём половину от трети.

$$\frac{1}{2} \cdot \frac{1}{3} = \frac{1 \cdot 1}{2 \cdot 3} = \frac{1}{6}$$

Пример 1 (простой): $\dfrac{3}{4} \cdot \dfrac{2}{5}$

$$\frac{3}{4} \cdot \frac{2}{5} = \frac{3 \cdot 2}{4 \cdot 5} = \frac{6}{20} = \frac{3}{10}$$

(сократили на 2 в конце)

Ответ: $\dfrac{3}{10}$


Пример 2 (ML): Learning rate decay

Начальный learning rate = $\dfrac{1}{100}$ = 0.01. После каждой эпохи умножаем на decay factor $\dfrac{9}{10}$ = 0.9. Какой learning rate после первой эпохи?

$$\frac{1}{100} \cdot \frac{9}{10} = \frac{9}{1000} = 0.009$$

После второй: $$\frac{9}{1000} \cdot \frac{9}{10} = \frac{81}{10000} = 0.0081$$

Вот как работает экспоненциальное убывание learning rate — это просто последовательное умножение дробей!


Пример 3 (сложный): Совместная вероятность

В байесовской нейросети вероятность события A = $\dfrac{2}{5}$, вероятность события B (при условии A) = $\dfrac{3}{4}$. Совместная вероятность:

$$P(A \cap B) = P(A) \cdot P(B|A) = \frac{2}{5} \cdot \frac{3}{4} = \frac{6}{20} = \frac{3}{10}$$

Ответ: $\dfrac{3}{10}$ = 30% — шанс, что оба события произойдут.


Деление дробей

Главный трюк: умножь на перевёрнутую

Правило: Делить на дробь = умножать на обратную дробь (перевернуть числитель и знаменатель делителя): $$\frac{a}{b} \div \frac{c}{d} = \frac{a}{b} \cdot \frac{d}{c} = \frac{a \cdot d}{b \cdot c}$$

Почему? Потому что $\dfrac{c}{d} \cdot \dfrac{d}{c} = 1$ — это взаимно обратные числа. Мы умножаем обе части деления на $\dfrac{d}{c}$, чтобы в знаменателе получить 1.

Пример 1 (простой): $\dfrac{3}{4} \div \dfrac{2}{3}$

Шаг 1: Переворачиваем делитель: $\dfrac{2}{3}$ → $\dfrac{3}{2}$

Шаг 2: Умножаем: $$\frac{3}{4} \cdot \frac{3}{2} = \frac{9}{8} = 1\frac{1}{8}$$

Ответ: $1\dfrac{1}{8}$


Пример 2 (ML): Нормализация по диапазону

В Min-Max нормализации: $$x{\text{norm}} = \frac{x - x{\min}}{x{\max} - x{\min}}$$

Это деление дробей! Если $x = 7$, $x{\min} = 1$, $x{\max} = 11$: $$x_{\text{norm}} = \frac{7-1}{11-1} = \frac{6}{10} = \frac{3}{5} = 0.6$$

Разберём как деление дробей: $$\frac{6}{10} = 6 \div 10 = \frac{6}{1} \cdot \frac{1}{10} = \frac{6}{10}$$


Сравнение дробей

Как понять, какая дробь больше?

Если знаменатели одинаковые: больше та, у которой числитель больше. $$\frac{5}{8} > \frac{3}{8}$$

Если знаменатели разные: приводим к общему знаменателю и сравниваем.

Быстрый способ (перекрёстное умножение): $$\frac{a}{b} \text{ vs } \frac{c}{d}: \quad \text{сравниваем } a \cdot d \text{ и } b \cdot c$$

Пример: $\dfrac{3}{7}$ vs $\dfrac{4}{9}$

$3 \times 9 = 27$ и $7 \times 4 = 28$.
$27 < 28$, значит $\dfrac{3}{7} < \dfrac{4}{9}$.

Пример (ML): Какая precision лучше — $\dfrac{5}{8}$ или $\dfrac{7}{12}$?

$5 \times 12 = 60$ и $8 \times 7 = 56$.
$60 > 56$, значит $\dfrac{5}{8} > \dfrac{7}{12}$.

Модель с precision $\dfrac{5}{8}$ (62.5%) лучше, чем с $\dfrac{7}{12}$ (58.3%).


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

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

Задание 1: Запиши дробь: из 8 эпох обучения 3 прошли успешно. Какая доля эпох прошла успешно?


Задание 2: Сократи дробь $\dfrac{15}{25}$.


Задание 3: Сократи $\dfrac{36}{48}$.


Задание 4: Вычисли $\dfrac{2}{7} + \dfrac{3}{7}$.


Задание 5: Вычисли $\dfrac{5}{9} - \dfrac{2}{9}$.


Задание 6: Переведи в несократимую дробь: $\dfrac{24}{36}$.


Задание 7: Правильная или неправильная дробь: $\dfrac{7}{5}$?


Задание 8: Вычисли $\dfrac{3}{8} \cdot \dfrac{4}{9}$.


Задание 9: Какая дробь больше: $\dfrac{2}{5}$ или $\dfrac{3}{8}$?


Задание 10: Вычисли $\dfrac{1}{2} \div \dfrac{3}{4}$.


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

Задание 11: Вычисли $\dfrac{1}{3} + \dfrac{1}{4}$.


Задание 12: Вычисли $\dfrac{5}{6} - \dfrac{3}{8}$.


Задание 13 (ML): Recall модели на классе A = $\dfrac{4}{5}$, на классе B = $\dfrac{2}{3}$. Найди среднеарифметическое recall по двум классам (macro-average).


Задание 14: Вычисли $\dfrac{2}{3} \cdot \dfrac{9}{10} \cdot \dfrac{5}{6}$.


Задание 15 (нормализация): Нормализуй значение $x = 40$ из диапазона $[10, 90]$ по формуле Min-Max. Запиши ответ как дробь.


Задание 16: Переведи смешанное число $2\dfrac{3}{5}$ в неправильную дробь.


Задание 17: Вычисли $3\dfrac{1}{2} \cdot 1\dfrac{2}{3}$.


Задание 18 (ML): Learning rate = $\dfrac{1}{50}$. Каждую эпоху умножается на $\dfrac{4}{5}$. Какой learning rate через 2 эпохи?


Задание 19: Реши уравнение: $x \cdot \dfrac{3}{4} = \dfrac{9}{16}$.


Задание 20: Упрости выражение: $\dfrac{5}{6} + \dfrac{7}{9} - \dfrac{1}{3}$.


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

Задание 21 (embeddings): Два вектора-embedding нормализованы: все их координаты — дроби с суммой квадратов = 1. Первый вектор в 2D: $\left(\dfrac{3}{5}, \dfrac{4}{5}\right)$. Проверь, что это единичный вектор (сумма квадратов = 1).


Задание 22: Вычисли косинусное сходство (cosine similarity) двух векторов:
$\mathbf{a} = \left(\dfrac{1}{2}, \dfrac{1}{2}\right)$, $\mathbf{b} = \left(\dfrac{1}{\sqrt{2}}, \dfrac{1}{\sqrt{2}}\right)$ (уже нормализованы).


Задание 23 (softmax): Три логита: 1, 2, 3. После softmax: $$p_i = \frac{e^{z_i}}{e^1 + e^2 + e^3}$$ Приближённо: $e^1 \approx 2.72$, $e^2 \approx 7.39$, $e^3 \approx 20.09$. Найди $p_1, p_2, p_3$ как дроби (округли числитель и знаменатель до целых).


Задание 24: Реши: $\dfrac{x+1}{3} = \dfrac{2x-1}{5}$.


Задание 25 (градиентный спуск): В одном шаге градиентного спуска: $$w{\text{new}} = w{\text{old}} - \eta \cdot \nabla L$$ Если $w{\text{old}} = \dfrac{3}{4}$, $\eta = \dfrac{1}{10}$, $\nabla L = \dfrac{5}{2}$, найди $w{\text{new}}$.


Задание 26: Упрости: $\dfrac{\frac{2}{3}}{\frac{4}{9}}$.


Задание 27 (F1-score): F1-score = $\dfrac{2 \cdot \text{precision} \cdot \text{recall}}{\text{precision} + \text{recall}}$. Precision = $\dfrac{3}{4}$, Recall = $\dfrac{2}{3}$. Найди F1.


Задание 28: Вычисли: $\left(\dfrac{2}{3}\right)^3$.


Задание 29 (нормализация батча): В batch normalization вычисляется: $$\hat{x} = \frac{x - \mu}{\sigma}$$ Значения батча: $[2, 4, 6]$. Среднее $\mu = 4$, стандартное отклонение $\sigma = 2$. Нормализуй $x = 6$.


Задание 30 (комбинированное): В ensemble из 3 моделей точности: $\dfrac{4}{5}$, $\dfrac{7}{10}$, $\dfrac{3}{4}$. Взвешенное среднее с весами $\dfrac{1}{2}, \dfrac{1}{4}, \dfrac{1}{4}$ (веса в сумме дают 1). Найди weighted accuracy.


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

Ошибка 1: Складывать знаменатели
Неправильно: $\dfrac{1}{3} + \dfrac{1}{4} = \dfrac{2}{7}$
Правильно: $\dfrac{1}{3} + \dfrac{1}{4} = \dfrac{4}{12} + \dfrac{3}{12} = \dfrac{7}{12}$
Почему важно: В ML при суммировании вероятностей (например, $P(A) + P(B)$) такая ошибка даст сумму ≠ 1, и распределение окажется невалидным.


Ошибка 2: Не сокращать до конца
Неправильно: $\dfrac{12}{18}$ оставить как $\dfrac{4}{6}$ (не досократили!)
Правильно: $\dfrac{12}{18} = \dfrac{4}{6} = \dfrac{2}{3}$
Почему важно: В вычислениях несокращённые дроби дают огромные числа, усложняют промежуточные вычисления и увеличивают шанс ошибки.


Ошибка 3: Неправильно переворачивать при делении
Неправильно: $\dfrac{3}{4} \div \dfrac{2}{5}$ → переворачивают первую дробь → $\dfrac{4}{3} \cdot \dfrac{2}{5}$
Правильно: переворачивают делитель (вторую дробь): $\dfrac{3}{4} \cdot \dfrac{5}{2} = \dfrac{15}{8}$
Почему важно: В расчётах нормализации деление встречается постоянно, и путаница с переворотом даёт неверный результат.


Ошибка 4: Упрощение дроби путём вычитания из числителя и знаменателя
Неправильно: $\dfrac{3+5}{4+5} = \dfrac{3}{4}$ (нельзя «сокращать» сложение!)
Правильно: $\dfrac{8}{9}$ — уже несократима, ответ $\dfrac{8}{9}$
Почему важно: Упрощать можно только умножением/делением, но не сложением/вычитанием.


Ошибка 5: Делать знаменатель нулём
Неправильно: $\dfrac{5}{0}$ = «бесконечность» или «что-то очень большое»
Правильно: $\dfrac{5}{0}$ — не определено, эта запись бессмысленна
Почему важно: В коде нейросети деление на 0 вызывает NaN, который «заражает» все последующие вычисления. Всегда добавляй epsilon!


Ошибка 6: Забыть привести к общему знаменателю перед сложением
Неправильно: $\dfrac{2}{5} + \dfrac{3}{7} = \dfrac{5}{12}$
Правильно: $\dfrac{14}{35} + \dfrac{15}{35} = \dfrac{29}{35}$
Почему важно: Дроби с разными знаменателями — это разные «единицы измерения». Складывать их без приведения — как складывать метры с килограммами.


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

📝 Ключевые понятия

Дробь $\dfrac{a}{b}$: числитель $a$ (что берём) / знаменатель $b$ (на сколько делим). $b \neq 0$ всегда!

Основное свойство: $\dfrac{a}{b} = \dfrac{a \cdot k}{b \cdot k}$ — умножение на одно и то же число не меняет дробь. Это основа сокращения и приведения.

Сокращение: делим числитель и знаменатель на НОД. Получаем несократимую дробь.

Сложение/вычитание: только с одинаковыми знаменателями. Нужны разные — ищем НОК и приводим.

Умножение: числитель × числитель, знаменатель × знаменатель. Никаких общих знаменателей!

Деление: умножаем на обратную дробь (переворачиваем делитель).

Правильная дробь: числитель < знаменатель → значение от 0 до 1 (это вероятности, веса, нормализованные признаки в ML!).

Неправильная дробь: числитель ≥ знаменатель → значение ≥ 1.

Сравнение: перекрёстное умножение — быстрый способ без общего знаменателя.

В ML везде: attention weights, softmax, нормализация, dropout rate, learning rate decay — всё это операции с дробями.


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

1. Быстрое нахождение НОД через «алгоритм Евклида»
Делим большее на меньшее, берём остаток, повторяем до нуля.
Пример: НОД(48, 18): $48 = 2 \times 18 + 12$, $18 = 1 \times 12 + 6$, $12 = 2 \times 6 + 0$. НОД = 6.
Это быстрее, чем перебирать делители!

2. Сокращение «по диагонали» при умножении
Перед умножением можно сразу сократить числитель одной дроби на знаменатель другой.
$\dfrac{4}{9} \cdot \dfrac{3}{8} = \dfrac{\cancel{4}^1}{9} \cdot \dfrac{3}{\cancel{8}^2} = \dfrac{1 \cdot 3}{9 \cdot 2} = \dfrac{3}{18} = \dfrac{1}{6}$
Меньше вычислений с большими числами!

3. Перевод дроби в десятичную: делим в столбик или запоминаем
Запомни самые частые: $\dfrac{1}{2}=0.5$, $\dfrac{1}{3}\approx0.333$, $\dfrac{1}{4}=0.25$, $\dfrac{3}{4}=0.75$, $\dfrac{1}{5}=0.2$, $\dfrac{2}{3}\approx0.667$.
В ML эти значения встречаются постоянно (train/test split 34 и 14, dropout 0.2 = 15…).

4. Мнемоника для деления дробей: «КДП» — Копируй, Дели, Переворачивай
$\dfrac{a}{b} \div \dfrac{c}{d}$: Копируй первую ($\dfrac{a}{b}$), Дели (меняем ÷ на ×), Переворачивай вторую ($\dfrac{d}{c}$).

5. Проверка суммирования вероятностей
Если у тебя вектор дробей (например, выход softmax), быстрая проверка: переведи каждую в десятичную и сложи. Должно получиться ровно 1.0 (с поправкой на округление). Если нет — где-то ошибка в нормализации.

6. «Трюк 100» для быстрого сравнения
Чтобы быстро сравнить дроби, умножи обе на 100 и сравни приближения.
$\dfrac{5}{7} \approx 71\%$ vs $\dfrac{7}{10} = 70\%$ → $\dfrac{5}{7} > \dfrac{7}{10}$.


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

Что нужно было знать до этого урока: - Целые числа — дроби — это расширение целых чисел для описания «частей» - Умножение и деление — операции с дробями сводятся к ним

Что изучить дальше: - Десятичные дроби — это просто дроби со знаменателями 10, 100, 1000… (числа с запятой в Python — float) - Проценты — дроби со знаменателем 100; тесно связаны с accuracy, dropout rate - Рациональные и иррациональные числа — дроби = рациональные числа; $\sqrt{2}$, $\pi$ — иррациональные - Пропорции и отношения — основа для нормализации данных и масштабирования

Где это нужно в жизни:

💻 В программировании: Каждый float в Python — это дробь в двоичном представлении. Понимание дробей помогает понять проблемы floating point (почему 0.1 + 0.2 ≠ 0.3).

🤖 В ML/AI: Буквально везде — learning rate ($10^{-3}$), dropout (0.5 = $\dfrac{1}{2}$), batch fraction ($\dfrac{\text{batch_size}}{\text{dataset_size}}$), вероятности после softmax, attention weights.

📊 В Data Science: Нормализация (Min-Max, Z-score), class imbalance ratio, train/val/test split (70/15/15 — это три дроби, суммирующиеся в 1), precision, recall, F1.

🔬 В статистике: Вероятности — это дроби. P(A) + P(¬A) = 1, условная вероятность, теорема Байеса — всё строится на операциях с дробями.


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

💡 Дробям 4000 лет. Древние египтяне использовали дроби ещё в 1800 г. до н.э. Но у них были только единичные дроби: $\dfrac{1}{2}$, $\dfrac{1}{3}$, $\dfrac{1}{4}$… Дробь $\dfrac{3}{5}$ они записывали как $\dfrac{1}{2} + \dfrac{1}{10}$. Представь, как это усложняло вычисления!

💡 Softmax — это нормализованная дробь от экспоненты. Вся магия GPT, BERT и трансформеров строится на одном принципе: взять числа, применить к ним $e^x$, и поделить каждое на сумму. Это обобщение обычной дроби $\dfrac{a}{a+b}$ на много переменных.

💡 Число $\pi$ нельзя записать дробью. $\pi \approx 3.14159…$ — иррациональное число. Зато $\dfrac{22}{7} \approx 3.1428$ — очень хорошее приближение, которое используют в инженерных расчётах. Дробное приближение иррационального числа — это целая наука (цепные дроби)!

💡 В floating point все числа — скрытые дроби. Число 0.1 в памяти компьютера хранится как $\dfrac{3602879701896397}{2^{55}}$. Вот почему 0.1 + 0.2 = 0.30000000000000004 в Python. IEEE 754 — это система представления дробей в двоичной системе.


💡 Совет: Дроби — это не скучная арифметика из школы. Это язык, на котором написаны все формулы ML. Следующий раз, когда увидишь в статье attention weight 0.72 или dropout 0.5 — ты будешь знать, что за этим стоит: это просто $\dfrac{18}{25}$ и $\dfrac{1}{2}$. Математика перестаёт быть магией, когда понимаешь её основы.

Попрактикуйся: Открой любую ML-статью на arXiv и найди в ней 5 дробей. Запиши их в виде $\dfrac{a}{b}$ и попробуй сократить. Это лучший способ закрепить материал! 🚀

Есть вопросы?

Задай вопрос AI-учителю в Telegram

🤖 Открыть бота →
💬 Есть вопрос? Спроси бота!