Artoke

애니 논문: Motion VAE: 잠재 공간에서 캐릭터를 조종하다

캐릭터 애니메이션에서 오랫동안 쓰인 방법은 모션 그래프였다. 실제로 캡처한 짧은 동작 클립들을 노드로 두고, 자연스럽게 이어붙일 수 있는 지점끼리 간선으로 연결한 거대한 그래프를 만든다. 그리고 런타임에는 그래프 위를 걸어 다니며 클립을 골라 재생한다. 이 방식은 데이터에 있는 동작만큼은 진짜처럼 보인다. 하지만 그래프는 이산적(discrete)이라 클립 사이를 부드럽게 보간하기 어렵고, 데이터가 늘어날수록 탐색 비용과 저장 비용이 함께 커진다.

2020년 SIGGRAPH에서 Ling, Zinno, Cheng, van de Panne이 발표한 Character Controllers Using Motion VAEs는 이 이산 데이터베이스를 학습된 연속 잠재 공간으로 통째로 갈아 끼운다. 핵심 발상은 두 단계로 나뉜다. 먼저 "지금 포즈가 주어졌을 때 다음 포즈"를 만들어 내는 생성기를 오토리그레시브 조건부 VAE로 학습한다. 그다음, 그 생성기의 잠재 변수를 행동으로 삼아 그 위에 강화학습 정책을 얹어 목표 도달이나 조이스틱 제어 같은 과제를 푼다. 아래에서 이 두 층을 하나씩 뜯어 본다.

1. 포즈를 어떻게 나타내는가

먼저 한 프레임의 캐릭터 상태를 하나의 벡터 로 표현한다. 여기서 는 프레임 번호(시간 인덱스)다. 이 벡터 안에는 루트(골반)의 수평 이동 속도와 회전 속도, 그리고 각 관절의 위치·속도가 담긴다. 중요한 점은 절대 좌표가 아니라 캐릭터 자신을 기준으로 한 상대 좌표를 쓴다는 것이다. 이렇게 하면 캐릭터가 월드의 어디에 있든 "앞으로 걷는 동작"은 같은 표현을 갖게 되어, 학습이 위치에 휘둘리지 않는다.

그러면 하나의 동작은 이 상태 벡터의 시계열 가 된다. 목표는 이 시계열을 만들어 내는 생성기를 배우는 것인데, 전체 시계열을 한꺼번에 다루는 대신 한 스텝씩 쪼갠다. 즉 에서 로 넘어가는 조건부 분포 만 잘 배우면, 이를 반복 적용해 임의로 긴 동작을 이어 붙일 수 있다. 이것이 "오토리그레시브(autoregressive)", 곧 자기 회귀라는 이름의 뜻이다.

2. 조건부 VAE의 목적함수

이 한 스텝 분포를 VAE(Variational Autoencoder)로 모델링한다. 일반 VAE는 데이터 를 잠재 변수 로 압축했다가 복원하는데, 여기서는 조건이 붙는다. 다음 포즈 를 만들되, 이전 포즈 를 조건으로 준다. 구성 요소는 세 가지다.

  • 인코더 : 정답인 다음 포즈 와 이전 포즈 를 함께 보고, 이 전이를 설명하는 잠재 변수 의 분포(가우시안의 평균과 분산)를 내놓는다. 는 인코더 신경망의 파라미터다.
  • 사전분포 : 잠재 변수가 따랐으면 하는 기준 분포. 평균 0, 단위 공분산의 표준 정규분포다.
  • 디코더 : 잠재 변수 와 이전 포즈 를 받아 다음 포즈 를 복원한다. 는 디코더의 파라미터다.

학습은 증거 하한(ELBO, Evidence Lower BOund)을 최대화하는 방향으로 이뤄진다. 조건부 형태로 쓰면 다음과 같다.

기호를 하나씩 풀어 보자. 는 인코더가 뽑은 의 분포에 대한 기댓값이다. 즉 인코더가 준 분포에서 를 여러 번 뽑았을 때 평균적으로 어떤 값이 나오는지를 뜻한다. 첫 항 복원 로그가능도로, 그 로 디코더가 진짜 다음 포즈 를 얼마나 잘 맞혔는지를 잰다. 실제 구현에서는 예측 포즈와 정답 포즈의 제곱오차(가우시안 가정에서의 로그가능도)로 계산된다.

둘째 항 쿨백–라이블러 발산으로, 인코더가 만든 분포가 기준 분포 에서 얼마나 벗어났는지를 재는 거리 비슷한 양이다. 두 분포가 같으면 0이고, 멀어질수록 커진다. 이 항이 잠재 공간을 매끈하게 정돈해 준다. 앞의 계수 는 두 항의 균형을 잡는 가중치로, 를 키우면 잠재 공간이 더 반듯해지는 대신 복원 정확도가 떨어진다. 부호를 보면 복원 항은 크게, KL 항은 작게 만들고 싶은데, 이 둘은 서로 밀고 당기는 관계다.

인코더의 출력에서 실제 를 뽑을 때는 재파라미터화 기법(reparameterization trick)을 쓴다. 인코더가 평균 와 표준편차 를 내면, 표준 정규분포에서 뽑은 잡음 를 이용해

