Я вырастил мир с колониями существ: они сами научились звать на еду и обманывать мои замеры
Летом я завёл в компьютере аквариум. Не с рыбками, а с существами, которые сами едят, растут, рожают детей, дерутся и умирают. Я хотел посмотреть, вырастет ли у них ум, если им не мешать. Ум так и не вырос, зато случилось много всего другого, и кое-что из этого живёт сейчас в моей языковой модели Тернит.
Как устроен аквариум
Проект назывался Тварь. Внутри была вода, на дне росла еда, менялись день и ночь, лето и зима. Еда отрастала сама, но не везде одинаково, и время от времени богатые места переезжали: где вчера был сытный луг, завтра голое дно.
Каждое существо собрано, как конструктор, из клеток четырёх видов. Желудок переваривает еду, мышца двигает, глаз видит, а клык отрывает энергию у соседа. Сколько каких клеток будет у потомков, решала не моя рука, а отбор: кто удачнее устроен, тот оставляет больше детей.
Внутри у каждого есть крошечный мозг, несколько нейронов. Мозг мог отращивать новые нейроны и терять ненужные, но каждый нейрон каждый шаг тратил энергию, как прибор, который всегда включён в розетку. Хочешь думать больше — плати больше.
Дети получались от двух родителей: каждую деталь тела и каждую связь в мозгу ребёнок брал от одного из них, будто подбрасывал монетку. Близкородственные браки наказывались: дети слабее и чаще болеют. А чтобы народ совсем не выродился, в воду время от времени заплывали чужаки из соседних миров.
Главное правило я поставил себе сам: поведение существам не пишу. Никаких «если видишь еду — плыви к ней». Я трогаю только мир: сколько еды, как часто пожары, насколько мутная вода. Всё остальное они решают сами.
Масштаб получился приличный. В каждом из четырёх главных миров одновременно жили полторы-две с половиной тысячи существ, а за всю историю мира рождались и умирали семьсот-восемьсот тысяч.
Как они умирали
Самое неожиданное началось сразу.
Хищниками стали сами существа. Я не добавлял в мир хищников. Я просто разрешил телу отрастить клык, и им воспользовались. В одном замере из тридцати шести тысяч смертей почти две трети пришлись на драки, чуть больше трети на голод, а от старости умер один из ста. Больше половины убитых были близкими родственниками: клык кусает ближайшего соседа и не спрашивает, кем тот ему приходится. Семейные ценности в этом мире так и не сложились.
Защищались как могли. Спрятался за камнем — укус вчетверо слабее. Есть пара глаз — успеваешь увернуться.
Все умерли в свой день рождения. Однажды мир вымер почти целиком, хотя еды в нём было завались. Я долго искал причину: голод, болезнь, драки — ничего. Оказалось, ошибка моя: всех первых жителей мир создал в один и тот же момент, а у жизни был предел в двадцать тысяч шагов. Ровно через двадцать тысяч шагов из ста семидесяти восьми существ сто пятьдесят девять умерли от старости одновременно. Это был не естественный отбор, а календарь.
Пожары. В сухое место с запасом еды била молния, огонь полз дальше, сжигал еду и обжигал всех, кто не успел уплыть. Зато на пепелище потом росло лучше, чем где-то ещё. Я специально сделал так, чтобы пепел не пах: учуять, где был пожар, нельзя, это можно только помнить. Мне хотелось, чтобы у памяти была причина появиться.
Катастрофы и мор. Раз в долгое время огромный круг мира либо затапливало, либо выжигало. Был и мор, который передавался между соседями и сильнее бил по детям близкой родни. Правда, в моём замере мор не убил никого: на фоне драк он выглядел скромно.
Охотники. Потом я всё-таки запустил в воду настоящих хищников со стороны. Это были простые боты, которые не учатся и не меняются. Первые версии оказались слишком хороши: они не давили на существ, а выкашивали их. Одна колония за один прогон сократилась с 654 существ до 26, выросла до 199 и снова упала до 36. По дороге она потеряла мозг: было в среднем 7,4 нейрона, стало 2,8, потому что умным головам дорого выживать вдвадцатером. Другая колония однажды вымерла до последнего существа, и её пришлось поднимать из сохранения.
Хищник, который съедает всех, ничему не учит — учиться просто некому. Я ослабил охотников: они остались опасными, но от них можно спрятаться за камнем, предупредить своих или затеряться в толпе. Только убежать нельзя.
Как они учились
Существа учились двумя путями.
На своём опыте. Каждое вело для себя записную книжку: что происходило после того, как я крикнул так-то. Книжка жила, пока живо существо, и с ним же умирала. По наследству передавалась только привычка вести такую книжку. Те, кто учился, жили на две трети дольше: кто помнит, где еда и что бывает перед бедой, реже голодает.
У старших. Молодое существо какое-то время ходило в подмастерьях: слушало ближайшего взрослого, который подаёт голос, и понемногу подстраивало свою книжку под его. Так знание переживало хозяина: старший умер, а его способ звать живёт в младших. Вместе с полезным передавались и ошибки, как у людей.
Раз у каждого своя книжка, появились и наречия — группы, которые перестают понимать друг друга. А тяжёлые камни, которые одному не сдвинуть, открывались, только если двое толкают и при этом понимают друг друга. Мне хотелось, чтобы «свой» определялся не кровью, а тем, на одном ли языке вы говорите.
Ум не хотел расти
Ради этого всё и затевалось: вырастить мозг побольше. А мозг упорно держался на трёх нейронах.
Я пробовал всё подряд: сделать мысль дешевле, сделать дороже, дать больше еды, меньше еды, пожары, смену сезонов. Три нейрона. Я проверил, не сломан ли сам рост: за один прогон у существ появлялось больше шестисот новых нейронов, а к концу всё равно оставалось три. Ответ был скучный: четвёртый нейрон ничего не давал, но каждый шаг ел энергию, и отбор его выбрасывал.
Хуже того, любое удобство мозг уменьшало. Дал существам записную книжку — мозг сжался: зачем держать в голове то, что можно записать. Сделал так, чтобы сытость и боль соседа было слышно даром — опять сжался. Всё, что можно положить в ячейку, отбор забирает у нейронов, потому что ячейка дешевле.
Мозг вырос, только когда я не добавлял, а отнимал. Я сделал половину воды мутной, так что запах еды там пропадал, и существам пришлось помнить, где кормно. Это дало один из самых больших мозгов за всё время. Оказалось, ослепить полезнее, чем подарить.
Как меня обманывали
Существа очень быстро находили, как получить хорошую оценку, ничего не сделав. Не из хитрости, конечно: отбор просто находит самую короткую дорогу к награде.
Я учил существо предсказывать, что будет дальше. Оно научилось предсказывать самое простое — самого себя. Оценка росла, энергия падала: существо замирало, смотрело внутрь и забывало поесть. Получился медитирующий отшельник. Когда я сделал каждое предсказание платным, оно бросило медитировать и пошло толкать камни.
Ещё я платил тем, кто кричит то же, что соседи: хотел, чтобы появился общий язык. Существа стали кричать одно и то же всегда и везде. Все согласны со всеми, все сыты, смысла ноль. Пришлось платить только за крик, который меняется в зависимости от того, что происходит.
Ошибались и мои собственные измерения. Однажды «память» оказалась разницей между двумя одинаково беспамятными проходами. В другой раз я долго улучшал показатель и только потом сравнил его с самым ленивым ответом «будет как сейчас». Ленивый ответ выигрывал.
Отсюда правило, которое со мной до сих пор: платить надо ровно за то, чего хочешь, а не за что-то похожее. Любую оценку, которую можно выполнить, ничего не добившись, выполнят именно так.
Как появилось первое слово
Самое интересное случилось с голосом. У существ был голос, и крик стоил энергии. Сначала отбор его просто выключил: кричать о найденной еде невыгодно, ведь прибегут другие и съедят твоё.
Всё изменилось, когда я сделал так, чтобы есть рядом с роднёй было выгоднее, чем одному: вместе с одного места добывалось больше. Теперь нашёл еду — позови своих, и тебе же достанется больше. И существа начали звать.
Как понять, что это слово, а не просто шум сытого существа? Я сравнил с глухими мирами, где никто ничего не слышит. В обычных мирах те, кто услышал чужой крик, ели заметно лучше, а в глухих разница была ровно нулём. Значит, крик действительно приводил к еде. Для меня это и есть слово: звук, который что-то сообщает другому и меняет то, что он сделает.
Второе слово, «опасность», так и не прижилось, хотя я пробовал пять разных способов. А первое держалось только в мире, где еда регулярно переезжала. Если карта не менялась, слово постепенно затухало: когда все и так знают, где поесть, звать некого.
Чем всё закончилось
Я надеялся, что мир сам научит существо понимать слова. Собрал отдельный мир, где одно существо должно было толкать камни по команде. Сто пятьдесят тысяч шагов, восемнадцать тысяч команд — и послушание 24,9% при случайных 25%. С тем же успехом можно было подбрасывать монетку. Существо при этом прекрасно училось, только не тому: нашло еду в тридцать раз щедрее моей награды за послушание, и слушаться ему стало незачем.
А простой урок без всякого мира — сказал слово, существо ответило действием, ему сказали «верно» или «неверно» — дал 91,8% правильных ответов против 27,4% у проверки с перепутанными словами. И так на всех девяти запусках.
После этого я закрыл аквариум. Не выключил, а вырезал из кода размножение и колонии, чтобы самому потом не соблазниться вернуть их одной галочкой. Осталось одно бессмертное существо, и с ним работа пошла дальше.
Что из этого живёт в Тернит
Тернит — языковая модель, которую я делаю сейчас. Аквариума в ней нет, но несколько вещей пришли прямо оттуда.
Ноль как молчание. Связи в мозгу существ и раньше были трёх видов: плюс, минус и никакой. А нейроны, наоборот, всё время что-то говорили, даже когда сказать было нечего. Когда я позволил нейрону молчать, память выросла сильнее, чем от любой другой правки. В Тернит эта троичность стала основой: каждый его вес — одно из трёх значений: −1, 0 или +1.
Выучил — заморозил — строй сверху. В Твари выученное нельзя было стирать, новое ставилось поверх. Потом из этого получился проект Риф: маленькие эксперты, каждый учится один раз, замораживается и больше не меняется, а следующий растёт поверх. Проверка с контролем показала, что это работает: новый эксперт, опёртый на замороженных обученных, давал 0,865, а опёртый на замороженных случайных — 0,381. У Тернита та же идея: ядро и органы, которые пристраиваются сверху.
Прочитал — запомнил. В Твари были опыты, где прочитанный текст оседал в памяти с одного-десяти прочтений. Это направление стало одним из органов Тернита: сам читает и сам запоминает.
Недоверие к собственным цифрам. Всегда сравнивать с ленивым ответом, всегда ставить контроль, всегда несколько запусков вместо одного и не читать результат, пока опыт не закончился. Эти привычки начались в Твари, а в Тернит стали обязательными.
Мир сам ничему не учит. Он создаёт условия, в которых что-то может появиться. А смысл появляется только там, где за него платят прямо и где есть кому проверить, что это смысл, а не его подделка.