오토인코더: 줄였다 되살리며 배우는 신경망

혼동하기 쉬운 점과 요약

토론 1. 망가진 정도를 잘못 알아도 디노이저가 알아서 맞추나

문제 10에서 σ 를 모르는 디노이저는 784칸을 보고 망가진 정도를 스스로 읽어 냈다. 그렇다면 문제 8에서 σ = 0.25 로만 배운 디노이저도 σ = 1 그림을 보고 알아서 맞춰 고치지 않을까?

선생님 T01
선생님

문제 10에서 σ 를 모르는 디노이저는 σ 를 알려 준 디노이저만큼 잘 고쳤어요. 그럼 문제 8에서 σ = 0.25 로만 배운 디노이저에게 σ = 1 그림을 주면 어떨까요?

김민준 M02
김민준

그 디노이저도 784칸을 보잖아요. 바탕이 지글지글한 걸 보면 많이 망가진 그림인 줄 알아채고 알아서 세게 고치지 않을까요?

선생님 T01
선생님

문제 8의 표에서 그 칸을 찾아봐요.

김민준 M04
김민준

34.73이에요. σ = 1 로 배운 디노이저는 16.86이니까 두 배가 넘네요. 알아서 맞추지 못했어요.

이서연 S03
이서연

문제 10의 디노이저와 다른 게 뭐지? 둘 다 784칸을 보는데.

선생님 T14
선생님

두 디노이저가 학습하는 동안 본 σ 를 떠올려 봐요.

김민준 M06
김민준

문제 10의 디노이저는 0.02부터 4까지 섞어서 배웠고, 문제 8의 디노이저는 0.25만 봤어요. σ = 1 그림이 어떻게 생겼는지 본 적이 없으니, 지글지글한 바탕이 눈에 들어와도 그만큼 세게 고치는 법은 배운 적이 없네요.

이서연 S07
이서연

그러니까 망가진 정도를 스스로 읽는 것도 배운 범위 안에서만 되는구나. 0.25만 본 디노이저는 모든 그림을 「조금 흔들린 그림」이라 믿고 고쳐서, 큰 노이즈를 획으로 잘못 보고 남겨 둔 거고. 반대로 σ = 1 디노이저는 조금 흔들린 그림까지 넓게 평균 내서 멀쩡한 획을 흐렸고.

선생님 T01
선생님

그래요. 믿는 망가짐이 실제보다 크면 멀쩡한 것까지 흐리고, 작으면 노이즈를 남겨요. 그래서 여러 σ 를 섞어 배우게 하고, σ 를 조건으로 함께 주는 거예요.

혼동하기 쉬운 점

