CNN이란?
CNN이란 일반적인 neural network에 convolution 연산을 추가한 것입니다. CNN은 이미지, 비디오 등 grid(격자)형식의 데이터에 적합합니다. 이미지, 비디오의 경우 고차원의 데이터가 많은데, 기존의 Fully-connected layer를 사용하면 가중치가 너무 많아져서 학습해야할 parameter가 매우 많아집니다. 따라서 overfitting이 발생할 가능성이 높아집니다. CNN을 사용하면 parameter의 수를 줄일 수 있어서 학습에 용이하고 overfitting의 가능성을 줄일 수 있다는 장점이 있습니다.
width, height, depth를 갖는 3차원의 데이터를 다루며, 마지막 output layer에서는 class의 수에 따른 1차원 벡터로 변환한 후 확률로 나타냅니다. filter는 작은 width와 height를 가지고 depth는 input의 depth와 같아야합니다.
CNN의 장점 및 특징
- 지역적으로 연결되어 있어 원하는 부분에 대한 독립적인 계산이 가능하다.
- 가중치를 공유하여 이미 학습된 특징들은 어디에 있건 추출해낼 수 있다.
- input의 크기에 영향을 받지 않는다.
- parameter의 수가 적어 시간이 적게 걸리고 overfitting의 가능성도 적습니다.
- 다른 위치, 회전, 뒤집힘 등의 데이터에 강하다.
- Grid(격자)가 있는 데이터에 유리하다. 예) 이미지, 시계열 데이터
CNN의 구조
convolution
RELU (activation function)
- RELU는 0보다 작을 때는 0을, 0보다 클때는 원래의 값을 출력합니다. 0이하의 값은 무시하여 원하는 부분에 더 집중할 수 있도록 합니다. (배경: 음수, 모서리: 양수)
- non-linear 특성을 증가시킨다.
Pooling (sampling)
- output인 activation map의 사이즈가 커서 학습이 느려지므로 Sampling을 하여 크기를 줄여줍니다.
- parameter의 수가 줄어들고 전체적인 경향을 학습하기 때문에 overfitting이 감소됩니다.
- depth에 대해서는 독립적으로 진행되기 때문에 depth의 크기는 변화되지 않습니다.
- 예) Max pooling, Average pooling 등
- 최근에는 pooling대신 stride를 크게 하는 방법을 사용하기도 합니다.
Fully Connected
- convolution layer에서 학습한 특징들을 사용하여 class를 분류할 때 사용합니다.
- softmax함수를 사용하여 확률로 계산합니다.
- dropout등을 사용하여 overfitting을 감소시킬 수 있습니다.
- FC layer를 사용하면 파라미터의 수가 증가되므로 최소한으로 사용해야 합니다.
(Hyper) parameters
| layer | parameters | hyperparameters |
|---|
| CONV | O | O |
| RELU | X | X |
| POOL | X | O |
| FC | O | O |