자주 하는 실수와 요약
자주 하는 실수
| 실수 | 나온 문제 | 바로잡는 법 |
|---|---|---|
| 평균을 내도 갑자기 바뀐 곳이 그대로 보인다고 봄 | 1 | 합이 1인 커널은 경계를 커널 폭만큼 비탈로 흐린다. 바뀐 곳을 찾으려면 합이 0인 차이 커널을 쓴다 |
| 수학의 합성곱과 신경망의 합성곱이 같다고 봄 | 2 | 수학은 커널을 뒤집어 건다(x[i − j]). 신경망 라이브러리는 뒤집지 않는다(교차 상관). 좌우가 같은 커널만 결과가 같다 |
| 잡음을 걷는 커널 하나를 모든 잡음 수준에 씀 | 3 | 잡음이 클수록 넓고 합이 작은 커널이 맞다. 다른 수준의 커널은 아무것도 안 하느니만 못할 수 있다. 신경망은 잡음 수준을 알아야 한다 |
| 칸마다 따로 배우는 쪽이 늘 더 꼼꼼하다고 봄 | 4 | 자리마다 규칙이 같다면 공유한 쪽이 같은 데이터로 자리 수만큼 더 많이 배운다 |
| 이웃만 보면 「옮기면 옮겨진다」가 저절로 생긴다고 봄 | 5 | 그 성질은 같은 커널을 나눠 쓰는 데서 온다. 자리마다 다른 커널이면 깨진다 |
| 공유한 층의 매개변수에서 치우침을 빼먹음 | 6, 11 | 치우침을 단위마다 두는지 채널마다 두는지 확인하고 더한다 |
| 수용 영역 안의 칸이 모두 비슷하게 중요하다고 봄 | 7, 9 | 이론상 폭은 층 수에 비례하지만 실제로 기대는 폭은 층 수의 제곱근에 비례한다 |
| 다채널 층의 가중치를 셀 때 채널 수를 한 번만 곱함 | 8 | 커널 한 칸이 입력 채널 하나와 출력 채널 하나를 잇는다. k² × Cin × Cout |
| 팽창 간격을 크게만 늘리면 된다고 봄 | 8 | 간격이 너무 빨리 커지면 수용 영역 안에 아무도 보지 않는 칸이 생긴다 |
| 1 × 1 합성곱은 이웃을 안 보니 쓸모가 없다고 봄 | 11 | 칸마다 같은 MLP 층이다. 채널끼리 섞는다 |
| 입출력 채널을 맞바꾸면 매개변수도 같다고 봄 | 12 | 가중치는 같지만 치우침은 출력 채널 수만큼이다 |
| 매개변수가 적으면 계산할 값도 적다고 봄 | 12 | 합성곱 출력은 칸마다 채널 수만큼 값이 있다. 첫 층 출력이 입력의 80배다 |
요약
이웃에 같은 비율을 곱해 더하는 계산이 합성곱이고, 곱하는 비율의 묶음이 커널이다. 그림을 흐리게 하던 이웃 평균도 커널 [¼, ½, ¼]의 합성곱이었고, 비율만 바꾸면 윤곽을 찾거나 잡음을 걷는 커널이 된다. 커널을 가중치로 두면 학습으로 정할 수 있다. 모든 자리가 같은 커널을 쓰는 가중치 공유 덕분에 매개변수 수는 그림 크기와 상관없어지고, 입력을 옮기면 출력도 그만큼 옮겨져 한 자리에서 배운 것을 다른 자리에서도 쓴다. 커널을 층층이 쌓으면 출력 한 칸이 보는 수용 영역은 층 수에 비례해 넓어지지만, 실제로 기대는 폭은 층 수의 제곱근으로만 자란다. 칸마다 수가 여러 개면 채널로 다루며, 합성곱 층은 칸마다 이웃의 모든 채널 값을 펴서 같은 행렬을 곱하는, 이웃만 보는 MLP다.
flowchart LR A["MLP<br/>출력 칸마다 입력 전부에 따로 가중치"] --> B["이웃만 잇기<br/>k × k 이웃만 본다"] B --> C["가중치 공유 = 합성곱<br/>모든 자리가 같은 커널"] C --> D["채널<br/>칸마다 여러 특징, C_out(C_in·k² + 1)"] C --> E["층 쌓기<br/>수용 영역 1 + L(k − 1)"] E --> F["실제로 기대는 폭은 √L<br/>멀리 보기 어렵다"] C --> G["잡음 걷는 커널<br/>잡음 수준마다 다르다"]
막힌 곳
이제 그림 크기와 상관없는 적은 매개변수로 그림을 받아 그림을 내놓는 층을 만들 수 있다. 같은 커널을 모든 자리에서 쓰니 한 자리에서 배운 것이 다른 자리에서도 통하고, 칸마다 여러 특징을 채널로 함께 다룬다.
그런데 작은 커널을 그림 크기 그대로 쌓기만 해서는, 출력 한 칸이 실제로 기대는 폭이 층 수의 제곱근으로만 넓어졌다. 가로세로 64칸 그림의 양 끝을 함께 보려면 어떻게 해야 할까? 또 잡음을 걷는 가장 좋은 커널은 잡음 수준마다 달랐다. 그림과 함께 잡음 수준을 신경망에 어떻게 알려 줄까? 그리고 흐리게 하는 커널은 수 몇 개로 끝났다. 그 반대로 흐린 그림을 원래대로 되돌리는 커널도 수 몇 개로 만들 수 있을까?