케라스 창시자에게 배우는 딥러닝/ 딥러닝이란 무엇인가?

인공 지능과 머신 러닝, 딥러닝

인공 지능

  • 인공 지능은 1950년대 초기 컴퓨터 과학 선각자들이 ‘컴퓨터가 생각할 수 있는가?’라는 질문을 하면서 시작되었음
  • 이 분야에 대한 간결한 정의는 ‘보통의 사람이 수행하는 지능적인 작업을 자동화하기 위한 연구활동’이다.
    • AI는 머신 러닝과 딥러닝을 포괄하는 종합적인 분야로 학습 과정이 전혀 없는 다른 방법도 많이 포함된다.
  • 오랜 기간 많은 전문가들이 프로그래머들이 명시적인 규칙을 충분히 많이 만들어 지식을 다루면 인간 수준의 인공 지능을 만들 수 있다고 믿었는데, 이런 접근 방법을 심볼릭 AI(Symbolic AI)라고 하며, 1950-1980년대까지 AI 분야의 지배적인 패러다임이었다.
    • 1980년대 전문가 시스템(expert system)의 호황으로 그 인기가 절정에 달했다.
  • 심볼릭 AI가 체스 처럼 잘 정의된 논리적인 문제를 푸는데는 적합하다는 것이 증명되었지만, 이미지 분류, 음성 인식, 언어 번역 같은 더 복잡하고 불분명한 문제를 해결하기 위한 명확한 규칙을 찾는 것은 아주 어려운 일이었다. 이런 심볼릭 AI를 대체하기 위한 새로운 방법이 바로 머신 러닝이다.

머신 러닝

  • 최초의 기계적 범용 컴퓨터인 해석기관(Analytical Engine)을 발명한 사람은 찰스 배비지(Charles Babbage)였다.
    • 범용 컴퓨터란 개념이 정의되지 않은 때였기 때문에 해석 기관은 해석학(mathematical analysis) 분야의 계산을 자동화 하기 위해 기계적인 연산을 사용하는 방법이었을 뿐이었다. 그래서 이름이 해석 기관이다.
  • 찰스 배비지의 친구자이 동료였던 –더불어 최초의 프로그래머로 인정받는– 에이다 러브레이스(Ada Lovelace)는 이 발명에 대해 다음과 같이 언급했다.
    • “해석 기관이 무언가를 새롭게 고안해 내는 것은 아니다. 우리가 어떤 것을 작동시키기 위해 어떻게 명령할지 알고 있다면 이 장치는 무엇이든 할 수 있다. … 이런 능력은 우리가 이미 알고 있는 것을 유용하게 사용할 수 있도록 도와줄 것이다”
  • AI의 선구자인 앨런 튜링(Alan Turing)은 그의 기념비적인 논문 “Computing Machinery and Intelligence”에서 ‘러브레이스의 반론(Lady Lovelace’s objection)’으로 이 논평을 인용했다.
    • 튜링은 에이다 러브레이스의 말을 인용했지만 범용 컴퓨터가 학습과 창의력을 가질 수 있는지에 대해 가능한 일이라고 결론을 냈다.
  • 머신 러닝은 이런 질문에서 시작된다.
    • 우리가 어떤 것을 작동시키기 위해 ‘어떻게 명령할지 알고 있는 것’ 이상을 컴퓨터가 처리하는 것이 가능한가?
    • 특정 작업을 수행하는 법을 스스로 학습할 수 있는가?
    • 컴퓨터가 우리를 놀라게 할 수 있을까?
    • 프로그래머가 직접 만든 데이터 처리 규칙 대신 컴퓨터가 데이터를 보고 자동으로 이런 규칙을 학습할 수 있을까?
  • 이 질문은 새로운 프로그래밍 패러다임의 장을 열었다. 전통적인 프로그래밍인 심볼릭 AI의 패러다임에서는 규칙과 이 규칙에 따라 처리될 데이터를 입력하면 해답이 출력된다.
    • 머신 러닝에서는 데이터와 이 데이터로부터 기대되는 해답을 입력하면 규칙이 출력된다. 이 규칙을 새로운 데이터에 적용하여 창의적인 답을 만들 수 있다.

  • 머신 러닝 시스템은 명시적으로 프로그램 되는 것이 아니라 훈련(training) 된다.
    • 작업과 관련 있는 많은 샘플을 제공하면 이 데이터에서 통계적 구조를 찾아 그 작업을 자동화하기 위한 규칙을 만들어낸다.
  • 머신 러닝은 1990년대 들어서야 각광을 받기 시작했지만, 고성능 하드웨어와 대량의 데이터셋이 가능해지면서 AI에서 가장 인기 있고 성공적인 분야가 되었다.
  • 머신 러닝은 수리 통계와 밀접하게 관련되어 있지만 통계와 다른 점이 몇 가지 있다.
    • 먼저 머신 러닝은 통계와 달리 보통 대량의 복잡한 데이터셋을 다루기 때문에 베이지안 분석(Bayesian analysis) 같은 전통적인 통계 분석 방법은 현실적으로 적용하기 어렵다.
    • 이런 이유로 머신 러닝, 특히 딥러닝은 수학적 이론이 비교적 부족하고 엔지니어링 지향적이다.
    • 이런 실천적인 접근 방식 때문에 이론보다 경험을 바탕으로 아이디어가 증명되는 경우가 많다.

