Следите за новостями по этой теме!
Подписаться на «Рифы и пачки / Твоя культура»
Исследователи Apple провели эксперимент, который может изменить правила игры в обучении искусственного интеллекта (ИИ). Команда взяла StarChat-Beta — открытый ИИ-модель для программирования — и попыталась научить её создавать код пользовательского интерфейса на SwiftUI. Для тех, кто не знаком: SwiftUI — это язык и инструментарий от Apple для написания интерфейсов в приложениях на их устройствах. Проблема была в том, что в исходном наборе данных почти полностью отсутствовал код на Swift и, особенно, на SwiftUI. То есть ИИ не имел ни явных примеров, ни инструкций для правильного решения таких задач.
Однако команда нашла решение: они создали цикл обратной связи. Сначала они давали StarChat-Beta задания — текстовые описания интерфейсов — и требовали написать соответствующий код на SwiftUI. Каждый написанный ИИ-код компилировали и проверяли, работает ли программа. Рабочие варианты сравнивались с исходными заданиями при помощи другой продвинутой модели — GPT-4V, чтобы выяснить, совпадает ли результат с запросом. Только удовлетворяющие оба условия работы программы (работоспособность + соответствие описанию) коды оставляли в датасете для дальнейшей работы. Процесс повторили пять раз: очищенный и улучшенный набор примеров снова поступал в обучение модели на следующем цикле.
В результате этих итераций команда получила почти миллион рабочих примеров кода на SwiftUI и обучила на них новую модель — UICoder. Испытания UICoder показали: она справляется с заданиями не только лучше исходной версии StarChat-Beta, но и успешнее, чем знаменитая GPT-4 — по частоте успешной компиляции кода.
Особенно поразителен тот факт, что изначально обучающий набор почти не содержал примеров кода на Swift. Это случилось случайно, при формировании TheStack — одного из крупнейших источников обучающих данных для ИИ. По сути, UICoder не мог механически повторять чужой код — её «умение» родилось внутри циклов самопроверки и дообучения на собственных результатах.
Авторы исследования считают, что подобный подход можно применить и к другим языкам программирования и инструментам создания интерфейсов. Это особенно актуально там, где мало исходных данных для обучения. Однако сами учёные признают: пока неясно, насколько надёжны и масштабируемы такие самообученные ИИ. Ведь всегда остаётся риск, что синтетические данные накапливают скрытые ошибки. Кроме того, успех модели пока продемонстрирован только в специальных лабораторных условиях; работает ли всё так же вне них — большой вопрос.
Apple решила сделать вид, будто искусственный интеллект может придумать программирование с нуля — и для убедительности полностью "забыла" положить примеры Swift и SwiftUI в исходные данные.
Результат: StarChat-Beta, известный ИИ для кода, остался без подсказок и шаблонов. Вместо нормальных примеров его просто гоняли по текучке — выдавай код по описанию интерфейса, дальше сам себя проверяй компиляцией, а если ещё и GPT-4V не ругается — молодец, пойдёшь в датасет. Пять кругов ада, и… чудо: уже не жалкий набор, а миллион свежих образцов кода и новый UICoder, якобы умнее даже GPT-4 (по частоте безошибочного запуска).
Такие изыски особенно прекрасны — ведь весь начальный датасет был практически пуст, не считая анекдотических фрагментов Swift на отшибе. Откуда весь этот новый «гений» — из фантомного самотренинга: модель машинально мусолила собственные ошибки и полировку, повторно скармливала лучшие попытки, пока не породила новую версию себя. То, как учёные вынуждены оправдываться за сбои и ошибки синтетического обучения, — тоже забавно: буквально разводят руками, мол, работает ли вся затея вне чистой лаборатории — большой вопрос. Впрочем, с такими подходами ИИ скоро и музыку сочинит на собственных звуках холодильника. Хочется верить, что, кроме цирка, это действительно кому-то пригодится.