CNN (1)

삼식이·2023년 6월 24일
0

딥러닝

목록 보기
10/10

Introduction

Introduction

  • 컴퓨터 비전을 위한 신경망

    • 매우 높은 차원의 입력 (4k)

    • 픽셀의 2d / 3d topology

    • 변동에 대한 불변성

  • 합성곱 신경망 (Convolutional Neural Network, CNN)

    • Local connectivity

    • Parameter sharing

    • Pooling / subsampling

Convolutional Neural Network

  • Convolutional Neural Network

    • 데이터 처리를 위한 특별한 종류의 신경망

    • grid-like topology (격자형태에 특화된)

    • e.g., 1D time-series data (data가 시간에 따라 바뀌는) / 2D image data / 3D video data

    • 실제 응용 분야에서 엄청난 성공을 거두었다.

  • Operation

    • Convolution

    • Pooling

Convolution Operation

  • Convolution (합성곱)

  • 예시: 레이저 스펜서로 우주선의 위치를 추적한다.

  • 레이저 출력: x(t), 시간 t에서 우주선의 위치.

  • 레이저가 다소 nosiy 하다고 가정

    • 여러 측정값을 함께 평균화한다.

      • 최근에 본 데이터에 더 weight를 줘서 평균을 취한다.
    • weighting function w(a), a는 측정기간이다.

Convolution Operation

Convolution Operation

  • CNN 용어로

    • 첫 번째 인수 (x)는 입력(input)이다.

    • 두 번째 인수 (w)는 커널이다.

    • output은 feature map이다.

  • 일반적으로 컴퓨터의 데이터는 시간이 이산화된다.

    • 불연속 convolution을 정의할 수 있다. (분리해서 sum)

Multi-dimensional convolution

  • 머신러닝 응용 프로그램에서, 입력은 일반적으로 데이터의 다차원 배열이고 커널은 일반적으로 매개변수의 다차원 배열이다.

  • e.g., 2D image input, 2D kernel

Cross-correlation

  • 컨볼루션 연산은 filpped 커널을 사용하여 교환 속성을 얻는다.

    • 신경망 구현에 중요하지 않음 (증명 작성에 유용함)
  • 대신 많은 신경망 라이브러리는 교차 상관 (cross-correlation) 이라는 관련 함수를 구현한다.

    • 컨볼루션과 동일하지만 커널을 뒤집지 않음

    • 많은 머신 러닝 라이브러리는 상호 상관 (cross-correlation) 을 구현하지만 이를 컨볼루션이라고 한다.

2D convolution example

  • 커널 뒤집기 없이 (without kernel flipping)

Kernel (filter) examples

  • 수제 필터 (Hand-crafted filter)

    • 예시에서 말하는 filter 들이 다 parameter이다.

Kernel (filter) examples

  • Sobel filter

    • 이미지의 각 지점에서, soval-feldman 연산자의 결과는 해당 기울기 벡터 또는 이 벡터의 norm이다.

Kernel (filter) examples

  • learned filter (학습된 필터)

  • data에서 feature를 뽑아서 classification이 잘 되게

Motivation

  • 컨볼루션은 머신러닝 시스템을 개선하는 데 도움이 될 수 있는 세 가지 중요한 아이디어를 활용한다.

    • Sparse interactions

    • Parameter sharing

    • Equivariant representations

  • Sparse Interactions

    • Sparse connectivity or sparse weights

    • Local connectivity

    • 각 출력 값은 작은 입력에만 의존한다.

    • mn >> kn

→ 다 보는게 아니라 connection을 끊어서 weight 계산을 줄인다. (sparse ↔ dense)

Motivation

  • 파라미터 공유 (parameter sharing)

    • 모델에서 둘 이상의 feature에 대해 동일한 매개변수를 사용한다.

    • CNN에서 커널의 각 구성원은 출력의 모든 위치에서 사용된다.

    • 이미지의 한 부분에서 유용한 특징 검출기

    • 파라미터 수 줄이기

  • 등가 표현 (equivalent representation)

    • 등가 (equivalent): 입력이 변경되면 출력도 같은 방식으로 변경된다.

    • 시계열 데이터 처리

      • 출력에서 나중에 이벤트 이동 → 정확한 샘플 표현이 출력에 나타남
    • 이미지 edge 검출기

      • 이미지에서 객체를 이동한다. →해당 표현은 출력에서 같은 양만큼 이동한다.

Convolutional Layer

  • convolutional layer가 mlp보다 어떤 점이 좋은가?

    • 합성곱 걔층과 MLP 간의 주요 차이점은 합성곱 계층은 주로 이미지와 같은 그리드 형태의 데이터 처리에 탁월하고, MLP는 벡터 형태의 데이터 처리에 주요 사용된다.

    • 합성곱 계층은 합성곱 필터를 사용하여 여러 위치에서 동일한 가중치를 공유하며, 이로 인해 모델의 크기와 요구되는 과적합 가능성을 감소시킨다.

    • 합성곱 계층은 공유 가중치와 희소연결 (sparse connectivity) 덕분에 더 적은 매개변수를 가지고 이미지의 특징을 더 효과적으로 학습할 수 있다. 따라서 낮은 리소스 및 용량으로 높은 성능을 달성할 수 있다.

