일본산업뉴스요약

AI의 창의성을 프롬프트 엔지니어링을 통해 고찰 -- 화상 생성 AI
  • 카테고리AI/ 로봇·드론/ VR
  • 기사일자 2022.10.25
  • 신문사 Nikkei X-TECH
  • 게재면 online
  • 작성자hjtic
  • 날짜2022-11-03 22:11:59
  • 조회수709

Nikkei X-TECH_2022.10.25

AI의 창의성을 프롬프트 엔지니어링을 통해 고찰

화상 생성 AI

최근 인공지능(AI)과 관련해 화제가 되고 있는 것이 이미지(화상) 생성 서비스이다. 어떤 적당한 말을 넣으면 그것에 맞는 화상을 AI가 자동으로 생성하는 것이다. 미국 OpenAI의 'DALL-E2'가 앞서 공개되었지만, 화제가 된 것은 'Midjourney'일 것이다.

Midjourney가 공개된 직후, 영국의 Stability AI가 'Stable Diffusion'을 오픈 소스로 공개. 이후에도 다양한 파생 버전들이 등장하고 있다. Midjourney가 생성한 그림이 미국 콜로라도주(州) 품평회에서 1위를 차지해 화제가 된 것도 기억에 새롭다.

필자도 이전, 노트북으로 Stable Diffusion을 작동해보았다. 아쉽게도 메모리가 부족해서 개조판을 쓸 수밖에 없었다. 한 번 작동해 보고 그 후로는 전혀 만지지 않다가 이번 칼럼을 쓰면서 오랜만에 다시 작동해 보았다. 공개 직후와 달리 웹 브라우저를 통해 조작하는 앱 'Stable Diffusion Web UI'가 공개되어 모델도 캡처해 선택할 수 있게 되어 있어 상당히 편리해진 느낌이 들었다.

-- 화상 생성 AI가 마이크로소프트 365에도 --
이러한 흐름에 대응해 마이크로소프트는 10월 12일, 그래픽 디자인 툴 'Microsoft Designer'를 발표했다. 마이크로소프트 365의 일부로서 제공한다고 한다.

원래는 프레젠테이션 소프트웨어 'PowerPoint'용 디자인 툴이었던 것을 독립시켰다고 한다. DALL-E2가 내장되어 있어 테마나 내용을 말로 입력하면 적절한 화상을 생성해준다. 또한 화상이나 텍스트를 조합하면 적절하게 배치하는 등의 처리 기능도 구비하고 있다. 그림에 소질이 없어도 멋진 그래픽을 작성할 수 있는 것이다.

--  AI가 코드를 생성한다 --

본인에게 스킬이 없어도 언어를 입력하면 AI가 스킬을 이용해 생성한다는 점에서 화상 생성만큼은 아니지만 일각에서 화제가 된 것이 있다. 애즈리얼(도쿄)이 개발한 ‘AI Programmer’이다.

어떤 프로그램을 만들고 싶은지 입력하면 지정한 프로그래밍 언어로 기술한 소스 코드를 생성한다. 간단한 프로그램을 직접 작성해본 결과, 일단 괜찮다는 인상을 받았다.

너무 광범위하게 지정할 경우, 그 말을 그대로 출력하는 듯한 코드를 생성했다. 이 점은 유머러스해서 개인적으로 좋았다.

물론 100% 올바른 코드가 생성되는 것은 아니다. 조금 복잡한 것을 지시하면 아마도 상정한대로 움직이지 않는 코드를 생성할 확률이 높아질 것이다. 화상 생성의 경우 다소의 실패는 허용되지만, 프로그램인 경우 버그가 되어 버린다.

예를 들면 '지정한 URL에 1시간 마다 접속해 이전 회와의 내용 차분(差分)을 기록한다'라고 지정해보았더니, 차분을 기록하는 것이 아니라, 단순히 액세스한 곳의 컨텐츠 본체를 인쇄하는 프로그램이 되었다. 이처럼 전혀 다른 답이 나오기 때문에 '본인에게 스킬이 없어도 된다'라고는 하지만, 이용하려면 어느 정도 스킬은 필요하다.

또한 ‘차분’이라고 하는 말 자체는 이해할 수 있는 것 같기 때문에 지시를 고안하면 올바른 코드가 생성될지도 모른다.

-- 선행된 GitHub은 더 실용적 --
AI Programmer와 같은 코드 생성 기능을 적극 도입하고 있는 것이 미국 GitHub의 'CoPilot'이다. CoPilot은 부조종사라는 뜻으로, GitHub에 따르면 'Your AI pair programmer'라고 한다. 페어 프로그래밍이란 1개의 머신을 사용해 2명의 프로그래머가 협력하면서 프로그램을 기술하는 소프트웨어의 개발 방법이다. ’익스트림 프로그래밍’의 하나의 요소로서 제창되었다.

AI Programmer는 웹사이트에서 누구나 시도할 수 있다. 반면, 프로그래밍 작업이라는 점 때문에 일단 떨어져서 리서치를 하는 감각을 느끼게 된다. CoPilot은 에디터에 통합되어 있어 프로그래밍 작업을 저해하지 않고 사용할 수 있다. 실용 목적의 AI이다.

