LittleDeveloper

Pytorch로 시작하는 딥러닝 입문- 7. CNN 본문

AI

Pytorch로 시작하는 딥러닝 입문- 7. CNN

lemonjelly 2022. 3. 16. 09:08

1. CNN의 탄생

1) MLP의 한계:

◾ 앞선 딥러닝 모델 → 하나의 은닉층을 가진 MLP(다층 퍼셉트론)

◾ MLP의 장점이자 단점=> ‘학습데이터’에서 완벽한 모델 생성 과적합!!

◾ Gradient Vanishing 문제

MLP의 구조    과적합 모형

2) MLP ? ----> DNN ! (by 사전학습, RELU, GPU) 

*DNN : 2개 이상의 Hidden Layer를 가진 다층 신경망(Deep Neural Network)

3) DNN의 한계  ▶ 데이터량이 많은 이미지와 영상 처리가 어려움

Why? 데이터의 변형 및 왜곡에 취약함 + 공간정보 손실(픽셀들 간의 연관성)

✅ 데이터 손실(평탄화) 

✅ 매우 높은 시간 복잡도 

✅ Parameter 수 ⬆

2차원을 1차원 텐서로 변환하는 과정 (DNN)
DNN vs CNN

 

 

 

▶ DNN으로는 이 모든 문자를 A라고 분류하기 어렵지만, CNN은 쉽게 가능하다!

 

 

 

 

2. CNN이란?

1) CNN (Convolutional Neural Network) - 시각적 이미지를 분석하는데 사용되는 깊은 인공신경망의 한 종류

  • CNN은 변환 불변성 특성에 기초, 이미지 및 비디오 인식, 추천 시스템, 이미지 분류, 의료 이미지 분석에 응용됨
  • CNN은 다른 이미지 분류 알고리즘에 비해 상대적으로 전처리를 거의 사용하지 않음.
  • 3차원 텐서 사용 --> 이미지가 (높이, 너비, 채널)을 가짐.

-> 네트워크가 기존 알고리즘에서 수작업으로 제작된 여러 필터 역할을 스스로 학습한다는 것을 의미함.

 

 

3. CNN의 원리

1) kernel: 입력된 이미지에서 특징을 추출하기 위해 도입됨.

커널? -> 공업수학 라플라스 변환에서 계산을 편하게 하기 위해 e^(-st)를 커널로 사용함!

가중치: 커널 행렬의 원소들

▶ MLP은 훨씬 적은 수의 가중치를 사용, 공간적 구조 정보를 보존한다는 특징

▶ Feature Map은 은닉층의 비선형 함수를 지나게 됨

 

 

 

 

▶ 편향은 하나의 값만 존재, 커널이 적용된 결과의 모든 원소에 더해짐.

 

 

 

 

 

2) Convolution(합성곱)

- 하나의 함수와 또 다른 함수를 반전 이동한 값을 곱한 다음, 구간에 대해 적분하여 새로운 함수를 구하는 수학 연산자 (라플라스 변환 계산을 용이하게 함.)

 

수식으로 표현한 합성곱

 

 

 

 

-> 시간이 지나면서 타우 영역에 있는 하나의 함수가 

같은 영역에 있는 또 다른 함수 위를 지나가게 됨!!

->Feature Map 생성(Convolved Feature)

 

 

* 컨볼루션은 주로 filter연산을 통해 이미지의 특정을 추출할 수 있다.

-> 어떤 커널을 쓰느냐에 따라 이미지 데이터가 다양하게 나옴 (필터가 적용된 것처럼 나옴)

* Kernel의 이동 범위 ▶ Stride 

 

3) Padding: 성 맵의 크기가 입력의 크기와 동일하게 유지하기 위한 작업

Padding Before --> After

ex ) 패딩 후(7x7에 3 × 3의 커널을 사용하여 1 스트라이드로 합성곱을 한 후의 특성 맵은 기존의 입력 이미지의 크기와 같은 5 × 5가 됨. 

 

4) Pooling: 크고 복잡한 데이터를 축소하기 위한 작업

*  특성 맵을 다운샘플링하여 특성 맵의 크기를 줄이는 연산 

          -> 데이터 차원 감소로 인한 계산효율성 향상, 메모리 요구량의 감소

Max Pooling (Down Sampling)

✅ max pooling

 average pooling

 

* Pooling vs 합성곱 연산 : Pooling은 학습할 가중치가 없음, 연산 후에 채널 수 불변

 특성 맵의 채널 차원은 RGB 채널 등과 같은 컬러의 의미를 담고 있지 않음.

 

 

참고자료: https://wikidocs.net/62306

 

01. 합성곱과 풀링(Convolution and Pooling)

합성곱 신경망(Convolutional Neural Network)은 이미지 처리에 탁월한 성능을 보이는 신경망입니다. 이번 챕터에서는 합성곱 신경망에 대해서 학습합니다. ...

wikidocs.net