머신러닝

6-2 컨볼루셔널 뉴럴 네트워크(CNN:Convolutional Neural Network)의 이미지 인식

coding art 2021. 7. 9. 13:33
728x90

우리가 생각하기에 머신 러닝은 엄청난 속도로 발전하는 것처럼 생각하기 쉬우나 사실은 그 정반대다. 1957년에 코넬 대학의 Rosenblatt이 시제작하여 시연한 퍼셉트론으로부터 시작되었으며 동시에 퍼셉트론과는 직접적인 관계는 없었지만 1959년 하버드 의과대학의 후벨 박사가 고양이 시각 피질 반응에 대한 연구를 통해 사물의 특징을 추출해내는 시각적 인식에 대한 간단한 원리를 이해하게 되었다. 이어서 1969MIT 의 민스키 교수가 XOR 논리 문제를 처리하지 못하는 퍼셉트론의 한계를 지적하고 이 문제 해결을 위해서는 단일 레이어 뉴럴네트워크 조차도 아무런 소용이 없다는 식의 폄훼가 이루어져 머신 러닝 발전의 족적을 남길 정도로 큰 장애물 역할을 자행하였다. 그럼에도 불구하고 머신 러닝은 전 세계적으로 극히 소수에 의해 명맥을 유지해 나갔으며 1970년대로부터 1980년대를 통 털어 Hinton 교수에 의해 고작 back-propagation 이론 하나를 정립 하였다.

 

1981년에는 후벨 교수가 1959년도의 시각피질 연구 업적으로 노벨상을 수상하였으며 1990년대 초에 LeCUN 교수에 의해 초창기 CNNLeNet이 제안되었다. CNN은 카메라 이미지에 포함된 요소들에 대한 인식 능력으로 인해 오늘날 자율주행 자동차 연구의 시발점으로 보아도 될 것이다. 2000년대 초에는 Haarcasecade 방식에 의해 사람의 안면 또는 고양이 얼굴 및 자동차 인식이 가능하게 되었다. 그 후로도 간간이 머신 러닝이 느리게 발전하고 있으나 최근 구글 딥마인드와 이세돌 프로바둑기사와의 대결로 인해 딥러닝이 세계적으로 크게 부각되었다.

1990년대에 LeCun 교수가 시작했다고 볼 수 있는 CNNLeNet도 그 발전 속도가 더뎌 근 30년이 되어가는 최근 시점에 주어진 이미지의 95%를 넘기는 인식율로 사람의 인식 능력을 조금 앞서기 시작한 정도이다. 요즈음 유튜브를 비롯한 매체들에서 인공지능의 발전 속도가 너무 빨라 2040년을 경과하게 되면 특이점(Singularity) 시대 즉 인공지능이 폭발적인 속도로 인간의 능력을 추월해 버리는 시기가 온다고 하는데 이는 겪어봐야 알 수 있을 것이다. 물론 세부 분야별로 인공지능이나 머신 러닝이 사람의 능력을 넘어서고 직업들이 사라지는 그런 현상은 있겠지만 총체적으로 머신 러닝이 사람의 지능을 능가하기란 아직은 요원해 보인다. 특히 머신 러닝 분야를 전공하고자 하는 사람들은 발전 속도가 엄청 느리기 때문에 전혀 걱정을 할 필요가 없으며 그냥 시작하면 그 자체로서 초기에 머신 러닝 분야 연구에 참여하는 셈이 될 것이다.

 

CNN에 첫발을 디디려면 CNN이 과연 무엇을 할 수 있는지를 이해할 필요가 있다. 이미 MNIST 수기 문자 인식 문제와 같은 대표적인 머신 러닝분야에서 softmax 기법을 사용하여 쉽게 92% 의 인식율을 달성할 수 있었는데 이문제가 CNN과 결합하게 되면 거의 99% 수준의 인식이 가능해진다. 어떻게 보면 사람의 인식율 보다 높다고 할 수도 있을 것이다.

그렇다면 과연 CNN은 어떤 원리에 의해서 그렇게 높은 인식률이 가능한 것인지 그 원리를 알아보기로 한다. 하지만 CNN의 원리 이해 자체도 쉽지 않은 면이 있기에 원리 설명은 더 녹녹치 않을 정도로 어렵다고 볼 수도 있다. 당연히 CNN을 공부하기 위해 상당히 많은 시행 착오를 거치면서 학습한 결과 과연 누가 CNN을 가장 명쾌하게 이해할 수 있도록 설명하고 있는지 유튜브에서 “Convolutional Neural Network” 란 검색어로 검색을 해 보자.

 

다음과 같이 Brabdon Rohrer 라는 작가의 동영상이 CNN의 내용을 이해함에 있어서 가장 명쾌한 설명을 주고 있었다. 영문이므로 청취가 가능하신 분은 그대로 들어 보아도 좋을 것이며 이 마저도 그리 쉬운 편은 아니기에 다시 요약해서 브리핑을 하기로 한다.

CNN의 원리 설명의 출발점은 다음과 같이 알파벳 “X” “O”를 어떻게 구분하느냐는 문제를 예로 들어 설명해 보기로 한다.

이 문제는 CNN을 쓰지 않더라도 알파벳 전체를 대상으로 적절한 라벨링과 one hot code를 부여하여 softmax 기법으로 충분히 풀 수도 있는 문제이다. 이미 MNIST 수기 숫자를 softmax로 처리하여 92% 수준의 인식이 가능하다는 점을 알고 있지만 CNN 구성에서 후반부에만 한정하여 Wide Deep NN softmax 가 적용되며 CNN의 앞부분은 오브젝트의 기하학적 특징을 알아내기 위한 Convolutional Netework이 도입되는데 그 원리는 오히려 고양이 시각 피질 반응 연구에서 살펴보았던 “Edge Detection” 원리의 컴퓨터에서의 구현이라 보면 될 것이다.

앞 절에서 언급했던 Gaussian Blur 기법에 의한 고양이 이미지로부터 Edge를 추출한 사례를 다시 검토해보자. 이미지를 어떻게 처리 하느냐에 따라서 얻어지는 결과가 달라지겠지만 아래 왼쪽에서 보면 Convolutional 필터를 사용하여 하나의 이미지를 구성하는 모든 edge 요소들 추출이 가능하다. 이러한 작업들이 선행되어 이미지의 작은 부분 부분들로부터 전체 이지미를 구성하는 큰 오브젝트들의 세부적인 기하학적 Edge 특징들을 모조리 추출해야 한다.

“X” “O” 문제를 CNN 으로 풀기 위한 관점과 MNIST 수기숫자 처리 문제와의 차이점을 알아보기로 한자. 이어지는 6-3벌에서 CNN의 필터링 원리에 대해서 알아보자.