오토인코더와 클로즈드 루프: 되살린 것을 다시 압축하기

클로즈드 루프 전사: 인코더와 디코더가 코딩 레이트를 두고 겨룬다

자기 일관은 되살린 것을 같은 인코더로 다시 읽는데, 그 인코더가 무딘 눈이라면 어떨까? 클러스터가 섞인 각도의 인코더나, 줄무늬를 보지 못하는 인코더는 디코더가 엉뚱한 것을 그려도 같은 코드로 읽어 줄 수 있다. 검사관이 디코더와 한편이 되면 검사가 아니다. 인코더가 일부러 원래 자료와 되살린 것의 차이를 찾아내려 애쓰고, 디코더는 그 눈을 속일 수 없을 만큼 잘 그리려 애쓰게 할 수는 없을까?

역사: 옮겨 적기를 두 사람의 놀이로

2021년 11월 연구자 열한 명이 arXiv 에 올린 논문은 이듬해 3월 《엔트로피》 24권 4호에 「CTRL: Closed-Loop Transcription to an LDR via Minimaxing Rate Reduction」이라는 제목으로 실렸다. 열한 명은 다이, 퉁 Shengbang Tong, 리 Mingyang Li, 우 Ziyang Wu, 프센카 Michael Psenka, 찬 Kwan Ho Ryan Chan, 자이 Pengyuan Zhai, 위 Yaodong Yu, 위안 Xiaojun Yuan, 선 Heung-Yeung Shum, 마 Yi Ma 다. 전사(transcription)는 자료를 코드로 옮겨 적는다는 뜻이고, LDR 은 클러스터마다 서로 독립인 선형 부분공간을 차지하는 표현(linear discriminative representation)이다. 같은 연구실이 앞서 내놓은 코딩 레이트 감소(MCR²)는 라벨이 있는 자료를 그런 표현으로 옮기는 인코더를 배웠지만, 옮기는 방향이 자료에서 표현으로 가는 한쪽뿐이었다(논문의 말로 「one-sided」). 그 표현에서 자료를 되살리는 디코더는 그 목표에 들어 있지 않았다.

그들의 답은 인코더와 디코더를, 코딩 레이트 감소로 점수를 매기는 한 판의 놀이에 올리는 것이었다. 인코더는 원래 자료와 옮겨 적었다 되살린 것의 차이를 키우려 하고, 디코더는 원래 자료와 되살린 것의 차이를 줄이려 한다. 논문은 MNIST, CIFAR-10, STL-10, CelebA, LSUN 침실, ImageNet 에서 실험했고, 디코더가 만든 그림의 질과 인코더의 분류 성능이 GAN, VAE, 그리고 GAN 과 VAE 를 섞은 방법들과 맞먹거나 더 낫다고 보고했다. 이 책의 참고서인 부캐넌·파이·왕·마의 『Principles and Practice of Deep Representation Learning』도 「Consistent and Self-Consistent Representations」라는 한 장에서 이런 자기 일관 표현과 클로즈드 루프를 다룬다.

장난감에서 놀이를 해 보면

논문의 점수를 이 장의 장난감(길쭉한 덩어리 셋으로 된 점 180개, 덩어리마다 한 클러스터, 코드는 수 하나)에 옮기면 다음과 같다. 점수의 짜임은 논문과 같고, 코딩 레이트만 수 하나짜리 코드에 맞춘 이 장의 꼴(클러스터의 가운데에서 잰 분산)을 쓴다. 인코더는 각도 θ로 점수를 키우고, 디코더는 섞는 비율 α로 점수를 줄인다. α = 0은 선형 디코더, α = 1은 대표점 디코더이고, 그 사이는 두 디코더가 그린 점을 α 대 1 − α 의 비율로 섞는다.

