5-3에서 동작은 숫자 16개짜리 점이 되었다. 이번에는 말도 점으로 만든다. "손을 흔든다"라는 문장과 손 흔드는 동작이 같은 지도의 같은 자리에 오도록, 말 깔때기와 동작 깔때기를 함께 학습한다. 처음에 엉켜 있던 선들이 학습하며 제 짝을 찾아가는 과정을 지켜보고, 마지막에는 문장을 넣어 막대 인형을 움직인다. "춤춰" 한 마디도 여기서 처음 동작이 된다.
5-3의 생성기 E는 "던지기가 모인 자리"를 우리가 골라 줘야 했다. 이번에는 사람이 말로 고른다. 그러려면 말도 지도 위의 점이 되어야 한다.
문장을 입력하거나 예시를 눌러 보자. 사전에 있는 낱말 조각 40개 중 문장에 들어 있는 것만 1이 된다. 이 숫자 40개가 말 깔때기의 입력이다.
왼쪽은 문장, 오른쪽은 동작이다(순서를 일부러 섞었다). 선의 굵기는 문장이 그 동작을 고를 확률이다. "학습 재생"을 누르거나 막대를 끌어 학습을 진행해 보자.
| 학습 걸음 | 짝 맞추기 손실 | 시험 문장 7개 → 가까운 시험 동작 5개 중 제 종류 | 시험 동작 140개 → 가장 가까운 문장의 종류가 맞음 |
|---|---|---|---|
| 0 | — | 2.9% | 10.0% |
| 10 | 1.763 | 28.6% | 55.0% |
| 25 | 1.317 | 65.7% | 72.1% |
| 50 | 0.395 | 71.4% | 96.4% |
| 100 | 0.090 | 71.4% | 100.0% |
| 400 | 0.010 | 71.4% | 100.0% |
위 화면의 학습은 브라우저에서 같은 계산을 다시 돌린 것이라(난수가 다르다) 걸음별 숫자가 조금 다르다. 시험 문장은 7개 중 5개가 제 동작을 찾았다. 못 찾은 2개는 섹션 6에서 본다.
말과 그림을 이렇게 맞춘 CLIP [R1], 말과 동작을 맞춘 MotionCLIP [R2]이 같은 원리다. 실제 모델은 말 깔때기로 트랜스포머를, 짝으로 수억 쌍을 쓴다.
문장을 입력하고 Enter. "찾기"는 지도에서 가장 가까운 장면을 그대로 꺼내고, "만들기"는 가까운 장면 5개가 모인 자리에서 새 동작을 뽑는다. "~다가", "~고 나서"로 두 문장을 이으면 앞뒤로 이어 붙인다.
| 방식 | 학습 문장 21개 (×5번) | 시험 문장 7개 (×5번) |
|---|---|---|
| 찾기 | 100.0% | 71.4% |
| 만들기 | 100.0% | 71.4% |
만든 동작의 종류는 5-3의 잠재 공간에서 종류별 중심과 가장 가까운 것으로 판정했다. "춤춰" → 만든 동작은 춤추기로 판정됐고 뼈 길이 오차는 5.4%였다. 이어 붙이기: "걸어가다가 손을 흔든다" → 앞 절반 지나가기 · 뒤 절반 손 흔들기, "손을 흔들고 나서 춤춰" → 손 흔들기 · 춤추기, "캔을 줍고 쓰레기통에 넣는다" → 줍기 · 쓰레기통에 넣기.
시험 문장 7개 중 2개가 엉뚱한 동작을 찾았다. 둘 다 이유가 분명하다.
| 시험 문장 | 정답 | 찾은 동작 (가까운 5개) | 왜 틀렸나 |
|---|---|---|---|
| "길에 캔을 던져 버린다" | 멀리 던지기 | 쓰레기통에 넣기 × 5 | "던져"는 학습 문장에 없던 조각이고, "버린"은 넣기 문장("쓰레기통에 쓰레기를 버린다")에서 배운 조각이다. 문맥을 모르니 "버린다 = 넣기"로 끌려갔다 |
| "손을 펴서 떨어뜨리고 걸어간다" | 발밑에 떨어뜨리기 | 지나가기 × 5 | "걸어", "간다"가 지나가기 쪽으로 강하게 당겼다. 어느 낱말이 중심 동작인지(떨어뜨리기)를 단어 주머니는 모른다 |
| "걷다가 손 흔들기" (섹션 5) | 지나가기 → 손 흔들기 | 앞 절반이 엉뚱함 | "걷"은 사전에는 있지만 학습 문장에 한 번도 나오지 않았다(학습 문장은 모두 "걸어"). 배운 적 없는 칸은 지도에서 아무 데도 가리키지 않는다 |
위 표의 "찾은 동작"은 코드 1의 결과다. 브라우저에서 다시 학습한 섹션 5에서는 "길에 캔을 던져 버린다"가 줍기 쪽으로 가기도 한다. 학습의 난수에 따라 끌려가는 곳은 달라도, 던지기를 찾지 못하는 이유(문맥을 모르는 단어 주머니)는 같다.
두 코드 모두 Colab에 기본으로 설치된 라이브러리만 쓴다. "노트북(.ipynb) 내려받기" 후 Colab에서 파일 → 노트북 업로드로 열거나, 복사해서 새 노트북 칸에 붙여 넣는다.
춤추기 장면을 더하고, 문장을 단어 주머니로, 동작을 숫자 16개로 바꾼 뒤 두 깔때기를 대조 학습으로 맞춘다. 학습 걸음별 손실과 시험 문장의 적중을 출력한다. 내 데이터로 바꾸려면 CAPTIONS에 내 동작의 설명 문장을, VOCAB에 쓸 낱말 조각을 넣는다.
학습한 두 깔때기로 문장 → 동작을 찾거나 새로 만들고, "~다가"로 이은 문장을 앞뒤로 이어 붙인다. 만든 동작의 종류를 잠재 공간에서 판정한다. 섹션 5의 표가 이 출력에서 바로 만들어진다.
ChatGPT, Qwen, Claude 같은 AI 도우미에 붙여 넣는 프롬프트다. "복사"를 누르면 프롬프트 뒤에 고른 코드가 함께 붙는다. 〔 〕 안을 내 상황으로 바꿔 쓰면 된다.
AI의 답은 출발점일 뿐이다. 제안된 논문·수치·라이브러리 함수는 반드시 원문과 공식 문서로 확인한다. 실제 사람이 나오는 영상을 쓸 때는 촬영 동의와 개인정보 처리 규정을 먼저 확인한다.
본문의 노란 점선 밑줄과 같은 사전이다. 섹션 이름을 누르면 처음 나온 곳으로 간다.
비유는 이해의 첫걸음이지만 오해의 씨앗도 된다. 사람의 지각과 견준 비유에는 강도를 표시했다. 직접 실제로 같은 일을 한다는 근거가 있음 · 부분 일부 성질만 닮음 · 없음 대응하는 것이 알려지지 않음
| 개념 | 일상 비유 | 사람의 지각 비유 | 비유가 틀리는 지점 |
|---|---|---|---|
| 단어 주머니 | 문장을 낱말 카드로 잘라 주머니에 넣고 흔들기 | 없음 | 주머니에서 꺼낸 카드는 순서가 없다. "개가 사람을 문다"와 "사람이 개를 문다"가 같아진다 |
| 대조 학습 | 짝 맞추기 카드 게임: 맞는 짝은 붙이고 아닌 것은 떼기 | 부분 말을 들으며 그 동작을 함께 보는 아이가 낱말의 뜻을 익히는 것 | 아이는 몇 번이면 배우지만, 모델은 같은 짝을 수백 번 봐야 하고 짝이 없는 낱말은 끝내 모른다 |
| 같은 지도 | 두 나라 말을 한 사전에 함께 싣기 | 없음 | 사전은 사람이 대응을 정하지만, 이 지도는 짝 데이터만으로 대응이 생긴다. 짝이 적은 말은 엉뚱한 자리에 놓인다 |
| 찾기 대 만들기 | 도서관에서 책 빌리기 대 비슷한 책들을 읽고 새 글 쓰기 | 없음 | 새 글은 작가의 의도가 있지만, 이 편의 만들기는 가까운 다섯 장면의 평균 근처를 뽑을 뿐이다 |
| 이어 붙이기 | "먼저 ~하고 그다음 ~해" 하는 무용 안무 지시 | 부분 문장 순서대로 몸을 움직이는 것 | 안무가는 이음매를 자연스럽게 바꾸지만, 여기서는 10프레임을 단순히 섞는다 |
E-1 저자 소개 · E-2 학술 레퍼런스 · E-3 그림과 숫자의 출처
강사, 실무 OJT 담당자, 튜터를 위한 운영 안내다. 시간은 예상치이므로 실제 수업에 맞춰 조정한다.
| 대상 | 5-3을 마친 대학생·직장인. "프롬프트를 넣으면 결과가 나오는" 생성 AI의 속을 알고 싶은 기획자·실무자 |
|---|---|
| 선수 지식 | 5-3의 잠재 공간, 내적과 소프트맥스(3-2·3-8) |
| 학습 목표 | ① 문장을 숫자로 바꾸는 가장 단순한 방법(단어 주머니)과 그 한계를 설명한다 ② 대조 학습이 "짝은 가깝게, 남은 멀게"로 두 깔때기를 맞추는 과정을 말한다 ③ 공유 지도에서 찾기·만들기·이어 붙이기의 차이를 예로 든다 |
| 예상 시간 | 읽기 30~40분 · 애니메이션 시연 25분 · Colab 실습 25분 (코드 1 12분, 코드 2 13분) |
도입 5분(섹션 1) → 섹션 2 단어 주머니 8분 → 섹션 3 학습 재생 15분 → 섹션 4 지도 7분 → 섹션 5 문장 넣어 보기 10분 → 섹션 6 틀린 문장 5분.
섹션 2·3 20분 → 섹션 6 표로 "모델이 아는 말과 모르는 말" 토론 15분 → 섹션 5에서 팀별로 잘 되는 문장·안 되는 문장 찾기 20분 → 코드 1에 새 문장 넣고 다시 학습 25분 → 정리 10분.
입문자는 섹션 2·3·5만. 중급자는 코드 1의 G = (P − I + Q − I) / 14 한 줄이 왜 "대각선은 올리고 나머지는 내리는지" 2 × 2 표로 손계산하게 한다.
| 섹션 | 멈춰서 물어볼 질문 | 조작 팁 |
|---|---|---|
| 2 말은 숫자 | "'캔을 던진다'와 '던진다 캔을'은 왜 같은 숫자일까?" | 두 예시를 번갈아 누른다 |
| 3 짝 맞추기 | "선이 짝을 찾는 데 몇 걸음이 걸렸나? 시험 문장에서는?" | 학습 재생 후 "시험 문장"으로 바꾼다 |
| 4 같은 지도 | "학습 전에는 마름모가 어디에 있었나?" | 걸음 막대를 400 → 0으로 끌어 본다 |
| 5 말 → 동작 | "찾기와 만들기의 결과는 어떻게 다른가?" | "춤춰"를 만들기로 여러 번 누른다 |
| 6 한계 | "'던져 버린다'를 바르게 찾게 하려면 무엇을 바꿔야 할까?" | 섹션 5에서 그 문장을 넣어 직접 확인한다 |
| 오해 | 바른 설명 | 보여 줄 장면 |
|---|---|---|
| AI는 문장의 뜻을 이해해서 동작을 고른다 | 문장을 숫자로 바꾸고 지도에서 가까운 곳을 찾을 뿐이다. 이 편의 숫자는 낱말 조각의 유무뿐이다 | 섹션 2, 섹션 6 |
| 대조 학습에는 정답 이름표가 필요하다 | "이 문장과 이 동작은 짝"이라는 쌍만 있으면 된다. 종류 이름은 쓰지 않는다 | 섹션 3 풀이 |
| 학습 손실이 0에 가까우면 처음 보는 문장도 잘 맞힌다 | 손실은 학습 문장 기준이다. 시험 문장은 7개 중 5개만 맞혔다 | 섹션 3 표 |
| 문장을 길고 자세히 쓰면 늘 더 잘 된다 | 사전 밖의 낱말이나 다른 동작의 낱말이 섞이면 오히려 엉뚱한 곳으로 끌려간다 | 섹션 6 "손을 펴서 떨어뜨리고 걸어간다" |
| "만들기"는 학습 데이터에 없던 전혀 새로운 동작을 만든다 | 지도에서 가까운 장면들이 모인 자리 근처를 뽑는다. 학습한 동작 종류 밖으로는 거의 못 나간다 | 섹션 5 "날아올라" |
[1, 1, 1, 1]. 네 조각이 모두 들어 있다. 이 문장은 던지기와 손 흔들기 사이 어딘가로 가게 된다.
e³ / (e³ + e¹) ≈ 0.881, e¹ / (e³ + e¹) ≈ 0.119. 대각선(0.881)은 1 쪽으로 올리고, 짝이 아닌 칸(0.119)은 0 쪽으로 내리도록 두 깔때기를 고친다.
동작 쪽은 장면이 420개라 종류마다 모양이 잘 잡혔지만, 문장 쪽은 종류마다 학습 문장이 3개뿐이고 단어 주머니가 문맥을 모른다. 처음 보는 낱말 조합이 오면 말 깔때기가 흔들린다.
"걷"은 사전에는 있지만 학습 문장에 한 번도 나오지 않았다. 그 칸의 가중치는 처음의 작은 무작위 값 그대로라 지도에서 의미 있는 곳을 가리키지 않는다. "걸어가다가"로 바꾸면 지나가기가 나온다.
찾기. 학습 장면을 그대로 꺼내므로 실제 사람의 동작 데이터라면 그 사람의 움직임이 그대로 나온다(5-2의 생성기 C와 같다). 만들기는 여러 장면이 모인 자리에서 새로 뽑는다.
코드 1의 CAPTIONS에서 던지기의 학습 문장 하나를 "길에 캔을 던져 버린다"와 비슷한 문장으로 바꾸고 다시 학습한다. 시험 문장 적중이 어떻게 달라지는지 보고한다.
단어 주머니 대신 "두 글자씩 겹쳐 자른 조각"(예: "던져" → "던", "져", "던져")을 쓰는 bag 함수를 만들어, 처음 보는 낱말("걷다가")을 더 잘 다루는지 시험 문장 적중으로 비교한다.
| 입문자 | 섹션 3의 학습 재생 하나만으로도 "짝을 맞추며 배운다"를 얻는다 |
|---|---|
| 심화 | CLIP·MotionCLIP 논문의 그림 1을 이 편의 섹션 3과 나란히 놓고 같은 점과 다른 점을 발표하게 한다 |
| 다음 편 | 5-5 "춤춰"에서 춤 영상으로 — 막대 인형의 춤에 조수의 모습을 입힌다 |
「5-4 단어에서 동작으로」 편을 끝까지 읽었어요. 연구실 식구들이 한마디씩 정리해 드립니다.