1.2 딥러닝 이전: 머신 러닝의 간략한 역사

1. 딥러닝이란 무엇인가? | 목차 | 1.3 왜 딥러닝일까? 왜 지금일까?

 

딥러닝은 AI 역사에서 찾을 수 없을 만큼 대중에게 많은 관심과 업계의 투자를 받고 있습니다. 하지만 이것이 머신 러닝의 첫 번째 성공은 아닙니다. 오늘날 산업계에서 사용하는 대부분의 머신 러닝 알고리즘은 딥러닝 알고리즘이 아닙니다. 또 딥러닝이 모든 작업에 맞는 만능 도구는 아닙니다. 때로는 딥러닝을 적용하기에 데이터가 충분하지 않거나 다른 알고리즘이 문제를 더 잘 해결할 수도 있습니다. 만약 딥러닝이 처음 배우는 머신 러닝 알고리즘이라면, 딥러닝 해머를 들고서 모든 문제를 못처럼 보고 있는 자신을 발견할지도 모릅니다. 이런 함정에 빠지지 않기 위한 유일한 방법은 다른 방법들을 배우고 가능할 때 이런 기술을 연습하는 것입니다.

전통적인 머신 러닝 방법에 대한 자세한 설명은 이 책의 범위를 넘어섭니다. 하지만 이들을 간단하게 소개하고 지금까지의 역사적 배경을 설명하겠습니다. 이를 통해 딥러닝을 머신 러닝의 넓은 범주 안으로 인식하고 딥러닝이 어디서 왔는지 왜 중요한지 더 잘 이해하게 될 것입니다.

 

1.2.1 확률적 모델링

확률적 모델링probabilistic modeling은 통계학 이론을 데이터 분석에 응용한 것입니다. 초창기 머신 러닝 형태 중 하나고 요즘도 널리 사용됩니다. 가장 잘 알려진 알고리즘 중 하나는 나이브 베이즈Naive Bayes 알고리즘입니다.

나이브 베이즈는 입력 데이터의 특성이 모두 독립적이라고 가정하고 베이즈 정리Bayes’ theorem를 적용하는 머신 러닝 분류 알고리즘입니다. (강한 또는 ‘순진한’naive 가정입니다. 여기에서 이름이 유래되었습니다.) 이런 형태의 데이터 분석은 컴퓨터보다 앞서 있었기 때문에 첫 번째 컴퓨터가 등장하기 수십년 전에는 수작업으로 적용했습니다(거의 1950년대로 거슬러 올라갑니다). 베이즈 정리와 통계의 토대는 18세기까지 거슬러 올라갑니다. 이 정도가 나이브 베이즈 분류기를 사용하기 위해 알아야 할 전부입니다.

이와 밀접하게 연관된 모델이 로지스틱 회귀logistic regression입니다(줄여서 logreg라고 하겠습니다). 이 모델은 현대 머신 러닝의 “hello world”로 여겨집니다. 이름 때문에 혼동하지 마세요. logreg는 회귀regression 알고리즘이 아니라 분류classification 알고리즘입니다.11 나이브 베이즈와 매우 비슷하게 logreg는 컴퓨터보다 훨씬 오래 전부터 있었습니다. 하지만 간단하고 다목적으로 활용할 수 있어서 오늘날에도 여전히 유용합니다. 데이터 과학자가 분류 작업에 대한 감을 빠르게 얻기 위해 데이터셋에 적용할 첫 번째 알고리즘으로 선택하는 경우가 많습니다.

 

1.2.2 초창기 신경망

초창기 버전의 신경망은 이 책에서 다루는 최신 구조로 완전히 대체되었습니다. 하지만 딥러닝의 기원을 아는 것은 유익합니다. 신경망의 핵심 아이디어는 아주 일찍 1950년대에 작으나마 연구되었지만 본격적으로 시작되기까지는 수십 년이 걸렸습니다. 대규모 신경망을 훈련시킬 수 있는 효과적인 방법을 오랜 기간 동안 찾지 못했기 때문입니다. 1980년대 중반에 여러 사람들이 제각기 역전파 알고리즘을 재발견하고 신경망에 이를 적용하기 시작하면서 상황이 바뀌었습니다. 이 알고리즘은 경사 하강법 최적화를 사용하여 연쇄적으로 변수가 연결된 연산을 훈련하는 방법입니다(나중에 이 개념을 상세히 설명하겠습니다).