데이터에서 표현을 학습하기

  • 머신 러닝은 샘플과 기댓값이 주어졌을 때 데이터 처리 작업을 위한 실행 규칙을 찾는 것이다. 머신 러닝을 하기 위해서는 세 가지가 필요하다.
    • 입력 데이터 포인트 –음성 파일, 이미지 파일 등
    • 기대 출력 –강아지, 고양이 등
    • 알고리즘의 성능을 측정하는 방법 –알고리즘의 현재 출력과 기대 출력 간의 차이를 결정하기 위해 필요. 측정 값은 알고리즘의 작동 방식을 교정하기 위한 신호로 다시 피드백되는데, 이런 수정 단계를 학습(learning)이라고 한다.
  • 머신 러닝 모델은 입력 데이터를 의미 있는 출력으로 변환한다. 이것이 알고 있는 입력과 출력의 샘플로부터 학습하는 과정이다. 그렇기 때문에 머신 러닝과 딥러닝의 핵심 문제는 의미있는 데이터로의 변환이다.
    • 다시 말해 입력 데이터를 기반으로 기대 출력에 가깝게 만드는 유용한 표현(representation)을 학습하는 것이다.
    • 여기서 표현이란 데이터를 인코딩(encoding)하거나 묘사하기 위해 데이터를 바라보는 다른 방법이다. 예컨대 컬러 이미지는 RGB, HSV 포맷으로 인코딩될 수 있는데, 이들은 같은 데이터의 다른 표현이다.
    • 어떤 표현으로는 해결하기 힘든 문제가 다른 표현으로는 쉽게 해결될 수 있다. 예컨대 이미지에서 빨간색 픽셀을 선택하는 것은 RGB 포맷이 쉽고, 이미지의 채도를 낮추는 것은 HSV 포맷이 더 쉽다.
    • 머신 러닝 모델은 입력 데이터에서 적절한 표현을 찾는 것이다. 이런 데이터 변환은 분류 작업 같은 문제를 더 쉽게 해결할 수 있도록 만들어 준다.
  • 예들 들어보자. x, y축이 있고 이 x, y 좌표 시스템으로 표현된 데이터 포인트가 아래 그림과 같다고 하자.

  • 위 그림에는 흰색점과 빨간색점이 존재하는데, 포인트의 좌표 (x, y)를 입력으로 받고 그 포인트가 빨간색인지 흰색인지를 출력하는 알고리즘을 개발한다고 하자. 이 경우는 다음과 같이 요약할 수 있다.
    • 입력은 점의 좌표이다.
    • 기대 출력은 점의 색깔이다.
    • 알고리즘의 성능을 측정하는 방법은 정확히 분류한 포인트의 비율을 사용하여 알고리즘의 성능을 측정한다.
  • 여기서 우리가 원하는 것은 흰색점과 빨간색점을 완벽하게 구분하는 새로운 데이터표현이다. 사용할 수 있는 변환 방법 중 하나는 아래 그림과 같은 좌표 변환이다.

  • 포인트에 대한 새로운 좌표는 새로운 데이터 표현이라고 할 수 있다. 그리고 좋은 표현을 찾았다.
    • 이 표현을 사용하면 색깔 분류 문제를 “x > 0 인 것은 빨간색 점이다”와 같은 간단한 규칙으로 나타낼 수 있다.
    • 기본적으로 이 분류 문제를 해결한 것은 새로운 표현이다.
  • 이 경우 우리가 직접 좌표 변환을 정했는데, 만약 시스템적으로 가능한 여러 좌표 변환을 찾아서 포인트 중 몇 퍼센트가 정확히 분류되었는지를 피드백으로 사용한다면, 바로 머신 러닝을 하고 있는 것이다.
    • 이처럼 머신 러닝에서의 학습(Learning)이란 더 나은 표현을 찾는 자동화된 과정이다.
  • 모든 머신 러닝 알고리즘은 주어진 작업을 위해 데이터를 더 유용한 표현으로 바꾸는 이런 변환을 자동으로 찾는다.
    • 이 연산은 앞서 본 좌표 변환일 수도 있고 또는 선형 투영(linear projection), 이동(translation), 비선형 연산 등이 될 수 있다.
    • 머신 러닝 알고리즘은 일반적으로 이런 변환을 찾기 위한 창의력은 없다. 가설 공간(hypothesis space)이라 부르는 미리 정의된 연산의 모음들을 자세히 조사하는 것 뿐이다.
  • 기술적으로 말하면 머신 러닝은 가능성 있는 공간을 사전에 정의하고 피드백 신호의 도움을 받아 입력 데이터에 대한 유용한 변환을 찾는 것이다.
    • 이 간단한 아이디어가 음성 인식에서부터 자율 주행 자동차까지 아주 다양한 분야에서 지능에 관한 문제를 해결한다.

딥러닝에서 ‘딥’이란 무엇일까?

  • 딥러닝은 머신 러닝의 특정한 한 분야로서 연속된 층(layer)에서 점진적으로 의미 있는 표현을 배우는데 강점이 있으며, 데이터로부터 표현을 학습하는 새로운 방식이다.
    • 딥러닝의 딥(deep)이란 단어는 연속된 층으로 표현을 학습한다는 개념을 나타낸다.
    • 데이터로부터 모델을 만드는데 얼마나 많은 층을 사용했는지가 그 모델의 깊이가 된다.
    • 이 분야에 대한 적절한 다른 이름은 층 기반 표현 학습(layered representations learning) 또는 계층적 표현 학습(hierarchical representations learning)이 될 수 있다.
    • 최근 딥러닝 모델은 표현 학습을 위해 수십 개, 수백 개의 연속된 층을 갖고 있다. 이 층들을 모두 훈련 데이터에 노출해서 자동으로 학습시킨다.
    • 한편 다른 머신 러닝 접근 방법은 1-2개의 데이터 표현 층을 학습하는 경향이 있다. 그래서 이런 방식을 얕은 학습(shallow learning)이라 부르기도 한다.
  • 딥러닝에서는 기본 층을 겹겹이 쌓아 올려 구성한 신경망(neural network)이라는 모델을 사용하여 표현 층을 학습한다.
    • 신경망이란 단어는 신경 생물학의 용어로 딥러닝의 일부 핵심 개념이 뇌 구조를 이해하는 것에서 영감을 얻어 개발된 부분이 있지만, 딥러닝 모델이 뇌를 모델링한 것은 아니다.
    • 최근의 딥러닝 모델이 사용하는 학습 메커니즘과 유사한 것을 뇌가 가지고 있다는 근거는 없다. 대중 과학 저널에서 딥러닝이 뇌처럼 작동한다거나 뇌를 모방하여 만들었다고 주장하는 그은 사실이 아니다.
    • 딥러닝은 그냥 데이터로부터 표현을 학습하는 수학 모델일 뿐이다.
  • 딥러닝 알고리즘으로 학습된 표현은 어떻게 나타나는지 예를 들어보자. 몇 개의 층으로 이루어진 네트워크가 이미지 안의 숫자를 인식하기 위해 이미지를 어떻게 변환하는지 살펴보자.

  • 아래 그림에서 볼 수 있듯 최종 출력에 대해 점점 더 많은 정보를 가지지만 원본 이미지와는 점점 더 다른 표현으로 숫자 이미지가 변환된다.
    • 심층 신경망을 정보가 연속된 필터(filter)를 통과하면서 순도 높게 정제되는 다단계 정보 추출 작업으로 생각할 수 있다.

  • 바로 이것이 딥러닝이다. 기술적으로는 데이터 표현을 학습하기 위한 다단계 처리 방식을 말한다.

