- BrainTools - https://www.braintools.ru -
Продолжая тему Крошечной Языковой Модели на Nodejs [1] мы поймем где проходит граница ее возможностей. На примере Крошечной Языковой Модели (TLM) из 2 160 параметров мы проведём воспроизводимый эксперимент и увидим в цифрах: знакомый шаблон – 99,93%, перестановка токенов – 81,69%, неизвестная структура -?%.
По следам обсуждения моего автограда на Node.js в ML-сообществе и отличного фидбека от инженеров на Hashnode (привет Ahmet Özel), я добавил в проект небольшое исследование границы между запоминанием [2] и обобщением в версии 1.1.0.
Я зафиксировал seed 42 и добавил финальную frozen evaluation из четырёх проверок:
точный обученный шаблон;
знакомые токены в новом порядке;
полностью отложенный шаблон, не участвовавший в loss;
сохранение 14 отношений, изученных до adaptive SFT.
|
Проверка |
Prompt |
Ожидалось |
Ответ модели |
Результат |
Min target P |
|---|---|---|---|---|---|
|
Seen template / seen order |
|
|
|
PASS |
99.93% |
|
Seen tokens / new order |
|
|
|
PASS |
81.69% |
|
Held-out template |
|
|
|
FAIL |
10.46% |
|
Original-task retention |
14 исходных отношений |
14/14 |
14/14 |
PASS |
99.70% |
Значения 99.93%, 81.69% и 10.46% это не accuracy, а минимальная вероятность правильного target-токена в ответе.
Для original-task retention модель сохранила 14/14 правильных ответов, то есть exact-match accuracy составила 100%, а минимальная вероятность target-токена – 99.70%.
На held-out вопрос:
does cat know read ?
модель вместо ожидаемого:
cat cannot read.
ответила:
cat can fly.
В этом запуске практическая граница проходит между MEMORIZATION/локальным переносом и настоящей GENERALIZATION.
Модель уверенно воспроизводит обученный шаблон и справляется с небольшой перестановкой знакомых токенов, но новый шаблон вопроса уже разрушает выученное поведение [3]. Падение минимальной вероятности правильного target-токена наглядно показывает эту границу:
99.93% → 81.69% → 10.46%
Такой предел ожидаем для модели всего с 2 160 параметрами, восьмимерными embeddings, двумя attention heads, двумя Transformer-блоками и учебным миром из 24 токенов.
Причина не только в количестве весов: корпус содержит очень мало языковых конструкций. Дополнительные нейроны [4], более широкие embeddings или новые Transformer-блоки могли бы помочь, однако без более крупного и разнообразного набора данных они способны лишь точнее запомнить те же примеры.
Таким образом, эксперимент показывает:
уверенное запоминание обученного поведения [5];
ограниченный перенос на изменённый порядок токенов;
провал на неизвестной структуре вопроса;
отсутствие catastrophic forgetting благодаря rehearsal – сохранены все 14/14 исходных отношений.
Это не полноценный статистический benchmark, а воспроизводимая учебная диагностика одного запуска с фиксированным seed. Её задача – наглядно показать где маленькая language model перестаёт запоминать и должна начать обобщать.
Полный код эксперимента, deterministic tests и обновлённый скрипт уже доступны в репозитории.
Полный код включая v1.1.0 на GitHub: tiny-language-model-neuro-js [6]
Исходный лонгрид-туториал на Хабре: Создаём Tiny Language Model на чистом Node.js [1]
Автор: Maktordev
Источник [7]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/33796
URLs in this post:
[1] Крошечной Языковой Модели на Nodejs: https://habr.com/ru/articles/1063406/
[2] запоминанием: http://www.braintools.ru/article/722
[3] поведение: http://www.braintools.ru/article/9372
[4] нейроны: http://www.braintools.ru/article/9161
[5] поведения: http://www.braintools.ru/article/5593
[6] tiny-language-model-neuro-js: https://github.com/sekretov/tiny-language-model-neuro-js
[7] Источник: https://habr.com/ru/articles/1065160/?utm_campaign=1065160&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.