Training AI to Paint with Code

개요

AI 모델이 이미지를 생성할 때 사용자가 프롬프트 외에 직접적으로 이미지를 수정할 수 없다는 한계를 극복하기 위해, 언어 모델이 코드를 작성하여 이미지를 생성하고 해당 코드를 직접 수정하는 방식에 대한 연구가 진행되었습니다.

주요 내용

* 프로젝트 목표: AI 이미지 생성 과정에서 사용자의 참여를 높이기 위해, 언어 모델이 P5.js와 같은 그래픽 라이브러리를 사용하여 이미지를 렌더링하는 JavaScript 코드를 작성하도록 학습시키고, 이 코드를 통해 보다 세밀한 이미지 편집을 가능하게 하는 것을 목표로 합니다.
* 작동 방식:
* 모델은 "수채화 스타일의 복숭아 히비스커스 꽃을 그려줘"와 같은 프롬프트를 받아 완전한 JavaScript 스케치를 생성합니다.
* 생성된 코드는 Puppeteer 환경에서 렌더링되어 PNG 이미지로 변환됩니다.
* 생성된 이미지는 사전에 수작업으로 평가된 이미지 풀에서 무작위로 샘플링된 두 개의 참조 이미지와 비교 평가됩니다.
* 별도의 평가 모델이 더 나은 수채화 이미지를 선택하며, 이 평가 결과는 강화 학습(GRPO)을 위한 보상 신호로 사용되어 모델을 업데이트합니다.
* 강화 학습 및 보상 함수 설계:
* 창의적이고 디자인 관련 작업에 강화 학습을 적용하기 위한 핵심은 '검증 가능한 보상'을 설계하는 것입니다.
* 기존의 9가지 신호로 구성된 평가 방식은 너무 많은 신호와 중복으로 인해 모델이 특정 예제를 모방하는 데 집중하는 경향이 있었습니다.
* 새로운 4가지 신호로 구성된 평가 방식은 'pairwise' 비교에 60%의 비중을 두어, 더 유연하고 일반화된 학습을 유도하며, 이를 통해 모델의 창의적 결과물이 개선되었습니다.
* 참조 풀 구성: 581개의 참조 이미지는 수작업으로 평가된 결과물로, 117개의 'love-tier', 266개의 'okay' 등급으로 분류되었으며, 색상 다양성을 높이기 위해 추가 생성된 이미지가 보조적으로 사용되었습니다.
* 시스템 프롬프트 진화: 초기에는 400줄에 달하는 p5.brush API 참조를 포함한 프롬프트가 모델의 API 남용(hallucination)을 유발했습니다. GEPA(Prompt-optimisation library)를 사용하여 200번의 반복 학습을 통해, API 문서나 예제 없이 8개의 브러시 메서드만 포함하는 짧고 명확한 프롬프트로 최적화되었습니다.

시사점

본 연구는 창의적인 작업에 강화 학습을 적용하기 위해 주관적인 선호도를 객관적인 보상 신호로 변환하는 데 있어, 정교하게 설계된 보상 함수와 프롬프트 최적화의 중요성을 보여줍니다. 이는 AI가 단순히 프롬프트에 반응하는 것을 넘어, 코드 생성을 통한 더 깊이 있는 창의적 협업을 가능하게 할 잠재력을 시사합니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions