수학 개념 지도
딥러닝과 언어 모델

합성곱 신경망(Convolutional neural network)

작은 필터⁠(filter)⁠ 하나를 그림 위로 미끄러뜨리며 겹친 칸끼리 곱해 더하는 합성곱⁠(convolution)⁠을 층마다 쌓은 신경망⁠(neural network)⁠. 같은 가중치⁠(weight)⁠를 모든 위치에 다시 써서 매개변수⁠(parameter)⁠가 적고, 그림을 옮기면 출력도 그만큼 옮겨 간다(이동 등변성⁠, translation equivariance⁠).

(I⋆K)[i,j]=∑u=02∑v=02I[i+u, j+v]  K[u,v](I \star K)[i,j] = \sum_{u=0}^{2}\sum_{v=0}^{2} I[i+u,\, j+v]\; K[u,v]
먼저 보면 좋은 개념신경망행렬역전파

흑백 사진은 칸마다 밝기가 적힌 수의 표입니다. 아래 왼쪽은 8×8 칸짜리 작은 그림으로, 0은 검정, 1은 흰색입니다. 가운데의 3×3 표를 필터(커널)라 합니다. 필터를 그림의 어느 3×3 조각에 겹쳐 놓고 겹친 아홉 칸끼리 곱해 모두 더하면 수 하나가 나옵니다. 필터를 한 칸씩 옮기며 이것을 되풀이하면 가로세로 8 − 3 + 1 = 6칸짜리 새 표(특징 맵⁠, feature map⁠)가 생깁니다. 이 연산이 합성곱이고, 합성곱을 층마다 쌓은 신경망이 합성곱 신경망(CNN)입니다.

(I⋆K)[i,j]=∑u=02∑v=02I[i+u, j+v]  K[u,v](I \star K)[i,j] = \sum_{u=0}^{2}\sum_{v=0}^{2} I[i+u,\, j+v]\; K[u,v]

필터: · 그림: · 그림을 오른쪽으로 칸 옮기기

오른쪽 출력 칸에 마우스를 올리거나 누르면, 그 값을 만든 입력의 3×3 조각이 노랑 테두리로 표시됩니다. 노랑은 양수, 파랑은 음수입니다.

입력이 0 아니면 1이라서, 출력 한 칸은 창 안의 흰 칸에 겹친 가중치들의 합입니다. '세로 경계' 필터는 오른쪽 열에 +1, 왼쪽 열에 −1이 있으니 창의 오른쪽 열 밝기 합에서 왼쪽 열 밝기 합을 뺍니다. 그래서 왼쪽이 어둡고 오른쪽이 밝은 세로 경계가 창의 세 행을 모두 지나면 +3, 반대 방향 경계라면 −3, 고르게 칠해진 곳에서는 0이 됩니다. 경계가 창의 일부만 지나는 사각형의 모서리 근처에서는 ±1이나 ±2가 나옵니다. 출력은 세로 경계가 어디 있는지 보여 주는 지도입니다. '가로 경계'는 같은 일을 위아래로 하고, '흐리게'는 아홉 칸의 평균⁠(mean)⁠을 내며, '날카롭게'는 가운데 칸을 이웃보다 도드라지게 합니다. 합성곱 신경망에서는 이 아홉 개의 수를 사람이 정하지 않고 역전파⁠(backpropagation)⁠로 학습합니다. 덧붙이면, 수학에서 말하는 합성곱은 필터를 뒤집어 ∑I[i−u, j−v] K[u,v]\sum I[i-u,\,j-v]\,K[u,v]로 계산합니다. 신경망 라이브러리가 실제로 계산하는 위 식은 뒤집지 않은 교차 상관⁠(cross-correlation)⁠이지만, 어차피 필터를 학습하므로 뒤집힌 필터를 배우면 그만이라 관습적으로 합성곱이라 부릅니다.

왜 합성곱인가. 합성곱은 그림에 대한 두 가지 가정을 구조에 박아 둡니다. 가까운 칸끼리 관련이 깊다는 것(국소성), 그리고 같은 무늬는 어디에 있든 같은 무늬라는 것(이동 대칭)입니다. 6×6 출력의 칸마다 모든 입력 칸과 잇는 층이라면 가중치가 64 × 36 = 2,304개 필요하지만, 합성곱은 모든 위치에서 같은 아홉 개(편향까지 열 개)를 다시 씁니다. 이것을 가중치 공유라 합니다. 이제 그림을 옮기는 칸 수를 바꿔 보세요. 출력의 무늬도 같은 칸 수만큼 옮겨 갈 뿐 모양은 그대로입니다(가장자리에 닿지 않는 한). 옮긴 뒤 합성곱한 것과 합성곱한 뒤 옮긴 것이 같다는 이 성질을 이동 등변성이라 합니다. 흔히 이동 불변성⁠(translation invariance)⁠과 혼동하지만 둘은 다릅니다. 불변이라면 출력이 아예 바뀌지 않아야 합니다. 사진이 고양이인지 가리는 분류기에 필요한 것은 불변성입니다. 합성곱 층이 주는 것은 등변성이고, 불변성은 마지막에 특징 맵 전체를 평균 내거나 최댓값만 남겨 위치 정보를 지울 때 얻습니다. 무엇을 바꿔도 변하지 않는 것을 찾는 대칭과 불변량⁠(invariant)⁠의 생각이 신경망 설계에 들어온 예입니다.

