딥러닝이란 무엇인가? (2)


(이전 포스팅 보기)

지금까지 딥러닝의 개념과 대표적인 딥러닝 모델에 대하여 알아보았습니다. 그러면 이제, 다들 딥러닝이 왜 그렇게들 좋다고 하는지 그 이유에 대해 파헤쳐보도록 하겠습니다.

딥러닝의 강점

요인 표현 학습: 요인 추출의 자동화

바로 이전 글에서, 효과적인 요인(feature)을 정의하고 추출하는 것이 머신러닝의 성패에 지대한 영향을 미친다고 말씀드린 바 있습니다. 그리고 이는 해결하고자 하는 문제와 연관된 분야에 대한 풍부한 지식과 뛰어난 직관에 힘입은, 가히 예술에 가까운 작업이라고 하였습니다.

요인 추출은, 오랜 기간 갈고 닦은 장인 정신이 필요한 영역이었습니다. 그러나…

이는 딥러닝의 등장으로 서서히 깨지기 시작하였습니다. 바로 딥러닝 모델이 보유한 ‘요인 표현 학습(feature representation learning)’ 능력 때문입니다. 기존의 선형 모델과 같이 ‘얕은(shallow)’ 러닝 모델의 경우, 반드시 사람에 의해 사전에 정의된 요인 하에서 최적의 성능을 발휘하는 가중치를 찾아야만 했습니다. 반면 심층 신경망의 경우, 원본 데이터로부터 최적의 성능을 발휘하는 데 사용될 수 있는 요인 표현 방법을 스스로 학습하고, 이를 기반으로 최적의 성능을 발휘하는 가중치를 더욱 효과적으로 찾을 수 있습니다.

요인 표현 학습 예시: 나무 여부 구별 기계

이해를 돕기 위해, 이전 글의 예시였던 <나무 여부 구별 기계>를 다시 한 번 가져왔습니다. 해상도가 (세로x가로) \(100×150\)인 이미지에 대하여, 만약 다음 요인들을 정의하고 추출하여 사용한다면, 나무 여부를 완벽하게 구별할 수 있다고 가정해 보겠습니다(당연히 현실 상황과는 큰 괴리가 있으나, 어디까지나 이해를 돕기 위함입니다).

  • 요인 \(f_1\): 이미지 상단 중앙의 가로/세로 10픽셀 길이의 정사각형 영역 내의 평균 색상
  • 요인 \(f_2\): 이미지 하단 중앙의 가로/세로 10픽셀 길이의 정사각형 영역 내의 평균 색상

 

tree-classifier-optimal-features
나무 여부 구별 문제의 최적 요인

 

좀 더 구체적으로, 나무 이미지 맨 위에서부터 j번째, 맨 왼쪽에서부터 i번째 위치한 픽셀의 RGB값을 각각 \(x_{(j,i,R)},x_{(j,i,G)},x_{(j,i,B)}\)라 하여 벡터로 변환해 주면, 이미지 상단 중앙의 10픽셀 길이 정사각형 영역 내 100개 픽셀, 하단 중앙의 10픽셀 길이 정사각형 영역 내 100개 픽셀, 두 요인 \(f_1, f_2\)의 계산 공식은 아래와 같이 됩니다.

 

tree-image-vectorized
나무 이미지의 입력 벡터화

 

\begin{equation} f_1 = \frac{1}{300}\big(x_{(21,71,R)}+x_{(21,71,G)}, …, +x_{(30,80,B)}\big) \end{equation}

\begin{equation} f_2 = \frac{1}{300}\big(x_{(71,71,R)}+x_{(71,71,G)}, …, +x_{(80,80,B)}\big) \end{equation}

앞선 가정 하에서, 위 두 가지 요인 \(f_1, f_2\)는, 나무 여부를 구별하는 데 있어 최적의 요인입니다. 물론 실제로는 최적의 요인이 무엇인지는 오직 신(?)만이 알고 있으며, 사람은 단지 데이터에 대한 꾸준한 관찰을 통해 최적 요인의 ‘언저리’에만 접근할 수 있을 것이며, 노력을 많이 들이더라도 운이 많이 좋아야 최적 요인을 정확히 찾아낼 것입니다.

그런데, 나무 여부를 구별하는 데 있어 아래와 같은 구조의 심층 신경망을 러닝 모델로 사용한다고 가정해봅시다.

 

tree-classifier-deep-neural-network
나무 여부 구별 문제를 위한 심층 신경망 구조

 