그림 3개로 딥러닝의 작동 원리 이해하기

  • 머신 러닝이 많은 입력과 타깃(target)의 샘플을 관찰하면서 입력을 타깃에 매핑(mapping) 하는 것임을 알았다.
    • 심층 신경망은 이런 입력-타깃 매핑을 간단한 데이터 변환기(층)를 많이 연결하여 수행한다는 것도 배웠다. 이런 데이터 변환은 샘플에 노출됨으로써 학습이 이루어진다.
  • 층에서 입력 데이터가 처리되는 상세 내용은 일련의 숫자로 이루어진 층의 가중치(weight)에 저장되어 있다.
    • 기술적으로 말하면 어떤 층에서 일어나는 변환은 그 층의 가중치를 파라미터(parameter)로 가지는 함수로 표현된다. (이따금 가중치를 그 층의 파라미터라고도 부른다)
    • 이런 맥락으로 보면 학습은 주어진 입력을 정확한 타깃에 매핑하기 위해 신경마으이 모든 층에 있는 가중치 값을 찾는 것을 의미한다.
    • 하지만 어떤 심층 신경망은 수천만 개의 파라미터를 가지기도 한다.
    • 이런 경우 모든 파라미터의 정확한 값을 찾는 것은 어려운 일로 보인다. 파라미터 하나의 값을 바꾸면 다른 모든 파라미터에 영향을 끼치기 때문이다.

  • 어떤 것을 조정하려면 먼저 관찰해야 한다. 신경망의 출력을 제어하려면 출력이 기대하는 것보다 얼마나 벗어났는지를 측정해야 한다.
    • 이는 신경망의 손실 함수(loss function) 또는 목적 함수(objective function)가 담당하는 일이다.
    • 신경망이 한 샘플에 대해 얼마나 잘 예측했는지 측정하기 위해 손실 함수가 신경망의 예측과 진짜 타깃의 차이를 점수로 계산한다. (아래 그림 참고)

  • 기본적인 딥러닝 방식은 이 점수를 피드백 신호로 사용하여 현재 샘플의 손실 점수가 감소되는 방향으로 가중치 값을 조금씩 수정하는 것이다.
    • 이런 수렴 과정은 딥러닝의 핵심 알고리즘인 역전파(Backpropagation) 알고리즘을 구현한 옵티마이저(optimizer)가 담당한다.

  • 초기에는 네트워크의 가중치가 랜덤한 값으로 할당되므로 랜덤한 변환을 연속적으로 수행한다.
    • 자연스럽게 출력은 기대한 것과 멀어지고 손실 점수가 높을 것이지만 네트워크가 모든 샘플을 처리하면서 가중치가 조금씩 올바른 방향으로 조정되고 손실 점수가 감소한다.
    • 이를 훈련 반복(training loop)이라고 하며, 충분한 횟수만큼 반복하면 손실 함수를 최소화하는 가중치 값을 산출한다.
    • 최소한의 손실을 내는 네트워크가 타깃에 가능한 가장 가까운 출력을 만든느 모델이 된다.

지금까지 딥러닝의 성과

  • 딥러닝은 머신 러닝의 오래된 하위 분야지만 2010년 초가 되서야 유명해졌다. 이때부터 몇 년 동안 이 분야에서 일어난 혁신은 결코 작지 않다.
    • 기계가 오랫동안 해결하기 어려웠던 시각과 청각 같은 지각의 문제에서 괄목할만한 성과를 냈기 때문이다.
    • (이하 성과 사례 생략)

단기간의 과대 선전을 믿지 말자

  • 딥러닝이 최근 몇 년간 놀라운 성과를 냈지만, 사람들이 향후 10년 안에 기대하는 성과는 가능한 것보다 훨씬 높다.
    • 자율 주행 같은 몇 가지 애플리케이션은 이미 가까이 다가왔지만, 신뢰할 만한 대화 시스템이나 사람 수준의 기계 번역 그리고 사람 수준의 자연어 이해처럼 더 많은 것이 오랫동안 어려운 문제로 남아 있을 것 같다.
    • 특히 사람 수준의 일반 지능(general intelligence)에 관한 이야기는 너무 심각하게 다루지 않는 것이 좋다.
  • 과거에 AI는 장미빛 전망 뒤에 이어진 실망과 회의의 사이클을 두 번이나 경험했다.
  • 첫번째는 1960년대 심볼릭 AI였는데, 심볼릭 AI 방법에 관한 가장 유명한 개척자이지 지지자 중 한 명인 마빈 민스키(Marvin Minsky)는 1967년에 “이번 세대 안에 … ‘인공 지능’을 만드는 문제는 거의 해결될 것이다”라고 주장했다.
    • 몇 년 후 이런 높은 기대가 구체화되지 못하자 연구자들과 정부 자금은 투자를 줄였고 첫 번째 AI 겨울이 시작되었다. (이는 냉전이 절정에 다다른 후에 나타난 핵 겨울(nuclear winter)에 대한 비유이다)
  • 1980년대 심볼릭 AI의 새로운 버전인 전문가 시스템(expert system)이 큰 기업들 사이에 인기를 끌기 시작해서 전 세계 회사들이 전문가 시스템을 구축하기 위해 내부에 AI 부서를 꾸리기도 했다.
    • 1990년대 초기 이 시스템은 유지 비용이 비싸고 확장하기 어려우며 제한된 범위를 가진다는 것이 증명되고 관심은 사그라들었다. 이로 인해 두 번째 AI겨울이 시작되었다.

AI에 대한 전망

  • AI에 대한 단기간의 기대는 비현실적일지 모르지만 장기간의 전망은 매우 밝다.
    • (이하 설명 생략)

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

확률적 모델링

  • 확률적 모델링(probabilistic modeling)은 통계학 이론을 데이터 분석에 응요한 것으로 초기 머신 러닝 형태 중 하나고 요즘도 널리 사용된다. 가장 잘 알려진 알고리즘 중 하나는 나이브 베이즈(Naive Bayes) 알고리즘이다.
  • 나이브 베이즈는 입력 데이터의 특성이 모두 독립적이라고 가정하고 베이즈 정리를 적용하는 머신 러닝 분류 알고리즘이다.
    • 이런 형태의 데이터 분석은 컴퓨터 보다 먼저 있었기 때문에 컴퓨터가 등장하기 전에는 수작업으로 적용했다. (거의 1950년대로 거슬러 올라간다)
    • 베이즈 정리와 통계의 토대는 18세기까지 올라간다.
  • 이와 밀접하게 연관된 모델이 로지스틱 회귀(logistic regression)인데, 이 모델은 현대 머신 러닝의 “hello world”로 여겨진다.
    • 이름 때문에 헷갈리지만 로지스틱 회귀는 회귀(regression) 알고리즘이 아니라 분류(classification) 알고리즘이다.
    • 나이브 베이즈와 비슷하게 로지스틱 회귀도 컴퓨터 보다 훨씬 오래 전에 있었다.
    • 하지만 간단하고 다목적으로 활용할 수 있어서 오늘날에도 유용하다.
    • 데이터 과학자가 분류 작업에 대한 감을 빠르게 얻기 위해 데이터셋에 적용할 첫 번째 알고리즘으로 선택하는 경우가 많다.

초창기 신경망

  • 초창기 버전의 신경망은 이 책에서 다루는 최신 구조로 완전히 대체되었다.
    • 신경망의 핵심 아이디어는 1950년대 연구 되었으나 본격적으로 시작되기까지는 수십 년이 걸렸다.
    • 대규모 신경망을 훈련시킬 수 있는 효과적인 방법을 오랜 기간 동안 찾지 못했기 때문이다.
  • 1980년대 중반에 여러 사람들이 제각기 역전파 알고리즘을 재발견하고 신경망에 적용하기 시작하면서 상황이 바뀌었다.
    • 이 알고리즘은 경사 하강법 최적화를 사용하여 연쇄적으로 변수가 연결된 연산을 훈련하는 방법이다.
  • 성공적인 첫 번째 신경망 애플리케이션은 1989년 벨 연구소에서 나왔다.
    • 얀 르쿤(Yann LeCun)은 초창기 합성곱 신경망(convolution nerual network)과 역전파를 연결하여 손글씨 숫자 이미지를 분류하는 문제에 적용했다.
    • LaNet 이라 부르는 이 신경망은 우편 봉투의 우편 번호 코드를 자동으로 읽기 위해 1990년대 미국 우편 서비스에 사용 되었다.

