[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/Data & AI

합성곱 신경망(CNN) - 기본구조 이론

inu 2020. 8. 3. 22:49
반응형

다층퍼셉트론의 문제점

  • 다층 퍼셉트론은 입력과 출력 계층 사이에 은닉층을 가진다. 이 때 계층 간 연결은 양 쪽 퍼셉트론들이 서로 빠짐없이 연결되는 방식으로 이뤄진다. 이런 이유로 다층 퍼셉트론 신경망의 은닉 계층을 '완전 연결 계층'이라고 부른다.
  • 완전 연결 계층의 가중치 행렬 형태는 입력 벡터 크기와 출력 벡터 크기에 따라 결정된다. 해당 크기는 두 벡터 크기의 곱이다.
  • 즉, 많은 수의 픽셀 데이터를 가지는 이미지 데이터는 벡터 크기가 매우 크기 때문에 완전 연결 계층의 가중치 파라미터가 엄청난 크기를 갖게된다. 따라서 학습에 많은 양의 데이터가 요구되고, 메모리에도 부담이 갈 확률이 높다.
  • 그 외에도 이미지에서 특정패턴을 찾을 때 다양한 위치에서 나타날 패턴을 인식하는데도 데이터가 더 많이 필요해질 수 있다.
  • 이러한 한계를 극복하기 위해 고안된 것이 합성곱 신경망이다.

합성곱 계층

  • 2차원 데이터를 입력값으로 받고, 해당 데이터를 1차원화(flatting)하지 않은 채로 그대로 활용한다.
  • 그렇게 받은 입력값을 돌면서 마찬가지로 2차원으로 이뤄진 가중치를 곱해주는 방식으로 계산이 진행된다.
  • 단, 일반적인 경우처럼 행렬곱을 하는 것이 아니라 입력값 전체를 돌면서 1대 1로 곱해져 계산되고 그들의 합이 해당 레이어 출력값의 한 포인트가 된다.

  • 여기서 가중치역할을 해주는 2차원 데이터를 '커널'이라고 부른다.
  • 이러한 커널은 일반적으로 입력 데이터를 처음부터 1칸씩 돌아가며 모든 경우를 보지만,(1행1열~1행마지막열, 2행1열~2행마지막열, ..., 마지막행1열~마지막행마지막열) 폭을 따로 설정해줄 수도 있다. (한번에 넘길 행과 열 수)
  • 해당 연산의 결과로 출력데이터의 크기는 입력데이터에 비해 작아질 수 있다.
  • 이를 방지하고 싶을 경우 padding방식을 사용해 데이터의 겉부분에 0을 둘러쌓아 준다. (행 수와 열 수 모두 2 증가) 그럼 합성곱 계층 연산을 실행해도 기본 데이터의 크기가 유지된다.

풀링 계층

  • 특별한 가중치 연산 없이 입력값 데이터를 기준으로 새로운 출력을 만들어내는 계층이다.

  • 커널 사이즈(합성곱계층과 별개임에 주의)에 따라 입력데이터를 묶고, 그렇게 묶인 데이터들 중 최대값 혹은 평균치를 가져온다.

  • 입력치 데이터에 맞게 적절한 커널 사이즈를 설정해주는 것이 중요하다.
  • 입력값만으로 대표값을 구하는 과정이기 때문에 파라미터가 없다. 즉, 특별한 학습이 진행되지 않는다.
  • 하지만 데이터의 정보를 집약되게 만든다는 것에 의의가 있고 값을 변경하기 때문에 모델엔 유의미한 영향을 준다.

채널의 도입과 커널의 확장

  • 컬러이미지는 보통 R, G, B 세개 층의 정보가 겹쳐져 생성된다. 따라서 일반적인 커널만으로는 처리할 수 없다.
  • 따라서 이런 경우 각 층을 나눠서 학습한다. 입력값이 세 개인 것이다. 이런 경우 각각을 채널이라고 한다.
  • 채널 수는 커널 수와 일치해야 한다. 각 커널로 채널에 대한 정보를 학습해야 하기 때문이다.
  • 미니배치까지 고려할 경우 입력 데이터는 4차원을 이룬다. (2차원데이터 * 채널 * 미니배치)
  • 커널도 마찬가지로 4차원의 형태를 이루어야 한다. (커널 * 채널당커널 * 미니배치 * 출력채널이 여러개일 경우 출력채널수)

합성곱 신경망의 일반적 구성

  • Convolution : 합성곱 계층
  • Pooling : 풀링 계층
  • Fully-connected : 최종 데이터 처리를 위한 flatting. 데이터를 1차원으로 만든다. 중간에 들어가면 이미지의 위치 특성을 잃어버리기 때문에 반드시 마지막에만 넣어줘야한다.
반응형