맨 처음 상황에서, 입력층과 은닉층 사이의 가중치들은 ‘적절히’ 초기화되어 있습니다. 그런데, 요인 표현 방법을 스스로 학습할 수 있는 심층 신경망은, 학습이 진행될 수록 이 가중치들을 서서히 업데이트하면서 최종적으로는 아래와 같이 되도록 만듭니다.

 

tree-classifier-deep-neural-network-optimized
나무 여부 구별 심층 신경망의 최종 학습 결과

 

그 결과, 심층 신경망 내 은닉층의 하나의 노드 \(z_1\)에는 요인 \(f_1\)이, 다른 하나의 노드 \(z_2\)에는 요인 \(f_2\)이 출력되는 결과를 가져왔습니다(가중합 공식을 떠올려 보면 확인하실 수 있습니다. 물론 이 때는 활성 함수가 항등 함수인 경우를 가정합니다). 심층 신경망이 스스로 최적의 요인 표현 방법을 찾아, 이를 맨 마지막 은닉층에 출력한 것이죠.

이를 다른 관점에서 해석하면, 기존 \(45,000\)차원 공간에 존재하는 입력 벡터를, 2개의 요인 \(z_1, z_2\)로 표현되는 2차원 공간에 예쁘게 재배치한 것이라고 해석할 수 있습니다. 심층 신경망 내 출력층 직전에 위치한 퍼셉트론(혹은 선형 모델)은 이 새로운 2차원 벡터 \((z_1,z_2)\)를 받아, 2차원 공간 상의 깔끔한 선형 경계를 찾게 되고, 이를 사용하여 최종적인 나무 여부 분류를 수행하게 되는 것입니다.

(물론 실제로는 심층 신경망도 ‘운이 좋아야’ 최적 요인을 정확히 찾아내는 것이 사실입니다. 하지만, 적어도 최적 요인과 그 효과가 꽤 유사한, 차선의 요인은 사람보다 훨씬 잘 찾아냅니다.)

지금까지 딥러닝 모델이 요인 표현을 학습하는 가장 단순화된 사례를 보여드렸습니다. 물론 위 예시에서는 최적 요인의 개수가 2개이며 그 정체가 무엇인지 대충 알고 있다는, 다소 과격한 가정을 했습니다. 실제로는 이러한 사항을 전혀 모르기 때문에, 최적의 요인 표현 방법을 심층 신경망이 학습할 수 있도록 하고자 다양한 방법으로 심층 신경망의 구조를 변화시키며 실험을 거듭하는 것이 일반적입니다.

깊을수록 풍부해진다

심층 신경망의 구조를 변화시키며 실험을 수행하던 머신러닝 과학자들은 놀라운 사실을 하나 발견하게 됩니다. 심층 신경망 내 은닉층의 개수를 증가시킬수록, 최적 요인 표현 방법을 더욱 효과적으로 학습한다는 것입니다.

이는 특히 이미지 인식 분야에서 컨볼루션 신경망을 사용했을 때 더욱 가시적으로 드라마틱하게 드러납니다. 우리 주변의 다양한 사물 이미지를 분류할 수 있도록 학습된 심층 컨볼루션 신경망을 해부해 본 결과, 각 컨볼루션 층에 생성된 출력값이 아래 그림과 같은 양상을 보이는 것을 발견했습니다.

 

convolutional-neural-network-representations
컨볼루션 신경망의 추상화된 요인 표현 기능

 

컨볼루션 신경망의 낮은 층에 해당할수록, 이미지 상의 각 세부 영역에서의 경계, 명암, 색상 변화 등 저수준(low-level)의 특징들을 요인 표현으로 포착하는 경향을 보였습니다. 이렇게 위치 별 저수준 요인은, 컨볼루션 신경망의 높은 층으로 올라가면서 서로 가까운 것들끼리 조합되고, 좀 더 넓은 영역에서 고수준(high-level)의 특징들을 요인 표현으로 포착하는 경향을 보였습니다.

예를 들어, 컨볼루션 신경망은 위 그림에서의 자동차 이미지의 바퀴 근처에서 포착되는 저수준 요인들을 통해 점, 선, 면 등의 위치를 파악하고, 이것들을 조합한 고수준 요인을 통해 원형의 사물이 위치하며, 이것이 자동차 바퀴라는 것을 파악합니다. 컨볼루션 신경망의 점점 높은 층으로 올라갈수록 바퀴 외의 주변 사물들도 파악하게 되고, 마지막에는 파악한 내용들을 최종적으로 종합하여 이것이 자동차라는 것을 인식하게 되는 것입니다.

백지장도 맞들면 낫습니다. 특히 심층 신경망의 은닉층은, 맞들면 맞들수록 더-욱 낫습니다.