이동과 교환하는 선형 연산은 합성곱뿐입니다. 가장자리를 둥글게 이어 붙인 신호(오른쪽 끝의 다음 칸이 왼쪽 끝인 신호)에서, 선형이고 이동과 교환하는 연산은 반드시 어떤 필터와의 합성곱입니다. 여기서 '이동과 교환한다'는 먼저 옮기고 연산하나 먼저 연산하고 옮기나 결과가 같다는 뜻입니다. 이유는 이렇습니다. 어떤 신호든 한 칸만 1인 신호(단위 임펄스⁠, unit impulse⁠)를 옮겨 가며 크기를 곱해 더한 것입니다. 연산이 선형이면 결과는 임펄스 하나에 대한 응답들로 정해지고, 이동과 교환하면 옮긴 임펄스의 응답은 응답을 옮긴 것입니다. 그러니 출력은 임펄스 응답 하나를 옮겨 가며 곱해 더한 것, 곧 그 응답을 필터로 삼은 합성곱입니다. 행렬⁠(matrix)⁠로 쓰면 합성곱은 각 행이 윗줄을 한 칸씩 돌린 순환 행렬⁠(circulant matrix)⁠이고(선형변환⁠(linear transformation)⁠), 모든 순환 행렬은 같은 고유벡터⁠(eigenvector)⁠, 곧 1의 거듭제곱근⁠(roots of unity)⁠으로 만든 복소 사인파⁠(sinusoid)⁠들을 공유합니다. 그래서 그 기저로 대각화⁠(diagonalization)⁠하면 합성곱은 진동수⁠(frequency)⁠마다 수 하나를 곱하는 일이 됩니다. 이것이 합성곱 정리⁠(convolution theorem)⁠이고, 푸리에 급수⁠(Fourier series)⁠가 신호 처리에서 하는 일이 바로 이것입니다. 복소 사인파 대신 코사인⁠(cosine)⁠만 쓰는 이산 코사인 변환⁠(discrete cosine transform)⁠도 가장자리를 거울처럼 이어 붙인 신호에서 같은 역할을 합니다. '흐리게' 필터는 높은 진동수를 대체로 줄이는 필터로, JPEG이 거칠게 저장하는 높은 진동수 성분을 약하게 만듭니다.

층을 쌓으면. 실제 CNN은 한 층에 필터를 수십에서 수백 개 두어 특징 맵을 여러 장(채널) 만들고, 다음 층의 필터는 그 모든 채널에 걸친 3×3×(채널 수) 크기입니다. 합성곱 뒤에는 음수를 0으로 자르는 ReLU 같은 비선형 함수⁠(function)⁠를 둡니다. 이것이 없으면 합성곱을 아무리 쌓아도 합성곱 하나와 같습니다. 2×2 칸 가운데 가장 큰 값만 남기는 최대 풀링⁠(max pooling)⁠이나, 필터를 두 칸씩 건너뛰며 옮기는 합성곱(보폭 2)으로 크기를 줄이기도 합니다. 3×3 합성곱을 L층 쌓으면 출력 한 칸이 보는 입력 범위(수용 영역⁠, receptive field⁠)는 (2L + 1) × (2L + 1)로 넓어지고, 풀링⁠(pooling)⁠을 끼우면 더 빨리 넓어집니다. 학습된 망을 들여다보면 앞쪽 층은 경계와 색 얼룩, 뒤쪽 층은 무늬나 물체의 부분처럼 더 넓고 복잡한 것에 반응하는 경향이 관찰됩니다. 필터 가중치에 대한 기울기⁠(slope)⁠는 입력과 출력 쪽 기울기의 교차 상관이어서, 역전파도 같은 종류의 연산으로 계산됩니다. 주의할 점도 있습니다. 합성곱 자체는 (가장자리를 빼면) 정확히 등변이지만, 칸을 건너뛰는 풀링과 보폭은 그렇지 않습니다. 그래서 실제 CNN은 사진을 한두 픽셀만 옮겨도 답이 바뀔 수 있다는 것이 2018–2019년 여러 연구에서 보고되었습니다.

