안녕하세요~


지난시간에서는 DNN(Deep Neural Network)구조가 이미지영역에서 왜 성과가 낮은시 설명해드렸어요. 결과적으로는 이러한 단점을 극복한 것이 Convolution Neural Network (CNN)라는 구조인데, 그렇다면 CNN은 어디서 기원했을까요?



<1.고양이의 시각피질 검사>


사람들이 인간의 신경망을 본떠 Deep Neural Network를 만들어낸것 처럼, CNN도 시각피질(visual cortex)의 neuron이 어떻게 작동하는지를 알아보기 위해 노력을 했습니다. 이를 알아보기 위한 실험으로 고양의 시각피질 반응에대한 실험을 진행했는데요. 고양이에게 단순한 모양의 여러패턴(같은모양의 다른방향을 갖고있는 그림 or 다른모양의 같은 방향을 갖고 있는 그림 등)을 보여주고 시각피질의 반응을 살펴보게 됩니다. 그리고, 이러한 다양한 패턴에따라 뉴런이 반응하는 정도가 다르다는 사실을 알게 됩니다.


 

<사진1>


이 실험에 의하면 고양이의 시각 피질은 흑백 이미지에서 밝기가 변하는 사선이나 배경색과 대조되는 움직이는 사선 즉 사선형 edge를 detect 할 수 있다는 결론이다. 더 나아가서 후벨의 실험에 의하면 시각피질은 이미지에서 edge의 크기 또는 기울어진 각도와 edge의 움직이는 방향을 detect할 수 있도록 다음과 같이 세 종류의 Neuron 들로 구성되어 있다는 점을 밝혔어요. (아래 글에서 세 가지 cell에 대해서 설명할거에요)


Cell Type 

 Selectivity

Simple 

Orientation, position 

Complex

Orientation, motion, direction  

Hypercomplex 

Orientation, motion, direction, length 


외부로부터 눈에 들어온 빛은 망막에서 전기적인 신호로 변환된 뒤뇌의 시각피질(visual cortex)로 전달되는데요Visual cortex에 있는 세포 중에는 망막의 특정 부분이 특정 패턴으로 입력되면 활성화가되고그 외의 패턴에 대해서는 활성화 되지 않는 선택적인 행동을 보이는 세포가 있어요특히망막으로부터 온 정보의 입구 역할을 하는 초기 시각 피질에 속한 신경세포에 이러한 선택적인 반응을 보이는 세포가 있다는 것이 예전부터 알려져 있었는데, 이러한 세포에는 단순세포 (simple cell) 과 복잡세포(complex cell) 라 불리는 두 종류의 세포가 있습니다 


 

          

<사진2>



단순 세포는 엄격한 위치(position)와 방향(orientation)정보를 갖고 있어요. 그래서 '사진2'의 왼쪽그림을 보면 노란색선의 방향이 다르거나 위치만 바뀌어도 simple cell은 활성화되지 않는다는걸 알 수 있어요.


복잡 세포는 방향성에 그렇게 엄격하지 않고 입력 패턴을 조금 벗어나도 반응하는데요. 위의 '사진2'의 중간그림을 보면 선의 방향의 위치가 조금 바뀌더라도 활성화되는 것을 알 수 있어요. 그렇기 때문에 어떤 선이 같은 방향으로 움직이면 특정 complex cell 지속적으로 활성화되어 다음과 같은 판단을 할 수 있을거에요 "아! 지금 A라는 complex cell이 계속 활성화되어있는거 보니까 특정모양의 선이 우측대각선 아래로 움직이고 있구나!" (어쨋든 simple cell을 기반(특정모양의 선)으로 위치정보를 파악할 수 있었나보네요)


위와 같은 비슷한 방법으로 Hypercomplex cell도 motion, direction, orientation, length과 같은 더 많은 정보를 포함하게 됩니다.


결국 이미지를 구성하는 기울어진 크고 작은 edge 요소들의 합성 과정과 complex cell, hypercomplex cell을 통해 좀 더 많은 정보를 포함하게 함으로써 통해서 전체 이미지를 구성해 볼 수 있어요.


<사진3>



이러한 개념을 공학적으로 설계한 첫 번째 모델이 "Neurocognitron"이라는 모델이에요. Neurocognitron에 대한 자세한 설명은 하지 않을게요. 그냥 시각정보를 반영하는 인공뉴런을 공학적으로 설계했다는데 큰 의의를 두시면 될 것 같아요~







<2. LeNet의 탄생>


아무튼, 이렇게 시각적인 정보를 담고있는 뉴런들에 대한 연구가 지속되어오다가 마침내 1998년 Yann LeCun이라는 분이 오늘날의 Convolution Neural Network의 구조를 만들게 되요. 앞서 언급한 것 처럼 초반에는 간단시각정보를 먼저 수집하고 이를 기반으로 뒤로 갈 수록 좀더 추상적인 정보를 담을 수 있게 되요 (아직 구체적인 이해가 안되시는게 당연해요. 다음글에서 이 부분에 대한 자세한 설명할게요!)


<사진4>




요약하자면, CNN이라는 것이 biological concept에서 출현하게 되었고, 이를 공학적인 패턴인식에 이용한것이  neurocognitron이며, 오늘날의 CNN 뿌리라고 할 수 있는 LeNet으로 까지 이어지게 되었다고 할 수 있어요.


<사진5. LeNet 구조>


<사진6. 일반적인 CNN 구조>



다음글에서는 본격적으로 위의 사진의 CNN 구조를 자세하게 살펴보도록 할게요!








[글 래퍼런스]

https://steemit.com/kr/@codingart/4-8-edge-detection-cnn-convolutional-neural-network


[사진 래퍼런스]

사진1

 https://www.google.co.kr/url?sa=i&source=images&cd=&ved=2ahUKEwis4tHg8L7cAhUCXrwKHdE-DjYQjhx6BAgBEAM&url=https%3A%2F%2Fwww.timetoast.com%2Ftimelines%2Fa-shamelessly-awesome-history-of-modern-psychology&psig=AOvVaw3SNGNDlSDOHXiSBJSDtlLG&ust=1532767155814949

사진2

https://en.wikipedia.org/wiki/Hypercomplex_cell

사진3

딥러닝 제대로 시작하기

사진4

https://neurdiness.wordpress.com/2018/05/17/deep-convolutional-neural-networks-as-models-of-the-visual-system-qa/

사진5

https://d2l.ai/chapter_convolutional-neural-networks/lenet.html

사진6

밑바닥부터 시작하는 딥러닝

안녕하세요~


이번 챕터부터는 Convolution Neural Network (CNN)에 대해서 다룰려고해요. CNN은 다양한 분야에서 쓰이지만 이미지영역에서 특히 두각을 나타내고 있어요. 그러기 위해서는 기존에 Deep Neural Network (DNN)가 이미지영역에서 왜 쓰이기 힘들지를 알아야겠죠?


먼저, DNN이 이미지를 어떻게 학습하는지 아래 동영상을 통해 알아보도록 할게요.




뭐가 문제인지 보이시나요?

첫 번째, 가시적으로 보이는 건 28x28 이미지를 DNN에 입력하려고 할때 일렬로 늘리는걸 보실 수 있으신가요? DNN의 입력차원이 784개라는 부분에서부터 벌써 curse of dimensionality 문제를 곧바로 연상시키게 되요 (curse of dimensionality는 여기 링크를 참고해주세요).


<사진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

+ Recent posts