성공적인 첫 번째 신경망 애플리케이션은 1989년 벨 연구소Bell Labs에서 나왔습니다. 얀 르쿤Yann LeCun은 초창기 합성곱 신경망convolution neural network과 역전파를 연결하여 손글씨 숫자 이미지를 분류하는 문제에 적용했습니다. LeNet이라 부르는 이 신경망은 우편 봉투의 우편 번호 코드를 자동으로 읽기 위해 1990년대 미국 우편 서비스에 사용되었습니다.

 

1.2.3 커널 방법

초기 성공에 힘입어 1990년대에 신경망은 연구자들 사이에서 어느 정도 관심을 얻기 시작했지 만, 머신 러닝의 새로운 접근 방법인 커널 방법이 인기를 얻자 신경망은 빠르게 잊혔습니다. 커널 방법Kernel method은 분류 알고리즘의 한 종류를 말하며 그중 서포트 벡터 머신Support Vector Machine, SVM이 가장 유명합니다.12 현대적인 SVM의 공식은 1990년대 초 벨 연구소의 블라드미르 바프닉Vladimir Vapnik과 코리나 코르테스Corinna Cortes에 의해 개발되었고 1995년에 공개되었습니다.13 바프닉과 알렉세이 체르보넨키스Alexey Chervonenkis가 만든 오래된 선형 공식은 1963년에 공개되었습니다.14

SVM은 분류 문제를 해결하기 위해 2개의 다른 범주에 속한 데이터 포인트 그룹 사이에 좋은 결정 경계decision boundary(그림 1-10 참고)를 찾습니다. 결정 경계는 훈련 데이터를 2개의 범주에 대응하는 영역으로 나누는 직선이나 표면으로 생각할 수 있습니다. 새로운 데이터 포인트를 분류하려면 결정 경계 어느 쪽에 속하는지를 확인하기만 하면 됩니다.

043

그림 1-10 결정 경계

SVM이 결정 경계를 찾는 과정은 두 단계입니다.

  1. 결정 경계가 하나의 초평면hyperplane으로 표현될 수 있는 새로운 고차원 표현으로 데이터를 매핑합니다(그림 1-10과 같은 2차원 데이터라면 초평면은 직선이 됩니다).
  2. 초평면과 각 클래스의 가장 가까운 데이터 포인트 사이의 거리가 최대가 되는 최선의 결정 경계(하나의 분할 초평면)를 찾습니다. 이 단계를 마진 최대화maximizing the margin라고 부릅니다. 이렇게 함으로써 결정 경계가 훈련 데이터셋 이외의 새로운 샘플에 잘 일반화되도록 도와줍니다.

분류 문제를 간단하게 만들어 주기 위해 데이터를 고차원 표현으로 매핑하는 기법이 이론상으로 는 좋아 보이지만 실제로는 컴퓨터로 구현하기 어려운 경우가 많습니다. 그래서 커널 기법kernel trick이 등장했습니다(커널 방법의 핵심 아이디어로 여기에서 이름을 따왔습니다). 요지는 다음과 같습니다. 새롭게 표현된 공간에서 좋은 결정 초평면을 찾기 위해 새로운 공간에 대응하는 데이터 포인트의 좌표를 실제로 구할 필요가 없습니다. 새로운 공간에서의 두 데이터 포인트 사이의 거리를 계산할 수만 있으면 됩니다. 커널 함수kernel function를 사용하면 이를 효율적으로 계산할 수 있습니다. 커널 함수는 원본 공간에 있는 두 데이터 포인트를 명시적으로 새로운 표현으로 변환하지 않고 타깃 표현 공간에 위치했을 때의 거리를 매핑해 주는 계산 가능한 연산입니다. 커널 함수는 일반적으로 데이터로부터 학습되지 않고 직접 만들어야 합니다. SVM에서 학습되는 것은 분할 초평면뿐입니다.

SVM이 개발되었을 때 간단한 분류 문제에 대해 최고 수준의 성능을 달성했고 광범위한 이론으로 무장된 몇 안 되는 머신 러닝 방법 중 하나가 되었습니다. 또 수학적으로 깊게 분석하기 용이하여 이론을 이해하고 설명하기 쉽습니다. 이런 유용한 특징 때문에 SVM이 오랫동안 머신 러닝 분야에서 매우 큰 인기를 끌었습니다.