필자는 얼마 전 기회가 있어서 직접 시도해본 적이 있다. 예를 들어 IP 주소를 취득하는 함수를 기술해보려고 했다. 'IP 주소'를 '취득'하기 때문에 함수명은 'getIPAddress'라고 생각하고 'def getIPAddress()'라고 입력했다. 그러자,

· · · ·import socket
· · · ·return socket. gethostbyname(socket. gethostname()>

이라고 제안해 주었다. 이것은 로컬 머신의 IP 주소를 취득하는 상투적인 코드이다.

다음으로 "def get IP Address(url)"라고 입력했다. 기대했던 것은 DNS를 이용해 URL에 대응하는 IP 주소를 취득하는 코드였다. 이번에는,
 · · · ·ip=' '
· · · ·try:
· · · · · · · ·ip=urllib.parse.urlparse(url).netloc
· · · ·except:
· · · · · · · ·pass
· · · ·return ip

이라고 제안해왔다. 유감스럽게도 이것은 정답이 아니다. DNS가 보급되기 전 IP 주소로 직접 액세스하던 때라면 이것도 정답일지도 모른다. 그러나 최근에는 이러면 URL 안에서 호스트 이름을 도출하게 된다. 이런 의미에서 ‘AI가 자신이 생각한 대로 코드를 제안해주는가?’ 라고 한다면 꼭 그렇지는 않다.

-- 창조적으로 행동하고 있는 것은 이용자측 --
AI가 사람의 능력을 뛰어넘는다는 것은 어떤 측면에선 틀림없다. 그러나 화상을 생성하거나 프로그램을 생성해도, 창조성이라는 관점에서는 아직 사람에게 미치지 못하고 있다.

화상 생성 AI와 코드 생성 AI에 공통적인 것은 하고 싶은 것이나 그리고 싶은 것을 이용자가 문장으로 지정하는 것이다. AI에 지시를 내려 처리를 촉구하기 때문에 이러한 AI의 조작 방법을 프롬프트 엔지니어링이라고 한다. 즉, 이용자가 '하고 싶은 일'을 말로 표현했을 때 거기에 대응하는 적절한 결과를 출력한다. 프롬프트로서 제공하는 말에 따라 생성 결과가 달라지기 때문에 엔지니어링이 요구된다.

이것은 그야말로 현재의 AI에 맞춘 방식이다. AI의 기본은 교사와 학습이다. 즉, 학습 데이터로서 입력값과 그것에 대응하는 출력값의 페어를 학습하고 입력값을 제공했을 때 적당한 출력값을 얻을 수 있는 '사상(寫像)'을 형성한다. 사상이라고 하면 수학 용어라 어렵게 느껴질 수 있지만, 요점은 입출력이 있는 블랙박스이다.

쉽게 말해, 학습한 데이터 중에서 가까울 것 같은 과거 출력 결과를 도출하고 그것을 조정해 데이터로 출력하는 느낌이다. 결국 학습 데이터를 흉내내는 것이다. 그래서 Stable Diffusion은 사실적인 그림을 잘 그리지만 파생 버전으로 나온 'Waifu Diffusion'은 2차원의 일러스트 데이터를 학습하고 있기 때문에 일러스트를 잘 그린다.

하지만 '学ぶ(마나부, 배우다)'라는 것은 명경국어사전에 따르면 '흉내를 내다의 고어 'まねぶ(마네부)'에서 나온 말'이라고 한다. 즉, 학습의 기본은 모방이다. 현재의 AI는 기계학습(ML)을 기반으로 하고 있으며 그 학습능력을 높인 결과, 사람보다 높은 정확도로 다양한 작업을 수행할 수 있게 되었다. 다소 오래된 이야기이지만 바둑이나 장기 등의 게임에서는 AI가 인류 최고봉에 속하는 명인 클래스를 능가하고 있다.

-- AI가 창조적이 되기에는 내발적인 욕구가 부족하다 --
하지만 여기에는 창조성이 없다. 창조성의 원천이 되는 것은 입력하는 이용자이다. AI를 포함한 컴퓨터의 동작은 입력에 대해 뭔가 적절한 출력을 만들어내는 것에 불과하다. 사전에 사람이 부여한 주제와 해공간을 학습하고, 사람이 내발적(內發的)으로 발상하는 프롬프트를 제공함으로써 성과를 창출한다.

즉, 현재의 AI에는 사람이 가진 내발적인 '무엇인가'가 부족하다. 그것은 생존 욕구이거나, 종의 보존 욕구와 같은 사람의 소뇌 부분에서 생기는 것이 아닐까라고 필자는 상상한다. 지금의 AI는 대뇌 부분만 존재하기 때문에 본질적인 의미의 창의력이 생겨나지 않은 것은 아닐까.

한편으로는 이렇게도 생각한다. 예를 들어, 프롬프트를 학습하면 '사람이 내발적으로 발상하는 것'을 배워 그 능력을 획득할 수 있지 않을까 라는 것이다. 사람이 가진 창조성과는 근원이 다르지만, AI나름의 다른 창조성이 어쩌면 탄생할지도 모른다.

-- 끝 --

Copyright © 2020 [Nikkei XTECH] / Nikkei Business Publications, Inc. All rights reserved.

목록