코딩 개발일지

머신러닝 기초 - CNN의 개념 / Pooling / Model 본문

AI 본 교육/AI 10주차

머신러닝 기초 - CNN의 개념 / Pooling / Model

호기호 2023. 10. 19. 16:07

Convolutional Neural Networks (합성곱 신경망)

합성곱(Convolution) 의 개념 이해하는 그림

1. [왼쪽 네모] X [오른쪽 네모] 각 요소들을 대응되게 곱한다.

2. 곱한 값을 모두 더한다

즉, 2+0+3+0+1+4+3+0+2=15

 

논문에서 이 방식을 이용한 디자인을 CNN 이라고 칭하였고, 이미지 처리에서 엄청난 성능을 보이는 것을 증명했다.

아직까지도 보편적으로 쓰이고, 이 논문발표 이후 딥러닝의 전성기가 시작됬다고 할 수 이따~~


아래의 예시를 한번 살펴보자

  • 입력 이미지 크기: (10, 10, 3)
  • 필터의 크기: (4, 4, 3)
  • 필터의 개수 :2
  • 출력 특성 맵의 크기: (10, 10, 2)

보통 padding 또는 margin을 줘서 디자인을 하게 된다.


이런식으로 합성곱을 적용시키고, 이런 합성곱들을 계속해서 적용시켜나가는 CNN의 구성은 보통 아래와 같다.

그림을 보면, Convolution 후, Pooling 을 하는것을 볼 수 있다.

  • Max Pooling : 가장 높은 값을 추출
  • Avg Pooling : 각 값의 평균값을 추출

Pooling이 끝난 후의 그림을 보자.

Pooling 통과한 특성 맵은 2차원이고 Fully Connected된 Layer는 1차원이므로 연산이 불가능다.

따라서 평탄화 계층(Flatten layer)를 사용해서 2차원을 1차원으로 펼치는 작업을 하게 된다.

 

<간단하게 평탄화 계층의 동작을 설명한 그림>

이제 비로소 완전연결 계층(=Dense=Fully connected) 에서 행렬 곱셈을 할 수 있게된다.

 

그 후 앞서 배운대로 (Dense=Fully connected) + (활성화 함수) 의 반복을 통해 점점 노드의 개수를 축소시키다가 마지막에 Softmax 활성화 함수를 통과하고 출력층으로 결과를 출력하게 된다 !!!!!!!!


다양한 CNN 모델

유명한 것들만 모아놓은 그림이다.

  • AlexNet (2012) 
  • VGGNet (2014) 
  • GoogLeNet(=Inception V3) (2015) 
  • ResNet (2015)

  • Transfer Learning (전이 학습)

과거에 문제를 해결하면서 축적된 경험을 토대로 그것과 유사한 문제를 해결하도록 신경망을 학습시키는 방법.

실무에서 무조건 한번씩 해본다고 생각하면 된다.

 

  • Recurrent Neural Networks (순환 신경망) - RNN

음성, 문자,  자연어 처리 등 다양한 분야에서 사용됨.

순차적으로 등장하는 데이터 처리에 적합한 모델.

 

  • Generative Adversarial Network (생성적 적대 신경망) - GAN

서로 적대(Adversarial)하는 관계의 2가지 모델(생성 모델과 판별 모델)을 동시에 사용하는 기술.

GAN은 위조지폐범과 이를 보고 적발하는 경찰의 관계로 설명할 수 있다.

- Generator (위조지폐범): 경찰도 구분 못하는 진짜같은 위조지폐를 만들자 !!!
- Discriminator (경찰): 진짜 지폐와 위조 지폐를 잘 구분해내자 !!!

이와같이 계속 진행되면 위조지폐범은 더욱 더 정교하게, 경찰은 더욱 더 판별을 잘하면서

서로 발전의 관계가 되어 원본과 구별이 어려운 가짜 이미지가 만들어지게 된다.