Странное чувство — дать модели целую книгу, а через полтора часа получить её обратно слово в слово. Вчера ближе к полуночи это случилось: орган памяти Тернита выучил учебник по Python — шесть с половиной тысяч строк, с заголовками и примерами кода — и вернул его без единой ошибки.
Напомню, о чём речь. Два дня назад я рассказывал, как модель запоминает текст с одного показа: в её веса вклеивается маленькая добавка, вклейка, и текст больше не нужно держать рядом как шпаргалку. Тогда это проверялось на чужой открытой модели, и вклейка ставилась прямо в ту модель, которая отвечает. Вчера всё это переехало туда, где ему и место в Терните: на нашу собственную модель, выращенную с нуля, и в отдельный орган памяти. Ядро при этом не меняется ни на один вес.
Устроено просто. Сначала текст дословно ложится в банк — обычное хранилище, с которым потом всё сверяется. Затем орган памяти учит текст по отрывкам теми же целочисленными счётчиками, на которых растёт весь Тернит, и на каждый отрывок получается своя вклейка, отдельный файл. Её можно подключить, можно вынуть, можно проверить.
По дороге нашлась вещь, которой я не ждал. Поначалу несколько отрывков возвращались с ошибкой в одно-два слова, и никакая добавка памяти не помогала. Около восьми вечера стало ясно почему. У модели есть последний слой, который выбирает следующий кусочек слова из словаря, и редкие кусочки — «подма», «разводил», части придуманных фамилий — для него все на одно лицо. Это как наборщик, у которого больше тысячи редких литер ссыпаны в одну ячейку. Решение оказалось коротким: каждая вклейка несёт с собой собственные литеры для редких слов своего отрывка. Минут через двадцать все проверочные отрывки возвращались дословно.
После этого я и дал органу книгу. Несколько страниц он выучивает за пару минут, весь учебник занял чуть больше часа — на одной обычной видеокарте, без всякой аренды. Потом программу запустили заново, книгу ей уже не показывали, и она выдала её всю, буква в букву. Я проверил и обратное: без вклеек орган не выдаёт ничего, то есть заранее он книгу не знал, а с вклейкой от другого места нужный отрывок не получается. По команде «забудь» выученное исчезает.
Дальше два дела. Вклейки пока тяжёлые, и сейчас проверяется способ сделать их раз в пятьдесят легче. А главное — научить говорящую модель пользоваться тем, что помнит орган: отвечать на вопросы по выученному и применять правила.
Память Тернита теперь лежит отдельно от его ума: её можно добавить, сверить с оригиналом и убрать — и для этого не нужно переучивать модель.
Андрей Рощупкин