Lecture · Introduction to Deep Learning

1 딥러닝이란 무엇인가

Introduction

1950년대 벨 연구소는 숫자 0부터 9까지를 알아듣는 기계 “오드리(Audrey)”를 만들었다 [1]. 한 사람의 목소리만, 숫자 사이에 또박또박 쉬어가며 말해야 했고, 정확도는 그 조건에서만 겨우 쓸 만했다. 그로부터 70년이 지난 지금, 우리는 회의 녹음 파일을 통째로 올리면 화자를 구분해 받아쓰고 요약까지 해 주는 서비스를 쓴다. 무엇이 이 격차를 만들었을까?

흔한 대답은 “컴퓨터가 빨라지고 데이터가 많아져서”이지만, 그것만으로는 부족하다. 결정적인 변화는 문제를 푸는 방식 자체에 있다. 사람이 음성의 구조를 분석해 규칙을 설계하던 일에서, 기계가 데이터로부터 그 구조를 스스로 찾아내게 하는 일로 무게중심이 옮겨간 것이다. 이 장은 음성인식이라는 하나의 문제가 세 번의 패러다임을 거치며 어떻게 변해 왔는지를 따라가면서, 그 마지막 단계에 놓인 딥러닝이 어떤 사고방식인지를 드러낸다. 그리고 이 책 전체를 관통하는 세 가지 수학적 관점 – 함수 근사, 최적화, 통계적 추정 – 이 그 과정에서 자연스럽게 모습을 드러낸다.

학습목표

  • 음성인식이 왜 규칙 기반 접근으로 풀기 어려운 문제인지, “변이성(variability)”의 관점에서 이해한다.
  • 특성 공학(feature engineering)과 표현 학습(representation learning)의 차이를 구분하고, 종단간(end-to-end) 학습이 무엇을 자동화했는지 설명할 수 있다.
  • 주어진 문제를 “모델 패밀리 – 파라미터 – 학습 알고리즘”으로 구성할 수 있다.
  • 딥러닝 문제를 네 가지 핵심 구성요소(데이터, 모델, 목적함수, 최적화 알고리즘)로 설명할 수 있다.

왜 음성인식은 어려운가

마이크로 들어온 “소리”로부터 “문장”을 어떻게 알아낼 수 있는가? 소리는 공기의 압력이 시간에 따라 변한 것이므로, 마이크는 이를 일정한 간격으로 측정해 숫자의 나열로 바꾼다. 흔히 쓰는 16 kHz 표본화율이라면 1초의 소리가 16,000개의 숫자가 되고, T초 분량이라면 그 T배인 16{,}000\,T개의 숫자가 된다. 이 숫자들을 원래 문장으로 되돌릴 수 있는 규칙을 찾는것이 음석인식의 기본 원리이다. 예를 들어 어떤 숫자열 (x_1, x_2, \ldots, x_n)이 “안녕하세요”를 발음한 것이라면, 우리가 찾고자 하는 대상은

f:\ \underbrace{(x_1,\, x_2,\, \ldots,\, x_n)}_{n\text{개의 숫자로 표현된 소리 조각}}\ \longmapsto\ \text{``안녕하세요''}

와 같은 함수 f이다. 다른 숫자 나열이 들어오면 f는 그에 대응하는 다른 문장을 내놓아야 한다. 문제는, 이런 함수를 사람이 손으로 적을 수 없다는 것, 아니 그런 함수가 존재하는지조차 분명하지 않다는 데 있다.

여기에 핵심이 있다. 우리가 원하는 함수 f엄청나게 다양한 입력을 같은 출력으로 보내야 한다. 수학의 언어로 말하면, 입력 공간 \R^n 안에 “안녕하세요에 해당하는 영역”이 있는데, 그 영역의 모양이 대단히 복잡하게 뒤엉켜 있다는 뜻이다. 어떤 조건식을 몇 개 나열해서 그 영역의 경계를 그려내는 일은 사실상 불가능하다.

세 번의 패러다임

음성인식은 이 어려움에 세 가지 방식으로 대응해 왔다. 세 시기를 비교하면 딥러닝이 정확히 무엇을 바꾸었는지가 선명해진다.

1세대: 주어진 파형을 저장해 둔 견본과 맞춰 보기