역사. 1959–62년 데이비드 허블과 토르스텐 비셀은 고양이의 시각 피질에서 특정 방향의 선분에 반응하는 세포(단순 세포)와, 선분의 위치가 조금 달라도 반응하는 세포(복합 세포)를 찾았습니다. 1980년 후쿠시마 구니히코의 네오코그니트론은 이 구조를 본뜬 층 구조였지만 역전파로 학습하지는 않았습니다. 1989년 벨 연구소의 얀 르쿤과 동료들은 합성곱 신경망을 역전파로 학습시켜 우편번호 손글씨를 읽었고, 같은 계열의 망은 1990년대에 미국에서 수표를 읽는 상용 시스템에 쓰였고, 1998년 논문이 그 구조를 LeNet-5로 정리했습니다. 2012년 합성곱 5층과 완전 연결 3층, 매개변수 약 6천만 개의 AlexNet이 ImageNet 대회에서 큰 차이로 이기면서 딥 러닝⁠(deep learning)⁠의 시대가 열렸고(인공지능⁠(artificial intelligence)⁠), 2015년 ResNet은 층을 건너뛰는 지름길 연결로 152층짜리 망을 학습시켰습니다. 2020년 무렵부터는 그림을 조각으로 잘라 트랜스포머⁠(transformer)⁠에 넣는 방법(ViT)도 자료가 충분하면 CNN과 겨룰 만하다는 결과가 나왔습니다. 이동 대칭을 구조에 박아 둔 CNN과 달리 트랜스포머는 그것을 자료에서 배워야 해서 더 많은 자료가 필요하다는 것이 흔한 설명입니다.

이어지는 곳. 합성곱 층도 결국 가중치를 곱해 더하고 비선형 함수를 거치는 신경망의 한 종류이고, 그 가중치는 역전파와 확률적 경사 하강법⁠(stochastic gradient descent)⁠으로 맞춥니다. 필터를 진동수의 언어로 읽고 싶다면 푸리에 급수와 이산 코사인 변환으로, 순환 행렬이 왜 모두 같은 고유벡터를 갖는지는 고유벡터와 대각화로 가면 됩니다. 칸을 충분히 촘촘히 뽑아야 정보를 잃지 않는다는 조건은 표본화 정리⁠(sampling theorem)⁠에 있습니다. 풀링과 보폭이 등변성을 깨는 것도 이 조건을 어긴 채 칸을 솎아 낼 때 생기는 에일리어싱⁠(aliasing)⁠ 때문이라는 분석이 있습니다. 필터로 얻은 특징을 모아 여러 범주⁠(category)⁠의 확률⁠(probability)⁠로 바꾸는 마지막 층은 소프트맥스⁠(softmax)⁠이고, 망이 커질수록 학습 자료에만 맞아 버릴 위험은 과적합⁠(overfitting)⁠과 정규화에서 다룹니다. 같은 무늬를 어디서나 찾는 대신, 멀리 떨어진 칸끼리 직접 참고하게 하는 방법은 어텐션⁠(attention)⁠입니다. 시간 축의 되풀이 계산도 합성곱이 될 수 있습니다. 상태 hth_t를 행렬 Aˉ,Bˉ\bar A, \bar B로 ht=Aˉht−1+Bˉuth_t = \bar A h_{t-1} + \bar B u_t처럼 선형으로 고치고 출력을 yt=Chty_t = C h_t로 읽는다고 합시다. 이것을 풀어 쓰면 출력 y는 입력 u와 필터 (CBˉ,  CAˉBˉ,  CAˉ2Bˉ,  … )(C\bar B,\; C\bar A\bar B,\; C\bar A^2\bar B,\; \dots)의 1차원 합성곱입니다. 그래서 S4 같은 상태 공간 모형⁠(state space model)⁠은 학습 때 이 긴 합성곱을 한꺼번에 계산합니다. 역전파로 학습한 합성곱 신경망으로 손글씨를 읽어 이 방법을 널리 알린 사람은 르쿤이고, 2012년의 전환점을 만든 자료집은 페이페이 리의 ImageNet입니다.

관련된 시대와 장소벨 연구소
이 개념이 나오는 큰 생각대칭과 불변량

이 개념이 나오는 긴 글

신경망과 기계 학습 배우는 기계 예를 보여 주면 규칙을 스스로 찾는 기계. 1958년의 퍼셉트론에서 오늘의 심층 신경망까지, 그 밑바닥에는 미분과 연쇄법칙이 있다. 라플라시안 라플라시안, 가장 많이 재사용된 식 이웃의 평균에서 나를 뺀다. 이 한 줄이 열의 법칙이고, 도박꾼이 이길 확률이고, 전기 회로와 나무 세기이고, 북의 음색이고, 사진의 윤곽선이고, 그래프를 가르는 칼이고, 잡음에서 그림을 빚는 확산 모델의 밑그림이다.

이 개념 위에 세워진 것

이 개념을 언급하는 페이지

이 페이지가 가리키는 개념