Цілі числа, числа з рухомою комою і точність
Модуль 1Урок 3 з 56Безкоштовний модуль
У моделі живуть два «племені» чисел. Цілі (int) — для підрахунку й позицій: «5-й token у реченні», «batch з 64 прикладів», «512 нейронів у шарі». Вони точні: 2 завжди 2. Дробові (float) — для ваг, ймовірностей і gradient: «цей token на 0.73 важливий», «confidence 0.12». Мова нечітка — і моделі потрібна мʼякість float, щоб говорити «трохи більше», а не лише «так/ні».
Int: структура й лічильники
Position token у реченні — integer. Розмір vocabulary — integer. Кількість шарів — integer. Якщо ви бачите «token #47», це індекс, не ймовірність. Integers тримають скелет: хто де стоїть, скільки елементів у масиві. Без них модель не знала б порядку слів у prompt.
Float: вага, ймовірність, навчання
Кожен parameter у нейромережі — float. Softmax перетворює logits на ймовірності на кшталт 0.08, 0.71, 0.21. Gradient показує «куди зрушити вагу на 0.0003». Саме дроби дозволяють плавно вчитися: не стрибком 0→1, а поступовим підкручуванням.
count = 7 # int: скільки разів зустріли token
prob = 0.75 # float: «доволі ймовірно»
weight = 0.03125 # float: типова мала вага
print("Tokens:", count)
print("Confidence:", prob)
print("2 + 3 =", 2 + 3) # 5 — точно
print("0.1 + 0.2 =", 0.1 + 0.2) # 0.30000000000000004 — сюрприз!Натисніть «Запустити» — вивід зʼявиться тут
Підказка
Спробуйте 0.1 + 0.2 == 0.3, а потім round(0.1 + 0.2, 10) == 0.3 — і ви побачите, чому дроби порівнюють з допуском.
Увага
Float у компʼютері — наближення. Додавання 0.1 + 0.2 дає 0.30000000000000004. Це floating-point precision. Моделі з мільярдами операцій накопичують крихітні похибки — і все одно навчаються, бо алгоритми (і mixed precision) враховують це.
Приклад
Слово «привіт» зустріли 12 400 разів (int). Ймовірність наступного token після «привіт» для «світ» — 0.62 (float). Змініть 0.62 на 0.05 — і модель «відчує», що «світ» рідко йде далі; на 0.95 — майже завжди.
На практиці GPU часто рахує у float32 або float16 (mixed precision): це швидше й дешевше, але й привід тим більше памʼятати про наближення. Індекс позиції лишається int, матриця ваг — float. Цей поділ не випадковий: структура тексту дискретна, а навчання плавне.
Logits перед softmax — теж float: необмежені числа, з яких роблять ймовірності. Якщо logit для token «світ» дорівнює 3.2, а для «банан» — мінус 1.5, softmax перетворить їх у частки близько 0.81 і 0.02. Int тут не підійде: між «ніколи» і «завжди» потрібна плавна шкала впевненості.
Що запамʼятати
Int відповідає за структуру: індекси, розміри, лічильники. Float відповідає за відтінки навчання: ваги, ймовірності, gradient. Разом вони тримають жорсткий каркас і мʼяке значення. І похибка float — не баг, а властивість: з нею живуть щодня, а не виправляють.
Перевірка
3 питанняКілька питань за матеріалом уроку. Спроб — скільки завгодно.