가장 직관적인(?) 발상은 미리 녹음해 둔 표준 파형(템플릿)과 입력 파형을 겹쳐 보고 가장 비슷한 것을 답으로 내놓는 것이다. 말하는 속도가 다르면 파형이 늘어나거나 줄어드니, 시간축을 신축시켜 가며 가장 잘 맞는 정렬을 찾는 동적 시간 워핑(dynamic time warping) 같은 기법이 동원되었다 [2].

이 방식은 화자 한 명이 단어를 또박또박 끊어 말하는 상황에서는 작동할 수 있으나, 몇 가지 문제점이 있다. 화자가 바뀌면 표준 파형을 새로 녹음해야 했고, 어휘를 늘리면 비교해야 할 템플릿이 그만큼 늘었으며, 단어가 이어져 발음되면 어디서 끊어야 할지조차 알 수 없다.

2세대: 사람이 특성을 설계하고, 통계로 잇기

1980년대부터 30여 년을 지배한 접근은 문제를 크게 두 단계로 나뉜다. 우선, 파형에서 말의 내용과 관련된 정보만 남기고 나머지는 버리는 변환을 사람이 직접 설계하는 것이다. 그 대표가 MFCC(mel-frequency cepstral coefficients)다 [3]. 짧은 구간 단위로 주파수 분해를 하고, 사람 귀가 주파수를 인지하는 비선형 척도(mel scale)에 맞춰 눌러 담고, 다시 한 번 변환해 중요한 특성만 뽑아낸다. 16,000개의 숫자였던 1초의 소리가 이 과정을 거치면 수백 개의 계수 (특성)로 줄어, 상대적으로 분석이 용이해진다. 이렇게 사람이 도메인 지식을 동원해 데이터를 가공하는 일을 특성 공학(feature engineering)이라 부른다. 그 다음, 얻은 특성들이 어떤 음소(단어의 뜻을 구별해 주는 말소리의 가장 작은 단위)의 나열에서 나왔을지를 확률적으로 추론했다. 은닉 마르코프 모델(hidden Markov model)이 음소의 시간적 전이 (transition)를 다루고 [4], 언어 모델이 “문법적으로 그럴듯한 문장”에 가중치를 주었다.

이 시스템은 여러 부품(특성 추출기, 음향 모델, 발음 사전, 언어 모델)이 사슬처럼 이어진 파이프라인이었고, 각 부품이 개별적으로 최적화되었다. 그래서 특성 추출 단계에서 버려진 정보는 뒤에서 아무리 좋은 모델을 써도 되살릴 수 없다. 그런데 MFCC가 무엇을 버려야 할지는 누가 정했는가? 사람이 정했다. 과연, 사람이 “이건 중요하지 않은 정보다”고 판단한 것이 과연 정확한가?

3세대: 특성 추출까지 학습의 대상으로

2010년대에 일어난 전환은 이 파이프라인을 하나의 함수로 합쳐버린 것이다. 파형(혹은 최소한의 가공만 거친 스펙트로그램)을 곧바로 입력으로 받아 문자열을 출력하는 하나의 신경망을 만들고, 그 전체를 하나의 목적함수로 동시에 학습시킨다. 이를 종단간(end-to-end) 학습이라 한다 [5].

여기서 결정적인 것은 신경망이 층을 쌓는다는 점이다. 앞쪽 층은 짧은 구간의 주파수 성분 같은 저수준 패턴에 반응하고, 뒤로 갈수록 음소, 음절, 단어에 가까운 추상적 패턴에 반응하는 구조가 학습을 통해 자동적으로 형성된다. 사람이 MFCC를 설계하며 하던 일을, 이제 데이터가 대신 결정하는 것이다. 이를 특성 공학과 대비하여 표현 학습(representation learning)이라 부른다.

1세대 (템플릿) 2세대 (특성+통계) 3세대 (딥러닝)
사람이 하는 일 표준 파형 녹음 특성 변환 설계 구조와 목적함수 설계
기계가 하는 일 유사도 비교 확률 파라미터 추정 특성과 판별을 함께 학습
변이 대응 저장으로 대응 설계로 대응 학습으로 대응
최적화 단위 없음 부품별 전체 동시

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

앞선 이야기에 등장한 용어들의 관계를 정리하자. 인공지능(artificial intelligence, AI)은 “기계가 지능적으로 행동하도록 만드는 모든 시도”를 포괄하는 가장 넓은 개념이다. 1세대 음성인식도, 바둑 경우의 수를 탐색하는 알고리즘도, 내비게이션의 경로 계산도 모두 여기에 포함될 수 있다.

