자주 하는 실수와 요약
자주 하는 실수
| 실수 | 나온 문제 | 바로잡는 법 |
|---|---|---|
| 되풀이 횟수를 정해 펼친 식이 어떤 입력에도 맞는다고 봄 | 1 | 펼친 식은 정한 층 수에서 끝난다. 그 층 수로 모자라는 입력에서는 더 돌 길이 없다 |
| ISTA 첫 스텝의 코드를 그대로 믿음 | 2 | ISTA 첫 스텝은 자료와 축이 닮은 정도(Wx)만 본다. 닮은 축끼리 억누르는 S 가 여러 스텝에 걸쳐 계수를 나눠 준다 |
| S 의 대각 밖을 덜 중요한 값으로 봄 | 2 | 대각 밖이 없으면 닮은 축 둘이 자료의 같은 부분을 두 번 설명해 자료를 잘못 되살린다 |
| 잔차 연결이 있으면 경사하강이라고 봄 | 3 | 꼴만 같다. F 가 어떤 함수의 그래디언트인지, 층마다 무엇이 줄어드는지를 따로 보여야 설명이 된다 |
| 층 수가 줄면 계산도 그만큼 준다고 봄 | 5 | LISTA 한 층의 S 곱은 축 수의 제곱이다. 축이 많으면 한 층이 ISTA 한 스텝보다 무겁다 |
| 학습한 언롤드 최적화가 ISTA 를 대신한다고 봄 | 4, 6 | LISTA 는 학습 자료와 같은 종류에서 빠르다. 처음 보는 종류에서는 ISTA 처럼 끝까지 돌 수 없다 |
| 어텐션을 「모두의 평균」으로 봄 | 7 | softmax 는 닮은 토큰에 무게를 몰아 준다. 모두의 평균이면 두 클러스터가 하나로 뭉개진다 |
| 압축 스텝을 모든 방향을 줄이는 일로 봄 | 8 | 고윳값이 작은 방향을 더 세게 줄여 모양을 얇게 만든다. 똑같이 줄이면 크기만 바뀐다 |
| 장난감이나 한 구조에서 된 읽기를 모든 트랜스포머로 넓힘 | 9 | 설정(토큰 길이) 하나에 결과가 뒤집혔다. 보인 범위와 보이지 않은 범위를 나눠 말한다 |
요약
ISTA 의 한 스텝은 z ← 문턱(Wx + Sz) 이고, 행렬 곱과 칸마다의 비선형 함수라는 점에서 신경망의 층 하나와 꼴이 같다. 그래서 되풀이 K번은 같은 층을 K개 쌓은 신경망으로 적을 수 있다(언롤드 최적화). 장난감 문제(칸 20, 축 40, 자료마다 축 3개)에서 ISTA 는 오차를 1% 아래로 내리는 데 75스텝이 걸렸다. 스텝이 쌓이는 동안 S 의 대각 밖이 닮은 축끼리 계수를 다투게 해, ISTA 첫 스텝에 30개였던 0 아닌 계수가 100스텝 뒤 3.6개로 줄었다.
펼친 층의 W, S, 층마다의 문턱을 자료로 학습한 LISTA 는 다섯 층으로 시험 자료의 오차를 1.59%까지 내렸다. ISTA 가 65스텝을 돌아야 닿는 오차다. 그레고르·르쿤의 실험에서도 LISTA 한 층의 오차에 FISTA 가 닿으려면 18스텝(축 100개)이 걸렸다. 대신 LISTA 는 배운 종류의 자료에서 빠르다. 학습 때 못 본 축 8개짜리 자료에서는 오차가 7.15%로 올랐고, 층을 10개로 늘려도 5.13%에 머물렀다. 축이 많으면 S 가 커져 한 층이 ISTA 한 스텝보다 무거워지는 것도 셈에 넣어야 한다.
CRATE 는 같은 생각을 거꾸로 썼다. 코딩 레이트 감소라는 목적을 먼저 정하고, 클러스터별 코딩 레이트를 줄이는 스텝과 희소화 스텝을 번갈아 펼쳤더니 어텐션과 MLP 를 닮은 층이 나왔다. 평면의 장난감에서는 softmax 로 닮은 토큰끼리 섞는 스텝이 클러스터마다 토큰을 얇게 모았지만, 토큰 길이 하나에 결과가 뒤집혔다. CRATE 는 ImageNet-1K 에서 ViT 에 가까운 정답률을 냈지만, 보통의 트랜스포머가 이 목적을 따른다는 데까지는 증거가 닿지 않는다.
flowchart LR A["되풀이 알고리즘<br/>ISTA: 같은 스텝 K번"] -- "펼치기" --> B["K층 신경망<br/>W, S, 문턱이 층마다 같음"] B -- "W, S, 문턱을 학습<br/>(LISTA)" --> C["적은 층으로 같은 오차<br/>배운 종류의 자료에서만"] D["목적 하나<br/>코딩 레이트 감소 + 희소"] -- "스텝을 펼치기<br/>(CRATE)" --> E["어텐션 = 압축 스텝<br/>MLP = 희소화 스텝"]
막힌 곳
이 장의 두 실험은 모두 정답이 무엇인지 알고 시작했다. LISTA 는 ISTA 를 끝까지 돌린 정답 코드를 보고 배웠고, CRATE 의 장난감은 두 방향 u₁, u₂ 를 미리 주었다. 실제 자료에는 정답 코드도, 토큰 클러스터의 방향도 따로 주어지지 않는다. 신경망이 스스로 찾은 짧은 표현이 자료의 규칙을 잡은 것인지, 학습 자료 하나하나를 외운 것인지는 어떻게 가를 수 있을까? 짧게 적었다는 것만으로 처음 보는 자료에도 통한다고 말할 수 있을까?