Комментарии 13
Фактически вы предлагаете перейти к обучению на хард негативз. В случае с программированием это существенно проще. Генерировать правильный и почти правильной код легче. Это логично и правильно. Обучение процедурам, как таковым, я полагаю, приведет лишь к тому, что ЛЛМ выучится форме разбора ошибок но не более. Паттерны правильного программирования проявляются у нейросети через именно хард негативз.
Ну и вынужден поправить, нейросеть не запоминает, вы не найдете в LLM текст Войны и Мира, а если найдете - это плохо обученная нейросеть. Главная задача нейросети во время обучения - генерализация, выстраивание границ.
Обучение процедурам, как таковым, я полагаю, приведет лишь к тому, что ЛЛМ выучится форме разбора ошибок но не более
Она выучится процессу. (1) взять ошибку (2) посмотреть на исходный модуль (3) обсудить ее и уточнить (4) сделать патч в нотации патчинга. Это главное в моей мысли.
Хотя сама идея из статьи мне кажется интересной (уж не знаю, сработает ли это, и не приведёт ли к тому, что вместо логики, модель будет вести себя всегда как студент при сдаче экзамена, наоборот более активно пытаясь подстроить решение под ответ), но вот сам процесс вы описали в сообщении выше, и его можно прямо в таком виде включить в промпт и это будет работать. Так, что аргумент что нужно выучить её модель процессу - а зачем, если его описание настолько простое.
В том, что описанный Вами путь рабочий, особых сомнений нет. И описание хорошее и интересное.
Только вопрос, так как статья Ваша не просто описательная, а с фокусом на новизну: Вы не проверяли, действительно ли предложенное Вами содержит эту существенную новизну?
На мой взгляд, основная проблема не в отсутствии алгоритмического подхода к созданию дата-сета (достаточно простого подхода в Вашем вполне логичном описании), а в экономической эффективности обеспечения вычислительной сложности этого процесса и контроле качества данных из Git-Hub (что является задачей сложной и, веротяно, дорогой).
1) То, что модели сейчас не обучены таким образом я вывожу эмпирически. По тому, как они работают и разрабатывают.
2) То, что так учить можно, это точно. Я привел статьи. Проводили прям схожие эксперименты, и это давало результат
Тут, в моем понимании, только времязатратно собрать датасет. Ну или этим еще всерьез никто не озаботился... Авторы статей прогоняли такую дрессировку на обучающих выборках (таймлайнах) программных модулей. А всерьез выбрать из гитхаба существенно большую выборку ошибка-разбор-патч (не пару тыс, и даже не пару млн, а прям сотни млн и млрд примеров)... Нужно немного его прошерстить, прочекать хотя бы слабенькой моделью и где-то выправить текст и его дополнить... А в идеале еще чекнуть человеку потом.
И я уверен, что этим займутся. Не сейчас, так в этом-следующем году максимум. Первый, кто сделает это и обгонит конкурентов, создаст прецедент, и остальные нагонят в течении года. Китайцы так вообще вручную могут перебрать весь гитхаб или создать новые, качественно описанные репозитории. Просто скинувшись заметками -)
Кроме того... Сейчас репозиториев с детальным описанием ошибок и трека решений очень много. Это все наполняется клодами и т.п. Возьми репозиторий OpenClaw или IronClaw, там уже несколько тыс Issue в готовом виде лежит.
Мне кажется OpenAI уже собирают такой датасет через Codex.
вполне может быть. хотя статьи, которые я нашел, от 24-25 годов. Так что если бы всерьез взялись, то давно собрали бы такой датасет.
Я к тому, что, судя по всему, это очень дорого пока получается - и вычислительная сложность высока и очистка "мусора" сложна и нетривиальна. Скорее, именно поэтому и не собрали.
Мне кажется, главный вопрос не в том, брать ли issue/PR, а в том, как из этого сделать нормальную обучающую траекторию. PR может чинить сразу несколько вещей, issue уже может содержать решение, тесты бывают плохими, патч может проходить CI и всё равно быть нерабочим (классика для тестов, написанных агентами).
В идеале нужно учесть, где модель нашла проблему, какие гипотезы отбросила, какой дифф сделала, чем проверила, и почему альтернативные патчи хуже. Иначе есть риск обучить модель красиво объяснять дифф вместо повышения качества кода
Я переводил LLM во фрактальность... Они делают откат в линейность...

Знания без практики — мертвы | Разница между «декларативной» и «процедурной» памятью у LLM