혼동하기 쉬운 생각 나온 문제 바로잡는 법
줄인 번호 사이의 값을 넣으면 이웃 번호의 사이쯤이 나온다고 봄 1 학습한 잠재 변수 밖에서 디코더가 무엇을 내놓을지는 학습이 정하지 않았다
오토인코더의 잠재 변수 좌표에 뜻이 있다고 봄 2 잠재 변수를 늘이거나 돌려도 디코더가 맞춰 주면 손실이 같다. 잠재 변수가 놓일 자리는 학습이 정하지 않는다
동점인 두 칸은 그래디언트를 반씩 나눠 받는다고 봄 3 동점에서는 올릴 때와 내릴 때의 변화율이 달라(+1과 0) 미분이 하나로 정해지지 않는다. 동점이 아니면 이긴 칸의 미분은 1, 진 칸은 0이다. 라이브러리는 관례로 한 칸을 고른다(PyTorch 2.7 은 줄 순서로 먼저 만난 칸, ReLU 는 0에서 0)
그래디언트가 0인 칸은 출력에 영향을 주지 않는 칸이라고 봄 4 그래디언트는 손실까지 이어진 곱이다. 진 칸은 h 에 닿지 않아 0이지만, 이긴 칸도 손실이 그 출력을 신경 쓰지 않으면(∂𝓛/∂h = 0) 0을 받는다
최대 풀링에서 진 세 칸이 0을 받으니 앞의 합성곱 층은 4분의 1만 배운다고 봄 개념 다지기 그림마다 이기는 칸이 바뀌고(시험 그림 1,000장이면 83.3%가 한 번은 이긴다), 합성곱은 모든 창이 같은 가중치를 쓰므로 이긴 칸들의 그래디언트가 모두 그 가중치에 모인다
전치 합성곱(디컨볼루션)은 합성곱을 되돌린다고 봄 5 합성곱을 입력으로 미분한 계산(출력 칸의 수를 창으로 거꾸로 뿌리기)을 앞으로 쓰는 층이다. 줄여서 잃은 것은 돌아오지 않고, 커널 크기가 스트라이드로 나누어떨어지지 않으면 겹침이 고르지 않아 바둑판 무늬가 생긴다
제곱 오차로 짐작한 값이 실제로 있는 값이라고 봄 6, 7 망가진 입력과 어울리는 원래 값들의 평균이다. 많이 망가질수록 섞이는 후보가 늘어 전체 평균 쪽으로 끌려간다
가린 칸 수만 같으면 남는 후보 수도 같다고 봄 7 어디를 가렸느냐에 따라 남는 후보가 다르다
망가진 정도를 잘못 알아도 디노이저가 알아서 맞춘다고 봄 8, 9, 토론 1 크게 잡으면 멀쩡한 것까지 흐리고, 작게 잡으면 노이즈를 남긴다. 망가진 정도를 조건으로 함께 준다
노이즈 크기를 알려 주면 언제나 크게 좋아진다고 봄 10 차원이 큰 그림은 망가진 그림만 보고도 노이즈 크기를 추정할 수 있다(784칸이면 2.5%쯤). 2차원 점은 그렇지 못하다
라벨 조건은 언제나 같은 만큼 듣는다고 봄 11 망가진 그림이 아직 말하지 않은 것이 많을 때 크게 듣는다. 다 지워진 그림에서 라벨만 아는 디노이저는 그 라벨의 평균을 그린다
평소 것만 배운 판정기는 처음 보는 이상을 못 거른다고 봄 12 이상한 예를 배우는 대신 「평소답지 않음」을 잰다. 평소와 다르기만 하면 처음 보는 이상도 걸린다
재구성 오차가 문턱 아래면 학습한 종류라고 봄 13 재구성 오차는 배운 것과 생김새가 얼마나 다른지를 잰다. 숫자의 획처럼 생긴 샌들은 65.5%만 걸리고, 획이 많은 숫자 2·8은 정상인데도 더 자주 걸린다
짧게 줄인 잠재 변수는 픽셀보다 정보가 적으니 검색·분류에 늘 불리하다고 봄 14 칸마다의 자잘한 차이가 빠지고 생김새가 남는다. 검색은 거의 같은 정확도(94.08% 대 94.75%)를 49분의 1의 계산으로 내고, 라벨이 적을 때는 오히려 낫다(76.0% 대 72.6%)

요약

라벨이 정하지 못한 생김새의 값을 사람 대신 그림 자신에게서 얻으려고, 그림 자신을 정답으로 삼아 좁은 가운데 칸(잠재 변수)을 거쳐 되살리게 했다(오토인코더). 손실은 되살리기만 보므로, 잠재 변수를 늘이거나 돌려도 디코더가 맞춰 주면 손실이 같고, 잠재 변수가 어디에 놓일지는 학습이 정하지 않는다. 그림을 다루는 인코더가 쓰는 최대 풀링도 미분할 수 있다. 창 안에서 이긴 칸에 대한 미분이 1, 진 칸에 대한 미분이 0이라 그래디언트는 이긴 칸으로만 돌아가고, 미분이 정해지지 않는 곳은 동점뿐이다. 앞으로 갈 때 적어 둔 이긴 칸의 번호를 디코더가 넘겨받으면 같은 칸으로 값을 되돌려 키울 수 있고(최대 언풀링), 합성곱을 입력으로 미분한 계산을 앞으로 쓰면 전치 합성곱이 된다. 가운데를 조이는 대신 입력을 일부러 망가뜨려도 베끼기를 막을 수 있다(디노이징 오토인코더). 제곱 오차로 배운 디노이저는 그 망가진 그림이 나올 수 있었던 원래 그림들의 평균(조건부 평균)을 내놓으므로, 많이 망가질수록 고친 그림이 흐려지고 전체 평균 그림에 다가간다. 망가진 정도 σ 를 조건으로 함께 주면(조건부 디노이징) 디노이저 하나가 모든 σ 를 제 기준으로 고친다. 라벨도 조건으로 줄 수 있고, 조건은 망가진 그림이 아직 말하지 않은 것이 많을수록 크게 듣는다. 줄이고 고치는 솜씨는 새 그림을 만들지 않아도 쓸 데가 많다. 잠재 변수 16칸은 그림을 49분의 1로 줄여 담고, 짧은 계산으로 비슷한 그림을 찾고, 라벨이 적을 때 픽셀보다 나은 거리를 준다. 평소의 데이터만으로 배운 오토인코더가 잘 되살리지 못하는 입력을 골라내면 이상한 예를 모으지 않고도 이상 탐지를 할 수 있지만, 재구성 오차는 생김새가 얼마나 다른지만 재므로 배운 것과 닮은 이상은 빠져나간다.