이 중 데이터로부터 규칙(또는 함수)을 스스로 학습하는 방법론이 머신러닝(machine learning, ML)이다. 2세대의 은닉 마르코프 모델은 데이터로 확률 파라미터를 추정하므로 머신러닝에 속한다. 그리고 머신러닝 중에서도 여러 층을 쌓은 인공신경망을 사용하는 방법론이 딥러닝(deep learning, DL)이다. 즉

\text{AI} \supset \text{ML} \supset \text{DL}

의 포함관계가 성립한다. 이 책은 가장 안쪽의 딥러닝을 다루지만, “데이터로부터 학습한다”는 사고방식과 그것을 떠받치는 수학은 머신러닝 전반에 공통으로 적용된다.

문제를 수학으로 옮기기

이제 3세대의 접근을 수학의 언어로 정확히 적어 보자. 논의를 단순하게 하기 위해, 문장 전체를 받아쓰는 대신 “지금 들린 소리가 특정 호출어(wake word)인가”를 판정하는 축소된 문제를 생각한다. 이것만으로도 필요한 개념이 모두 등장한다.

입력은 길이 T의 오디오 조각 \vx = (x_1,\ldots,x_T) \in \R^T이고, 출력은 “예/아니오”의 이진 결정이다. 우리가 원하는 것은 함수 f:\R^T \to \{0,1\}인데, 앞서 보았듯 이 함수를 직접 쓸 수는 없다. 그래서 전략을 바꾼다. 하나의 함수를 찾는 대신, 조절 가능한 손잡이를 가진 함수들의 모임을 준비하고 그 안에서 좋은 것을 골라내는 것이다.

문제를 수학으로 옮기기

이제 3세대의 접근을 수학의 언어로 정확히 적어 보자. 논의를 단순하게 하기 위해, 문장 전체를 받아쓰는 대신 “지금 들린 소리가 특정 호출어(wake word)인가”를 판정하는 축소된 문제를 생각한다. 이것만으로도 필요한 개념이 모두 등장한다.

입력은 n개의 숫자로 이루어진 오디오 조각 \vx = (x_1,\ldots,x_n) \in \R^n이고, 출력은 “예/아니오”의 이진 결정이다. 우리가 원하는 것은 함수 f:\R^n \to \{0,1\}인데, 앞서 보았듯 이 함수를 직접 쓸 수는 없다. 그래서 전략을 바꾼다. 하나의 함수를 콕 집어 찾는 대신, 조절 가능한 손잡이를 가진 함수들의 모임을 준비하고 그 안에서 데이터에 가장 잘 맞는 것을 골라내는 것이다. 이 “함수들의 모임”이 바로 앞 절에서 예고한 함수족이며, 이제 이를 정확히 정의한다.

좋은 모델 패밀리라면 파라미터를 적절히 고르는 것만으로 서로 다른 호출어를 인식할 수 있어야 한다. “하이 빅스비”를 인식하는 일과 “오케이 구글”을 인식하는 일은 근본적으로 같은 종류의 과제이므로, 같은 패밀리가 파라미터만 달리하여 둘을 모두 감당하는 것이 자연스럽다. 반면 이미지에 캡션을 다는 일이나 번역처럼 성격이 다른 과제에는 다른 패밀리가 필요할 수 있다. 어떤 패밀리를 고를 것인가가 9장장 이후의 주제다.

전형적인 학습 과정은 다음 네 단계를 반복하는 형태를 띤다.

이 뼈대에서 3단계의 “더 잘 작동한다”를 수학적으로 정확히 만드는 것이 목적함수(objective function)이고, 그 목적함수를 실제로 개선하는 절차가 최적화 알고리즘(optimization algorithm)이다. 두 개념은 「핵심 구성요소」절에서 다룬다.

데이터의 구조: 샘플과 특성

학습에 쓰이는 데이터는 어떤 모습일까. 호출어 인식을 위해 우리는 오디오 조각을 잔뜩 모으고, 각각에 “호출어임/아님”을 표시한다. 이렇게 만들어진 것이 레이블된 데이터셋(labeled dataset)이다.

특성의 개수 d차원(dimension)이라 부른다. 위 두 예에서 보듯 차원은 문제에 따라 네 개일 수도 있고 수만 개일 수도 있는데, 차원이 커질수록 필요한 데이터의 양과 계산량이 급격히 늘어난다. 이를 차원의 저주(curse of dimensionality)라 하며, 11장장에서 다룰 합성곱 구조는 바로 이 문제에 대한 하나의 대응이다.