(그렇다고 무조건 은닉층을 많이 쌓기만 하는 것이 모든 문제 상황에 다 좋은 것은 아닙니다. 학습의 대상이 되는 데이터의 속성에 따라 쌓음의 정도를 달리 가져가야 합니다. 그 적정 수준 역시 실험을 통해 알아내야 합니다.)

요인 추출의 자동화가 가져온 변화

어려운 머신러닝 문제들에 대한 해결 성능 극대화

딥러닝 모델의 요인 표현 학습 능력으로 인한 요인 추출의 자동화는, 머신러닝계에 거대한 변화를 가져오게 되었습니다. 가장 먼저, 기존에 ‘어려운 문제’라고 인식되어 오던 머신러닝 문제들에 대한 해결 성능이 극대화된 것을 들 수 있습니다. 이러한 변화가 가장 먼저 단적으로 드러난 분야가 이미지 인식 분야입니다.

이미지 인식 연구를 위한 대규모 프로젝트인 이미지넷(ImageNet) 측에서 개최하는 대회인 ILSVRC(ImageNet Large Scale Visual Recognition Challenge)에서는 매년 전 세계 각국에서 온 수많은 참가자들이 총 1,000개 카테고리의 사물들을 담고 있는 총 1,431,167장의 이미지 데이터셋을 대상으로 이미지 인식 문제 해결을 위한 대결을 펼쳐 왔습니다. 그러던 중, 2012년도 ILSVRC에서 토론토 대학 소속 대학원생 Alex Krizhevsky 외 2인이 심층 신경망을 러닝 모델로 사용하여 대회에 도전장을 던졌고, 그 전까지 20% 이상에 머물렀던 분류 오류율(error rate)을 10%대로 낮추는 쾌거를 거두며 우승하였습니다. 이를 통해 Alex Krizhevsky는 일약 스타덤에 올랐으며, 이는 향후 딥러닝의 부흥을 알리는 신호탄이 되었다고 해도 과언이 아닙니다.

 

ilsvrc-error-rate-change
ILSVRC에서의 연도에 따른 최저 오류율 기록

 

이미지넷 측으로부터 최근까지 보고된 바에 따르면, 2015년도 우승자인 Microsoft Research의 Kaiming He 외 3인이 제안한 ResNet이라는 심층 신경망 모델이 분류 오류율 3.57%를 기록하였다고 하며, 이는 주최측에서 자체적으로 모집한 피실험자 집단에 대한 실험 수행 결과 얻은 인간 분류 오류율 5.1%을 하회하는 수치입니다. ‘드디어 기계가 사람을 뛰어넘었다’는 소식에 많은 사람들이 크게 흥분했고, 이는 딥러닝 광풍을 불러 일으키는 데 크게 기여하였습니다.

이미지 인식 분야뿐만 아니라, 음성 인식 및 자연어 처리, 바둑을 포함한 각종 게임 등에서도 딥러닝 모델은 인간의 수준에 필적하거나 이를 뛰어넘는 성능를 보여주고 있습니다.

그러나, 인간의 수준에 도달하는 결과를 만들어내기 위한 엄청난 전제 조건이 존재합니다. 그것은..

손쉽고 신속한 커스터마이징

딥러닝 모델의 자동화된 요인 추출 능력은 산업계에도 매력적으로 다가왔고, 실제로 다양한 산업 내 각종 제품의 기능적 자동화에도 딥러닝 기술이 조금씩 적용되기 시작했습니다.

기존 규칙 기반 알고리즘(rule-based algorithm) 혹은 전통적인 머신러닝 알고리즘을 어느 특정한 제품의 자동화에 적용할 경우, 썩 괜찮은 규칙 혹은 요인을 정의하기 위해 방대한 사전 지식이 필요했으며, 완성된 규칙 혹은 요인을 검증하기 위해 수많은 관찰과 실험 등을 거쳐야만 했습니다. 그런데, 이런 고생을 들여 제품 기능의 자동화를 이루더라도, 제품을 둘러싼 환경이나 제품의 내재적 속성 등이 변화하게 되면 기존에 만들어 놓은 규칙 혹은 요인을 재사용하기 불가능해지는 경우가 많으며, 또 다시 같은 노력과 비용을 투입해야만 했습니다.

그런데 딥러닝 기술이 적용되면서, 이러한 수고를 대폭 줄일 수 있게 되었습니다. 딥러닝 모델만이 가지는 자동화된 요인 추출 능력으로 인해, 제품의 자동화를 구현하는 데 필요한 최적의 규칙 혹은 요인이 무엇일지를 알아서 빠르게 찾아낼 수 있기 때문에, 이에 대해 사람이 고민해야 할 필요가 상당 부분 줄어들었습니다. 즉, 한 종류의 딥러닝 모델만 가지고도 다양한 제품에 대하여 손쉽고 신속하게 커스터마이징(customizing)을 수행하는 것이 가능해졌다는 것입니다.

