CNN
CNN은 합성곱 신경망이며, 이미지 인식과 음성 인식 등 다양한 곳에서 사용됩니다. CNN에서는 이 전 신경망과 달리 합성곱 계층convolutional layer와 풀링 계층pooling layer가 등장합니다.
CNN의 기본
1. 합성곱 연산
합성곱 연산에서는 필터를 적용시킵니다. 위 그림의 가운데 행렬이 필터이며, 입력층에서 같은 크기를 갖는 윈도에 단일 곱셈 누산을 하고, 이를 출력합니다. 출력층의 행과 열 개수는 필터 크기의 윈도우를 입력층에서 몇 개 가질 수 있는지에 따라 결정됩니다.
일반적인 Affine 변환의 경우, 데이터를 1차원으로 평탄화하여 입력했지만, 위와 같이 합성곱 연산을 할 경우 데이터의 형상을 살릴 수 있습니다.
2. 패딩 padding
입력층의 주변을 폭 1짜리 0의 값으로 채웠습니다. 이렇게 할 경우 필터와 같은 크기를 갖는 윈도우 개수가 늘어나 출력 데이터를 조정할 수 있습니다. 이를 패딩이라고 합니다.
패딩은 주로 출력 크기를 조정할 목적으로 사용하고, 입력 데이터의 공간적 크기를 고정한 채로 다음 계층에 전달할 수 있습니다.
3. 스트라이드
스트라이드는 보폭이라는 뜻이며 필터를 적용하는 위치와 간격을 지정합니다.
위 예시는 스트라이드를 2로 설정했을 때의 합성곱 연산에서 윈도우를 보여줍니다. 이 전 과정과는 달리 다음 윈도우로 넘어갈 때 2칸을 건너 띄고 움직이는 것을 알 수 있습니다.
위 수식은 입력 크기를 (H, W), 필터 크기를 (FH, FW), 출력 크기를(OH, OW). 패딩을P, 스트라이드를 S로 설정했을 때의 출력 크기를 정하는 식입니다. 입력 크기와 필터 크기, 패딩으로 이루어진 분자를 스트라이드로 나누었을 때 정수로 떨어져야함을 알 수 있습니다. 하지만 딥러닝 프레임워크 중에는 이 값을 정수로 반올림하는 등 에러를 내지 않고 진행하도록 구현하는 경우도 있습니다.
4. 3차원 데이터의 합성곱 연산
입력 데이터에서 보이는 행렬을 feature map이라고 하는데, 뒤쪽으로 feature map이 늘어났습니다. 입력 데이터의 feature map과 각 필터로 합성곱 연산을 수행하고, 그 결과를 더해 하나의 출력을 얻습니다.
여기서 주의할 점은 입력 데이터의 채널수와 필터의 채널 수가 같아야한다는 것입니다.
C가 채널 수를 의미하는 것만 알면, 쉽게 이해할 수 있습니다. 여기서 출력으로 다수의 채널을 내보내려면, 필터를 여러개 사용하면 됩니다.
풀링
풀링은 세로, 가로 방향의 공간을 줄이는 연산입니다. 밑의 예시는 2X2윈도우를 스트라이드2로 최대풀링을 처리하는 순서입니다. 최대 풀링은, 해당 윈도우의 최대값을 출력합니다.
풀링은 보통 윈도우 크기와 스트라이드를 같은 값으로 설정하는데, 이는 윈도우가 겹치지 않게 풀링을 하는 것이라고 해석됩니다. 또한 최대 풀링 외에 윈도우의 평균값을 출력하는 평균 풀링 등이 있습니다. 이미지 인식 분야에서는 주로 최대 풀링을 사용합니다.
1. 풀링 계층의 특징
- 학습해야 할 매개변수가 없다
- 채널 수가 변하지 않는다
- 입력의 변화에 영향을 적게 받는다
2. 풀링 계층 구현 단계
- 입력 데이터를 전개한다
- 행렬 최댓값을 구한다(최대 풀링의 경우)
- 적절한 모양으로 성형한다.
im2col
im2col은 image에서 column으로 라는 뜻으로, 입력 데이터와 필터를 2차원 행렬로 전개합니다. 필터 적용 영역이 겹치게 되면 im2col로 전개한 후의 원소 수가 원래 블럭의 수보다 많아져 메모리를 더 많이 소비하는 단점이 있습니다. 하지만 컴퓨터는 큰 행렬을 묶어서 계산하는데 탁월해 행렬 계산을 선형 대수 라이브러리를 활용해 효율을 높일 수 있습니다.
'AI_basic > Deeplearning' 카테고리의 다른 글
[Deeplearning Part.8-1] RNN 기본구조 (0) | 2022.01.24 |
---|---|
[Deeplearning Part.7-1] 자연어 처리와 Word Embedding (0) | 2022.01.22 |
[Deeplearning Part.5] 학습 관련 기술들 (0) | 2022.01.09 |
[Deeplearning Part.4] 오차역전파법 (0) | 2022.01.06 |
[Deeplearning Part.3] 신경망 학습 (0) | 2022.01.06 |