💡Принцип Златовласки, или при чём тут сказка про трёх медведей?
Казалось бы, какая Златовласка? И какя вообще сказка?
Вот и я сначала удивился, когда услышал выражение "Goldilocks hard" (c английского дословно Goldilocks будет Златоваской) в недавней лекции Charles Sutton-а, Research Scientist-а из DeepMind, про AI Agents for Code Generation.
Давайте разберёмся.
Златовласка — это девочка из известной английской сказки Goldilocks and the Three Bears. В русском варианте, "Три Медведя", адаптированном Львом Толстым, она была заменена на безымянную «одну девочку», а в более поздних версиях — на Машу.
Сюжет сказки прост: девочка заблудилась в лесу, зашла в дом трёх медведей и обнаружила там три набора предметов разного размера — три тарелки, три стула, три кровати. Попробовав их, она каждый раз находила, что один слишком большой, другой слишком маленький, а третий — в самый раз.
Вот из этого "в самый раз" и происходит принцип Златовласки (Goldilocks principle), который используется в самых разных областях — от медицины и психологии до инженерии и машинного обучения.
Например, оптимальный learning rate при обучении модели — это тот, который и не слишком маленький (чтобы обучение не застопорилось), и не слишком большой (чтобы модель не перескакивала экстремумы и не сходилась хаотично).
Sutton в своей лекции использовал выражение Goldilocks hard, говоря о бенчмарках MBPP и HumanEval для оценки моделей генерации кода. Эти датасеты состоят из простых задач: реализовать базовый алгоритм на Python в 10–20 строк. В 2021–2022 годах такие бенчмарки были в "самый раз" — модели уже демонстрировали, что могут решать подобные задачи, но всё ещё показывали далёкие от идеала метрики, и было понятно, куда расти. Сегодня такие датасеты безнадежно устарели: 1) слишком простые 2) слишком мало юнит-тестов на каждую задачу 3) абсолютно точно они протекли в pretrain любой новой модели. По сути, MBPP и HumanEval стали аналогом MNIST в кодогенерации.
Актуальный Goldilocks hard бенчмарк для кодогенерации — это, скорее, SWE-Bench (а ещё лучше его отфильтрованная версия SWE-Bench Verified), который основан на pull request'ах из крупных open-source Python-проектов на GitHub.
Такая вот история про Златовласку и генерацию кода 🙂
Post #51
1.41K