5-1에서 AI는 막대 인형의 움직임을 보고 "투기"라고 알아봤다. 이번에는 거꾸로다. "던지기"라는 말을 주면 막대 인형이 던지는 동작을 새로 만들어 내게 할 수 있을까? 동작은 숫자 1,196개짜리 표다. 두 동작을 평균 내면 팔이 접히고, 숫자마다 주사위를 굴리면 몸이 떨린다. 생성기 네 개를 감독관의 채점표로 비교하며 "그럴듯한 새 동작"의 조건을 찾는다.
투기범은 잡았다. 그런데 본부의 두 번째 질문이 남아 있다. 알아보는 데 쓴 그 숫자들로, 이번에는 동작을 만들어 낼 수 있는가.
같은 상자 세 개, 화살표 방향만 다르다. 두 방향을 번갈아 눌러 보자.
5-1의 막대 인형 장면을 표로 펼쳤다. 생성 모델이 채워야 하는 빈칸이 바로 이 1,196칸이다. 칸 위에 마우스를 올려 보자.
표의 칸들은 제멋대로가 아니다. 같은 프레임의 "오른팔꿈치"와 "오른손목"은 늘 0.16만큼 떨어져 있고(뼈 길이), 이웃한 두 프레임의 값은 거의 같다(움직임은 이어진다). 판별 모델은 이 묶음을 몰라도 답을 낼 수 있지만, 생성 모델은 이 묶음을 지키지 못하면 바로 티가 난다. 다음 섹션에서 직접 깨뜨려 본다.
가장 쉬운 "새 동작 만들기"는 있는 동작 두 개를 섞는 것이다. 무엇을 섞느냐를 바꿔 보자. 아래 막대는 지금 프레임의 뼈 열 개가 원래 길이에서 얼마나 벗어났는지다(막대가 길수록 많이 틀어짐, 5%를 넘으면 빨강).
던지기 + 손 흔들기를 좌표 평균으로 섞으면 뼈 길이 오차가 평균 11.4%, 가장 나쁜 순간에는 99.9%다. 두 손목이 반대 방향에 있던 순간, 중간점이 어깨와 거의 겹쳐 아래팔이 사라진 것이다. 넣기 + 지나가기는 1.9%(최악 25.7%), 던지기 + 줍기는 1.4%(최악 20.4%)다. 각도 평균은 세 쌍 모두 0.0%다. 숫자는 같은 "평균"인데, 무엇의 평균이냐가 결과를 가른다.
생성 모델이 배우는 것은 장면 하나가 아니라 장면들이 흩어진 모양이다. 5-1과 같은 방식으로 속도·위치·크기를 바꾼 던지기 100개를 펼쳤다. 왼쪽 점을 눌러 장면을 골라 보자.
던지기 100개로 새 던지기 여섯 개를 만든다. 감독관은 다섯 가지를 본다. 진짜 같은가(뼈 길이, 떨림, 던지는 힘), 다양한가, 베끼지 않았나. 생성기를 바꾸고 "다시 만들기"를 눌러 보자.
위 화면은 브라우저에서 여섯 개씩 다시 뽑은 것이라 숫자가 조금 다르다. 아래 표는 코드 2를 실제로 실행한 결과다(학습 던지기 100개, 생성 20개). "새로움"은 가장 가까운 학습 장면과의 거리(키 단위, 좌표별 제곱평균제곱근)다.
| 생성기 | 뼈 길이 오차 | 떨림 | 손목 최대 속도 | 다양성 | 새로움 | 감독관 한 줄 평 |
|---|---|---|---|---|---|---|
| 학습 데이터 (참고) | 4.7% | 0.0288 | 2.55 | 0.126 | 0.000 | 포즈 추정의 떨림 때문에 진짜 데이터도 뼈 길이가 4.7% 흔들린다 |
| A 평균 하나 | 1.7% | 0.0045 | 1.36 | 0.000 | 0.033 | 매끄럽지만 늘 같고, 힘이 절반으로 빠졌다 |
| B 좌표마다 주사위 | 44.2% | 0.2659 | 10.00 | 0.149 | 0.109 | 다양하지만 사람이 아니다. 손목이 순간이동한다 |
| C 하나 골라 복사 | 4.7% | 0.0300 | 2.75 | 0.125 | 0.000 | 진짜 같지만 베꼈다 |
| D 손잡이 3개 뽑기 | 0.0% | 0.0125 | 2.71 | 0.123 | 0.022 | 다섯 항목 모두 통과. 단, 손잡이를 미리 알고 있었다 |
D가 이긴 이유는 1,196개 숫자 대신 숫자 3개(속도·위치·크기)에서 뽑았기 때문이다. 숫자 3개는 어떻게 바꿔도 뼈대(fk)를 거쳐 사람 모양으로 펼쳐진다.
두 코드 모두 Colab에 기본으로 설치된 라이브러리만 쓴다. "노트북(.ipynb) 내려받기" 후 Colab에서 파일 → 노트북 업로드로 열거나, 복사해서 새 노트북 칸에 붙여 넣는다.
5-1의 장면 함수에 뼈 길이 검사(bone_error)와 섞기(blend)를 더했다. 세 쌍을 좌표 평균과 각도 평균으로 섞어 뼈 길이 오차를 비교한다. 내 데이터로 바꾸려면 blend의 두 장면 자리에 실제 동작 좌표를 넣는다(좌표 평균만 가능하다는 점이 바로 이 편의 문제다).
던지기 100개로 생성기 A~D를 만들고 20개씩 뽑아 채점한다. 섹션 6 아래의 채점표가 이 출력에서 바로 만들어진다. 새 생성기를 시험하려면 judge("이름", 결과 목록)에 (46, 13, 2) 모양의 장면 목록을 넣는다.
ChatGPT, Qwen, Claude 같은 AI 도우미에 붙여 넣는 프롬프트다. "복사"를 누르면 프롬프트 뒤에 고른 코드가 함께 붙는다. 〔 〕 안을 내 상황으로 바꿔 쓰면 된다.
AI의 답은 출발점일 뿐이다. 제안된 논문·수치·라이브러리 함수는 반드시 원문과 공식 문서로 확인한다. 실제 사람의 동작 데이터를 쓸 때는 촬영 동의와 데이터셋의 이용 조건(상업적 이용 가능 여부 등)을 먼저 확인한다.
본문의 노란 점선 밑줄과 같은 사전이다. 섹션 이름을 누르면 처음 나온 곳으로 간다.
비유는 이해의 첫걸음이지만 오해의 씨앗도 된다. 사람의 지각과 견준 비유에는 강도를 표시했다. 직접 실제로 같은 일을 한다는 근거가 있음 · 부분 일부 성질만 닮음 · 없음 대응하는 것이 알려지지 않음
| 개념 | 일상 비유 | 사람의 지각 비유 | 비유가 틀리는 지점 |
|---|---|---|---|
| 판별 대 생성 | 시험 채점(답이 맞나)과 시험 출제(그럴듯한 새 문제 내기) | 부분 사람은 얼굴을 알아보는 것과 그리는 것이 다른 능력이다 | 출제자는 의도를 갖고 문제를 내지만, 생성 모델은 데이터의 모양을 따라 뽑을 뿐이다 |
| 분포 | 반 학생들의 키가 몰려 있는 모양 | 없음 | 키는 숫자 하나지만 동작은 1,196개 숫자가 함께 움직이는 모양이라 눈으로 그릴 수 없다 |
| 좌표 평균 | 두 사람 사진을 반투명하게 겹치기 | 없음 | 사진 겹치기는 두 사람이 다 보이지만, 좌표 평균은 둘의 중간 한 명을 만들고 그 사람의 팔이 접혀 있다 |
| 잠재 변수 (손잡이) | 오디오 믹서의 볼륨·음색 손잡이 몇 개 | 부분 동작을 "빠르게, 크게"처럼 몇 마디로 기억하는 것 | 믹서 손잡이에는 이름이 붙어 있지만, 학습으로 찾은 손잡이는 이름이 없고 뜻이 섞여 있다(5-3) |
| 감독관 | 오디션 심사위원 | 없음 | 심사위원은 취향이 있지만, 이 편의 감독관은 정해진 다섯 숫자만 본다. 숫자에 없는 어색함은 놓친다 |
E-1 저자 소개 · E-2 학술 레퍼런스 · E-3 그림과 숫자의 출처
강사, 실무 OJT 담당자, 튜터를 위한 운영 안내다. 시간은 예상치이므로 실제 수업에 맞춰 조정한다.
| 대상 | 5-1을 마친 대학생·직장인. 생성 AI가 "무엇을 배우는지" 감을 잡고 싶은 기획자·실무자 |
|---|---|
| 선수 지식 | 5-1의 막대 인형 13점과 장면 여섯 가지, 평균과 표준편차 |
| 학습 목표 | ① 판별 모델과 생성 모델의 차이를 화살표 방향과 "답의 개수"로 설명한다 ② 좌표 평균이 뼈 길이를 깨뜨리는 이유를 예로 든다 ③ 생성 결과를 진짜 같음·다양성·새로움 세 갈래로 평가한다 |
| 예상 시간 | 읽기 30~40분 · 애니메이션 시연 20분 · Colab 실습 25분 (코드 1 10분, 코드 2 15분) |
도입 5분(섹션 1·2 뒤집기) → 섹션 3 동작 표 8분 → 섹션 4 섞기 실험 12분 → 섹션 5 데이터 구름 7분 → 섹션 6 생성기 네 개 13분 → 확인 문제 5분.
섹션 2 15분 → 섹션 6 채점표를 우리 업무의 생성물(문서·이미지·동작)에 대입해 "진짜 같음·다양성·새로움" 기준 만들기 30분 → 섹션 4로 "표현 고르기" 토론 15분 → 코드 2 실행·새 기준 추가 30분.
입문자는 섹션 2·4·6만. 중급자는 코드 2에 생성기 E(학습 장면 두 개를 각도 평균으로 섞기)를 직접 만들어 채점표에 넣게 한다.
| 섹션 | 멈춰서 물어볼 질문 | 조작 팁 |
|---|---|---|
| 2 뒤집기 | "만들기의 정답은 몇 개일까?" | 알아보기 → 만들기를 번갈아 누른다 |
| 3 동작은 표 | "이 표에서 마음대로 바꾸면 안 되는 칸 사이의 약속은?" | 던지기에서 0.8~1.2초 열에 마우스를 올린다 |
| 4 섞기 | "반반 섞었는데 왜 팔이 사라졌나?" | 던지기 + 손 흔들기, 좌표 평균에서 빨간 막대가 길어지는 프레임을 찾는다 |
| 5 데이터 | "이 구름에서 새 점을 뽑으면 어떤 던지기가 나올까?" | 빨간 점과 초록 점의 경계 근처를 눌러 본다 |
| 6 생성기 | "A·B·C는 각각 어느 채점 항목에서 떨어지나?" | 생성기마다 "다시 만들기"를 두세 번 누른다 |
| 오해 | 바른 설명 | 보여 줄 장면 |
|---|---|---|
| 생성 모델은 정답을 하나 만든다 | 그럴듯한 답들의 분포에서 하나를 뽑는다. 매번 달라야 정상이다 | 섹션 2, 섹션 6 "다시 만들기" |
| 평균이 가장 안전한 생성이다 | 평균은 다양성 0이고, 타이밍이 다른 동작을 평균 내면 힘이 빠진다(손목 속도 2.55 → 1.36) | 섹션 6 생성기 A |
| 숫자가 많을수록 표현이 좋다 | 1,196개 숫자는 서로 묶여 있다. 묶음을 지키는 적은 숫자(각도, 손잡이)가 생성에는 더 낫다 | 섹션 4 각도 평균, 섹션 6 생성기 D |
| 학습 데이터와 똑같으면 최고의 생성이다 | 베끼기는 새로움이 0이다. 데이터 속 개인을 그대로 내보내는 위험도 있다 | 섹션 6 생성기 C |
| 진짜처럼 보이면 평가 끝이다 | 진짜 같음, 다양성, 새로움을 함께 봐야 한다. 하나만 보면 A나 C가 이긴다 | 섹션 6 아래 채점표 |
3초는 46프레임(0초 포함) × 26 = 1,196개. 5초는 76프레임 × 26 = 1,976개.
손 = (0, 1)로 어깨와 같은 점이 된다. 팔 길이 0, 뼈 길이 오차 100%다. 섹션 4의 "최악 99.9%"가 이런 순간이다. 각도를 평균 내면(−90°와 +90°의 평균 0°) 팔은 아래로 늘어진 길이 0.33의 팔이 된다.
새로움이 0이다. 학습 데이터를 외워 내놓을 뿐 새 동작을 만들지 못한다. 실제 사람의 동작이나 얼굴이 담긴 데이터라면 개인 정보를 그대로 내보내는 문제도 생긴다.
장면마다 던지는 순간(타이밍)이 달라서, 좌표를 평균 내면 빠르게 휘두르는 구간이 여러 프레임에 얇게 퍼진다. 정점이 뭉개져 힘 빠진 던지기가 된다.
D는 장면을 만든 손잡이(속도·위치·크기)를 미리 알고 있었다. 실제 동작 데이터에는 이런 손잡이가 붙어 오지 않는다. 데이터만 보고 손잡이를 찾아내는 것이 5-3 인코더·디코더의 일이다.
코드 1에서 섞는 비율을 0, 0.25, 0.5, 0.75, 1로 바꿔 던지기 + 손 흔들기의 좌표 평균 뼈 길이 오차를 표로 만든다. 오차가 가장 큰 비율과 그 이유를 두 문장으로 쓴다.
코드 2에 생성기 E "학습 장면 두 개를 골라 좌표 평균"과 F "손잡이 3개를 학습 범위 밖(크기 ×1.6)에서 뽑기"를 더해 채점한다. F의 결과가 진짜 같음은 통과해도 어떤 문제가 있는지(캔이 어디로 날아가나) 보고한다.
| 입문자 | 섹션 4의 "좌표 평균 대 각도 평균" 하나만 확실히 보면 이 편의 절반을 얻는다 |
|---|---|
| 심화 | GAN과 VAE가 "감독관"을 학습에 어떻게 넣는지 조사해 발표하게 한다. 논문은 원문으로 확인한다 |
| 다음 편 | 5-3 인코더·디코더 — 데이터만 보고 손잡이(잠재 변수)를 스스로 찾는다 |
「5-2 알아보기에서 만들기로」 편을 끝까지 읽었어요. 연구실 식구들이 한마디씩 정리해 드립니다.