로 계산한다. 여기서 은 원소별 곱이다. 이렇게 하면 무작위성이 이라는 바깥 잡음으로 빠져, 를 통해 기울기(gradient)가 신경망으로 흘러 역전파 학습이 가능해진다.

3. 전문가 혼합 디코더

디코더를 그냥 하나의 다층 신경망으로 두지 않고, 이 논문은 전문가 혼합(Mixture of Experts) 구조를 쓴다. 서로 다른 여러 개의 전문가 신경망을 두고, 상황에 따라 이들을 부드럽게 섞는다. 이전 포즈 를 입력으로 받는 게이팅 신경망이 혼합 가중치를 정한다.

여기서 는 전문가 개수(논문에서는 6개), 번째 전문가 신경망, 는 게이팅 신경망이 현재 상황 에 대해 매긴 가중치다. 가중치의 합이 1이라는 제약(소프트맥스로 보장)은 결과가 여러 전문가의 볼록결합이 되도록 만든다. 걷기·달리기·방향 전환처럼 성격이 다른 동작마다 서로 다른 전문가가 주로 활성화되도록 스스로 역할을 나눠 갖는 셈이다.

4. 오차 누적을 막는 스케줄드 샘플링

오토리그레시브 생성에는 고질적인 문제가 있다. 학습할 때는 조건 로 언제나 진짜 데이터를 주지만, 실제 생성할 때는 모델이 앞서 만든 자신의 예측을 다시 조건으로 넣는다. 예측에는 항상 작은 오차가 있고, 이 오차가 조건으로 되먹임되며 눈덩이처럼 불어나 몇 스텝 만에 포즈가 무너진다. 이 훈련–추론 간 불일치를 노출 편향(exposure bias)이라 부른다.

해결책이 스케줄드 샘플링(scheduled sampling)이다. 학습 초기에는 조건으로 진짜 데이터를 주다가, 학습이 진행될수록 점점 더 자주 모델 자신의 예측을 조건으로 넣는다. 진짜 데이터를 쓸 확률 를 서서히 1에서 0으로 낮춰 가는 것이다. 그러면 모델은 자기 예측이 조건으로 들어오는 상황을 훈련 중에 미리 겪으며, 작은 오차가 있어도 스스로 복구하는 법을 배운다. 실제 생성 상황과 훈련 상황의 간극이 좁혀지는 셈이다.

애니 논문: 논문 — Motion VAE: 잠재 공간에서 캐릭터를 조종하다 도식
두 단계: 먼저 다음 포즈 생성기를 배우고, 그 위에 잠재변수 z를 행동으로 삼는 정책을 얹는다.

5. 잠재 공간 위에 강화학습을 얹다

여기까지가 첫째 층이다. 이제 학습된 MVAE는 "이전 포즈 와 임의의 를 주면 그럴듯한 다음 포즈를 내놓는" 함수가 되었다. 논문의 두 번째 통찰은 이 디코더를 강화학습의 환경(environment)으로 재해석하는 것이다.

보통 강화학습에서 에이전트는 관절 토크 같은 저수준 행동을 직접 고른다. 그러면 행동 공간이 넓고 물리 시뮬레이션이 필요해 학습이 어렵다. 대신 여기서는 행동 자체를 잠재 변수 로 둔다. 정책 는 현재 상태 와 목표 (예: 도달할 표적 위치, 조이스틱 입력)를 보고 어떤 를 낼지 정한다. 그 를 고정된 MVAE 디코더에 넣으면 다음 포즈 이 나오고, 그것이 다음 상태가 된다. 이렇게 환경이 갱신된다.

정책은 목표에 얼마나 다가갔는지로 정의한 보상 의 기대 누적합을 최대화하도록 학습된다.

할인율로, 먼 미래의 보상을 얼마나 낮춰 볼지를 정한다. 이 구조의 이점은 분명하다. 디코더가 이미 "사람다운 동작"만 만들어 내도록 학습돼 있으므로, 정책이 아무 나 골라도 결과 포즈는 자연스러운 동작의 범위 안에 머문다. 다시 말해 동작의 자연스러움은 아래층이 책임지고, 위층 정책은 오직 과제 달성에만 집중하면 된다. 자연스러움을 유지하기 위한 별도의 물리 시뮬레이션이나 복잡한 보상 설계가 필요 없다.

정리

Motion VAE는 이산적인 모션 그래프를 연속적이고 미분 가능한 잠재 공간으로 대체했다. 조건부 VAE로 한 스텝 전이 를 배우고, 전문가 혼합 디코더로 다양한 동작을 표현하며, 스케줄드 샘플링으로 오차 누적을 다스린다. 그런 다음 그 잠재 변수를 행동으로 삼아 강화학습 정책을 얹어, 목표 도달과 조이스틱 제어를 별도 물리 없이 풀어낸다. 생성 모델이 "무엇이 그럴듯한가"를 학습으로 압축해 두고, 제어 정책은 그 위에서 "무엇을 하고 싶은가"만 고르는 이 층 분리가 이 논문의 가장 우아한 지점이다.

출처

광고

리깅 파이프라인 자동화 도구

반복 작업은 스크립트에게. 현업에서 쓰는 리깅 툴 모음.

리깅 도구 보기