커널 방법

  • 초기 성공에 힘입어 1990년대 신경망은 연구자들 사이에 관심을 얻기 시작했지만 머신 러닝의 새로운 접근 방법인 커널 방법이 인기를 얻자 신경망은 빠르게 잊혀졌다.
  • 커널 방법(Kernel method)는 분류 알고리즘의 한 종류이며, 그중 서포트 벡터 머신(Support Vector Machine, SVM)이 가장 유명하다.
    • 현대적인 SVM의 공식은 1990년대 초 벨 연구소의 블라드미르 바프닉(Vladmir Vapnik)과 코리나 코르테스(Corinna Cortes)에 의해 개발되었고 1995년에 공개되었다.
    • 바프닉과 알렉세이 체르보넨키스(Alexey Chervonenkis)가 만든 오래된 선형 공식은 1963년에 공개되었다.
  • SVM은 분류 문제를 해결하기 위해 2개의 다른 범주에 속한 데이터 포인트 그룹 사이에 좋은 결정 경계(decision boundary)를 찾는다.
    • 결정 경계는 훈련 데이터를 2개의 범주에 대응하는 영역으로 나누는 직선이나 표면으로 생각할 수 있다.
    • 새로운 데이터 포인트를 분류하려면 결정 경계 어느 쪽에 속하는지를 확인하기만 하면 된다.

  • SVM이 결정 경계를 찾는 과정은 두 단계이다.
    1. 결정 경계가 하나의 초평면(hyperplane)으로 표현될 수 있는 새로운 고차원 표현으로 데이터를 매핑한다. (위 그림과 같은 2차원 데이터라면 초평면은 직선이 된다)
    2. 초평면과 각 클래스의 가장 가까운 데이터 포인트 사이의 거리가 최대가 되는 최선의 결정 경계(하나의 분할 초평면)를 찾는다. 이 단계를 마진 최대화(maximizing the margin)라고 부른다. 이렇게 함으로써 결정 경계가 훈련 데이터셋 이외의 새로운 샘플에 잘 일반화 되도록 도와준다.
  • 분류 문제를 간단하게 만들어 주기 위해 데이터를 고차원 표현으로 매핑하는 기법이 이론상으로는 좋아보이지만 실제로는 컴퓨터로 구현하기 어려운 경우가 많다. 그래서 커널 기법(kernel trick)이 등장했다.
    • 요지는 다음과 같다. 새롭게 표현된 공간에서 좋은 결정 초평면을 찾기 위해 새로운 공간에 대응하는 데이터 포인트의 좌표를 실제로 구할 필요가 없다.
    • 새로운 공간에서의 두 데이터 포인트 사이의 거리를 계산할 수만 있으면 된다. 커널 함수(kernel function)를 사용하면 이를 효율적으로 계산할 수 있다.
    • 커널 함수는 원본 공간에 있는 두 데이터 포인트를 명시적으로 새로운 표현으로 변환하지 않고 타깃 표현 공간에 위치했을 떄의 거리를 매핑해 주는 계산 가능한 연산이다.
    • 커널 함수는 일반적으로 데이터로부터 학습되지 않고 직접 만들어야 한다. SVM에서 학습되는 것은 분할 초평면뿐이다.
  • SVM이 개발되었을 때 간단한 분류 문제에 대해 최고 수준의 성능을 달성했고 광범위한 이론으로 무장된 몇 안되는 머신 러닝 방법 중 하나가 되었다.
    • 또 수학적으로 깊게 분석하기 용이하여 이론을 이해하고 설명하기 쉽다.
    • 이런 유용한 특징 때문에 SVM이 오랫동안 머신 러닝 분야에서 매우 큰 인기를 끌었다.
  • 하지만 SVM은 대용량의 데이터셋에 확자오디기 어렵고 이미지 분류 같은 지각에 관련된 문제에서 좋은 성능을 내지 못했다.
    • SVM은 얕은 학습 방법이기 때문에 지각에 관련된 문제에 SVM을 적용하려면 먼저 수동으로 유용한 표현을 추출해야 하는데 (이런 단계를 특성 공학(feature engineering)이라고 한다) 이는 매우 어렵고 불안정하다.

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

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

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

