Цялата идея в една верига
Ето целия път. Не се притеснявай, ако отначало звучи като гатанка; останалата част от статията разгръща всяко звено.
Разбий едно изречение на парчета и получаваш токени. Превърни токените в списъци от числа и получаваш ембединги. Нека всеки токен зададе въпрос и получаваш заявка (query); нека останалите отговорят и получаваш ключове (keys) и стойности (values). Сравни заявките с ключовете и получаваш оценки на вниманието. Нормализирай ги със softmax и получаваш тегла на вниманието. Използвай теглата, за да смесиш стойностите, и получаваш контекст. Направи това за всеки токен и получаваш self-attention. Добави мрежа с право предаване (feed-forward), остатъчни връзки и нормализация и получаваш трансформър блок. Наслагай блоковете и получаваш трансформър. Обучи го да предсказва следващия токен и получаваш езиков модел. Научи го да следва инструкции и да се учи от човешка обратна връзка и получаваш нещо много близко до ChatGPT.
Стъпка 1: разбий изречение на парчета и получаваш токени
Компютърът не чете думите като теб. Първото, което прави езиковият модел, е да нареже текста на малки парчета, наречени токени. Токенът може да е цяла дума („интервю“), част от дума („инте“ + „рвю“), препинателен знак или дори интервал, прилепен към дума.
Защо не цели думи? Има твърде много, а всеки ден се появяват нови. С части от думи моделът може да обработи всякакъв текст, включително редки имена и правописни грешки, с фиксиран речник от десетки хиляди токени. Всеки токен в този речник получава ID номер. Изречението „Справих се на интервюто“ може да се превърне в нещо като [40, 1734, 279, 7274].
Един токен е приблизително три четвърти от английска дума, така че „контекстен прозорец от 128 000 токена“ означава около 95 000 думи, които моделът може да разгледа наведнъж.
Стъпка 2: превърни токените във вектори и получаваш ембединги
ID на токен като 7274 е просто етикет. То не казва нищо за смисъла. Затова моделът търси всяко ID в голяма таблица и го заменя с дълъг списък от числа, често стотици или хиляди. Този списък се нарича вектор, а векторът, който представя един токен, се нарича ембединг.
Никой не пише тези числа на ръка. Започват случайни и се нагласят по време на обучението, докато уловят какво означава всеки токен и как се използва.
Стъпка 3: нанеси ембедингите в пространството и смисълът става геометрия
Третирай всеки ембединг като координати на точка и всеки токен става място в огромно многомерно пространство. Хиляда измерения не можеш да си представиш, но идеята работи и в две или три.
В това пространство токените с подобен смисъл се оказват близо един до друг. „Заплата“ е близо до „възнаграждение“ и „компенсация“. „Интервю“ е близо до „среща“ и „наемане“. Дори посоките могат да носят смисъл: известният пример е, че стъпката от „мъж“ към „жена“ сочи приблизително в същата посока като стъпката от „крал“ към „кралица“.
Ембедингите сами по себе си не казват къде стои един токен, а редът променя смисъла: „кандидатът интервюира мениджъра“ не е същото като „мениджърът интервюира кандидата“. Затова моделите добавят към всеки вектор и информация за позицията.
Стъпка 4: всеки токен задава и отговаря на въпроси: заявки, ключове и стойности
Думите променят смисъла си според съседите: „лук“ означава различни неща в „лук и стрели“ и „зелен лук“. Така че всеки токен трябва да гледа към останалите. Това е най-важната идея в съвременния ИИ.
От ембединга на всеки токен моделът създава три нови вектора, като го умножава по три научени таблици от числа:
- Заявка (query): въпросът, който този токен задава. Представи си думата „той“, която пита: „Към кое съществително по-рано в изречението се отнасям?“
- Ключ (key): онова, което този токен предлага, като етикет на картотечен шкаф. Ключът на едно съществително би могъл по същество да казва: „Аз съм нещо, към което може да се сочи.“
- Стойност (value): реалната информация, която този токен ще предаде, ако друг токен реши, че е уместна.
Представи си библиотека: заявката е твоето търсене, ключовете са заглавията по рафтовете, а стойностите са съдържанието на книгите.
Стъпка 5: сравни заявка с ключовете и получаваш оценки на вниманието
Всеки токен сравнява своята заявка с ключа на всеки токен, който вижда, чрез скаларно произведение: двата вектора се умножават число по число и резултатите се събират. Сходни посоки дават голям резултат, несвързаните — малък или отрицателен.
Резултатът е набор от оценки на вниманието, по една за всяка двойка токени. Висока оценка означава „този друг токен изглежда уместен за моя въпрос“. В изречението „Рекрутърката се обади на кандидатката, защото хареса портфолиото ѝ“ токенът „ѝ“ трябва да даде висока оценка с „кандидатката“ и по-ниска с „рекрутърката“.
Стъпка 6: нормализирай оценките със softmax и получаваш тегла на вниманието
Суровите оценки могат да бъдат с произволен размер, положителни или отрицателни. Функция, наречена softmax, ги превръща в положителни стойности, които се събират точно до 1, и дава на най-големите оценки много по-голям дял.
Тези дялове са теглата на вниманието, нещо като проценти на фокус. Опростен пример за „ѝ“:
| Друг токен | Сурова оценка | Тегло на вниманието |
|---|---|---|
| кандидатката | 4,0 | 0,84 |
| рекрутърката | 2,0 | 0,11 |
| се обади | 1,0 | 0,04 |
| на | -1,0 | 0,01 |
Така „ѝ“ ще насочи около 84% от вниманието си към „кандидатката“.
Стъпка 7: използвай теглата, за да обединиш стойностите, и получаваш контекст
Сега всеки токен изгражда нов вектор, като взима претеглена смес от стойностите: 84% от стойността на „кандидатката“, 11% от „рекрутърката“ и така нататък. Резултатът е ново представяне на „ѝ“, което носи информация за това към кого всъщност се отнася „ѝ“.
Това е, което означава контекст вътре в един модел. Думата вече не е просто абстрактното „ѝ“; тя е „ѝ, тоест на кандидатката, в изречение за портфолио“.
Стъпка 8: нека всеки токен прави това и получаваш self-attention
Когато всеки токен изпълнява този процес едновременно, това се нарича self-attention (самовнимание): изречението, което обръща внимание на самото себе си.
Две подобрения го правят мощен:
- Само токените, които вижда. В модел, който пише текст, всеки токен може да гледа само токените преди себе си, никога напред. Тази причинна маска съществува, защото при генерирането бъдещите думи още не съществуват.
- Много глави едновременно. Моделите изпълняват няколко процеса на внимание паралелно, наречени глави на вниманието, всяка със свои таблици за заявки, ключове и стойности. Една може да следи граматиката, друга — кой към кого се отнася. Това е многоглаво внимание (multi-head attention).
Стъпка 9: добави feed-forward, остатъчни връзки и нормализация и получаваш трансформър блок
Вниманието споделя информация; моделът трябва и да я обработи. Още три части допълват единицата:
- Мрежа с право предаване (feed-forward): след вниманието векторът на всеки токен минава самостоятелно през малка невронна мрежа. Ако вниманието е среща, на която всички споделят бележки, тук всеки ги обмисля на бюрото си.
- Остатъчни връзки (residual): вместо да замени вектора на токена с новия резултат, моделът добавя резултата към оригинала. Това запазва предишната информация и улеснява обучението на дълбоките мрежи.
- Нормализация: стъпка, която преоразмерява числата в стабилен диапазон, за да не растат неконтролируемо и да не се свиват до нищо, докато преминават през много слоеве.
Вниманието плюс feed-forward, обгърнати от остатъчни връзки и нормализация, са един трансформър блок.
Стъпка 10: наслагай блоковете и получаваш трансформър
Един блок дава скромно разбиране. Наслагай десетки от тях, като изходът на единия захранва следващия, и получаваш трансформър — архитектурата, представена от изследователи на Google в статията от 2017 г. „Attention Is All You Need“. Той е „T“ в GPT, което означава „Generative Pre-trained Transformer“.
Всеки слой изяснява картината: ранните слоеве обикновено улавят граматиката, по-късните — по-абстрактни идеи като тон и намерение. Теглата във всички тези таблици, числата, които моделът научава, са онова, което наричаме параметри. Големите модели имат милиарди от тях.
Стъпка 11: обучи го да предсказва следващия токен и получаваш езиков модел
Досега имаме машина, която превръща текста във вектори, съобразени с контекста. Сега ѝ даваме задача. В края на стека моделът превръща вектора на последния токен в оценка за всеки токен от речника си, след което отново прилага softmax, за да получи вероятност за всеки. С други думи: „При всичко досега, какво следва?“
По време на обучението моделът чете огромни количества текст: книги, статии, код, уебсайтове. На всяка позиция той налучква следващия токен, сравнява догадката си с истинския и леко премества всичките си параметри в посоката, която би направила верния отговор по-вероятен. Повтори това трилиони пъти и резултатът е езиков модел.
Тази проста задача учи на много: за да предскаже следващата дума в учебник или договор, моделът трябва да усвои граматика, факти и модели на разсъждение.
Генерирането на текст е просто това предсказване на повторение. Моделът избира следващ токен, обикновено чрез случайна извадка според вероятностите (настройка, наречена температура, контролира колко смел е изборът), добавя го към текста и предсказва отново, токен по токен.
Стъпка 12: научи го да следва инструкции и да се учи от обратна връзка и получаваш ChatGPT
Модел, обучен само да предсказва следващия токен, е блестящо автоматично довършване, а не асистент. Задай му въпрос и може да отговори с още три въпроса. Два допълнителни етапа на обучение поправят това:
- Настройка по инструкции (instruction tuning): моделът се обучава върху много примери на молба, последвана от добър, полезен отговор. Той научава модела „някой пита, аз отговарям полезно“.
- Учене от човешка обратна връзка: хора сравняват двойки отговори на модела и избират по-добрия. Тези предпочитания се използват, за да се насочи моделът още повече към отговори, които са полезни, точни и безопасни. Това се нарича обучение с подкрепление чрез човешка обратна връзка, или RLHF.
Добави чат интерфейс и получаваш нещо близко до ChatGPT, Claude или Gemini: същият трансформър, оформен да действа като асистент.
Всичко заедно: пътешествието на едно изречение
Представи си, че пишеш: „Най-трудният въпрос на интервю е…“ За части от секундата:
- Текстът се разделя на токени и всеки се превръща в ембединг с информация за позицията.
- Във всеки трансформър блок всеки токен формира заявка, ключ и стойност, оценява предходните токени, превръща оценките в тегла и смесва техните стойности. „Труден“ се свързва с „въпрос“ и фразата се разбира като тема на интервю.
- Слоевете feed-forward обработват всеки обновен вектор; остатъчните връзки и нормализацията поддържат стабилност; десетки блокове го изясняват допълнително.
- Крайният вектор се превръща във вероятности върху речника. Токен като „разкажи“ получава висока оценка; моделът го избира, добавя го и започва отначало.
Кратък речник
| Термин | С прости думи |
|---|---|
| Токен | Малко парче текст, често дума или част от нея |
| Вектор | Подреден списък от числа |
| Ембединг | Векторът, който представя смисъла на токен |
| Заявка / Ключ / Стойност | Какво токенът пита / какво предлага / какво споделя |
| Оценка на вниманието | Доколко един токен изглежда уместен за друг |
| Softmax | Превръща оценките в дялове, които се събират до 1 |
| Тегло на вниманието | Делът фокус, който един токен дава на друг |
| Контекст | Смисълът на токен, обновен от съседите му |
| Self-attention | Всеки токен обръща внимание на токените, които вижда |
| Трансформър блок | Внимание + feed-forward + остатъчни връзки + нормализация |
| Параметри | Научените числа вътре в модела |
| Контекстен прозорец | Колко токена моделът може да разгледа наведнъж |
Защо това е важно за кариерата ти
Ако отиваш на интервю за позиция, свързана с ИИ, умението да обясниш токени или внимание с прости думи е реално предимство. То те прави и по-умел потребител на ИИ инструменти: ще разбереш защо могат уверено да твърдят грешни факти (те предсказват вероятен текст, а не проверена истина) и защо ясният, конкретен промпт дава по-добри отговори. За практическо приложение виж нашите ръководства за използване на ИИ инструменти за упражняване на интервюта за работа и за какво всъщност променят ИИ помощниците за интервюта.
Често задавани въпроси
Каква е разликата между токен и дума?
Токенът е единицата, която езиковият модел чете. Често срещаните думи са често един токен, а по-дългите или редките се разделят на няколко части. В английския един токен е средно около три четвърти от дума.
Разбира ли езиковият модел какво казва?
Той изгражда богати вътрешни представяния на смисъла и контекста, но е обучен да предсказва вероятен текст, а не да проверява факти. Затова отговорите му могат да звучат уверено и все пак да са грешни, а важните твърдения винаги трябва да се проверяват.
ChatGPT просто трансформър ли е?
В основата си да: голям трансформър, обучен да предсказва следващия токен. Полезен асистент го правят допълнителното обучение върху инструкции и човешка обратна връзка, както и продуктът, изграден около него.