생성을 가르치는 법: 분류기를 뒤집으면

자주 하는 실수와 요약

자주 하는 실수

실수 나온 문제 바로잡는 법
정답이 여럿인 문제에서 제곱 오차가 가장 작은 답이 실제로 나오는 답이라고 봄 1 제곱 오차를 가장 작게 하는 답은 정답들의 평균(조건부 평균)이고, 평균은 한 번도 일어나지 않는 답일 수 있다
손실을 절댓값 오차로 바꾸면 평균 그림 문제가 풀린다고 봄 2 중앙값도 칸마다 따로 고른 값이다. 칸들이 함께 정하는 장치가 없으면 획이 끊긴 그림이 나온다
분류기도 그림 MLP처럼 정답들의 평균을 낸다고 봄 3 분류기는 정답 여럿을 확률 분포로 담고, 거기서 뽑으면 실제 정답 하나가 나온다
조건 안의 흩어짐을 빼먹고, 조건이 정하는 몫만으로 오차를 셈 4 전체 흩어짐 = 조건이 정하는 몫 + 조건 안에 남는 몫. 두 반 점수는 25 + 100 = 125
자료를 늘리면 조건을 알아도 남는 오차가 줄어든다고 봄 4 남는 몫은 같은 조건 안에서 답끼리 다른 몫이라, 조건만으로는 줄지 않는다
라벨을 무작위로 붙이면 라벨이 정하는 몫이 커진다고 봄 5 라벨마다의 평균이 모두 전체 평균에 가까워져, 라벨이 정하는 몫은 0 가까이로 준다
신경망을 키우고 오래 학습하면 라벨 → 그림 손실이 계속 준다고 봄 6 라벨만 받는 함수는 남는 몫(MNIST 41.80) 아래로 내려갈 수 없다. 큰 신경망은 평균을 더 정확히 그릴 뿐이다
규칙이 복잡한 결정적 생성기는 표보다 많은 것을 낸다고 봄 7 같은 입력에 같은 답이면 입력 가짓수만큼 줄이 있는 표와 같다
무작위로 고르면 새것이 나온다고 봄 7, 8 무작위로 꺼내도 꺼내는 곳이 학습 데이터면 새로움은 0이다
무작위로 뽑을 때 겹칠 확률을 작게 봄 8 6,131장에서 100번이면 겹칠 확률이 0.556이다(생일 문제)
서로 다른 그림이 많으면 새 그림이 많다고 봄 8 다양성은 생성한 그림끼리, 새로움은 학습 그림과 견준다. 따로 잰다
학습 그림과의 거리만 멀면 좋은 생성기라고 봄 9 평균 그림과 섞은 그림도 거리는 멀다. 선명함(그럴듯함)을 함께 봐야 한다

요약

MLP는 정답이 하나일 때 잘 맞힌다. 분류기를 뒤집어 라벨을 넣고 그림을 맞히게 하면, 같은 라벨에 정답 그림이 여럿이라 제곱 오차로 배운 MLP는 정답들의 평균, 곧 조건부 평균을 내놓고, 그림에서는 그것이 흐린 평균 그림이다. 평균이 지운 것은 같은 라벨 안의 흩어짐이다. MNIST에서 그림의 흩어짐 52.73 가운데 라벨이 정하는 몫은 10.93(21%)뿐이고 41.80은 라벨을 알아도 남는다. 이 남는 몫은 데이터 자체에 들어 있는 내재적 확률성이라, 신경망을 아홉 배로 키우고 세 배 오래 학습해도 손실은 41.83에서 멈춘다. 그림이 라벨을 거의 정하는 분류와 달리, 라벨은 그림을 조금만 정한다. 그래서 생성은 본래 뽑기다. 같은 입력에 늘 같은 답을 내는 생성기는 입력 가짓수만큼 줄이 있는 찾아보기 표이고, 학습 그림을 무작위로 꺼내는 생성기는 다양하지만 새로움이 0인 암기다. 바라는 생성기는 다양하고, 선명하고, 학습 그림에서 진짜 새 그림만큼 떨어져 있어야 한다.

flowchart LR
  A["분류기: 그림 → 라벨<br/>정답 하나"] --> B["뒤집기: 라벨 → 그림<br/>정답 여럿"]
  B --> C["제곱 오차의 답 = 조건부 평균<br/>흐린 평균 그림"]
  C --> D["라벨이 정하는 몫 21%<br/>남는 몫 79%"]
  D --> E["내재적 확률성<br/>키워도 줄지 않는다"]
  E --> F["생성은 뽑기다"]
  F --> G["확정적 생성기 = 찾아보기 표"]
  F --> H["무작위 찾아보기 = 암기<br/>다양하지만 새로움 0"]
  G --> I["다양 · 선명 · 새로움<br/>셋을 함께"]
  H --> I

막힌 곳

라벨 「3」은 그림의 흩어짐 가운데 21%만 정하고, 나머지 79%는 생성기가 골라야 한다. 그런데 지금까지 만든 생성기는 둘 다 그 몫을 고르지 못했다. 확정적인 MLP는 열 줄짜리 표였고, 무작위 찾아보기는 학습 그림을 고르는 데만 무작위를 썼다. 획의 자리, 기울기, 굵기처럼 라벨이 정하지 못한 몫을 생성기가 고르게 하려면, 그 몫을 정해 줄 값이 라벨 곁에 함께 들어가야 하지 않을까? 그렇다면 그 값은 무엇이어야 하고, 학습 그림마다 그 값을 어디서 얻을까? 라벨은 그림마다 사람이 붙여 주었지만, 획의 생김새를 적은 값을 붙여 준 사람은 없다.