다시 신경망으로

  • 2010년경 신경망은 관심을 받지 못했지만, 여전히 신경망에 대해 연구하고 있던 일부 사람들이 중요한 성과를 내기 시작했다.
    • 토론토 대학의 제프리 힌튼(Geoffrey Hinton), 몬트리올 대학의 요슈아 벤지오(Yoshua Bengio), 뉴욕 대학의 얀 르쿤, 스위스의 IDSIA이다.
  • 2011년에 IDSIA의 댄 크리슨(Dan Ciresan)이 GPU로 훈련된 심층 신경망(depp neural network)으로 학술 이미지 분류 대회에서 우승한 것이 시작이었다. 이것이 현대적인 딥러닝의 첫 번째 성공이다.
    • 이어서 2012년 대규모 이미지 분류 대회인 ImageNet에서 힌튼 팀이 등장하면서 분수령이 되었다.
    • ImageNet 대회는 당시 아주 어려운 문제로 전통적인 컴퓨터 비전 방식을 사용한 우승 모델의 상위 5개 예측이 타깃 클래스를 맞출 정확도는 74.3%였는데, 제프리 힌튼이 조언자로 참여하고 알렉스 크리체브스키(Alex Krizhevsky)가 이끄는 팀이 상위 5개 예측에 대한 정확도 83.6%의 놀라운 성과를 달성했다.
  • 이때부터 매년 이 대회는 심층 합성곱 신경망(deep convolutional nerual networ, ConvNet)이 우승을 차지했다.
    • 2015년 우승자는 96.4%의 정확도를 달성했고 ImageNet의 분류 문제는 완전히 해결된 것으로 간주되었다.
  • 2012년부터 심층 합성곱 신경망이 모든 컴퓨터 비전 작업의 주력 알고리즘이 되었다. 이 알고리즘은 조금 더 일반적이며, 지각에 관한 모든 문제에 적용할 수 있다.
    • 2015년과 2016년에 열린 주요 컴퓨터 비전 컨퍼런스에서 어떤 형태로든 컨브넷(ConvNet)을 포함하지 않은 발표를 찾는 것은 거의 불가능할 정도이다.
    • 동시에 딥러닝은 자연어 처리(natural language processing) 같은 다른 종류의 문제에도 적용되었다.
  • 다양한 애플리케이션에서 SVM과 결정 트리를 완전히 대체하고 있다.
    • 예컨대 지난 몇 년간 유럽 입자 물리 연구소(European Organization for Nuclear Research, CERN)는 대형 강입자 충돌기(Large Hadron Collider, LHC)에 있는 ATALS 감지기에서 얻은 입자 데이터를 분석하기 위해 결정 트리 기반의 알고리즘을 사용했으나 최근 연구는 케라스(Keras) 기반의 심층 신경망을 적용하기 시작했다.

딥러닝의 특징

  • 딥러닝이 이렇게 빠르게 확산된 주된 이유는 많은 문제에서 더 좋은 성능을 내고 있기 때문이다.
    • 하지만 그것뿐만이 아닌데, 딥러닝은 머신 러닝에서 가장 중요한 단계인 특성 공학을 완전히 자동화 하기 때문에 문제를 더 해결하기 쉽게 만들어준다.
  • 얕은 학습인 이전의 머신 러닝 기법은 입력 데이터를 고차원 비선형 투영(SVM)이나 결정 트리 같은 간단한 변환을 통해 하나 또는 2개의 연속된 표현 공간으로만 변환한다. 하지만 복잡한 문제에 필요한 잘 정제된 표현은 일반적으로 이런 방식으로 얻지 못한다.
    • 이런 머신 러닝 방법들로 처리하기 용이하게 사람이 초기 입력 데이터를 여러 방식으로 변환해야 한다. 즉 데이터의 좋은 표현을 수동으로 만들어야 하는데, 이를 특성 공학(feature engineering)이라고 한다.
  • 이에 반해 딥러닝은 이 단계를 완전히 자동화 한다. 딥러닝을 사용하면 특성을 직접 찾는 대신 한 번에 모든 특성을 학습할 수 있다.
    • 머신 러닝 작업 흐름을 매우 단순화시켜 주므로 고도의 다단계 작업 과정을 하나의 간단한 end-to-end 딥러닝 모델로 대체할 수 있다.
  • 이슈의 핵심이 여러 개의 연속된 표현 층을 가지는 것이라면, 얕은 학습 방법도 딥러닝의 효과를 모사하기 위해 반복적으로 적용할 수 있지 않을까 하는 의문이 들 수 있다.
    • 실제로 얕은 학습 방법을 연속적으로 적용하면 각 츠으이 효과는 빠르게 줄어든다. 3개의 층을 가진 모델에서 최정의 첫 번째 표현 층은 하나의 층이나 2개의 층을 가진 모델에서 최정의 첫 번째 층과는 달라야 한다.
  • 딥러닝의 변환 능력은 모델이 모든 표현 층을 순차적이 아니라(탐욕적(greedily) 방법이 아니라) 동시에 공동으로 학습하게 만든다.
    • 이런 공동 특성 학습 능력 덕택에 모델이 내부 특성 하나에 맞춰질 때마다 이에 의존하는 다른 모든 특성이 사람이 개입하지 않아도 자동으로 변화에 적응하게 된다.
    • 모든 학습은 하나의 피드백 신호에 의해 시작된다. 즉 모델의 모든 변화는 최종 목표를 따라가게 된다.
    • 이 방식은 모델을 많은 중간 영역(층)으로 나누어 복잡하고 추상화된 표현을 학습시킬 수 있기 때문에 얕은 학습 모델을 탐욕적으로 쌓은 것보다 훨씬 강력하다. 여기에 각 층은 이전 층의 의존하지 않는 단순한 변환을 수행한다.
  • 딥러닝이 데이터로부터 학습하는 방법에는 두 가지 중요한 특징이 있다.
    • 층을 거치면서 점진적으로 더 복잡한 표현이 만들어진다는 것과 이런 점진적인 중간 표현이 공동으로 학습된다는 사실이다.
    • 각 층은 상위 층과 하위 층의 표현이 변함에 따라 함께 바뀐다. 이 2개의 특징이 이전의 머신 러닝 접근 방법보다 딥러닝이 훨씬 성공하게 된 이유이다.