flowchart LR
  A["라벨이 정하지 못한 79%<br/>생김새 값을 어디서 얻나"] --> C["오토인코더<br/>그림 자신을 정답으로"]
  C --> B["미분이 흐르는 길<br/>그래디언트는 이긴 칸으로<br/>최대 언풀링은 같은 칸으로"]
  C --> D["디노이징 오토인코더<br/>망가진 입력 → 원래 입력"]
  D --> E["제곱 오차의 답은 평균<br/>많이 망가질수록 흐리다"]
  E --> F["조건부 디노이징<br/>σ·라벨을 함께 받는다"]
  C --> G["응용<br/>압축 · 검색 · 라벨 적게 · 이상 탐지"]
  F --> G

정리 연습문제

물음. 학습을 마친 오토인코더의 잠재 변수를 모두 두 배로 늘리고, 디코더도 받은 값을 먼저 반으로 줄이도록 고쳤다. 되살리기 손실은 어떻게 되는가?

  • [x] 그대로다. 잠재 변수가 어디에 놓일지는 학습이 정하지 않는다 〔맞음: 늘이거나 돌린 잠재 변수도 같은 손실을 내므로, 학습은 그 가운데 아무것이나 고를 수 있다.〕
  • [ ] 잠재 변수 좌표마다 정해진 뜻이 있어 손실이 커진다 〔틀림: 손실은 되살린 그림만 본다. 디코더가 맞춰 주면 좌표를 늘이든 돌리든 되살린 그림은 같다.〕
  • [ ] 잠재 변수가 커진 만큼 그림에 담긴 정보가 늘어 손실이 준다 〔틀림: 디코더가 반으로 줄여 읽으니 디코더가 받는 값은 전과 같다. 되살린 그림도 같다.〕

물음. 최대 풀링의 2 × 2 창에 1, 5, 3, 2가 들어왔고 출력은 5다. 출력 쪽에서 그래디언트 1이 돌아왔을 때, 네 칸이 받는 그래디언트는?

  • [ ] 네 칸이 0.25씩 나눠 받는다 〔틀림: 출력은 이긴 칸 하나의 값이라, 진 칸을 조금 바꿔도 출력이 변하지 않는다. 진 칸의 미분은 0이다.〕
  • [x] 5가 있던 칸이 1을 받고, 나머지 세 칸은 0을 받는다 〔맞음: 이긴 칸에 대한 미분은 1, 진 칸에 대한 미분은 0이라 그래디언트는 이긴 칸으로만 돌아간다.〕
  • [ ] 최대 풀링은 미분할 수 없어 그래디언트가 여기서 멈춘다 〔틀림: 미분이 정해지지 않는 곳은 동점일 때뿐이다. 동점이 아니면 이긴 칸과 진 칸의 미분이 정해져 있다.〕