핵심 구성요소

지금까지의 논의를 정리하면, 학습 문제는 언제나 네 가지 요소로 이루어진다.

목적함수.. “더 잘 작동한다”는 말은 그 자체로는 최적화의 대상이 될 수 없다. 이를 수로 바꾸어야 비로소 개선의 방향을 계산할 수 있다. 목적함수는 보통 작을수록 좋도록 정의하며, 그래서 손실함수(loss function)라고도 부른다. 대표적인 두 가지는 다음과 같다.

\begin{aligned} \text{제곱손실(회귀)}&:\quad \loss(\vtheta)=\frac{1}{n}\sum_{i=1}^{n}\bigl(y_i - f(\vx_i;\vtheta)\bigr)^2, \\[4pt] \text{교차 엔트로피(분류)}&:\quad \loss(\vtheta)=-\frac{1}{n}\sum_{i=1}^{n}\Bigl[y_i\log \hat y_i + (1-y_i)\log(1-\hat y_i)\Bigr]. \end{aligned}

왜 하필 이런 형태인지, 그리고 분류 문제에서 제곱손실을 쓰면 왜 곤란한지는 6장장과 8장장에서 확률론의 관점으로 유도한다.

최적화 알고리즘.. 목적함수가 정해지면 문제는 “\loss(\vtheta)를 최소화하는 \vtheta를 찾아라”가 된다. 파라미터가 수백만 개인 상황에서 이를 해석적으로 푸는 것은 불가능하므로, 조금씩 개선해 나가는 반복법을 쓴다. 그 기본형이 경사하강법이다.

여기서 \eta > 0은 학습률(learning rate)이며, 한 걸음의 크기를 정한다. 이 한 줄의 식이 왜 손실을 줄이는지, \eta를 잘못 고르면 어떤 일이 생기는지는 7장장의 주제다. 그리고 이 식에 등장하는 \nabla_{\vtheta}\loss를 신경망에 대해 실제로 계산하는 방법이 4장장의 역전파다.

학습의 종류

앞의 호출어 예제는 정답이 붙은 데이터를 사용했지만, 늘 그런 것은 아니다.

지도학습

이 책의 6장장부터 8장장까지가 이 두 문제를 선형 모델로 다루고, 9장장 이후가 같은 문제를 신경망으로 확장한다.

비지도학습

정답 없이 입력만 주어지는 경우도 많다. 명확한 정답을 정의하기 어렵거나, 정답을 붙이는 일에는 사람의 노동이 들기 때문이다.

자기지도학습

최근 음성 분야의 발전을 이끈 것은 이 둘의 중간에 있는 방식이다. 인터넷에는 자막 없는 오디오가 사실상 무한히 있지만, 사람이 받아쓴 데이터는 훨씬 적다. 그렇다면 레이블 없는 오디오에서 문제를 스스로 만들어 학습할 수는 없을까?

이렇게 대량의 무레이블 오디오로 먼저 좋은 표현을 익히게 한 뒤(사전학습, pre-training), 적은 양의 받아쓰기 데이터로 마무리 학습(파인튜닝, fine-tuning)을 하면, 처음부터 지도학습만 한 경우보다 훨씬 좋은 성능을 얻는다. 가려진 부분을 맞히는 이 발상은 13장장에서 다룰 언어 모델의 학습 방식과 정확히 같은 아이디어다.

모든 데이터는 숫자다: 텐서로의 변환

지금까지 오디오, 집값, 이미지를 오가며 이야기했는데, 이들을 하나의 수학으로 다룰 수 있는 이유는 모두 숫자의 배열로 표현되기 때문이다.

데이터 표현 형태
스칼라 측정값 하나의 수 a \in \R
오디오 파형 시간 순서의 수열 \vx \in \R^{T}
표 형태 데이터 샘플 \times 특성 \mX \in \R^{n \times d}
스펙트로그램 시간 \times 주파수 \mX \in \R^{T \times F}
흑백 이미지 세로 \times 가로 \mX \in \R^{H \times W}
컬러 이미지 채널 \times 세로 \times 가로 \mathcal{X} \in \R^{3 \times H \times W}

이렇게 임의의 차원을 가진 숫자 배열을 통틀어 텐서(tensor)라 부른다. 스칼라는 0차 텐서, 벡터는 1차 텐서, 행렬은 2차 텐서다.