머신 러닝의 최근 동향

  • (앞선 내용 생략)
  • 오늘날 머신 러닝을 성공적으로 적용하기 위해 알아야 할 두 가지 기술은 얕은 학습 문제를 위한 그래디언트 부스팅 머신과 지각에 관한 문제를 위한 딥러닝이다.

왜 딥러닝일까? 왜 지금일까?

  • 컴퓨터 비전에 대한 딥러닝의 두 가지 핵심 아이디어인 합성곱 신경망과 역전파는 이미 1989년에 소개되었다.
    • 시계열을 위한 딥러닝의 기본인 LSTM(Long Short-Term Memory) 알고리즘은 1997년에 개발되었고 그 이후로 변화가 거의 없다.
  • 왜 2012년 이후 딥러닝이 부상하게 되었을까? 일반적으로 세 가지 기술적인 힘이 머신 러닝의 진보를 이끌었다.
    • 하드웨어
    • 데이터셋과 벤치마크
    • 알고리즘 향상
  • 이 분야는 이론보다 실험을 통해서 성장해 왔기 때문에 새로운 아이디어를 실험할 적절한 데이터와 하드웨어가 준비되어 있어야만 알고리즘이 발전할 수 있다.
    • 머신 러닝은 수학이나 물리학이 아니라 하나의 공학이다.

하드웨어

  • (GPU가 등장했다는 설명 생략)

데이터

  • (데이터가 많아졌다는 설명 생략)

알고리즘

  • 2000년대 후반까지는 매우 깊은 심층 신경망을 훈련시킬 수 있는 안정적인 방법을 찾지 못했는데, 이런 이유로 하나 또는 2개의 층만 사용하는 매우 얕은 신경망만 가능했고 SVM과 랜덤 포레스트처럼 잘 훈련된 얕은 학습 방법에 비해 크게 빛을 보지 못했다.
  • 깊게 쌓은 층을 통과해서 그래디언트(gradient)를 전파하는 것이 가장 문제였는데, 신경망을 훈련하기 위한 피드백 신호가 층이 늘어남에 따라 희미해지기 때문이다.
  • 2009-2010년경 몇 가지 간단하지만 중요한 알고리즘이 개선되면서 그래디언트를 더 잘 전파되게 만들어 주었고 상황이 바뀌었다.
    • 신경망의 층에 더 잘 맞는 활성화 함수(activation function)
    • 층별 사전 훈련(pretraining)을 불필요하게 만든 가중치 초기화(weight initialization) 방법
    • RMSProp과 Adam 같은 더 좋은 최적화 방법
  • 이런 기술의 향상으로 10개 이상의 층을 가진 모델을 훈련시킬 수 있게 되었을 때 비로소 딥러닝이 빛을 발하기 시작했다.
  • 2014-2016년 사이에 그래디언트를 더욱 잘 전파할 수 있는 배치 정규화(batch normalization), 잔차 연결(residual connection), 깊이별 분리 합성곱(depthwise separable convolution) 같은 고급 기술들이 개발된 덕에 요즘에는 층의 깊이가 수천 개인 모델을 처음부터 훈련시킬 수 있다.

새로운 투자의 바람

  • (생략)

딥러닝의 대중화

  • (생략)

지속될까?

  • (생략)
[ssba]

The author

지성을 추구하는 사람/ suyeongpark@abyne.com

댓글 남기기

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.