Convolutional Layer

Convolutional Layer (stride)

  • stride(보폭): 이미지 또는 비디오에 대한 움직임의 양을 수정하는 신경망 필터의 매개변수

    • Hyperparameter

  • stride: 한 번에 몇 칸씩 이동할 지

Convolutional Layer (stride)

Convolutional Layer (zero padding)

  • 볼륨이 공간적으로 축소됨 (32 → 28 → 24)

  • 빠른 수축은 좋지 않다.

Convolutional Layer (zero padding)

  • 커널 너비와 출력 크기를 독립적으로 제어한다.

Fully Connected Layer

32 x 32 x 3 image → 3072 x 1 로 늘이기

Convolutional Layer

Convolutional Layer

Convolutional Layer

Convolutional Layer

  • 모든 공간 위치에서 convolve(슬라이드)한다.

Convolutional Layer

  • 예를 들어, 만약 6개의 5 x 5 filter 가 있으면, 6개의 개별 활성화 맵을 얻을 수 있다.

  • 우리는 이것을 쌓아 28x28x6 크기의 "새 이미지"를 얻는다.

Convolutional Layer

  • one filter → one activation map

Pooling

  • 신경망의 전형적인 layer

    • 표현(representation)을 더 작게 만들기
  • 다양한 크기의 입력을 처리하는데 필수적이다.

    • e.g., 가변 크기의 이미지 분류

→ 데이터 특성 보존 & 차원 축소

Max Pooling

  • 가장 흔한 형태: 2 * 2 max pooling with stride 2

Max Pooling

Architecture of CNN

Architecture of CNN

Architecture of CNN

Fully Connected Layer

  • 종종 FC 계층의 과적합을 줄이기 위해 드롭아웃을 사용한다.

  • 분류, 회귀 등 고도의 추론

  • 종종 softmax 기능이 내장됨

  • 더 이상 공간적으로 위치하지 않음 → FC 계층 이후에 가능한 컨볼루션 레이어 없음

  • CNN 아키텍쳐에서 매개변수의 대부분을 설명할 수 있다.

Lenet-5

  • Layer 1 → Layer l

    • input 사이즈 감소

    • 필터 개수 증가

Visualization example of CNN

Variants of the Convolution

Receptive Field

  • 수용 필드 (receptive field): 특정 CNN의 기능이 영향을 받는 입력 공간의 영역이다.

    • 8x8 → 7x7 → 6x6 → 2x2 → 1x1

Dilated Convolution

  • 팽창률 (dilation rate) 사용

    • e.g., dilation rate = 2 → 2칸 건너뛰어서 convolution

    • 33 필터이지만 55 수용 필드 (9개 매개변수 사용)

  • 여러 매개 변수를 사용하여 더 넓은 field.

  • segmentation (분할)

Pointwise Convolution

  • 1*1 convolution

  • 깊이(depth) 조절에 사용

    • 너비, 높이 유지 (공간 크기)

    • 깊이 유지 / 증가 / 감소 하기 위해 사용

Spatially Separable Convolution

  • 공간적으로 분리 가능한 컨볼루션

  • 컨볼루션을 두 개의 개별 작업으로 분해한다.

  • e.g., 2D kernel → two 1D kernel (decompose)

    2D = 1D x 1D로 분해 가능 → 연산횟수가 줄어듬

  • 계산 비용 감소

    • parameters

    • operations

  • 딥러닝에서 잘 쓰이지 않는다.

    • 모든 2D kernel이 분해가능하진 않기 때문이다.

Depthwise Separable Convolution

  • 두 단계

    • depthwise convolution

    • 1*1 convolution

Depthwise Separable Convolution

Depthwise Separable Convolution

  • 계산 비용이 상당히 줄어든다.

    • 모델 옹량이 줄어든다.

Upsampling

  • 컨볼루션 반대 방향

    • 다운샘플링(downsampling: conv + pooling): project 기능은 더 낮은 희미한 공간에 매핑된다.

      • e.g., encoder layer
    • 업샘플링(upsampling): project 기능은 높은 희미한 공간에 매핑된다.

      • e.g., decoder layer

Upsampling

  • auto-encoder의 예시

Unpooling

  • Unpooling (규칙 기반 업샘플링 업풀링)

    • Nearest Neighbor Unpooling

    • Bed of Nails

    • Max Unpooling

Transpose convolution

  • 전치 합성곱 (transpose convolution) : Learnable convolution

    • deconvolution을 언급하지 않음

    • 업샘플링(더 작은 map에서 더 큰 map으로)

Transpose convolution

Transpose convolution

  • stride가 2인 다른 예시

Transpose convolution

Transpose convolution

Pytorch

profile
I want to be coool and chilll developer...

0개의 댓글