[프로그래머스 인공지능 미니 데브코스] 수업 정리 -17- [Deep Learning: 신경망의 기초 - 심층학습기초 II]

3yeong·2022년 8월 22일
0

컨볼루션 (합성곱) 신경망(CNN, convolutional neural network)

컴퓨터 비전의 어려운 점

  • 관점의 변화 : 동일한 객체라도 영상을 찍는 카메라의 이동에 따라 모든 픽셀값이 변화됨
  • 경계색(보호색) 으로 배경과 구분이 어려운 경우
  • 조명에 다른 변화
  • 기형적인 형태의 영상 존재
  • 일보가 가려진 영상 존재
  • 같은 종류 간의 변화가 큼

컨볼루션층(CONV)

선형함수인 컨볼류션과 비선형 함수인 활성함수의 조합

풀링층(POOL)

컨볼루션의 얻어진 특징을 통꼐적으로 압축

전체 구조

CONV - POOL - ... - FC

DMLP와 CNN 비교

  • DMLP
  1. 완전 연결(fullt connection) 구조로 높은 복잡도
  2. 학습이 매우 느리고 과잉 적합 우려
  • CNN
  1. 컨볼루션 연산을 이용한 부분 연결(희소연결)구조로 복잡도 크게 낮춤
  2. 컨볼루션 연산은 좋은 특징 추출

CNN 특징

  • 격자(grid)구조(영상, 음성)를 갖는 데이터에 적합
  • 수용장(receptive field)은 인간 시각과 유사
  • 가변 크기의 입력 처리 가능

CNN 완전 연결 신경망(fully connected neural networks)과 차별

  • 학습에 의해 결정된 복수의 커널들 (혹은 필터들)에 대응되는 특징들 추출하는 층 :conv
  1. 각 층의 입출력의 특징 향상 유지(특징맵)
  2. 영상의 공간 정보를 유지하면서 공간적으로 인접한 정보의 특징을 효과적으로 인식
  3. 각 커널(필터)은 파라미터를 공유함으로써 완전 연결 신경망 대비 학습 파라미터가 매우 적음
  • 추출된 영상의 특징을 요약하고 강화하는 층 : pool

  • 가변 크기의 데이터 다구리

  1. 완전 연결 신경망은 특징 벡터의 크기가 달라지면 연산 불가능
  2. CNN은 가변 크기를 다룰 수 있는 강점
    -> 컨볼루션 층에서 보촉을 조정한다거나, 풀링층에서 커널이나 보폭을 조정하여 특징 맵 크기를 조절

컨볼루션(합성곱, convolution) 연산

  • 컨볼루션은 해당하는 요소끼리 곱하고 결과를 모두 더하는 선형 연산
  • u는 커널(kernel, filter), z는 입력, s는 출력(특징 맵(feature map))
    -> 영상에서 특징을 추출하기 위한 용도로 사용됨( = 공간 필터 , spatial filtering)

컨볼루션 층

  • 덧대기(padding)
    : 가장자리에서 영상의 크기가 줄어드는 효과 방지(각 층의 입출력의 특징 형상유지)
    : 0으로 넣거나 바로 다음 또는 전의 값을 넣는 것

  • 편향(bias)추가
    : 평균적인 값으로 출력

  • 가중치 공유 (weight sharing, parameter sharing, 묶인 가중치)
    : 모든 노드가 동일한 커널(kernel)을 사용 ( 즉 가중치를 공유) 하므로 매개변수는 3개에 불과
    : 모델의 복잡도가 크게 낮아짐

다중 특징 맵 추출

  1. 커널의 값에 따라 커널이 추출하는 특징이 달라짐
  2. 따라서 하나의 커널만 사용하면 너무 빈약한 특징이 추출됨
  3. 실제로는 수십~수백 개의 커널을 사용

특징 학습

  • 커널은 사람이 설계하지 않고, 학습으로 찾음
    2차원 영상이 7x7 커널을 64개 사용한다면, 학습은 (7x7+1)x64개의 매개 변수를 찾아내야함
  • DMLP와 마찬가지로 오류 역전파로 커널을 학습

컨볼루션 연산에 따른 CNN의 특성

  • 이동에 동변(신호가 이동하면 이동정보가 드래도 특징맵에 반영)
    -> 영상 인식에서 물체 이동이나 음성 인식에서 발은 지연에 효과적으로 대처

  • 병렬분산 구조

  1. 각 노드는 독립적으로 계산 가능하므로 병렬 구조
  2. 노드는 깊은 층을 거치면서 전체에 영향을 미치므로 분산구조

텐서 적용

  • 3차원 이상의 구조에도 적용 가능

풀링(pooling)연산

  • 최대 풀링, 평균풀링, 가중치 평균 풀링
  • 보폭을 크게 하면 다운 샘플링(down sampling) 효과

풀링 연산의 특성

  • 풀링은 상세 내용에서 요약 혹은 평균 등의 통계적 대표성을 추출함
  • 매개변수가 없음
  • 특징 맵의 수를 그대로 유지함(크기X)
  • 연산 효율화( 연산 횟수, 연결 가중치 개수 줄임)
  • 작은 변화에 둔감 -> 물체 인식이나 영상 검색등에 효과적임

빌딩 블록(building block)

  • CNN은 빌딩 블록을 이어 붙여 깊은 구조로 확장
  • 전형적인 빌딩 블록 : 컨볼루션층 -> 활성함수(주로 ReLU) -> 풀링층
  • 다중 커널을 사용하여 다중 특징 맵을 추출함
    입력데이터 -> 커널 -> 다중 특징맵 -> 활성함수 -> 다중특징맵 (풀링) -> 다중 특징맵

컨볼루션 층의 출력 크기와 매개 변수 수

  • 입력 : W1 x H1 x D1

  • K개 FxF 커널, 보폭 S, 덧대기 P

-> 출력의 크기 W2 X H2 X D2
W2 = (W1 - F + 2P) / S+1
H2 = (H1 - F + 2P) / S+1
D2 = K

-> 매개변수의 수 : 커널마다 (FXFXD1)개의 가중치와 1개의 바이어스를 가짐,
따라서, 전체 매개 변수의 수는 (FXFXD1)K + K

  • 일반적으로 F=2, S=2 혹은 F=3, S=1를 사용함
profile
초보 컴공

0개의 댓글