딥러닝의 약점

그럼 이제 비로소 장인 정신이 필요 없어진 시대가 온 것일까요? 혹은, 인간의 노동력이 필요 없어진 시대가 온 것일까요? 그렇지는 않습니다. 딥러닝을 적용하고자 할 시, 아직은 치명적인 약점이 몇 가지 존재합니다.

많은 데이터 요구량

딥러닝 모델은 가히 데이터를 먹는 괴물(?)입니다. 딥러닝 모델의 성능이 ‘인간의 수준’에 도달하려면, 대단히 많은 양의 데이터를 필요로 합니다.

앞쪽에서, 이미지넷의 이미지 인식 대회인 ILSVRC에서 2015년도에 나온 ResNet이라는 심층 신경망의 분류 오류율이 3.57%이라는 소식을 전해드렸습니다. 딥러닝에 대한 기대가 크신 분들의 경우, 십중팔구 아래와 같이 반응하실 것이라고 예상합니다.

와, 3.57%? 인간의 5.1%보다 한참 낮은 걸 보니 인간을 능가했네!

그런데 사실은 그 부분만을 볼 것이 아니라, ‘ILSVRC에서 무려 1,431,167장의 이미지로 구성된 데이터셋을 제공하였다’는 부분에 특히 더 주목해야 합니다(따로 명시해놓지는 않았지만, ‘적절하게 정제된’ 이미지를 의미합니다). 1,000개 카테고리의 사물을 인간 수준으로 분류하는 데 있어, 1개 카테고리 당 대략 1,431장의 이미지를 필요로 하였다고 해석할 수 있습니다. 여러분이 유년 시절에 다양한 사물의 개념에 대해 파악하던 시절을 떠올려보면, 이를테면, ‘나무’라는 사물의 개념을 파악하기 위해 무려 1,431장의 그림들을 보진 않았을 것이라고 감히 확신합니다(‘나무 전집’ 따위의 책도, 그 안에 1,431장의 나무들을 담고 있진 않을 것 같습니다).

 

ilsvrc-images-example
ILSVRC에서 제공된 이미지의 일부 예시

 

ILSVRC에서 사용되는 데이터셋을 만든 이미지넷은, 미국 내 주요 대학의 컴퓨터과학과 교수진들을 위시하여 준비된 대규모 프로젝트입니다. 이들은 웹 크롤링(web crawling)을 통해 원본 이미지들을 수집하고, 크라우드소싱(crowdsourcing)을 통해 각 이미지에 어떤 사물이 담겨 있는지에 대한 레이블링(labeling)을 공개적으로 수행하였다고 합니다. 이러한 작업을 상당 부분 자동화하였음에도 불구하고, ILSVRC 측에서 발표한 논문을 보면 이 거대한 데이터셋을 준비하는 과정에서의 고충이 구구절절하게(?) 드러나 있습니다.

어쩌면, 쟁쟁한 교수진들이 선두에 섰기 때문에 가능한 프로젝트였는지도 모르겠습니다. 그 당시에 휘하에 있었을 대학원생들에게 진심어린 경의를 표합니다..

이렇게 딥러닝 모델은 데이터의 요구량이 매우 많기 때문에, 아직은 모든 종류의 산업에 적용되기에는 어려움이 많습니다. 산업 현장에서 나오는 데이터 자체도 ‘돈’이며, 이를 필요에 따라 적절하게 정제하는 과정에서도 적지 않은 비용이 요구되기 때문입니다. 이러한 문제를 해결하고자, 주요 학계와 산업계에서는 최소한의 데이터를 가지고 준수한 성능을 발휘하는 딥러닝 기술을 개발하고자 총력을 기울이고 있으나, 아직 대부분은 꽃길보다는 흙길을 걷고 있는 실정입니다.

느린 속도와 높은 요구 사양

딥러닝 모델이 실제 산업에 적용되는 상황에서 발목을 잡게 되는 또 다른 부분은, 바로 느린 속도와 높은 요구 사양입니다. 이는 특히 저희 수아랩이 집중하고 있는 제조업 분야에서의 중요한 선결 과제로 손꼽힙니다.

 

production-line-example
제조업 생산 라인의 모습

 

