본 포스팅은 Ian Goodfellow 등 2인이 저술한 심층학습(Deep Learning Adaptive Computation and Machine Learning)및 오일석 저술의 기계학습 등을 기반으로 작성합니다.
지난 포스팅에서는 합성곱 신경망의 합성곱에 대해서 알아봤습니다. 이번 포스팅에서는
1. 합성곱이 무엇인가?
2. 합성곱을 사용하는 이유는 무엇인가?
3. 그래서 CNN은 어떻게 동작하는가?
이 중, 합성곱을 사용하는 이유에 대해서 좀 더 파헤쳐 보죠.
합성곱 신경망에서는 머신러닝 시스템을 개선하는데 도움이 되는 세 가지 개념을 사용합니다.
1. 희소 상호작용
2. 매개변수 공유
3. 등변 표현
0. 정상성(Stationarity)
정상성이란 확률론에서 시계열의 통계적 속성이 시간에 관계없이 일정하게 나타난다는 것을 의미합니다. 분포가 시간과 독립적이기 때문에, 확률변수의 기댓값이나 분산 등의 값도 역시 시간과 독립이 됩니다. 쉽게 말해서 시간이 변한다고 한들 패턴은 반복된다는 거죠. 패턴이 반복되면 분석이 쉬워지는 건 당연하고요.
이미지에는 시간이라는 개념이 없죠. 대신 위치라는 개념은 존재합니다. 이미지는 위치에 관계없이 동일한 패턴이 반복되는 특징이 있습니다. 그래서 이 정상성의 가정 하에 시계열과 비슷한 방식으로 패턴을 파악하곤 합니다. 즉 특정 위치에서 학습한 매개변수를 다른 위치에도 적용해서 동일한 특징을 뽑아낼 수 있는 것이죠.
1. 희소 상호작용(Sparce Interaction)
전통의 신경망의 층들은 매개변수는 매개변수들의 해결을 곱하는 연산을 수행합니다. 여기서의 매개변수는, 각 입력 단위와 출력 단위의 상호작용을 나타내는거죠. 결국 모든 출력 단위와 입력단위는 매개변수를 통해 상호작용합니다. 그런데, CNN에서는 희소 상호작용이라는 성질이 있습니다. 이는 필터가 입력 데이터보다 작기 때문에 생기는 특이한 성질이죠.
예로, 다음과 같은 이미지를 보고 새를 분류하는 모델을 만든다고 가정합시다. 새를 파악하는 기준으로는 부리의 유무가 될 수 있겠죠. 그러면 이 이미지에서 부리를 찾아내기만 하면, 이 이미지 속 물체가 새인지 파악할 수 있을 겁니다. 이 이미지는 수천 개의 픽셀로 이루어지겠지만, 부리를 검출해내는 의미있는 특징들은 수십 수백개의 픽셀로 이루어진 부리 필터로 검출이 가능합니다. 이러한 특성 덕분에 상대적으로 적은 매개변수를 저장하고 연산은 줄이면서도, 성능을 높일 수 있는 것이죠. 즉, 사진의 모든 부분을 쳐다보지 않아도 특성을 파악하는 것이 가능해지는 것이죠
이 두 그림과 같이, 새의 부리가 사진 상에 다른 위치에 존재하더라도 부리를 분류해내는 것에는 큰 어려움이 없을 것입니다.
2. 매개변수 공유
매개변수 공유란, 모형 속 둘 이상의 함수에 같은 매개변수를 사용하는 것을 말합니다. 전통적인 신경망에서는 한 층의 출력을 계산해낼 때, 가중치 행렬의 각 성분은 딱 한 번만 사용되고, 다시는 쓰이지 않습니다. 그런데 CNN에서는 필터의 각 성분이 입력의 모든 곳에 쓰입니다.
위 사진에서 눈이라는 특징을 뽑아낸다고 할 때 두 가지 방법이 있습니다.
- 4개의 눈을 하나의 특징으로 취급하여 위치와 상관없이 눈 4개를 추출하는 것
- 위치를 고려하여 서로 다른 특징 4개를 추출하는 것 (특징 1 -김민주의 왼쪽 눈, 특징 2 - 김민주의 오른쪽 눈, 특징 3 - 조유리의 왼쪽눈, 특징 4 - 조유리의 오른쪽 눈)
두 방식 중에서 어떤 것이 더 효율적일까요?
당연히 전자가 더 효율적일 겁니다. 여기서 파라미터를 공유하는 이유가 나오죠. 위치에 상관없이 특징을 추출하기 위해서입니다. 후자는 동일한 특징이라도 위치가 다르면 서로 다른 특징으로 인식하고, 그로 인해 위치마다 모두 다른 필터를 사용해야 하기 때문에 계산량이 늘어나죠.
매개변수 공유는 특징 공간을 하나 추출하기 위해서 필터를 한 장만 유지도 되기 때문에, Fully-Connected Layer보다 훨씬 적은 매개변수를 저장하고 사용해 메모리와 연산량을 줄입니다. 그리고 동일한 특징을 한 장의 사진 속에서 여러 번 볼 수 있기 때문에 상대적으로 적은 데이터를 학습시켜도 좋은 성능을 낼 수 있게 되죠. 이를 통계적 효율성(Statistical Efficiency)이 올라간다고 말합니다.
결론적으로 눈이라는 필터 하나를 잘 학습시켜놓으면 그 필터를 이미지 전체로 이동시키면서 합성곱 연산을 수행합니다. 그리고 한 장의 눈 필터로 4개의 눈을 모두 찾아낼 수 있겠네요.
3. 이동에 대한 등변성(Translation Equivariance)
어떤 함수가 등변성(Equivariance)이 있다는 것은 입력이 바뀌면 출력도 같은 방식으로 바뀌는 성질입니다. CNN에서는 입력의 위치가 변한다면, 출력의 위치도 변한다는 것입니다. 이와 반대되는 개념은 invariance로 입력 위치와 상관 없이 출력은 동일하다는 성질입니다.
원래 CNN은 이동에 대해서 등변성을 가집니다. 그런데 결론적으로 말하면, 결과값은 불변성을 지닙니다. 이 말인 즉슨 오른 쪽의 조유리의 눈이든 왼쪽의 김민주의 눈이든 똑같이 눈으로 같은 결과로 돌려준다는 것입니다. 이렇게 되는 과정에는
1. Max pooling
2. CNN의 특징인 Weight sharing & Learn local features
3. Softmax를 통한 확률값 계산
이 세가지로 인해 그렇게 됩니다. 이 부분은 차차 설명하도록 하죠.
'심층학습 > Computer Vision' 카테고리의 다른 글
합성곱 신경망 (Convolution Neural Network) - CNN의 동작 방식 (0) | 2022.02.22 |
---|---|
합성곱 신경망 (Convolution Neural Network) - 합성곱의 이해 (0) | 2022.02.22 |