합성곱 신경망(CNN, Convolutional Neural Network)은 정해진 격자 형태로 배열된 데이터를 처리하는 데 특화된 신경망입니다. 예를 들어, 시계열 데이터는 일정 시간 간격으로 수집한 표본들을 1차원 격자 형태로 나열한 것이며, 이미지 데이터는 픽셀들이 2차원 격자 형태로 배열됩니다.
합성곱 신경망은 다양한 응용 분야에서 큰 성공을 거두었으며, 그 이름은 이 신경망이 합성곱이라는 수학 연산을 사용하기 때문에 붙여졌습니다. 합성곱은 특별한 종류의 선형 연산으로, 적어도 하나의 층에서 일반적인 행렬 곱셈 대신 합성곱을 사용하는 신경망은 합성곱 신경망이라고 할 수 있습니다.
합성곱의 개념과 응용
합성곱은 두 실숫값을 받는 함수에 대한 연산입니다. 합성곱의 정의를 이해하기 위해 간단한 두 함수를 예로 들겠습니다.
레이저 감지기를 이용해 우주선의 위치를 추적할 때, 레이저 감지기는 시간 t에서의 우주선의 위치를 실숫값으로 출력합니다. 시간과 위치는 실수로 표현되므로, 레이저 감지기는 임의의 시간에서 다양한 값을 출력할 수 있습니다.
가중 평균과 확률밀도함수
레이저 감지기가 잡음이 섞인 값을 출력할 때, 잡음을 줄이기 위한 방법으로 여러 추정값의 평균을 위치 추정값으로 사용하는 것이 효과적입니다. 가장 최근의 측정값에 더 큰 가중치를 주기 위해 가중 평균을 사용하며, 이를 위해 가중 함수를 사용합니다. 가중 함수의 인자는 측정값의 나이, 즉 측정이 얼마나 오래되었는지를 나타냅니다. 이 방법을 이용하면 우주선의 평활화된 위치 추정값을 얻을 수 있습니다.
이 예에서의 가중 함수는 유효한 확률밀도함수여야 합니다. 이렇게 해야만 출력이 유효한 가중 평균이 됩니다. 또한, 가중 함수는 모든 음의 인수에 대해 0이어야 합니다. 그렇지 않으면 미래를 예측하는 위치를 출력하게 되는데, 이러한 예측은 우리의 능력을 벗어납니다.
하지만 이러한 제약은 이 예제에만 해당하는 것이며, 일반적으로 합성곱은 적분이 가능하다면 다양한 함수들에 대해 정의할 수 있으며, 가중 평균 외에도 다양한 목적으로 유용하게 활용될 수 있습니다.
합성곱 신경망에서의 합성곱
합성곱 신경망에서 합성곱의 첫 번째 인수를 '입력'이라고 하고, 두 번째 인수를 '핵(kernel)'이라고 부릅니다. 합성곱의 출력은 '특징 지도(feature map)'이라고도 합니다.
지금의 예에서 레이저 감지기가 매 순간 측정값을 제공하는 것은 비현실적입니다. 실제로 컴퓨터에서 다루는 데이터는 시간을 이산적인 값으로 취급하게 됩니다. 따라서 감지기는 일정한 간격으로만 데이터를 제공할 것이며, 예를 들어 1초에 한 번 측정값을 제공한다고 가정하는 것이 현실적입니다. 이 경우, 시간 색인은 정숫값만을 가집니다.
합성곱의 수학적 특성
일반적으로 기계 학습 응용에서는 입력이 다차원 배열 형태의 데이터이며, 핵(kernel)은 학습 알고리즘으로 적응되는 매개변수들의 다차원 배열(텐서)입니다. 입력과 핵의 각 성분을 따로 명시적으로 저장해야 하므로, 실제 응용에서는 명시적으로 저장된 일부 점들을 제외한 대부분의 점에서 이 함수들의 값이 0이라고 가정하는 것이 일반적입니다. 이러한 가정에 따라 실제 응용에서는 무한합을 유한한 개수의 원소들로 이루어진 배열에 관한 합으로 구현됩니다.
합성곱의 가환성은 핵(kernel)을 입력(input)을 기준으로 뒤집었기 때문에 발생합니다. 여기서 핵을 뒤집는 것은 핵의 색인이 감소하는 동시에 입력의 색인이 증가함을 의미합니다. 핵을 뒤집는 주된 이유는 가환성을 만족시키기 위함입니다.
그러나 신경망 구현에서는 가환성이 크게 중요하지 않습니다. 따라서 많은 신경망 라이브러리에서는 핵을 뒤지는 대신 상호상관(cross-correlation)이라고 부르는 관련 함수를 구현합니다.
이산 합성곱과 특별한 행렬 연산
이산 합성곱은 특정 제약 조건을 만족하는 행렬 곱셈 연산을 의미합니다. 단변량 이산 합성곱에서, 행렬의 각 행은 그 위의 행의 성분들을 한 자리씩 이동한 것과 동일해야 합니다. 이러한 조건을 만족하는 행렬을 투플리츠 행렬(Toeplitz matrix)이라고 합니다.
2차원의 경우, 이중 블록 순환 행렬(block-circulant matrix)이 합성곱에 해당합니다. 합성곱은 일반적으로 아주 희소한 행렬에 해당하며, 핵(kernel)이 입력 이미지보다 훨씬 작기 때문입니다.
행렬곱셈을 지원하고 행렬의 특정 성질에 의존하지 않는 임의의 신경망 알고리즘은 알고리즘이나 신경망을 변경하지 않고도 합성곱 신경망에 적용할 수 있습니다. 전형적인 신경망은 큰 입력을 효율적으로 처리하기 위해 추가적인 특수화를 사용하지만, 이론적으로는 그럴 필요가 없습니다.
합성곱 신경망(CNN, Convolutional Neural Network)은 정해진 격자 형태로 배열된 데이터를 처리하는 데 특화된 신경망입니다. 예를 들어, 시계열 데이터는 일정 시간 간격으로 수집한 표본들을 1차원 격자 형태로 나열한 것이며, 이미지 데이터는 픽셀들이 2차원 격자 형태로 배열됩니다.
합성곱 신경망은 다양한 응용 분야에서 큰 성공을 거두었으며, 그 이름은 이 신경망이 합성곱이라는 수학 연산을 사용하기 때문에 붙여졌습니다. 합성곱은 특별한 종류의 선형 연산으로, 적어도 하나의 층에서 일반적인 행렬 곱셈 대신 합성곱을 사용하는 신경망은 합성곱 신경망이라고 할 수 있습니다.
결론
합성곱 신경망(CNN)은 격자 형태의 데이터를 처리하는 특화된 신경망으로, 이는 주로 이미지나 시계열 데이터와 같은 형태로 나타납니다. CNN은 합성곱 연산을 통해 입력 데이터를 처리하며, 이는 일반적인 행렬 곱셈보다 효율적인 방법으로 정보를 추출합니다. 이러한 특성으로 인해 CNN은 다양한 분야에서 큰 성공을 거두었습니다.