이 책이 가려는 곳

지금까지 음성인식을 따라오며 딥러닝의 사고방식을 살펴보았다. 이 책의 전반부(2장장부터 13장장까지)는 이 사고방식을 수학적으로 정확하게 다듬어 가는 여정이다. 텐서의 대수를 세우고, 미분과 연쇄법칙으로 학습의 방향을 계산하고, 확률론으로 손실함수를 정당화한 뒤, 선형 모델에서 신경망으로 그리고 합성곱·순환·어텐션 구조로 나아간다.

그런데 이 책에는 후반부가 하나 더 있다. 잠시 음성으로 돌아가 보자. 사람이 내는 소리는 성대의 진동과 성도의 공명이 만들어내는 물리 현상이고, 그 물리는 미분방정식으로 기술된다. 즉 우리가 데이터로만 다루던 신호의 뒤에는 지배 방정식이 있다.

여기서 자연스러운 질문이 나온다. 방정식을 아는 문제에는 딥러닝을 어떻게 써야 하는가? 반대로, 방정식을 모르는 채 관측 데이터만 있을 때 그 방정식 자체를 찾아낼 수 있는가?

14장장부터 19장장까지가 이 질문을 다룬다. 미분방정식을 수치적으로 푸는 고전적 방법에서 출발해, 방정식을 손실함수에 직접 넣는 물리정보 신경망(17장장), 신경망의 층 자체를 연속 시간으로 바라보는 뉴럴 ODE(18장장), 비선형 동역학을 선형 연산자로 옮겨 보는 쿠프만 이론(19장장)까지 나아간다. 전반부가 “수학으로 딥러닝을 이해하는” 여정이라면, 후반부는 “딥러닝으로 수학적 모델링을 확장하는” 여정이다.

요약

  • 인식 문제의 어려움은 출력의 가짓수가 아니라 같은 출력을 내야 하는 입력의 다양성(변이성)에서 온다.
  • 음성인식은 템플릿 저장(1세대) \to 사람이 설계한 특성 + 통계 모델(2세대) \to 특성 추출까지 학습하는 종단간 신경망(3세대)으로 변해 왔다. 딥러닝이 자동화한 것은 판별이 아니라 표현의 설계다.
  • \text{AI} \supset \text{ML} \supset \text{DL}의 포함관계가 성립한다.
  • 학습은 모델 패밀리를 정하고 그 안에서 데이터를 이용해 좋은 파라미터를 찾는 일이며, 이를 수행하는 메타 프로그램이 학습 알고리즘이다.
  • 모든 학습 문제는 데이터, 모델, 목적함수, 최적화 알고리즘의 네 요소로 구성된다.
  • 학습은 정답의 유무에 따라 지도학습, 비지도학습, 그리고 데이터에서 정답을 스스로 만드는 자기지도학습으로 나뉜다.
  • 오디오, 이미지, 표 형태 데이터는 모두 텐서로 표현되며, 어떤 텐서로 볼 것인가가 이미 모델 설계의 일부다. 그래서 선형대수가 첫 번째 도구가 된다.
  • 이 책은 함수 근사, 최적화, 통계적 추정이라는 세 관점을 축으로 전개되며, 후반부에서는 딥러닝을 미분방정식과 동역학 시스템으로 되돌려 보낸다.

연습문제

참고문헌

1. Davis, K. H., Biddulph, R., Balashek, S. “Automatic Recognition of Spoken Digits.” Journal of the Acoustical Society of America, 24, 1952.

2. Sakoe, Hiroaki, Chiba, Seibi. “Dynamic Programming Algorithm Optimization for Spoken Word Recognition.” IEEE Transactions on Acoustics, Speech, and Signal Processing, 26, 1978.

3. Davis, Steven B., Mermelstein, Paul. “Comparison of Parametric Representations for Monosyllabic Word Recognition in Continuously Spoken Sentences.” IEEE Transactions on Acoustics, Speech, and Signal Processing, 28, 1980.

4. Rabiner, Lawrence R. “A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition.” Proceedings of the IEEE, 77, 1989.

5. Graves, Alex, Jaitly, Navdeep. “Towards End-to-End Speech Recognition with Recurrent Neural Networks.” Proceedings of the 31st International Conference on Machine Learning (ICML), 2014.

Progress is saved in this browser.