min⁡α max⁡θ  J(θ,α)=ΔR(Z)+ΔR(Z^)+∑jΔR(Zj,Z^j)\min_{\textcolor{#1e694b}{\alpha}}\ \max_{\textcolor{#665522}{\theta}}\ \ \textcolor{#0078e1}{J}(\textcolor{#665522}{\theta}, \textcolor{#1e694b}{\alpha}) = \textcolor{#0078e1}{\Delta R}(\textcolor{#ff5a78}{Z}) + \textcolor{#0078e1}{\Delta R}(\textcolor{#ff5a78}{\hat{Z}}) + \sum_{j} \textcolor{#0078e1}{\Delta R}(\textcolor{#ff5a78}{Z}_j, \textcolor{#ff5a78}{\hat{Z}}_j)
θ인코더의 각도 (인코더가 고른다)α디코더가 대표점을 섞는 비율 (디코더가 고른다)ΔR(Z), ΔR(Z^)처음 코드와 다시 얻은 코드에서 클러스터가 갈리는 정도∑jΔR(Zj,Z^j)클러스터마다 처음 코드와 다시 얻은 코드의 차이J놀이의 점수 (비트)\begin{array}{ll} \textcolor{#665522}{\theta} & \text{인코더의 각도 (인코더가 고른다)} \\ \textcolor{#1e694b}{\alpha} & \text{디코더가 대표점을 섞는 비율 (디코더가 고른다)} \\ \textcolor{#0078e1}{\Delta R}(\textcolor{#ff5a78}{Z}),\ \textcolor{#0078e1}{\Delta R}(\textcolor{#ff5a78}{\hat{Z}}) & \text{처음 코드와 다시 얻은 코드에서 클러스터가 갈리는 정도} \\ \sum_j \textcolor{#0078e1}{\Delta R}(\textcolor{#ff5a78}{Z}_j, \textcolor{#ff5a78}{\hat{Z}}_j) & \text{클러스터마다 처음 코드와 다시 얻은 코드의 차이} \\ \textcolor{#0078e1}{J} & \text{놀이의 점수 (비트)} \end{array}

디코더가 선형 디코더(α = 0)를 쓰면 자기 일관이 지켜져서 Ẑ = Z이고, 점수는 J = 2ΔR(Z)가 된다. 그러면 인코더는 클러스터가 가장 잘 갈리는 각도를 찾게 된다. 0°에서 180°까지 1° 눈금으로 재면 그 각도는 θ = 140°이고, 점수는 5.363비트, 재구성 오차는 0.325다. 재구성 오차만 보는 인코더라면 주축 θ = 3.9°(재구성 오차 0.184, ΔR 1.707비트)를 골랐을 것이다. 놀이에 올린 인코더는 되살리기를 조금 양보하고 클러스터가 갈리는 코드를 고른다.

인코더 각도 θ에 따른 놀이의 점수 J(θ, 0) = 2ΔR(Z)(실선, 왼쪽 눈금)와 재구성 오차 D(점선, 오른쪽 눈금). 재구성 오차가 가장 작은 각도는 4°, 점수가 가장 큰 각도는 140°다. 다이 외(2022)의 클로즈드 루프 놀이를 이 책의 장난감에서 다시 그린 것
인코더 각도 θ에 따른 놀이의 점수 J(θ, 0) = 2ΔR(Z)(실선, 왼쪽 눈금)와 재구성 오차 D(점선, 오른쪽 눈금). 재구성 오차가 가장 작은 각도는 4°, 점수가 가장 큰 각도는 140°다. 다이 외(2022)의 클로즈드 루프 놀이를 이 책의 장난감에서 다시 그린 것

디코더 쪽에서는 무엇이 일어날까? 디코더가 대표점을 섞으면 다시 얻은 코드가 클러스터마다 오그라들어 처음 코드와 달라지고, 인코더는 처음 코드와 다시 얻은 코드의 차이를 점수로 받아 간다. 디코더가 점수를 줄이려면 다시 얻은 코드를 처음 코드와 같게 만들어야 한다. 디코더가 실제로 어느 α를 고르는지, 재구성 오차로 고를 때와 무엇이 다른지는 아래 문제 8에서 위젯 3으로 따져 본다. 이렇게 인코더와 디코더가 코드 공간의 코딩 레이트 감소를 점수로 겨루며 옮겨 적기와 되살리기를 함께 배우는 방법을 클로즈드 루프 전사 (코딩 레이트를 두고 겨루며 옮겨 적고 되살리기, closed-loop transcription)라 한다.

직접 움직여 보기위젯 3: 인코더와 디코더의 놀이판새 창에서 열기 ↗

점 180개 장난감의 놀이는 인코더의 선택지가 각도 하나, 디코더의 선택지가 섞는 비율 하나뿐이어서 쉽게 끝난다. 깊은 신경망 둘을 겨루게 하면 GAN 처럼 학습이 흔들릴 수 있고, 논문의 실험이 보인 것은 그 놀이를 실제로 돌려 쓸 만한 결과를 얻었다는 데까지다. 장난감 놀이가 보여 주는 것은 점수의 짜임, 곧 무엇을 키우고 무엇을 줄이게 되어 있는가이다.

ML에서: 표현이 한 점으로 무너지는 문제

라벨 없이 표현을 배우는 자기 지도 학습에서는 같은 그림을 두 번 다르게 자르거나 색을 바꾼 두 장(두 시점)의 표현이 가까워지도록 학습한다. 이 목표만 두면 모든 그림을 같은 표현 하나로 보내 두 시점의 거리를 언제나 0으로 만드는 쉬운 답이 있는데, 이렇게 모든 표현이 하나로 모이는 것을 표현의 무너짐(collapse)이라 한다. 2021년 바르데스(Adrien Bardes)·퐁스(Jean Ponce)·르쿤(Yann LeCun)의 VICReg 는 표현의 칸마다 분산이 일정 값 아래로 내려가지 않게 하는 항과 칸끼리의 공분산을 줄이는 항을 더해 이를 막았다. 2023년 퉁·천(Yubei Chen)·마·르쿤의 EMP-SSL 은 같은 자리에 코딩 레이트 R(Z) = ½ log₂ det(I + d/(bε²) ZZᵀ)를 키우는 항(총 코딩 레이트)을 넣고(d 는 표현의 칸 수, b 는 한 묶음의 그림 수, ε 는 허용 오차, Z 는 표현을 열로 늘어놓은 행렬, I 는 단위 행렬. 논문은 로그의 밑을 적지 않았고, 이 책은 비트로 세려고 밑을 2로 적는다), 이것을 VICReg 공분산 항의 부드러운 판으로 볼 수 있다고 적었다. 코딩 레이트는 표현들이 여러 방향으로 퍼질수록 크다. 클로즈드 루프 놀이의 ΔR(Z)가 코드의 클러스터를 서로 떼어 놓듯, 이 항은 표현 전체가 한 점이나 한 직선으로 오그라들지 못하게 붙든다.

문제 7. 출제자와 수험생

출제자는 문제 유형(계산·개념·응용)을 하나 고르고, 수험생은 준비 방법(공식 암기·원리 이해)을 하나 고른다. 출제자는 수험생이 틀리는 문제 수를 키우고 싶고 수험생은 줄이고 싶은데, 틀리는 문제 수는 아래와 같다.

계산 개념 응용
공식 암기 1 5 6
원리 이해 2 2 3

(가) 수험생이 출제자가 무엇을 고를지 모른 채 먼저 정해야 한다면 무엇을 골라야 하는가? (나) 출제자가 수험생의 준비를 보고 나서 고른다면? (다) 두 답에서 틀리는 수는 같은가?

김민준 M01
김민준

공식 암기가 계산에서 1개만 틀리니까 제일 좋은 칸이 거기 있어요. 공식 암기요.

선생님 T01
선생님

출제자가 민준 학생이 공식만 외운 걸 안다면 무엇을 낼까요?

김민준 M04
김민준

응용이요. 그럼 6개 틀려요. 제일 좋은 칸만 보면 안 되네요.

이서연 S01
이서연

수험생은 줄마다 최악을 봐야 해. 공식 암기는 최악이 6, 원리 이해는 최악이 3. 그러니까 원리 이해를 골라서 많아야 3개 틀리는 거야.

선생님 T01
선생님

거꾸로 출제자가 먼저 정해야 한다면, 출제자는 표에서 무엇을 볼까요?

이서연 S01
이서연

출제자는… 문제 유형마다 수험생이 가장 잘 막는 경우를 보겠네요. 칸마다 작은 쪽이 1, 2, 3이니까, 응용을 내면 적어도 3개는 틀리게 할 수 있어요.

김민준 M02
김민준

어, 수험생 쪽도 3, 출제자 쪽도 3이네.

이서연 S07
이서연

둘 다 3이야. 출제자는 응용, 수험생은 원리 이해에서 서로 더 바꿀 게 없어.

선생님 T14
선생님

그래요. 이런 칸을 안장점이라 해요. 출제자가 차이를 찾아내려 애쓸수록 수험생은 요령으로는 못 버티고, 결국 원리 이해로 밀려나요. 클로즈드 루프 놀이에서도 인코더가 차이를 찾아내려 애쓰면, 디코더는 대표점을 섞는 요령으로 버티지 못하고 자기 일관을 지키는 선형 디코더로 밀려나요.

김민준 M11
김민준

족보만 외워 가면 교수님이 족보에 없는 걸 내시니까, 결국 처음부터 이해하는 게 제일 덜 틀리는 거네요.

문제 8. 디코더는 무엇을 고르나

본문의 장난감에서 인코더 각도를 θ = 143.9°에 두었다. 디코더가 섞는 비율 α를 0, 0.1, 0.2, …, 1로 바꾸면 재구성 오차 D, 클러스터마다 처음 코드와 다시 얻은 코드의 차이의 합 ΣΔR(Zⱼ, Ẑⱼ), 점수 J가 아래와 같다.

α 0 0.1 0.2 0.3 0.4 0.5 0.75 1
D 0.293 0.287 0.283 0.280 0.279 0.280 0.288 0.307
ΣΔR(Zⱼ, Ẑⱼ) 0 0.005 0.020 0.047 0.083 0.129 0.254 0.316
J 5.306 5.406 5.520 5.647 5.784 5.927 6.259 6.407

(가) 재구성 오차로 고르는 디코더(오픈 루프)와 점수 J로 고르는 디코더(클로즈드 루프)는 각각 어느 α를 고르는가? (나) 위젯 3에서 θ = 40°로 바꾸면 J로 고르는 디코더의 답이 어떻게 되는가? 그런데도 인코더는 왜 이 각도를 고르지 않는가?

김민준 M01
김민준

(가)는 D가 제일 작은 0.4요, 0.279. J는 α = 0이 제일 작아요. 둘이 다르네요.

선생님 T01
선생님

재구성 오차로 고르면 선형 디코더보다 대표점을 40% 섞은 디코더가 낫다는 말이에요. 이 디코더를 고르면 무엇을 잃죠?

김민준 M07
김민준

ΣΔR이 0.083이니까 자기 일관이 조금 깨져요. 다시 얻은 코드가 클러스터마다 조금씩 오그라든 거예요. 재구성 오차는 덩어리 안의 점들을 가운데로 조금 당기면 오히려 줄어드나 봐요. 평균 쪽으로 당기면 손해가 적으니까요.

이서연 S01
이서연

흐릿한 평균 그림이 화소 오차를 작게 받는 것도 점들을 가운데로 당기기 때문이네. (나)는 위젯에서 θ = 40°로 바꿔 보면, J를 가장 작게 하는 α가 1이야. 대표점 디코더(α = 1)를 쓰면 J가 더 낮아.

이서연 S06
이서연

이상해. 클로즈드 루프로 고르는데 대표점 디코더가 이기면, 무너진 디코더가 뽑히는 거잖아.

선생님 T01
선생님

θ = 40°는 어떤 각도였죠? 그 각도에서 J는 얼마나 되나요?

이서연 S01
이서연

클러스터가 섞이는 각도예요. 맞힘이 79.4%였어요.

선생님 T01
선생님

클러스터가 섞인 코드를 받으면, 대표점 디코더는 점을 어디로 보내죠?

이서연 S08
이서연

섞여 있으니까 꽤 많은 점을 엉뚱한 클러스터의 평균으로 보내겠네요. 아, 그게 다시 얻은 코드의 ΔR(Ẑ)를 오히려 줄이는 거예요.

김민준 M01
김민준

J는 위젯에 2.1비트 남짓으로 나와요. θ = 140°는 5.363비트였고요.

이서연 S01
이서연

훨씬 작네. 인코더는 J를 키우려고 하니까 이런 각도에 머물지 않겠어.

선생님 T14
선생님

그래요. 놀이는 한쪽만 보면 안 되고 두 쪽을 함께 봐야 해요. 스크립트로 1° 눈금 모든 각도를 보면 디코더가 α = 0을 고르지 않는 각도는 37°에서 48° 사이의 일곱 곳뿐이고, 인코더가 J를 가장 크게 하는 θ = 140°에서 디코더의 답은 α = 0이에요. 「디코더의 가장 좋은 대답을 본 뒤 인코더가 고른 값」과 「인코더의 가장 좋은 대답을 본 뒤 디코더가 고른 값」이 똑같이 5.363비트로 만나요. 출제자와 수험생의 안장점과 같은 자리예요.

김민준 M11
김민준

과제 채점을 대충 하는 조교한테는 대충 낸 과제가 통하는데, 꼼꼼한 조교가 오면 안 통하는 거네요. 그러니까 조교가 꼼꼼해야 과제도 제대로 하게 돼요.

문제 9. 무너진 표현의 코딩 레이트

자기 지도 학습의 한 묶음에 그림 네 장이 있고, 각 그림의 표현은 2차원 벡터다. 총 코딩 레이트 R = ½ log₂ det(I + d/(bε²) ZZᵀ)(d = 2, b = 4, ε = 0.5, Z 는 표현을 열로 놓은 2 × 4 행렬)를 (가) 네 표현이 모두 (1, 0)일 때 (나) (1, 0), (−1, 0), (1, 0), (−1, 0)일 때 (다) (1, 0), (0, 1), (−1, 0), (0, −1)일 때 구하라. 두 시점의 표현을 가깝게 하는 항만으로 학습하면 어떤 일이 생기고, 이 R 을 키우는 항을 더하면 무엇이 달라지는가?

김민준 M01
김민준

d/(bε²) = 2/(4 × 0.25) = 2예요. (가)는 ZZᵀ가 대각 (4, 0)이라 det = (1 + 8)(1) = 9, R = ½ log₂ 9 = 1.585비트. (나)는… +, − 부호만 다르니까 ZZᵀ가 똑같이 대각 (4, 0)이에요. 1.585비트. (다)는 대각 (2, 2)라 det = 5 × 5 = 25, R = 2.322비트예요.

선생님 T01
선생님

(가)는 네 그림이 모두 같은 표현이고, (나)는 두 가지로 갈렸어요. 그런데 R이 같아요. 이상하지 않나요?

김민준 M06
김민준

네, (나)가 더 퍼져 있는데요. 이 R은 무너진 걸 못 잡는 거예요?

이서연 S03
이서연

(나)에서 (1, 0)과 (−1, 0)을 ZZᵀ에 넣으면 부호끼리 곱해져서 사라지잖아. 평균을 빼는 단계가 어디에도 없네.

선생님 T01
선생님

가운데를 빼지 않으면, R이 실제로 보는 건 무엇일까요?

이서연 S01
이서연

표현들이 원점에서 어느 방향들로 뻗어 있는지요. (가)와 (나)는 둘 다 가로 방향 하나에만 있어서 같고, (다)는 두 방향을 다 써서 커진 거고요.

이서연 S07
이서연

그러니까 이 R을 키우면 표현이 방향 하나로 오그라드는 걸 막는 거야. 처음에 표현들의 크기를 1로 맞춰 두면, 모두 같은 점이 되는 무너짐도 방향 하나만 쓰는 경우라서 R이 작게 나오고.

선생님 T14
선생님

그래요. 두 시점을 가깝게 하는 항만 있으면 (가)가 가장 좋은 답이에요. 거리가 0이니까요. 그 항에 R을 키우는 항을 더하면, 같은 그림의 두 시점은 가깝게 두면서 다른 그림끼리는 여러 방향으로 흩어 놓아야 점수를 받아요. 클로즈드 루프 놀이의 ΔR(Z)가 클러스터를 서로 떼어 놓았듯, 이 항은 표현들을 여러 방향으로 떼어 놓아요. 다만 라벨 없이요.

김민준 M11
김민준

팀원 넷이 각자 다른 부분을 맡아야 하는데, 서로 비슷하게만 하라고 하면 넷이 똑같은 부분을 해 오는 거네요. 맡은 부분이 겹치지 않게 하라는 규칙이 하나 더 있어야 해요.