CNN 첫걸음

재윤·2022년 2월 19일
0

Boostcamp AI Tech

목록 보기
4/9

MLP vs CNN

DMLP

  • 학습이 느리고 과잉적합(overfitting) 우려
  • 완전연결 구조로 높은 복잡도

→ 위 문제를 CNN이 해결!

  • 컨볼루션(Convolution) 연산을 이용한 부분연결(희소연결) 구조로 복잡도를 크게 낮춤
  • 컨볼루션(Convolution) 연산은 좋은 특징 추출
  • 격자 구조(영상, 음성 등)를 갖는 데이터에 적합한 구조
  • 가변 크기의 입력 처리 가능

컨볼루션(Convolution) 연산 이해하기

컨볼루션 연산은 fully-connected 구조가 아닌 커널을 입력벡터상에서 움직여가면서 선형모델과 합성함수가 적용되는 구조이다.

Convolution 연산의 수학적인 의미는 신호(signal)를 커널을 이용해 국소적으로 증폭 또는 감소시켜서 정보를 추출 또는 필터링하는 것이다.

그래서 컨볼루션 연산은 어떻게 하는건데?

  • 위 이미지와 같이 입력벡터 위에서 커널을 상하좌우로 한칸씩 이동하며 성분곱연산을 진행한다.(수식으로 설명하면 이해가 어려우니 수식은 패스하고 이미지로 대체한다.)
  • 이 때, 입력벡터 크기와 커널의 사이즈에 따라서 출력벡터의 사이즈가 결정되는데(패딩, 보폭 등 몇개 더있지만 일단 생략)
    • 입력 크기를 (K,W)(K, W)커널 크기를 (KH,KWK_H, K_W), 출력 크기를 (OH,OW)(O_H, O_W) 라 하면 출력 크기는 다음과 같이 계산할 수 있다.

3차원은?

  • 컬러 이미지(R,G,B 혹은 그 이상)같은 여러개의 채널로 이루어진 2차원 입력의 경우, 2차원 Convolution을 채널 개수만큼 적용.
  • 채널이 여러개인 경우에는 입력의 채널 수와 커널의 채널 수가 같아야한다.
  • 커널 텐서와 입력 텐서 수가 동일하면 출력의 채널은 1이 된다.
  • 그러면 여러 채널의 출력 텐서를 만드려면 커널을 여러개 쓰면 됨. 예를 들어 C 채널의 출력 텐서를 얻으려면 커널 텐서 C개를 사용하면 된다.(커널의 개수로 출력의 채널 조절한다)

Convolution 연산의 역전파


  • Convolution 연산은 커널이 모든 입력데이터에 공통으로 적용되기 때문에 역전파 계산 시에도 똑같이 Convolution 연산이 나오게 된다.
  • 커널이 입력벡터 위에서 움직이며 계산되고, 커널의 모든 가중치값이 입력벡터랑 연산이 되어 출력이 되기 때문에 역전파를 통해 값을 갱신하려면 커널의 모든 가중치값을 고려해주어야한다.
profile
Naver Boostcamp AI Tech 3기🎈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ㅤㅤ⠀⠀ㅤㅤㅤㅤㅤㅤㅤㅤ2022 데이터분석 청년수련생

0개의 댓글