안녕하세요~
이번 챕터부터는 Convolution Neural Network (CNN)에 대해서 다룰려고해요. CNN은 다양한 분야에서 쓰이지만 이미지영역에서 특히 두각을 나타내고 있어요. 그러기 위해서는 기존에 Deep Neural Network (DNN)가 이미지영역에서 왜 쓰이기 힘들지를 알아야겠죠?
먼저, DNN이 이미지를 어떻게 학습하는지 아래 동영상을 통해 알아보도록 할게요.
<사진1>
두 번째, DNN은 위치정보를 고려하지 않기 때문에 학습이미지가 조금만 shift or distortion되면 다른 이미지라고 볼 확률이 높아요. 우리들은 모양이라는 위치정보를 통해 아래 6개중 하나만 A라고 배우면 나머지도 모두 A라고 말할 수 있어요. 그런데 DNN은 아래 입력이미지들을 일렬로 펼치고 학습하기 때문에 모양과 같은 위치정보로 학습하는것이 아니라 그냥 28x28 pixel에 존재하는 개별적인 값들로 학습을 하게 되요 (위의 영상을 참고하시면 제가 말하고자 하는 의도를 더 잘 이해하실거에요). 이러한 이유때문에 학습할 양의 이미지들이 배로 늘어나게 되요.
<사진2>
세 번째, DNN은 Fully-connected layer 구조에요. Fully- Connected layer란 이전의 모든 neuron들이 다음 각각 neuron들에 전부 연결되어 있음을 의미해요. 그래서 위와 같이 이미지가 학습데이터로 입력되면 굉장히 많은 parameter(가중치; weight)값들이 발생하게되요. 이렇게 되면 학습이 굉장히 오래걸리게되요. 왜냐하면 각각의 가중치들의 최적화값들을 찾아주어야 하기 때문이에요.
세 번째, 첫 번째의 단점과 세 번째의 단점을 결합하면 overfitting이 일어나기 굉장히 좋은 조건이되요. 먼저 curse of dimensionality 문제 때문에 항상 학습데이터가 충분하지 않게되요. 즉, 우리로써는 굉장히 많은 이미지를 잘 학습시켰시켰다고 했지만, 학습시키지 않았던 다른 이미지로 test 해보면 classification을 잘 못하게 되요. 이러한 문제는 가중치가 많은 모델에서 더욱 문제가 되는데요. 그 이유는 적은양의 training dataset을 통해 굉장히 많은 가중치들이 training dataset에 최적화되어 있기 때문이에요. 예를들어, 바나나를 인식할때 판단하는 기준이 모양, 색깔 2가지라고 해볼게요. 아래 그림에서 우리는 A를 바나나라고 배웠고, 모양과 색깔만 보고서 B도 A와 같은 바나나라고 판단할 수 있어요. 그런데 만약에 바나나를 판별하는 기준이 1000가지라고 해볼게요. A를 1000개의 기준을 통해 바나나라고 인식했을때, B를 A와 같은 바나나라고 말할 확률이 얼마나될까요? 판별기준이 뭔지는 모르겠지만 확률이 급격하게 낮아질거에요. 결국 가중치가 많다라는건 판단 기준이 많다는 건데 training dataset을 2개만 학습하고 그 2개의 공통적인 특성 1000개를 판단기준으로 삼으면, 우리가 봤을때 별반 차이없는 데이터조차 training dataset과 다르다고 할 확률이 높게됩니다. 즉, overfitting이 일어날 확률이 높아지는거죠.
<A> <B>
지금까지 DNN이 이미지영역에서 왜 좋지 않은지에 대해서 알아보았어요. 요약해서 말하자면 아래와 같아요.
- 고차원 입력 데이터로 인한 curse of dimensionality 문제 -> 학습데이터 부족, Overfitting
- 고차원 입력 데이터 + DNN구조(FC Layer)로 인한 문제 -> 학습시간 증가
-> 많은 가중치들->Overfitting
- 위치정보를 고려하지 않음 -> shift, distortion 데이터가 추가로 필요 -> 학습해야할 데이터량 증가
그렇다면 CNN은 어떻게 이를 극복했을까요?
힌트는 가중치들의 수 (the number of parameters)의 감소와 위치정보의 고려가 되겠어요!
다음글에서 위의 힌트를 기반으로 CNN의 기본적인 구조를 설명해보도록 할게요~!
[사진 래퍼런스]
사진1
https://www.youtube.com/watch?v=aircAruvnKk
사진2
https://m.blog.naver.com/laonple/220587920012
바나나사진
http://food.chosun.com/site/data/html_dir/2017/06/08/2017060802238.html
'Deep Learning for Computer Vision > Convolution Neural Network (CNN)' 카테고리의 다른 글
6. AlexNet (4) | 2020.01.17 |
---|---|
5. CNN 성능은 어떻게 평가하게 되나요? (0) | 2020.01.17 |
4. CNN은 왜 이미지영역에서 두각을 나타나게 된건가요? (3) | 2020.01.16 |
3. CNN(Convolution Neural Network)는 어떤 구조인가요? (17) | 2020.01.16 |
2. Convolution Neural Network는 어디서 파생되었나요? (0) | 2020.01.16 |