물음. 디코더가 작은 그림을 키울 때 쓰는 전치 합성곱(디컨볼루션)에 대한 말로 맞는 것은?

  • [ ] 합성곱을 되돌려, 줄일 때 잃은 것을 되살린다 〔틀림: 줄여서 잃은 것은 돌아오지 않는다. 이름만 반대 방향이다.〕
  • [ ] 인코더가 적어 둔 이긴 칸의 번호를 넘겨받아 같은 칸으로 값을 되돌린다 〔틀림: 그것은 최대 언풀링이다. 전치 합성곱은 칸의 번호를 넘겨받지 않는다.〕
  • [x] 합성곱을 입력으로 미분한 계산을 앞으로 쓰는 층이다 〔맞음: 출력 칸의 수를 창 모양으로 거꾸로 뿌려 더한다. 커널 크기가 스트라이드로 나누어떨어지지 않으면 겹침이 고르지 않아 바둑판 무늬가 생긴다.〕

물음. 제곱 오차로 배운 디노이저에 아주 많이 망가진 그림을 넣었다. 고친 그림은 어떻게 나오는가?

  • [ ] 원래 그림이 그대로 나온다 〔틀림: 디노이저가 내놓는 것은 그 망가진 그림이 나올 수 있었던 원래 그림들의 평균이다.〕
  • [ ] 조금 망가진 그림을 고칠 때와 똑같이 또렷하다 〔틀림: 망가진 정도가 클수록 평균에 섞이는 후보가 많아져 더 흐려진다.〕
  • [x] 흐리게 나오고, 전체 평균 그림에 가까워진다 〔맞음: 많이 망가질수록 망가진 그림과 어울리는 원래 그림의 후보가 늘어, 평균이 전체 평균 쪽으로 끌려간다.〕

물음. 망가진 정도를 조건으로 받는 디노이저에, 실제보다 훨씬 크게 망가졌다고 잘못 알려 주었다. 무슨 일이 생기는가?

  • [ ] 디노이저가 그림을 보고 알아서 맞춘다 〔틀림: 디노이저는 받은 망가진 정도를 제 기준으로 삼아 고친다. 잘못 알려 주면 잘못 고친다.〕
  • [x] 멀쩡한 세부까지 흐리게 지운다 〔맞음: 크게 망가졌다고 믿으면 더 많은 후보를 섞어 평균을 낸다. 거꾸로 작게 알려 주면 노이즈를 남긴다.〕
  • [ ] 노이즈를 덜 걷어 내 노이즈가 남는다 〔틀림: 노이즈가 남는 것은 망가진 정도를 실제보다 작게 알려 줄 때다.〕

물음. 평소의 데이터만으로 배운 오토인코더로 이상 탐지를 한다. 맞는 말은?

  • [ ] 이상한 예를 배우지 않았으니 처음 보는 이상은 거를 수 없다 〔틀림: 이상한 예를 배우는 대신 평소답지 않은 정도를 잰다. 평소와 다르기만 하면 처음 보는 이상도 걸린다.〕
  • [ ] 재구성 오차가 문턱 아래면 학습한 종류의 입력이다 〔틀림: 재구성 오차는 생김새가 배운 것과 얼마나 다른지만 잰다. 숫자의 획처럼 생긴 샌들도 문턱 아래로 빠져나간다.〕
  • [x] 잘 되살리지 못하는 입력을 골라내지만, 배운 것과 생김새가 닮은 이상은 빠져나간다 〔맞음: 재구성 오차는 종류를 묻지 않고 생김새의 차이만 잰다.〕

막힌 곳

오토인코더는 그림마다 생김새를 적은 잠재 변수를 사람 손 없이 찾아 주었고, 디노이저는 노이즈 크기를 함께 받아 망가진 그림을 고칠 줄 알게 되었다. 그런데 처음에 바란 일은 새 그림을 만드는 것이었다. 잠재 변수를 무작위로 뽑아 디코더에 넣으면 새 그림이 나올까? 학습한 잠재 변수들 사이에서 무엇을 그릴지 디코더가 배운 적이 없고, 잠재 변수가 어디에 놓일지도 아무도 정하지 않았다.

이 두 가지를 학습할 때부터 붙잡아 두려면 오토인코더의 무엇을 바꿔야 할까? 그리고 고치기만 배운 디노이저에 아무 그림도 담기지 않은 순수한 노이즈를 주면 무엇을 내놓을까?