Токени, підрахунок і частота

Модуль 1Урок 2 з 56Безкоштовний модуль

Перед тим як зрозуміти «що означає», модель мусить побачити «що взагалі буває». Як дитина в новій мові спочатку тисячі разів чує «і», «на», «це», так і LLM спершу рахує token — шматочки тексту. «Кіт» може бути одним token, «коти» — двома («кот» + «и»), «бігав» — теж розбитим. Модель не читає речення очима; вона бачить потік token і статистику: хто скільки разів зʼявився.

Підрахунок як перший інстинкт

У короткому тексті «кіт кіт пес яблуко кіт пес» слово «кіт» зустрічається 3 рази, «пес» — 2, «яблуко» — 1. Це не просто цифри в блокноті: часті token стають «звичними» (службові слова, розділові знаки), рідкі — «особливими» (терміни, імена). З лічильників народжуються ймовірності, ваги й embedding — усе починається з питання «скільки разів я це бачив?».

Python
from collections import Counter

text = "кіт кіт пес яблуко кіт пес"
tokens = text.split()
freq = Counter(tokens)
print(freq)
# Counter({'кіт': 3, 'пес': 2, 'яблуко': 1})

for word, count in freq.most_common():
    print(word, "->", count, "разів")
Вивід

Натисніть «Запустити» — вивід зʼявиться тут

Підказка

Додайте в рядок «кота» й подивіться, чи лічильник вважає його тим самим token, що «кіт».

Приклад

Допишіть у той самий рядок «пес гнав кота» і запустіть ще раз. «Пес» стане 3, «кіт» лишиться 3, зʼявляться «гнав» і «кота» по одному разу. Зверніть увагу на останнє: для лічильника «кіт» і «кота» — два різні token, бо він порівнює рядки, а не значення.

Розподіл частот і закон Ципфа

Якщо відсортувати всі token за частотою й намалювати стовпчики, вийде характерна картина: кілька велетнів зліва («і», «в», «на», «що») і довгий хвіст рідких слів. Це закон Ципфа — у природній мові мало слів домінують, а більшість трапляється по разу. Модель вчиться з обох кінців: часті token дають каркас речень, рідкі — конкретний зміст і факти.

Розподіл частот token: кілька дуже високих стовпчиків зліва й довгий хвіст рідких слів — типова картина закону Ципфа в мові.

Від лічильника до ймовірності

Лічильник — ще не ймовірність. «Кіт» тричі в корпусі з шести token означає 3/6, тобто 0,5. Це перетворення робиться в курсі стільки разів, що варто зробити його руками один раз: поділіть кожен лічильник на загальну кількість token, і сума всіх часток дасть одиницю. Далі цю саму величину видає softmax, тільки не з лічильників, а з logits.

Вправа

Python

Напишіть функцію token_probabilities(tokens), яка з списку token повертає словник «token → його частка в списку». Для порожнього списку поверніть порожній словник.

Python
def token_probabilities(tokens):
    # ваш код
    return {}

Тести

Ще не перевіряли

    Порада

    Коли бачите softmax або loss, памʼятайте: під капотом лежить статистика token. Модель не «вгадує з повітря» — вона зважує те, що часто йшло разом у навчальних даних, і не дає рідким словам зникнути повністю.

    Увага

    Якщо датасет кривий (наприклад, лише медичні тексти), розподіл частот зміститься — і модель «повірить», що медичні терміни звичніші, ніж у реальній мові. Розподіл — відбиток пальця корпусу.

    Після підрахунку модель ставить глибші питання: які token стоять поруч? Хто за ким іде? Стабільні пари — «доброго» плюс «ранку», «дорожній» плюс «знак» — стають звичними доріжками. Без лічильника не було б стартової карти, лише хаос символів. Саме тому навіть найскладніший transformer починав з простого «скільки разів я це бачив?».

    Що запамʼятати

    Token — одиниця тексту для моделі, а підрахунок — перший міст від сирих даних до ймовірностей. Часті слова будують каркас, рідкі несуть конкретику. Розподіл частот з довгим хвостом Ципфа керує тим, на що модель звертає увагу під час навчання. І один прийом з цього уроку — поділити лічильник на загальну кількість — повертатиметься в курсі щоразу, коли трапиться слово softmax.

    Перевірка

    4 питання

    Кілька питань за матеріалом уроку. Спроб — скільки завгодно.

    1.Що таке token у LLM?
    2.Навіщо моделі рахувати частоти token?
    3.Що описує закон Ципфа в мові?
    4.Чому рідкі token все одно важливі?