제조업 공장에서의 생산 라인을 직접 견학해 보신 분은 아시겠지만, 생산 라인이 흘러가는 속도는 여러분이 일반적으로 예상하시는 것보다 훨씬 빠릅니다. 만약 갓 생산된 제품의 외형을 실시간으로 촬영한 이미지를 사용하여, 제품에 결함이 존재하는지를 검사하는 장비를 제작하고자 한다면, 검사 속도가 컨베이어 벨트의 속도보다는 반드시 빨라야 합니다.

그런데, 딥러닝 모델의 경우 특유의 거대한 구조 때문에 그 안에 많은 수의 가중치를 포함하고 있으며, 그만큼 가중합 및 활성 함수 연산을 더 많이 수행해야 합니다. 그래서, 딥러닝 모델에 대한 특별한 조치 없이, 일반적인 이미지 인식 분야에서 사용되는 딥러닝 모델을 결함 검사에 그대로 갖다 쓸 경우 검사 속도가 요구 수준에 도달하지 못하는 상황이 발생하게 됩니다.

이러한 문제를 해결하기 위한 가장 직관적인 방법은 결함 검사에 사용하는 컴퓨터의 사양을 업그레이드하는 것인데, 이 과정에서 추가적인 비용이 소요될 수밖에 없습니다. 그러나 대부분의 공장에서는 이러한 부분에서의 추가적인 비용 지출을 꺼려하는 것이 보통입니다.

이 또한, 주요 학계와 산업계에서 해결하고자 하는 주요 문제 중 하나입니다. 이들의 연구는 기존 모델을 가능한 한 많이 경량화하여, 기존의 성능을 저해하지 않도록 하면서 최소한의 컴퓨팅 리소스를 가지고 최대한 빠른 속도로 예측을 수행할 수 있도록 하는 데 초점이 맞춰져 있습니다.

결론

딥러닝이란, 본질적으로 머신러닝의 세부 방법론을 통칭하는 개념에 불과합니다. 즉, ‘퍼셉트론을 빌딩 블록으로 하여 쌓아올린, 심층 신경망을 러닝 모델로 사용하는 머신러닝 방법론’이 바로 딥러닝입니다. 오늘날 주로 사용되는 대표적인 딥러닝 모델에는 크게 완전 연결 신경망, 컨볼루션 신경망, 순환 신경망이 있으며, 각각이 주로 사용되는 분야가 뚜렷하게 정해져 있는 편입니다.

딥러닝의 최대 강점은, 요인 표현을 스스로 학습할 수 있는 능력이며, 이로 인해 요인 추출을 자동으로 수행한다는 것입니다. 이러한 경향은 심층 신경망의 은닉층의 개수를 늘릴수록(더 깊게 만들수록) 극대화됩니다. 그 결과, 기존에 어렵게 느껴졌던 머신러닝 문제들에 대한 해결 성능이 비약적으로 상승하였으며, 산업 속 제품의 자동화에 있어서 손쉽고 신속한 커스터마이징을 가능하게 하였습니다. 그러나, 딥러닝 모델은 충분한 학습을 위해 매우 많은 양의 데이터를 요구하고, 그 거대한 몸집 때문에 속도가 느린 편이며, 그와 동시에 높은 수준의 컴퓨팅 리소스를 요구합니다.

이러한 문제들 때문에, 다행스럽게도, 아직 인간이 기계 제국에 지배당할 날은 한참 멀었습니다.

한편 본 글에서는, 저번에도 그랬듯, 딥러닝 모델의 러닝 알고리즘에 대해서는 전혀 설명하지 않았습니다. 이를 이해하고자 하는 시점부터, 비로소 프로그래밍, 미적분학, 선형대수학, 통계학 등에 대한 기본적인 지식이 필요하기 때문입니다. 비록 딥러닝 모델의 러닝 알고리즘을 자세히 살펴보지 못하셨더라도, 본 글을 통해서 딥러닝의 개념과 종류, 강점/약점 등을 파악하셨다면, 추후에 딥러닝 혹은 AI 등과 관련된 내용을 추가로 받아들이고 이해하시는 데 충분히 도움이 될 것이라고 생각합니다.

저희 수아랩에서는, 위에서 언급한 실제 산업 현장에서의 현실적인 어려움에도 불구하고, 딥러닝이 제조업 분야에 적용되었을 때의 파급 효과를 여전히 높게 보고 있으며, 이러한 어려움을 극복하고자 다양한 연구를 진행하고 있습니다. *향후 글에서는, 수아랩에서 진행하고 있는 딥러닝 관련 연구 주제들에 대하여 하나씩 소개해 드리도록 하겠습니다.

References

Tags:

제품 지원 및 교육 신청

MyCognex 가입