본문 바로가기
AI, 빅데이터/AI

[AI] CNN 구현 시 고려해야할 사항들

by Foxy현 2022. 12. 7.
728x90
반응형

안녕하세요! 저번 글에서는 CNN의 구조와 각 layer의 기능에 대해 알아보았는데요

 

2022.12.07 - [분류 전체보기] - [AI] CNN (Convolution Neural Network) 개념알기

 

[AI] CNN (Convolution Neural Network) 개념알기

안녕하세요! Foxyhyun입니다! 오늘은 이미지 분류의 기초인 CNN에 대해 알아보려고 합니다 Convolution Neural Network, 줄여서 CNN이라고 부르죠. 파라미터만 지정하면 특징 추출도 알고리즘이 자동으로 이

foxyprogramming.tistory.com

 

오늘은 CNN을 구현할 때 고려해야할 사항들에 대해 알아볼까 합니다.

 

 


먼저, 데이터 세트 구성하는 부분입니다.

우리의 목적은 Cost Function이 최소화하는 weight를 찾는 것이 목적이었죠~!

데이터 셋의 양에 따라 weight를 찾는 속도가 다르기도 합니다.

  • Batch 
  • Mini Batch
  • SGD(확률적 경사 하강법)

Batch전체 데이터를 이용하여 경사 하강법을 계산하는 방법입니다.

올바른 방향으로 weight를 학습하지만 느리다는 단점이 있습니다.

 

Mini Batch는 일부 데이터를 이용하여 경사 하강법을 계산하는 방법입니다.

적절한 방향과 속도로 weight를 학습합니다.

 

SGD는 하나의 샘플 데이터를 이용하여 경사 하강법을 계산하는 방법입니다.

올바른 weight를 찾아가지만 학습이 느립니다.

 

아래의 그림으로 비교해봅시다.


다음으로 Epoch와 Hidden layer를 고려합니다.

Epoch는 학습을 반복하는 횟수로서, training error가 더 이상 줄지 않을 때까지 증가시킵니다.

그렇다고 너무 많은 Epoch를 하면 시간이 오래 걸리고, 아무리 학습을 진행해도 성능이 좋아지지 않는 한계점이 생깁니다.

하지만, 그 정도가 아니라면 Epoch 수를 고려해야 합니다.

아래의 그림으로 이해해봅시다.

이 방법으로도 training error가 충분히 줄지 않는다면 Hidden Layer를 늘리거나, node의 수를 늘려야합니다.

 

결국, Epoch와 Hidden layer를 적절히 조절하여 training error를 줄일 수 있겠네요~

 


다음으로 Validation 데이터입니다.

Validation 데이터는 test 하기 전에 모델이 잘 학습되었는지를 확인하기 위해 사용하는 데이터입니다.

train 데이터로 학습을 하고,

validation 데이터로 학습을 확인하고,

최종 모델을 test 데이터로 확인을 하는 것이죠.

 

학습을 진행하면, training error가 충분히 잘 줄어드는 것을 확인할 수 있을겁니다!

하지만, validation error가 증가하면 overfitting! 즉 과적합하다는 의미로, 모델이 너무 학습데이터에만 잘 학습되어 실제 다른 데이터를 넣어보면 성능이 좋지 않는 경우가 생깁니다.

이 경우, Drop out을 수행하거나 hidden layer의 수를 줄여야합니다

 


다음으로 출력값을 결정하는 Activation Function입니다.

  • 0~1 사이의 출력 값 : Sigmoid
  • -1~1 사이의 출력 값 : Tanh
  • 0보다 작으면 0 : ReLU

Learning rate(학습률) 또한 적절하게 결정해야 하는데,

너무 크면 최솟값을 찾지못하고, 너무 작으면 너무 느리게 찾게됩니다.


마지막으로 Cost Function입니다.

  • Binary_crossentropy : y값이 0,1인 이진 분류 => sigmoid 사용
  • Categorical_crossentropy : 멀티 클래스 분류 => One-hot encoding으로 제공
  • Sparse_categorical_crossentropy : 멀티 클래스 분류 => 라벨이(1,2,3,4) 등의 정수형, One-hot encoding 필요 없음
  • 신경망의 출력과 타겟이 연속값인 회귀 문제에서 사용

이처럼 다양한 요소들을 고려하여 모델을 설계해야합니다.

그렇지 않다면 속도가 느리거나, 성능이 조금 더 안좋고 에러가 발생할 수도 있겠죠?

 

오늘 배운 내용은 앞으로도 계속 다룰 내용이므로 기억해두시길 바랍니다!

 

 

 

 

728x90
반응형