딥러닝/모두를 위한 딥러닝 시즌1

[모두를 위한 딥러닝 시즌1] Lec11-02. ConvNet Max pooling 과 Full Network

CoGam 2024. 2. 10. 22:20
728x90

저번 시간에는 CNN의 기본적인 구조와 

어떻게 CNN을 이용한 모델을 만들고 사용할 수 있는지 알아보았다.

 

이번에는 CNN 모델에 이미지의 사이즈를 줄여주는 sub sampling 기법에 대해서 알아보려고 한다.

 

 

위의 그림과 같이 이 기법은 

"Pooling"이라고 불린다.

 

input으로 들어온 데이터에 pooling을 적용하면 그 사이즈를 줄일 수 있다.

 

Pooling에는 

Max pooling (가장 큰 값만 고름)

Average pooling (receptive field 안의 평균값을 이용)

Stochastic pooling

Cross channel pooling

등이 있다.

 

 

강의에서는 max pooling을 예시로 살펴본다.

 

CNN의 필터와 비슷하게 여기에도 필터가 존재한다.

receptive field를 지정하는 것이다.

 

이 필터를 몇칸 간격으로 적용할지 정하는 stride도 마찬가지로 존재한다.

사이즈가 2x2이고, stride가 2인 필터를 적용하면 데이터를 절반 사이즈로 줄일 수 있는 것이다.

 

 

따라서 실제로 pool을 적용하면 사이즈가 계속 줄어들기 때문에 

시간이나 효용을 줄일 수 있을 것 같다.

 

위와같이 CNN, ReLU, Pool 등을 적용시켜가며 모델을 쌓고, 

마지막에는 일반적인 neural network 또는 fully connected layer에 통과시켜서 

softmax를 통해 결괏 값을 얻게 되는 구조이다.

 

 

여기서 잠시 생각해보자.

 

분명 CNN 필터에 의해서 이미지 사이즈가 줄어들면 

데이터에 손실이 생겨서 패딩이라는 것까지 이용한다고 

하지 않았나.

 

댓글 창도 확인했으니 따로 답변이 달려있지는 않았다.

그래서 구글링을 통해 다른 블로그를 참고했다.

https://technical-support.tistory.com/65

 

기본적으로 pooling 기법은 CNN과 activation function을 거쳐서 나온 

ouput인 feature map에 대해서 적용하는 기법이라고 한다.

 

pooling을 사용하는 이유는 output에 있는 모든 data가 필요하지 않기 때문이라고 한다.

 

즉 이미 앞선 처리를 거쳤다면 그 안에서는 적당량의 정보로도 모델이 추론할 수 있기 때문이다.

 

또한 Pooling은 파라미터를 줄이기 때문에

1. Overfitting이 억제되고

2. Hardware resource 를 절약하고 속도가 높아진다

는 장점이 생긴다.

 

Pooling의 특징으로는 

1. train 할 parameter가 없다

2. channel 수에는 영향을 미치치 않는다

3. input feature map에 변화가 있어도 pooling의 결과는 변화가 적다

는 특징이 있다.

 

 

따라서 나의 의문점에 대해서 나는 

pooling의 장점이 모델의 효율을 높이기 때문이라고 생각하였고, 

데이터 손실에 관해서는 CNN이 받는 것은 input으로 간주하고 

CNN과 activation function을 통과한 데이터는 처리를 마쳤다고 생각하기 때문에

input의 손실로 보지 않는다는 결론을 내렸다.

 

나중에 기회가 된다면 정확하게 물어보거나 다시 정리를 해봐야 할 것 같다.

반응형