[DL] 합성곱 신경망 (CNN)

juyeon lee·2023년 7월 17일

Deep Learning

목록 보기
2/5
post-thumbnail

1.CNN(Convolutional Neural Network)

1-1 정의

주로 이미지 처리, 컴퓨터 비전, 자연어 처리 분야에서 사용되며, 입력층과 출력층 그리고 그 사이에 은닉층으로 이루어진 신경망 구조의 딥러닝 알고리즘이다.

🔍 다층 퍼셉트론의 이미지 처리


Y라는 손글씨를 다층 퍼셉트론으로 분류한다고 했을 때, 위 그림처럼 이미지를 1차원 벡터로 변환하여 입력층으로 사용해야한다. 1차원으로 변환된 결과는 원래의 이미지가 가지는 공간적인 구조 정보가 유실된 상태로 분석에 어려움을 가진다.

따라서 이미지의 공간적 구조 정보를 보존하며 학습할 수 있는 방법으로 '합성곱 신경망(CNN)'을 이용한다.


1-2 합성곱층 (Convolution Layer)

  • 합성곱 연산을 통해서 특성 맵을 얻고, 활성화 함수를 지나는 연산을 하는 합성곱 신경망의 은닉층
  • 합성곱 연산을 통해 이미지의 특징을 추출
  • 합성곱층은 입력 데이터의 형상을 유지하여 3차원 이미지 그대로 입력층에 입력 받고 출력 또한 3차원 데이터로 출력하여 다음 계층으로 전달하기 때문에, 이미지 데이터 형상을 가지는 데이터를 제대로 학습할 가능성이 높다.

1-2-1 합성곱 연산 과정

커널 또는 필터라는 nXm 크기의 행렬로 높이X너비 크기의 이미지를 처음부터 끝까지 겹치며 훑는다
② nXm 크기에 겹쳐지는 부분의 각 이미지와 커널의 원소 값을 곱해서 모두 더한 값을 출력한다.
③ 합성곱 연산으로 초기 입력보다 작아진 특성 맵을 얻을 수 있다.

합성곱 연산 특징

  • 이미지의 가장 왼쪽 위부터 가장 오른쪽 아래까지 순차적으로 훑는다.
  • 커널은 일반적으로 3X3, 5X5를 사용한다.
  • 커널의 크기와 이동 범위(스트라이드)는 사용자를 정할 수 있다.

1-2-2 특성 맵(feature map)


위 과정을 통해 입력으로부터 커널을 사용해 합성곱 연산을 통해 나온 결과로, 비선형성 추가를 위해 활성화 함수를 지난다.


1-3 풀링층 (Pooling Layter)

  • 특성 맵을 다운 샘플링 하여 특성 맵의 크기를 줄이는 풀링 연산이 이루어지는 계층
  • 차례로 처리되는 데이터의 크기를 줄이는 역할
    이 과정으로 모델의 전체 매개변수의 수를 크게 줄일 수 있음

1-3-1 풀링 연산

합성곱 연산과 마찬가지로 커널과 스트라이드의 개념을 가지지만 학습해야 할 가중치가 없으며 연산 후에 채널 수가 변하지 않는다는 차이점이 있다.

  • 최대 풀링

    ▲ 특성 맵이 절반 크기로 다운 샘플링 된 모습
    커널과 겹치는 영역 안에서 최대값을 추출

  • 평균 풀링
    커널과 겹치는 영역 안에서 평균값을 추출


## 1-4 패딩 (Padding) ![](https://velog.velcdn.com/images/dxstyblxe/post/800beaaa-4291-48f1-a857-9ecb42b08c6f/image.png) ▲ 5 × 5 이미지에 제로 패딩 (테두리를 0으로 채우는 패딩)
  • 합성곱 연산을 하기 전에 입력의 가장자리에 지정된 개수의 폭만큼 행과 열을 추가
    = 지정된 개수의 폭만큼 테두리를 추가
  • 합성곱 연산 이후에도 특성 맵 크기가 입력 크기와 동일하게 유지되도록 하고 싶을 때 사용

1-5 가중치와 편향

1-5-1 가중치

3 × 3 이미지를 처리한다고 가정해보자.

  • 다층 퍼셉트론의 경우

    입력층 9개 × 은닉층 4개 = 총 36개의 가중치를 가진다

  • CNN의 경우

    2 × 2 커널, 스트라이드 1일 때,


합성곱 연산을 통해 이미지 전체를 훑으며 사용되는 가중치는 총 4개 뿐이다. CNN은 다층 퍼셉트론을 사용할 때보다 훨씬 적은 수의 가중치를 사용하여 공간적 구조 정보를 보존한다는 특징을 가진다.

1-5-2 편향


편향은 커널 적용 뒤에 더해지는 값으로, 하나의 값만 존재하며 커널이 적용된 결과의 모든 원소에 더해진다.

출처

1개의 댓글

comment-user-thumbnail
2023년 7월 17일

저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!

답글 달기