파이썬으로 만드는 인공지능.2

심준보·2023년 2월 5일
0

CNN

목록 보기
2/4
post-thumbnail

6.2 컨볼루션 신경망의 구조와 동작

이 절에서는 컨볼루션 신경망의 핵심 연산인 컨볼루션의 우너리와 특성을 소개 , 컨볼루션 신경망이 어떻게 복잡한 컴퓨터 비전 문제를 푸는지에 대해 설명한다.

6.2.1 컨볼루션 연산으로 특징 맵 추출

컨볼루션은 신호에서 특징을 추출하거나 신호를 변환하는 데 사용하는 연산으로 , 신호처리 , 영상처리 , 컴퓨터 비전 등에 널리 쓰인다.

  • 컨볼루션은 수용장과 커널의 선형 결합이다.
    선형 결합이란 , 해당하는 요소끼리 곱한 결과를 더하는 연산이다. 위 연산을 통해 특징 맵 feature map 이 생성된다.

1차원과 2차원 신호가 존재

  • 커널의 크기는 3,5,7 과 같이 홀수를 사용하여 대칭을 이루게 한다.

  • 2차원에서 ,

수직에너지를 추출하는 커널 ,
수평에너지를 추출하는 커널이 있다.



6.2.2 컨볼루션층과 폴링층

컨볼루션 층

  • 컨볼루션층을 구성하는 데 필요한 덧대기,보폭,바이어스가 있다.

컨볼루션 층을 구현하려면 몇 가지 아이디어를 추가로 고려해야한다 .

가장자리가 없어지는 문제 해결

  1. 덧대기 - Padding 하여 크기를 유지한다. ( 0 or 이웃 화솟값 복사해 덧대기)

  2. 보폭 - stride : 입력 영상이 아주 큰 경우 영상 크기를 일부러 작게 줄일 필요가 있다. 일반적으로 보폭을 k로 설정하면 특징 맵의 크기는 1/k로 줄어든다.

  3. 바이어스 - 커널에는 바이어스가 있다.

컨볼루션 층을 완성하기 위해서는 또 다른 확장이 필요하다.

  • 커널은 한 종류의 특징만 추출한다.
    즉, 하나의 커널을 사용할 경우 매우 빈약한 특징이 생성이 되는 것이다.

그래서 , 컨볼루션층은 커널을 64-128개와 같이 아주 많이 사용하여 풍부한 특징 맵을 생성한다.

커널의 갯수 = 특징 맵의 갯수


2차원 구조가 여러 장 쌓인 3차원 구조의 데이터를 볼 수 있는데 , 이는 딥러닝에서 텐서라고 부른다.

  • 대부분의 자연영상은 3차원 텐서이다.
  • 컨볼루션 층은 구한 특징 맵 f 에 활성함수를 적용하는데 , 활성 함수는 특징 맵의 화소 각각에 적용한다.
    주로 ,ReLU를 사용한다.

폴링층

  • 폴링은 특징 맵에 나타난 지나친 상세함을 줄여 요약 통계량을 추출한다.

  • 주로 , 최대 풀링과 평균 풀링을 사용한다.

  • 풀링층은 특징 맵에서 핵심을 추출해 성능을 높여주는 역할뿐 아니라 특징 맵의 크기를 줄여 메모리 효율과 계산 속도를 끌어올리는 효과가까지 제공한다.

6.2.3 빌딩 블록을 쌓아 만드는 컨볼루션 신경망

예) LeNet-5

C는 컨볼루션 층 ,P는 풀링층 , FC 는 완전 연결층이다.

13232 에서 컨볼루션 층에서 55커널을 6개 사용하게 된다면 ,2828 크기의 특징 맵을 6개 추출한다면 , 62828 의 텐서를 출력한다.

이후 풀링층에서 , 22 커널을 보폭 2로 적용한다면 614*14의 텐서가 출력된다.

LeNet-5 은 전체적으로 C-P-C-P-C-FC-FC 층으로 구성된다.



이상으로 컨볼루션 신경망의 구조와 동작에 대한 이야기를 마치도록 하겠습니다. 감사합니다 .


더 나은 개발이 되길 바라며:)

profile
밑거름이라고생각합니다

0개의 댓글