하지만 SVM은 대용량의 데이터셋에 확장되기 어렵고 이미지 분류 같은 지각에 관련된 문제에서 좋은 성능을 내지 못했습니다. SVM은 얕은 학습 방법이기 때문에 지각에 관련된 문제에 SVM을 적용하려면 먼저 수동으로 유용한 표현을 추출해야 하는데(이런 단계를 특성 공학feature engineering이라고 합니다) 이는 매우 어렵고 불안정합니다.

 

1.2.4 결정 트리, 랜덤 포레스트, 그래디언트 부스팅 머신

결정 트리decision tree는 플로차트flowchart 같은 구조를 가지며 입력 데이터 포인트를 분류하거나 주어진 입력에 대해 출력 값을 예측합니다(그림 1-11 참고). 결정 트리는 시각화하고 이해하기 쉽습니다. 데이터에서 학습되는 결정 트리는 2000년대부터 연구자들에게 크게 관심을 받기 시작했고 2010년까지는 커널 방법보다 선호하곤 했습니다.

044

그림 1-11 결정 트리: 학습된 파라미터는 데이터에 관한 질문으로, 예를 들어 “데이터에 있는 두 번째 특성이 3.5보다 큰가?” 같은 질문이 될 수 있다

특히 랜덤 포레스트Random Forest 알고리즘은 결정 트리 학습에 기초한 것으로 안정적이고 실전에서 유용합니다. 서로 다른 결정 트리를 많이 만들고 그 출력을 앙상블하는 방법을 사용합니다. 랜덤 포레스트는 다양한 문제에 적용할 수 있습니다. 얕은 학습에 해당하는 어떤 작업에서도 거의 항상 두 번째로 가장 좋은 알고리즘입니다. 잘 알려진 머신 러닝 경연 웹 사이트인 캐글Kaggle(http://kaggle.com)이 2010년에 시작되었을 때부터 랜덤 포레스트가 가장 선호하는 알고리즘이 되었습니다. 2014년에 그래디언트 부스팅 머신gradient boosting machine이 그 뒤를 이어받았습니다. 랜덤 포레스트와 아주 비슷하게 그래디언트 부스팅 머신은 약한 예측 모델인 결정 트리를 앙상블하는 것을 기반으로 하는 머신 러닝 기법입니다. 이 알고리즘은 이전 모델에서 놓친 데이터 포인트를 보완하는 새로운 모델을 반복적으로 훈련함으로써 머신 러닝 모델을 향상하는 방법인 그래디언트 부스팅gradient boosting을 사용합니다. 결정 트리에 그래디언트 부스팅 기법을 적용하면 비슷한 성질을 가지면서도 대부분의 경우에 랜덤 포레스트의 성능을 능가하는 모델을 만듭니다. 이 알고리즘이 오늘날 지각에 관련되지 않은 데이터를 다루기 위한 알고리즘 중 최고는 아니지만 가장 뛰어납니다. 딥러닝을 제외하고 캐글 경연 대회에서 가장 많이 사용되는 기법입니다.

 

1.2.5 다시 신경망으로

2010년경에 신경망은 대부분 과학 커뮤니티에서 관심을 받지 못했지만, 여전히 신경망에 대해 연구하고 있던 일부 사람들이 중요한 성과를 내기 시작했습니다. 토론토 대학의 제프리 힌튼Geoffrey Hinton, 몬트리올 대학의 요슈아 벤지오Yoshua Bengio, 뉴욕 대학의 얀 르쿤, 스위스의 IDSIA입니다.

2011년에 IDSIA의 댄 크리슨Dan Ciresan이 GPU로 훈련된 심층 신경망deep neural network으로 학술 이미지 분류 대회에서 우승한 것이 시작이었습니다. 이것이 현대적인 딥러닝의 첫 번째 성공입니다. 그리고 이어서 2012년 대규모 이미지 분류 대회인 ImageNet에 힌튼 팀이 등장하면서 분수령이 되었습니다. ImageNet 대회는 그 당시 아주 어려운 문제였습니다. 1,400만 개의 이미지를 훈련시킨 후 고해상도 컬러 이미지를 1,000개의 범주로 분류해야 합니다. 2011년에 전통적인 컴퓨터 비전 방식을 사용한 우승 모델의 상위 5개 예측이 타깃 클래스를 맞출 정확도는 74.3%였습니다. 그런데 2012년 제프리 힌튼이 조언자로 참여하고 알렉스 크리체브스키Alex Krizhevsky가 이끄는 팀이 상위 5개 예측에 대한 정확도 83.6%의 놀라운 성과를 달성했습니다. 이때부터 매년 이 대회는 심층 합성곱 신경망deep convolutional neural network, ConvNet이 우승을 차지했습니다. 2015년의 우승자는 96.4%의 정확도를 달성했고 ImageNet의 분류 문제는 완전히 해결된 것으로 간주되었습니다.

2012년부터 심층 합성곱 신경망이 모든 컴퓨터 비전 작업의 주력 알고리즘이 되었습니다. 이 알고리즘은 조금 더 일반적이며, 지각에 관한 모든 문제에 적용할 수 있습니다. 2015년과 2016년에 열린 주요 컴퓨터 비전 콘퍼런스에서 어떤 형태로든 컨브넷ConvNet을 포함하지 않은 발표를 찾는 것은 거의 불가능할 정도입니다. 동시에 딥러닝은 자연어 처리natural language processing 같은 다른 종류의 문제에도 적용되었습니다. 다양한 애플리케이션에서 SVM과 결정 트리를 완전히 대체하고 있습니다. 예를 들어 지난 몇 년간 유럽 입자 물리 연구소European Organization for Nuclear Research, CERN는 대형 강입자 충돌기Large Hadron Collider, LHC에 있는 ATLAS 감지기에서 얻은 입자 데이터를 분석하기 위해 결정 트리 기반의 알고리즘을 사용했습니다. 하지만 높은 성능과 훈련 데이터셋에서의 손쉬운 훈련을 고려하여 CERN의 최근 연구는 케라스Keras 기반의 심층 신경망을 적용하기 시작했습니다.15

 

1.2.6 딥러닝의 특징

딥러닝이 이렇게 빠르게 확산된 주된 이유는 많은 문제에서 더 좋은 성능을 내고 있기 때문입니다. 하지만 그것뿐만이 아닙니다. 딥러닝은 머신 러닝에서 가장 중요한 단계인 특성 공학을 완전히 자동화하기 때문에 문제를 더 해결하기 쉽게 만들어 줍니다.

얕은 학습인 이전의 머신 러닝 기법은 입력 데이터를 고차원 비선형 투영(SVM)이나 결정 트리 같은 간단한 변환을 통해 하나 또는 2개의 연속된 표현 공간으로만 변환합니다. 하지만 복잡한 문제에 필요한 잘 정제된 표현은 일반적으로 이런 방식으로 얻지 못합니다. 이런 머신 러닝 방법들로 처리하기 용이하게 사람이 초기 입력 데이터를 여러 방식으로 변환해야 합니다. 즉 데이터의 좋은 표현을 수동으로 만들어야 합니다. 이를 특성 공학feature engineering이라고 합니다. 그에 반해 딥러닝은 이 단계를 완전히 자동화합니다. 딥러닝을 사용하면 특성을 직접 찾는 대신 한 번에 모든 특성을 학습할 수 있습니다. 머신 러닝 작업 흐름을 매우 단순화시켜 주므로 고도의 다단계 작업 과정을 하나의 간단한 엔드-투-엔드end-to-end 딥러닝 모델로 대체할 수 있습니다.

이슈의 핵심이 여러 개의 연속된 표현 층을 가지는 것이라면, 얕은 학습 방법도 딥러닝의 효과를 모사하기 위해 반복적으로 적용할 수 있지 않을까요? 실제로 얕은 학습 방법을 연속적으로 적용하면 각 층의 효과는 빠르게 줄어듭니다. 3개의 층을 가진 모델에서 최적의 첫 번째 표현 층은 하나의 층이나 2개의 층을 가진 모델에서 최적의 첫 번째 층과는 달라야 합니다.16 딥러닝의 변환 능력은 모델이 모든 표현 층을 순차적이 아니라(즉 탐욕적greedily 방법이 아니라) 동시에 공동으로 학습하게 만듭니다. 이런 공동 특성 학습 능력 덕택에 모델이 내부 특성 하나에 맞추어질 때마다 이에 의존하는 다른 모든 특성이 사람이 개입하지 않아도 자동으로 변화에 적응하게 됩니다. 모든 학습은 하나의 피드백 신호에 의해 시작됩니다. 즉 모델의 모든 변화는 최종 목표를 따라가게 됩니다. 이 방식은 모델을 많은 중간 영역(층)으로 나누어 복잡하고 추상화된 표현을 학습시킬 수 있기 때문에 얕은 학습 모델을 탐욕적으로 쌓은 것보다 훨씬 강력합니다. 여기에서 각 층은 이전 층에 의존하지 않는 단순한 변환을 수행합니다.

딥러닝이 데이터로부터 학습하는 방법에는 두 가지 중요한 특징이 있습니다. 층을 거치면서 점진적으로 더 복잡한 표현이 만들어진다는 것과 이런 점진적인 중간 표현이 공동으로 학습된다는 사실입니다. 각 층은 상위 층과 하위 층의 표현이 변함에 따라서 함께 바뀝니다. 이 2개의 특징이 이전의 머신 러닝 접근 방법보다 딥러닝이 훨씬 성공하게 된 이유입니다.

 

1.2.7 머신 러닝의 최근 동향

요즘 머신 러닝 알고리즘과 도구의 동향에 대한 정보를 얻는 좋은 방법은 캐글의 머신 러닝 경연을 살펴보는 것입니다. 매우 치열하게 경쟁하고 (어떤 대회는 수천 명이 참여하고 상금이 높습니다) 다양한 종류의 머신 러닝 문제를 다루고 있기 때문에 캐글은 좋은 것과 나쁜 것을 평가할 수 있는 현실적인 잣대가 됩니다. “어떤 종류의 알고리즘이 경연 대회에서 우승하는 데 도움이 되나요? 상위에 랭크되어 있는 참가자들은 어떤 도구를 사용하나요?”

2016년과 2017년 캐글에는 그래디언트 부스팅 머신과 딥러닝의 두 가지 접근 방법이 주류를 이루었습니다. 특히 그래디언트 부스팅은 구조적인 데이터인 경우에 사용되고, 딥러닝은 이미지 분류 같은 지각에 관한 문제에 사용됩니다. 전자의 경우 거의 항상 XGBoost 라이브러리를 사용합니다. 이 라이브러리는 데이터 과학 분야에서 가장 인기 있는 두 언어인 파이썬Python과 R을 지원합니다. 딥러닝을 사용하는 대부분의 참가자는 사용하기 쉽고, 유연하며 파이썬을 지원하는 케라스 라이브러리를 사용합니다.

오늘날 머신 러닝을 성공적으로 적용하기 위해 알아야 할 두 가지 기술은 얕은 학습 문제를 위한 그래디언트 부스팅 머신과 지각에 관한 문제를 위한 딥러닝입니다. 기술적으로 보면 캐글 경연 대회에서 주로 사용되는 2개의 라이브러리인 XGBoost와 케라스를 배울 필요가 있다는 뜻입니다. 이 책을 손에 들었으니 여러분은 이미 한 발 가까이 다가섰습니다.

 


 

11 역주 회귀는 연속적인 숫자(실수)를 예측하는 것이고 분류는 여러 클래스class 중 하나를 예측하는 것입니다. 3.6절에 주택 가격을 예측하 는 회귀 예제를 제외하고 이 책의 나머지는 대부분 분류에 대한 예제입니다.
12 역주 SVM은 분류뿐만 아니라 회귀 문제에도 사용할 수 있습니다.
13  Vladimir Vapnik and Corinna Cortes, “Support-Vector Networks,” Machine Learning 20, no. 3 (1995): 273–297.
14.  Vladimir Vapnik and Alexey Chervonenkis, “A Note on One Class of Perceptrons,” Automation and Remote Control 25 (1964).
15 역주 원문에서는 “CERN이 결국 케라스 기반의 심층 신경망으로 바꾸었다.”라고 단정적으로 표현했지만, 원서의 포럼에 올린 실제 LHC 연구자의 의견을 참고하여 번역했습니다. LHC에서 머신 러닝을 사용하는 예를 엿볼 수 있는 제임스 비컴(James Beacham) 박사의 멋진 테드 강연(https://goo.gl/WQ6Hn5)과 CERN이 주최한 입자 탐지(Particle Tracking) 캐글 경연 대회(https://bit.ly/2w3ocuK)를 참고하세요.
16 역주 얕은 학습 방법은 연속된 표현 층을 독립적으로 학습하기 때문에 전체 층의 개수와 상관없이 항상 동일하게 첫 번째 층이 동일한 양의 정보를 학습하므로 이후에 연속되는 층은 전체 모델에 기여하는 바가 점차 줄어듭니다.

 

1. 딥러닝이란 무엇인가? | 목차 | 1.3 왜 딥러닝일까? 왜 지금일까?

 

이 글은 도서출판 길벗에서 출간한  “케라스 창시자에게 배우는 딥러닝“의 1장~3장입니다. 이 책의 저작권은 (주)도서출판 길벗에 있으므로 무단 복제 및 무단 전제를 금합니다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.