Тернит думает по-русски: его ядро — та часть модели, которая читает вопрос и пишет ответ, — выросло на русских текстах. Но люди пишут и по-английски, а ещё просят помочь с программным кодом. Значит, нужен второй язык, и начал я с самого очевидного — со словаря.
Модель видит текст не буквами, а кусочками слов. У ядра было 64 тысячи таких кусочков, почти все русские, и английское слово оно резало на мелкие обрывки. Теперь к ним добавилось ещё 50 тысяч — английских и из программного кода, нарезанных по нашим собственным текстам. Русские кусочки остались прежними до последнего бита.
Каждому новому кусочку нужна своя строчка весов — то, что модель про этот кусочек «знает». Этой ночью я учил только эти новые строчки, на английских текстах из интернета, отобранных в два прохода. Всё остальное ядро было заморожено, чтобы русский не сдвинулся. Русский и не сдвинулся. А вот английский почти не появился: на вопрос «What is the capital of France?» Тернит спокойно ответил «Это столица Франции — Париж».
Ответ верный, только по-русски, и в этом весь урок. Словарь даёт словам смысл, а то, как из слов складывается фраза, — порядок, грамматику, связи — держит само тело модели. Тело же английского почти не видело.
Дальше было два пути. Можно доучить всё ядро на английском вперемешку с русским: быстро, но русский мог немного просесть. А можно пристроить к ядру эксперта — небольшую добавку в каждом слое, около 50 миллионов весов, со своей заслонкой. Заслонка учится открываться на английском тексте и прикрываться на русском, а само ядро остаётся замороженным. Такого эксперта можно отключить, усилить или заменить, не трогая ничего остального. Я выбрал эксперта: именно для таких случаев в архитектуре Тернита и решено ставить их поверх ядра.
К утру эксперт был собран и проверен: пока он учится, ни один вес ядра не меняется. За две тысячи шагов он продвинул английский почти так же, как вся ночь работы со словарём, — втрое быстрее. Заслонка научилась различать языки: на английском она открыта на три четверти, на русском — чуть больше чем наполовину. Говорить по-английски Тернит пока не стал. На вопрос, почему небо голубое, он ответил наполовину на одном языке, наполовину на другом: «Sky is Blue, потому что оно состоит из тонких белых частиц». А про столицу Франции по-прежнему отвечает по-русски.
Удивляться тут нечему: за пробу эксперт прочёл около полутора миллионов английских кусочков, а отобрано их сто пятьдесят миллионов. Длинное обучение пойдёт на арендованной видеокарте, и тогда будет видно, сколько английского помещается в эксперта такого размера.
Новый язык не помещается в словарь. Слова можно добавить за одну ночь, а говорить учится тело — и теперь у Тернита для этого есть отдельное место, которое не мешает русскому.
Андрей Рощупкин · Тернит