26 сентября 2026

Органы: новые умения, не трогая ядро

Меня давно занимает вопрос, как добавлять модели новые умения, не ломая старых. Обычная нейросеть учится вся сразу, и когда её доучивают новому, она охотно забывает прежнее. Я пошёл другим путём.

У Тернита есть ядро — основа, которая владеет языком. После того как оно выучилось, я его заморозил и больше не трогаю. Новые умения приходят отдельными органами. Орган — это небольшой блок внимания, то есть та часть сети, которая умеет смотреть назад по тексту и находить нужное. Он встаёт рядом с одним из слоёв ядра и учится только сам.

Главное в органе — кран. Это маленький переключатель, который на каждом слове решает, сколько голоса дать органу, а сколько оставить ядру. Каждое открытие крана стоит небольшой штраф, поэтому орган учится молчать на чужом тексте и говорить только там, где от него польза. Когда кран закрыт, модель в точности та же, что и без органа.

Сейчас органов два. Первый — счёт: голые примеры до ста. С ним модель решает 472 примера из 606 против 338 без него, а на вопросе «какое число больше» поднялась с 39 процентов до 97. Второй — чтение: ответить на вопрос по справке, которую дали прямо в тексте. Люди в справках выдуманные, поэтому ответ нельзя вспомнить, его можно только прочитать. Без органа модель справлялась в 17 случаях из ста, с органом — в 70.

А вот вместе органы поначалу мешали друг другу. Орган чтения стоит выше и открывался на вопросах про счёт, ведь они тоже начинаются со слова «Вопрос», и счёт просел. Помогли две вещи: растить второй орган, когда первый уже стоит на месте, и почаще показывать ему примеры счёта там, где он должен молчать. Счёт вернулся почти весь, до 459, а чтение даже выросло. Сейчас на видеокарте идёт следующий шаг: оба органа доучиваются вместе, чтобы подстроиться друг под друга.

Органы небольшие. Один — около миллиона весов, а в ядре их 87 миллионов, так что орган весит примерно пятидесятую часть ядра. В троичной записи это около двухсот килобайт, меньше фотографии с телефона. Ближайшая родня органа — адаптеры, которые навешивают на большие чужие модели, но те обычно в разы крупнее и не умеют сами закрываться на чужом тексте.

Раз органов будет много, пришлось ответить на вопрос, как потом понять, какой за что отвечает. Теперь у каждого органа есть паспорт прямо внутри файла: за что он отвечает, на каком ядре вырос, чем его кормили и как он сдал проверку. Орган с чужого ядра программа просто откажется читать, потому что на чужом ядре он выдаёт мусор.

Умение, которое ставится и снимается, как деталь, ценнее умения, вросшего в модель навсегда: его можно отдельно проверить и отдельно выбросить.

Андрей Рощупкин