검색결과 리스트
글
Part I: Applied Math and Machine Learning Basics
5. Machine Learning Basics
Deep learning은 특정 종류의 기계 학습이다. Deep learning을 잘 이해하기 위해서는 기계 학습의 기본 원리를 확실하게 이해해야 한다. 이 장에서는 나머지 책 전체에 적용될 가장 중요한 일반 원칙에 대한 간략한 과정을 제공한다. Deep learning을 이제 막 시작하는 사람 또는 넓은 시야를 원하는 사람들은 Murphy (2012) 또는 Bishop (2006)과 같이 기초를 좀 더 포괄적으로 다루는 기계 학습 교과서를 고려해보기 바란다. 이미 기계 학습의 기본에 익숙하다면 5.11.절로 건너 뛰어도 좋다. 이 절에서는 Deep learning 알고리즘의 개발에 크게 영향을 미치는 전통적인 기계 학습 기술에 대한 몇 가지 관점을 다룬다.
우리는 학습 알고리즘이 무엇인지에 대해 정의하고 예시를 제시한다: linear regression algorithm. 그런 다음 training data를 맞추는(fitting) 것이 새로운 데이터로 일반화되는 패턴을 찾는 문제와 어떻게 다른지 설명한다. 대부분의 기계 학습 알고리즘에는 학습 알고리즘 외부에서 결정되어야 하는 Hyperparameter라는 설정이 있다. 우리는 추가 데이터를 사용하여 이를 설정하는 방법에 대해 논의한다. 기계학습은 근본적으로 복잡한 기능을 통계적으로 추정하기 위해 컴퓨터 사용에 대한 강점을 높이고 이러한 기능에 대한 신뢰구간 입증에 대한 강조를 줄인 응용 통계의 한 형태다. 그러므로 우리는 통계에 대한 두 가지 중심 접근 방식을 제시한다: frequentist estimator(빈도 추정)와 Bayesian inference(베이지안 추론). 대부분의 기계 학습 알고리즘은 supervised learning(감독 학습)과 unsupervised learning(감독되지 않은 학습)의 범주로 나눌 수 있다. 우리는 이러한 범주를 설명하고 각 범주에서 간단한 학습 알고리즘의 몇 가지 예를 제공한다. 대부분의 Deep learning 알고리즘은 stochastic gradient descent라는 최적화 알고리즘을 기반으로 한다. 우리는 최적화 알고리즘, cost function, Model, Dataset과 같은 다양한 알고리즘 구성 요소를 결합하여 기계 학습 알고리즘을 만드(build)는 방법을 설명합니다. 마지막으로, 5.11 절에서 우리는 전통적인 기계 학습의 몇 가지 한계를 설명한다. 이러한 어려움은 이 문제를 극복하는 Deep learning 알고리즘 개발의 동기(motive)가 된다.
5.1 Learning Algorithms
기계 학습 알고리즘은 데이터로부터 학습할 수 있는 알고리즘이다. 여기서 "학습하다"는 무엇을 의미할까? Mitchell(1997)은 “A computer program is said to learn from experience E with respect to some class of tasks \(T\) and performance measure \(P\) , if its performance at tasks in \(T\) , as measured by \(P\) , improves with experience \(E\)(컴퓨터 프로그램은 어떤 종류의 작업 \(T\)에서 성능 측정 \(P\)에 의한 측정이 경험 \(E\)로 향상된다면, \(T\)와 \(P\)에 관련하여 \(E\)로부터 학습한다).”라는 정의를 제시했다. 매우 다양한 경험 \(E\)들과 작업 \(T\)들과 성능 측정 \(T\)들을 상상할 수 있다. 이 책에서 이러한 각각의 entity에 대해 어떤 것이 사용되어야 하는지 공식적 정의하지 않는다. 대신 다음 절에서는 기계 학습 알고리즘을 구성하는 데 사용할 수 있는 다양한 종류의 작업, 성능 측정 및 경험에 대한 직관적 인 설명과 예제를 제공한다.
5.1.1 The Task, \(T\)
사람이 작성하고 설계 한 고정된 프로그램으로 해결하기가 어려운 작업을 기계 학습을 통해 해결할 수 있다. 과학적, 철학적 관점에서 흥미로운 점은 기계 학습에 대한 우리의 이해를 발전 시키려면 지능(intelligence)의 기본 원리에 대한 이해를 발전시켜야하기 때문이다.
"Task(작업)"이라는 단어의 비교적 공식인 정의에서, 학습 과정 자체는 task가 아니다. 학습은 작업을 수행할 수 있는 능력을 얻는 수단이다. 예를 들어, 로봇이 걷기를 원한다면 걷기가 task이고, 걷기를 학습하도록 로봇을 프로그래밍하거나 수동으로 걷는 방법을 지정하는 프로그램을 직접 작성할 수도 있다.
기계 학습 task는 일반적으로 기계 학습 시스템이 어떻게 example(예제)를 처리하는지로 기술된다. Example은 기계 학습 시스템이 처리하기를 바라는 일부 객체(object) 또는 이벤트로부터 정량적으로 측정된 특징(feature)들의 모음이다. 우리는 전통적으로 예제를 벡터 \(\boldsymbol{x}\in \mathbb{R}^{n}\)로 나타낸다. 여기서 벡터의 각 성분 \(x_{i}\)는 또 다른 특징(feature)이다. 예를 들어, 이미지의 feature는 보통 이미지의 픽셀 값이다.
기계 학습으로 많은 종류의 task를 해결할 수 있다. 가장 일반적인 기계 학습 task에는 다음이 포함된다.
\( \bullet \) Classification(분류): 이 유형의 task에서 컴퓨터 프로그램은 입력이 속하는 \(k\) 개의 카테고리를 지정한다. 이 task를 해결하기 위해, 학습 알고리즘은 대부분 \(\mathbb{R}^{n}\rightarrow\{1,\ldots,k\}\)이다. \(y=f(\boldsymbol{x})\) 일 때, 모델은 벡터 \(\boldsymbol{x}\)로 기술된 입력을 숫자로 된 코드(numeric code) y로 식별하는 카테고리에 할당한다. 다른 classification task의 변형들이 존재한다. 예로, class에 대한 확률 분포를 출력하는 \(f\)가 있을 수 있다. classification task의 한가지 예로, 입력이 이미지이고 출력이 이미지의 개체를 식별하는 숫자 코드 인 객체 인식(Object recognition)이 있습니다. Willow Garage PR2 로봇은 여러 종류의 음료를 인식하고 명령에 따라 사람들에게 전달하는 웨이터 역할을 할 수 있다 (Goodfellow et al., 2010). 현대의 객체 인식은 Deep learning (Krizhevsky et al., 2012; Ioffe and Szegedy, 2015)으로 가장 잘 수행된다. 객체 인식은 컴퓨터가 얼굴을 인식할 수 있게 해주는 것과 동일한 기본 기술이며 (Taigman 외 2014), 사진 모음집에서 사람들을 자동으로 태그하고 컴퓨터가 더 자연스럽게 사용자와 상호 작용할 수 있게 해준다.
\( \bullet \) Classification with missing inputs(누락된 입력이 있는 분류): 입력 벡터의 모든 측정이 항상 제공된다는 보장이 없으면 분류가 어려워진다. 분류 작업(classification task)을 해결(solve)하기 위해, 학습 알고리즘은 입력(벡터)에서 카테고리 출력(categorical output)으로의 단일 함수 매핑 만 정의하면 된다. 일부 입력이 누락될 수 있는 경우, 하나의 classification function을 제공하기보다는 학습 알고리즘은 function 세트를 학습해야한다. 각 fuction은 \(\boldsymbol{x}\)를 입력이 누락된 다른 subset으로 분류하는 것과 같다. 이러한 종류의 상황은 많은 경우 의료 진단에서 자주 발생하는데, 의학 검사가 비싸거나 침습적(invasive)이기 때문이다. 이와 같은 큰 function set을 효율적으로 정의하는 한 가지 방법은 관련 변수 모두에 대한 확률 분포를 학습한 다음 누락된 변수를 무시하여 분류 작업을 하는 것이다. \(n\) 개의 입력 변수를 사용하면 누락된 입력 집합에 필요한 \(2^n\) 개의 다른 분류 함수를 구할 수도 있지만, joint probability distribution을 설명하는 단일 함수만 학습해도 된다. Goodfellow et al. (2013b) 에서 이러한 방식으로 분류 작업에 적용되는 deep probabilistic model의 사례를 확인 할 수 있다. 이 절에서 설명하는 다른 많은 task는 누락된 입력과 함께 작동하도록 일반화할 수도 있다. 누락된 입력이 있는 classfication은 기계 학습이 할 수 있는 것의 한 예일뿐이다.
\( \bullet \) Regression(회귀): 이 유형의 task에서 컴퓨터 프로그램은 입력이 주어진 경우 어떤 수치를 예측해야 한다. 이 task를 해결하기 위해, 학습 알고리즘은 함수 \(f\ : \ \mathbb{R}^{n} \rightarrow \mathbb{R}\) 을 출력하도록 요청 받는다. 이 유형의 task는 출력 형식이 다르다는 점을 제외하면 classification과 유사하다. Regression task의 예로는 피보험자가 기대하는 청구 금액 (보험료를 설정하는 데 사용됨)을 예측하거나 미래의 유가 증권 가격을 예측하는 것등이 있다. 이러한 종류의 예측은 거래 알고리즘에도 사용된다.
\( \bullet \) Transcription(필사): 이러한 유형의 task에서 기계 학습 시스템은 주로 데이터의 상대적으로 구조화되지 않은 표현을 관측하고 이를 개별 텍스트 형식으로 변환해야 한다. 예를 들어, OCR (Optical Character Recognition)에서, 컴퓨터 프로그램은 텍스트를 포함하는 사진을 보고하고 이 문자를 일련의 문자 (ASCII 또는 유니 코드 포맷 등)의 형태로 반환해야 한다. 구글 스트리트 뷰 (Google Street View)는 이러한 방식으로 주소를 처리하는 데 deep learning을 사용한다 (Goodfellow et al., 2014d). 또 다른 예는 컴퓨터 프로그램에 오디오 파형이 주어지지면, 녹음에서 사용된 단어를 의미하는 문자 또는 단어 ID 코드를 출력하는 음성 인식이다. Deep learning은 Microsoft, IBM 및 Google을 포함한 주요 회사에서 사용되는 현대 음성 인식 시스템의 중요한 구성 요소이다 (Hinton et al., 2012b).
\( \bullet \) Machine translation(기계 번역): 기계 번역 task에서 입력은 이미 일부 언어의 기호 시퀀스로 구성되어 있으며, 컴퓨터 프로그램은 이를 다른 언어로 된 기호 시퀀스로 변환해야 한다. 이것은 일반적으로 자연어에 적용된다 (예: 영어에서 프랑스어로 번역). Deep learning은 최근 이러한 종류의 task에 중요한 영향을 미치기 시작했다 (Sutskever et al., 2014; Bahdanau et al., 2015).
\( \bullet \) Structured output (구조화된 출력): Structured output task는 출력이 원소 간에 중요한 관계가 있는 벡터(또는 여러 값을 포함하는 다른 데이터 구조)인 모든 task를 포함한다. 이것은 광범위한 범주이며 위에서 설명한 필사와 번역 task 뿐만 아니라 다른 많은 task를 포함한다. 한가지 예는 자연어 문장을 parsing하여 문법 구조를 기술하는 tree로 매핑하고, tree의 node에 동사, 명사, 부스당 태그를 지정하는 것이다. Parsing task에 적용되는 Deep learning의 예는 Collobert (2011)를 참조하라. 또 다른 예는 컴퓨터 프로그램이 이미지의 모든 픽셀을 특정 카테고리에 할당하는 이미지의 pixel-wise segmentation이다. 예를 들어, 항공 사진에서 도로의 위치에 주석을 달기(annotate) 위해 Deep learning을 사용할 수 있다 (Mnih and Hinton, 2010). 주석 스타일(annotate style) task처럼 출력의 모양이 입력의 구조를 반드시 반영(mirror) 해야 하는 것은 아니다. 예를 들어 이미지 캡션 작성(image captioning)에서 프로그램은 이미지를 관찰하고 이미지를 설명하는 자연어 문장을 출력한다 (Kiros 외, 2014a, b, Mao 외 2015, Vinyals 외, 2015b, Donahue et al. , 2014, Karpathy and Li, 2015, Fang et al., 2015, Xu et al., 2015). 이러한 task는 구조화된 출력 작업(structured output task)이라고 하는데, 프로그램이 모두 밀접하게(tightly) 상호 관련된(inter-related) 여러 값을 출력해야하기 때문이다. 예를 들어, 이미지 캡션 작성 프로그램에서 작성한 단어는 유효한 문장을 형성해야 한다.
\( \bullet \) Anomaly detection (이상 징후 탐지): 이 유형의 task에서 컴퓨터 프로그램은 일련의 이벤트 또는 객체를 탐색하고 그 중 일부를 비정상적(unusual) 또는 이례적(atypical)으로 표시한다. 이상 징후 탐지 task의 예로는 신용 카드 사기 탐지가 있습니다. 구매 습관을 모델링하여 신용 카드 회사가 카드 오용을 감지할 수 있다. 절도범이 당신의 신용 카드 또는 신용 카드 정보를 도용한 경우, 절도범의 구매는 종종 자신의 구매 유형보다 다른 구매 확률 분포에서 나온다. 신용 카드 회사는 카드로 평소와 다른 구매(uncharacteristic purchase)를 한 즉시 계정을 정지하여 사기를 예방할 수 있다. Chandola et al. (2009)에서 이상 징후 탐지 방법에 대해 조사했다.
\( \bullet \) Synthesis and sampling (합성과 샘플링): 이 유형의 task에서 기계 학습 알고리즘은 학습 데이터의 것과 유사한 새로운 예제들을 생성한다. 기계 학습을 통한 합성 및 샘플링은 아티스트가 손으로 많은 양의 콘텐츠를 생성하는 것처럼 비용이 많이 들거나 지루할 수 있는 미디어 응용프로그램에 유용할 수 있다. 예를 들어, 비디오 게임은 아티스트가 수동으로 각 픽셀에 라벨을 붙이도록 요구하지 않고 큰 물체 나 풍경에 대한 텍스처를 자동으로 생성 할 수 있는다 (Luo 외., 2013). 어떤 경우에는 샘플링이나 합성 절차에서 입력에 따라 특정 종류의 출력을 생성한다. 예를 들어 음성 합성 task에서, 프로그램에 글로 된 문장을 넣어 음성 오디오로 변환한다. 이것은 일종의 structed output task이지만, 출력을 보다 자연스럽고 사실적으로 보이게 하기 위해 각 입력에 정해진 출력이 없다는 추가 조건을 넣고, 출력이 큰 변화를 가지도록 명시한다.
\( \bullet \) Imputation of missing values (누락 된 값의 대체): 이 유형의 task에서는 기계 학습 알고리즘에 새로운 항목 \(\boldsymbol{x} \in \mathbb{R}^{n}\)가 주어 지지만, 일부 항목 \(x_i\)가 누락되어 있다. 알고리즘은 이 누락된 항목에 대한 예측 값을 구한다.
\( \bullet \) Denoising(잡음 제거): 이 유형의 task에서 기계 학습 알고리즘은 깨끗한 예제(clean example) \(\boldsymbol{x}\in \mathbb{R}^{n}\)에서 알 수 없는 손상 프로세스에 의해 얻어진 손상된 예제(corrupted example) \(\tilde{\boldsymbol{x}}\in \mathbb{R}^{n}\)을 입력으로 받는다. learner는 손상된 버전 \(\tilde{\boldsymbol{x}}\)로부터 깨끗한 예제 \(\boldsymbol{x}\)를 예측하거나, 보다 일반적으로 조건부 확률 분포 \(p(\boldsymbol{x} | \tilde{\boldsymbol{x}}\)를 예측해야 한다.
\( \bullet \) Density estimation or probability mass function estimation (밀도 추정 또는 확률 질량 함수 추정): 밀도 추정 문제에서, 기계 학습 알고리즘은 함수 \(p_{\rm{model}}:\mathbb{R}^n \rightarrow \mathbb{R}\)을 학습한다. \(p_{\rm{model}}(\boldsymbol{x})\)는 example들로 부터 주어지는 공간에서의 확률 밀도 함수 (\(\mathrm{x}\)가 연속 일 경우) 또는 확률 질량 함수 (\(\mathrm{x}\)가 이산 경우)로 해석될 수 있다. 이러한 task를 잘 수행하려면 (성능 측정 \(P\)에 대해 논의할 때 의미하는 것을 정확히 지정해야 한다), 알고리즘은 관측한 데이터의 구조를 학습해야 한다. 예제 무리(example cluster)가 어디에서 많이 발생하고, 어디에서 발생 가능성이 낮은 지 알아야한다. 위에서 설명한 task의 대부분 학습 알고리즘은 적어도 암묵적으로 확률 분포의 구조를 캡처해야 한다. 밀도 추정을 통해 우리는 그 분포를 명시 적으로 포착할 수 있다. 근본적으로 우리는 다른 task를 해결하기 위해 그 분포를 사용할 수 있다. 예를 들어 확률 분포 \(p(\boldsymbol{x})\)를 얻기 위해 밀도 추정을 수행했다면, 누락 값 대체(missing value imputation) task를 위해 이 분포를 사용할 수 있다. 값 \(x_{i}\)가 누락되고 \(\boldsymbol{x}_{-i}\)로 표시된 다른 모든 값이 주어지면, 그 값의 분포가 \(p (xi\ |\ \boldsymbol{x}_{-i})\)로 주어짐을 알 수 있다. 실제로 많은 경우에 \(p(\boldsymbol{x})\)에 필요한 연산이 계산적으로 다루기 힘들기 때문에 밀도 추정이 항상 이러한 모든 관련 task을 해결할 수 있는 것은 아니다.
물론 많은 다른 task와 task 유형이 가능하다. 여기에 나열된 task 유형은 task의 엄격한 분류를 정의하는 것이 아니라 기계 학습이 수행할 수 있는 task의 예를 제공하기위한 것이다.
5.1.2 The Performance Measure, \(P\)
기계 학습 알고리즘의 능력을 평가하기 위해서는 성능의 정량적 측정을 설계해야 한다. 보통 이 성능 측정치 \(P\)는 시스템에 의해 수행되는 특정한(specific) 작업 \(T\)에 한 한다.
Classification, classification with missing inputs, transcription과 같은 작업의 경우 모델의 정확도(accuracy)를 측정하는 경우가 많다. Accuracy는 모델이 올바른 결과를 내는 비율이다. 모델이 잘못된 결과를 내는 비율 인 error rate를 측정하여 동일한 정보를 얻을 수도 있다. 우리는 종종 error rate를 expected 0-1 loss라고 부릅니다. 특정 사례에 대한 0-1 loss는 올바르게 분류된 경우 0이고 그렇지 않은 경우 1이다. 밀도 추정과 같은 작업의 경우 accuracy, error rate, 0-1 loss 등을 측정하는 것은 의미가 없다. 대신, 우리는 각 사례에 대해 모델에 연속 가치 평가 점수(continuous-valued score)를 부여하는 다른 성과 지표(performance metric)를 사용해야한다. 가장 일반적인 방법은 평균 로그 확률(average log-probability)을 사용하는 것이다.
일반적으로 우리는 기계 학습 알고리즘이 이전에 보지 못했던 데이터에 대해 얼마나 잘 수행하는지에 관심이 있다. 이것은 실제 세계에서 알고리즘이 얼마나 잘 동작할지 결정하기 때문이다. 그러므로 우리는 기계 학습 시스템 학습에서 사용된 데이터와 분리된 test set으로 성능을 평가한다.
성능 측정 방법의 선택은 간단하고(straightforward) 객관적(objective)으로 보일 수 있지만, 시스템의 원하는 동작과 잘 일치하는 성능 측정 방법을 선택하기는 어렵다.
어떤 경우에는 무엇을 측정해야 할지 결정하기 어렵기 때문이다. 예를 들어, 필사 작업(transcription task)을 수행할 때 전체 시퀀스의 accuracy를 측정해야 할까? 아니면 시퀀스의 부분적인 신뢰도를 제공하는 보다 세밀한 측정을 사용해야할까? Regression task 수행 시, 작은 실수를 자주 만드는 것과 큰 실수를 가끔 만드는 것 중 어떤 것에 큰 페널티를 주어야 할까? 이런 종류의 선택은 응용프로그램에 따라 다르다.
또 다른 경우, 우리가 어떤 양을 측정하고 싶은지는 알고 있지만, 그 측정이 비현실적 일 수 있다. 예를 들어, 이것은 밀도 추정에서 자주 발생한다. 가장 좋은 확률 모델은 암시적으로 확률 분포를 나타낸다. 그런 모델에서 공간의 특정 지점에 할당된 실제 확률 값을 계산하는 것은 어렵다. 이런 경우 설계 목표에 부합하는 다른 기준을 만들거나, 원하는 기준에 적합하게 근사화 해야 한다.
5.1.3 The Experience, \(E\)
기계 학습 알고리즘은 학습 과정 동안 어떤 종류의 경험을 하는지에 따라, supervised 와 unsupervised로 분류될 수 있다.
이 책의 대부분의 학습 알고리즘은 dataset 전체를 경험할 수 있는 것으로 이해될 수 있다. Dataset은 5.1.1절에 정의된 많은 example들의 모음이다. 때로는 examples data points라고도 한다.
통계학자와 기계학습 연구자가 연구한 가장 오래된 dataset 중 하나는 Iris dataset이다(Fisher, 1936). 그것은 150 Iris 식물의 다른 부분의 측정 모음이다. 각 개별 식물은 하나의 example에 해당한다. 각 example 내의 특징(feature)은 식물의 각 부분의 측정치이다: 꽃받침 길이, 꽃받침 넓이, 꽃잎 길이, 꽃잎 넓이. 또한 dataset 은 식물이 속한 종에 대한 정보를 가지고 있다. Dataset 내에는 세가지 다른 종이 있다.
Unsupervised learning (비 지도 학습) 알고리즘은 많은 feature를 포함하는 dataset을 경험하고, 이 dataset의 구조에 대한 유용한 속성을 학습한다. Deep learning에서 우리는 주로 dataset을 생성하는 전체 확률 분포를 학습하려 하는데, 밀도 추정과 같이 명시적으로 하거나 합성이나 잡음 제거 같이 암시적으로 학습한다. 다른 unsupervised learning 알고리즘은 dataset을 유사한 예제의 클러스터(cluster)로 나누는 클러스터링(clustering)과 같은 다른 역할을 수행한다.
지도 학습(Supervised learning) 알고리즘은 feature들을 포함하는 dataset을 경험하지만, 각 example은 연결되는 label이나 target이 있다. 예를 들어, Iris dataset은 각 Iris 식물의 종이 주석으로 표시된다. Supervised learning 알고리즘은 iris dataset을 연구하고, iris 식물의 측정 결과에 따라 세가지 다른 종으로 분류하는 방법을 배울 수 있다.
대략적으로, unsupervised learning은 임의의 벡터 \(\mathrm{x}\)의 몇 가지 example을 관측하고, 확률 분포 \(p(\mathrm{x}\) 또는 그 분포의 일부 feature를 암시적 또는 명시적으로 학습하는 것을 포함한다. 반면, supervised learning 임의의 벡터 \(\mathrm{x}\)의 몇 가지 example과 관련된 값 또는 벡터 \(\mathrm{y}\)를 관측하고, 일반적으로 \(p (\mathrm{y}\ |\ \mathrm{x})\)를 추정함으로써 \(\mathrm{x}\)로 부터 \(\mathrm{y}\)의 예측을 학습하는 것을 포함한다. Supervised learning이라는 용어는 기계 학습 시스템에 무엇을 해야 하는지를 보여주는 강사나 교사가 제공하는 목표 \(\mathrm{y}\)의 관점에서 유래한다. unsupervised learning의 경우, 강사나 교사가 없으므로, 알고리즘은 가이드 없이 데이터를 이해하는 법을 배워야 한다.
Unsupervised learning 과 supervised learning은 정식으로 정의된 용어가 아니다. 이들 사이의 경계선은 종종 불분명하다. 많은 기계 학습 기술들을 사용해 두 가지 task를 수행할 수 있다. 예를 들어, 확률의 체인 룰 규칙(the chain rule of probability)은 벡터 \(\mathrm{x}\in \mathbb{R}^{n}\)에 대해 joint distribution이 다음과 같이 분해 될 수 있음을 명시한다.
\[p(\displaystyle \mathrm{x})=\prod_{i=1}^{n}p(\mathrm{x}_{i}|\mathrm{x}_{1},\ \ldots,\ \mathrm{x}_{i-1})\tag{5.1}\]
이 분해는 우리가 모델링 \(p(\mathrm{x})\)를 \(n\)개의 supervised learning으로 나누어 표면상으로는 unsupervised 문제를 풀 수 있음을 의미한다. 또는, 전통적인 unsupervised learning 기술을 사용하여 \(p(y\ |\mathrm{x})\)와 joint distribution \(p(\mathrm{x},\ y)\)를 학습함으로써 추론하여 supervised learning 문제를 풀 수 있다.
\[p(y|\displaystyle \mathrm{x})=\frac{p(\mathrm{x},y)}{\sum_{y'}p(\mathrm{x},y')}\tag{5.2}\]
Unsupervised 학습과 supervised 학습은 완전히 형식적이거나 별개의 개념은 아니지만 기계 학습 알고리즘으로 수행하는 작업을 대략 범주화 하는데 도움된다. 일반적으로 사람들은 regression 학습, 분류, 구조화된 출력 문제를 supervised learning이라고 한다. 다른 작업을 지원하는 밀도 추정은 대개 unsupervised learning으로 간주된다.
학습 패러다임의 다른 변형도 가능하다. 예를 들어, semisupervised learning 에서는 supervision target을 포함하는 사례도 있지만 그렇지 않은 사례도 있다. multi-instance learning에서 example의 전체 모음은 class의 example를 포함하거나 포함하지 않는 것으로 labeling 되지만 모음(collection)의 개별 구성원에는 label이 지정되지 않는다. Deep learning을 사용한 multi-instance learning의 최근 사례는 Kotzias et al. (2015)을 참조하라.
일부 기계 학습 알고리즘은 고정된 dataset만 경험하지 않는다. 예를 들어, 강화 학습(reinforcement learning) 알고리즘은 환경과 상호 작용하므로 학습 시스템과 그 경험 사이에 피드백 루프가 있다. 이러한 알고리즘은이 책에서 다루지 않는다. 강화 학습에 대한 정보는 Sutton and Barto (1998) 또는 Bertsekas and Tsitsiklis (1996), Mnih et al. (2013)을 통해 강화 학습에 대한 deep learning 방법을 제시한다.
대부분의 기계 학습 알고리즘은 단순히 dataset를 경험한다. Dataset은 여러가지 방법으로 설명할 수 있다. 모든 경우에 dataset은 feature들의 모음으로 이루어진 example들의 모음이다.
Dataset를 설명하는 일반적인 방법 중 하나는 design 행렬이다. design 행렬은 각 행에 다른 example이 들어있는 행렬이다. 행렬의 각 열은 다른 feature이다. 예를 들어 Iris dataset에는 각 예제에 대해 네 가지 feature가 있는 150 개의 example이 포함되어 있다. 이것은 우리가 행렬 \(\boldsymbol{X} \in \mathbb{R}^{150\times 4}\)를 사용하여 dataset을 나타낼 수 있음을 의미한다. 여기서 \(X_{i,1}\)는 \(i\)번째 식물의 꽃받침 길이이고 \(X_{i,1}\)는 꽃받침 넓이 이다. 우리는 대부분의 학습 알고리즘을 design 행렬 dataset에서 어떻게 작동하는지 이 책에서 설명할 것이다.
물론 dataset을 design 행렬로 설명하려면 각 example을 벡터로 설명할 수 있어야 하며 각 벡터는 동일한 크기여야 한다. 이것이 항상 가능한 것은 아니다. 예를 들어, 너비와 높이가 다른 사진 모음이 있는 경우 다른 사진에는 다른 픽셀 수를 가지므로 모든 사진을 동일한 길이의 벡터로 기술 할 수 있는 것은 아니다. 9.7절과 10 장에서는 서로 다른 유형의 heterogeneous data(이종 데이터)를 처리하는 방법을 설명한다. 이와 같은 경우 dataset을 \(m\) 행이 있는 행렬로 설명하는 대신 \(m\)개의 원소가 포함된 세트로 설명한다. \(\{\boldsymbol{x}^{(1)},\ \boldsymbol{x}^{(2)},\ldots, \boldsymbol{x}^{(m)}\}\). 이 표기법은 두 개의 예제 벡터 \(\boldsymbol{x}^{(i)}\)와 \(\boldsymbol{x}^{(j)}\)이 같은 크기임을 의미하지 않는다.
Supervised 학습의 경우, example에는 label 또는 target은 물론 feature 모음이 포함되어 있다. 예를 들어, 학습 알고리즘을 사용하여 사진에서 물체 인식을 수행하려면, 각 사진에 어떤 물체가 있는지를 지정해야 한다. 사람을 나타내는 0, 자동차를 나타내는 1, 고양이를 나타내는 2 등과 같은 숫자 코드로 이를 수행할 수 있다. Feature observations(기능 관찰) \(X\)의 design 행렬을 포함하는 dataset로 작업할 때 종종 label의 벡터 \(\boldsymbol{y}\)를 제공한다. \(y_{i}\)는 example \(i\)의 label을 제공한다.
물론 label이 단일 숫자 이상일 수 있다 예를 들어, 만약 우리가 언어 인식 시스템을 훈련시켜 문장 전체를 베끼고 싶다면, 각 예제 문장의 label은 단어의 시퀀스이다.
Supervised와 unsupervised 학습에 대한 공식 정의가 없는 것처럼, dataset 또는 경험에 대한 엄격한 분류법도 없다. 여기에 설명된 구조는 대부분의 경우를 다루지만, 새로운 용도에 맞게 새로운 구조를 설계하는 것은 항상 가능하다.
5.1.4 Example: Linear Regression
경험을 통해 컴퓨터 프로그램의 성능을 향상시킬 수 있는 알고리즘으로 기계학습 알고리즘을 정의하는 것은 다소 추상적이다. 이것을 더 구체적으로 만들기 위해, 간단한 기계 학습 알고리즘의 예를 제시하는데, linear regression이 그것이다. 우리는 이 예제를 반복적으로 사용해서 소개하는 기계 학습의 동작을 이해하는데 도움되도록 할 것이다.
이름에서 알 수 있듯이 linear regression(선형 회귀)은 regression 문제를 해결한다. 즉, 목표는 벡터 \(\boldsymbol{x}\in \mathbb{R}^{n}\)를 입력으로 사용하고 스칼라 \(y \in \mathbb{R}\)의 값을 출력으로 예측할 수 있는 시스템을 구축하는 것이다. linear regression의 경우, 출력은 입력의 선형 함수다. \(\hat{y}\)를 모델이 예측해야 하는 \(y \) 값이라고 하자. 우리는 출력을 다음과 같이 정의한다.
\[\hat{y}=\boldsymbol{w}^{\top}\boldsymbol{x}\tag{5.3}\]
여기서 \(\boldsymbol{w}\in \mathbb{R}^{n}\)는 매개 변수(parameter) 벡터 이다.
매개변수는 시스템의 동작을 제어하는 값이다. 이 경우 \(w_i\)는 모든 feature의 기여도(contribution)를 더하기 전에 feature \(x_i\)에 곱하는 계수다. \(\boldsymbol{w}\)를 각 feature가 예측(prediction)에 어떻게 영향을 미치는지 결정하는 일련의 weight(가중치)로 생각 할 수 있다. feature \(x_i\)가 양의 가중치 \(w_i\)를 받는 경우, 그 feautre를 증가시키면 예측값 \( \hat{y}\)가 증가한다. feature가 음의 가중치를 받는 경우, 그 feature의 값을 증가시키면 예측값는 감소한다. feature의 가중치가 큰 경우 예측에 큰 영향을 주고, 가중치가 0인 경우 예측에 영향을 주지 않는다.
따라서 우리는 task \(T\)를 정의할 수 있다: \(\hat{y}=\boldsymbol{w}^{\top}\boldsymbol{x}\)를 출력하여 \(\boldsymbol{x}\)로 부터 \(y\)를 예측. 다음으로 성능 측정 \(P\)를 정의할 필요가 있다.
학습 시 사용하지 않고, 모델 성능이 얼마나 뛰어난지 평가하는 데만 사용하는 \(m\)개의 example 입력이 있고, 각각의 example에 대해 \(y\)의 정확한 값을 제공하는 regression target 벡터를 가지고 있다고 하자. 이 dataset은 평가용으로만 사용되므로 test set이라고 한다. 입력의 design 행렬을 \(\boldsymbol{X}^{(\mathrm{test})}\), regression target 벡터를 \(\boldsymbol{y}^{(\mathrm{test})}\)라고 한다.
모델의 성능을 측정하는 한 가지 방법은 test set에서 모델의 평균 제곱 오차(mean squared error)를 계산하는 것이다. \(\boldsymbol{y}^{(\mathrm{test})}\)가 test set에서 모델의 예측을 제공하면 평균 제곱 오차는 다음과 같이 주어진다.
\[\mathrm{MSE}_{\mathrm{test}} =\frac{1}{m} \sum\limits_i {\left( { \hat{y}^{(\mathrm{test})} - y^{(\mathrm{test})} } \right)_i^2} \tag{5.4}\]
직관적으로, \( \hat{y}^{(\mathrm{test})}=y^{(\mathrm{test})} \) 일 때이 오류 측정 값이 0으로 감소 함을 알 수 있다. 우리는 또한 다음을 알 수 있다.
\[\displaystyle \mathrm{MSE}_{\mathrm{test}}\ =\frac{1}{m}\left\|\hat{y}^{(\mathrm{test})}-y^{(\mathrm{test})}\right\|_{2}^{2}\tag{5.5}\]
예측(predictions)과 목표(targets) 사이의 유클리드 거리(Euclidean distance)가 증가할 때마다 error가 증가한다.
기계 학습 알고리즘을 만들기 위해서는 training set \((X^{(\mathrm{train})},\ y^{(\mathrm{train})})\)를 관측하여 \(\mathrm{MSE}_{\mathrm{train}}\)를 줄이는 방식으로 weight를 향상시키는 알고리즘을 설계해야 한다. 직관적인 방법 (5.5.1 절에서 나중에 증명할 것입니다)은 training set 인 \(\mathrm{MSE}_{\mathrm{train}}\)의 mean squared error를 최소화하는 것이다.
\(\mathrm{MSE}_{\mathrm{train}}\)을 최소화 하기 위해, gradient가 0 인 부분을 간단히 풀 수 있다.
\[\nabla_{w}\mathrm{MSE}_{\mathrm{train}} =0\tag{5.6}\]
\[\Rightarrow \displaystyle \nabla_{w}\frac{1}{m}\left\|\hat{y}^{(\mathrm{train})} - y^{(\mathrm{train})} \right\|_{2}^{2} = 0\tag{5.7}\]
\[\Rightarrow\ \frac{1}{m}\nabla_{w}\left\|X^{(\mathrm{train})}w\ -\ y^{(\mathrm{train})}\right\|_{2}^{2}\ =\ 0\tag{5.8}\]
\[\Rightarrow\ \nabla_{w}\left( { X^{(\mathrm{train})} w - y^{(\mathrm{train})} } \right)^{\top} \left( {X^{(\mathrm{train})}w\ -\ y^{(\mathrm{train})} } \right) =\ 0\tag{5.9}\]
\[\Rightarrow\ \nabla_{w}\left( w^{\top} X^{(\mathrm{train})\top} X^{(\mathrm{train})} w- 2 w^{\top} X^{(\mathrm{train})\top} y^{(\mathrm{train})} + y^{(\mathrm{train})\top} y^{(\mathrm{train})} \right) =\ 0\tag{5.10}\]
\[2 X^{(\mathrm{train})\top} X^{(\mathrm{train})} w - 2 X^{(\mathrm{train})\top} y^{(\mathrm{train})} = 0 \tag{5.11}\]
\[w=\left( { X^{(\mathrm{train})\top} X^{(\mathrm{train})} } \right)^{-1} X^{(\mathrm{train})\top} y^{(\mathrm{train})} = 0 \tag{5.12}\]
식 5.12에 의해 구해진 방정식의 해는 normal equation이라고 한다. 식 5.12의 평가는 간단한 학습 알고리즘이다. linear regression 학습 알고리즘 동작의 예는 그림 5.1을 참조하라.
linear regression이라는 용어는 하나의 추가 매개 변수(절편 \(b\))를 가진 약간 더 복잡한 모델을 가리키는데 자주 사용된다. 이 모델은 다음과 같다.
\[\hat{y}=w^{\top}x+b\tag{5.13}\]
따라서 매개 변수에서 예측으로의 매핑은 여전히 선형 함수이지만 feature에서 예측으로의 매핑은 이제 affine 함수다. 이 affine 함수로의 확장은 모델의 예측 plot이 여전히 선처럼 보이지만, 원점을 통과할 필요는 없다는 것을 의미한다. bias 매개 변수 \(b\)를 추가하는 대신 weight만 있는 모델을 계속 사용할 수 있지만 항상 1로 설정된 추가 성분으로\(x\)를 늘려야한다. 추가 성분 1에 해당하는 가중치는 bias 매개 변수 역할을 한다. 우리는 이 책 전체에서 affine 함수를 참조할 때 "linear(선형)"라는 용어를 자주 사용한다.
절편 항 \(b\)는 종종 affine 변환의 bias parameter라고 불린다. 이 용어는 어떤 입력도 없는 상태에서 이 변환의 출력이 \(b\)로 bias된다는 점에서 도출된다. 이 용어는 통계적 추정 알고리즘의 수량에 대한 예상 추정치가 실제 수량과 같지 않은 통계적 bias의 개념과 다르다.
Linear regression는 물론 매우 단순하고 제한적인 학습 알고리즘이지만, 학습 알고리즘이 어떻게 작용하는지에 대한 예를 제공한다. 다음 절에서는 학습 알고리즘 설계의 기본 원리 중 일부를 설명하고 이러한 원칙이 보다 복잡한 학습 알고리즘을 구축하는 데 어떻게 사용될 수 있는지를 설명할 것이다.
5.2 Capacity, Overfitting and Underfitting
기계 학습의 주요 과제는 우리 모델이 훈련된 것뿐만 아니라 이전에는 볼 수 없었던 새로운 입력에 대해 잘 수행해야 한다는 것이다. 이전에 관찰되지 않은 입력에서 잘 수행할 수 있는 능력을 “generalization(일반화)”라고 한다.
일반적으로 기계 학습 모델을 학습할 때 training set에 접근할 수 있으며 training error에 대한 오류 집합을 training error에 대해 계산할 수 있으며 training error를 줄일 수 있다. 지금까지 우리가 설명한 것은 단순히 최적화 문제일 뿐이다. 기계 학습과 최적화를 구분하는 것은 test error라고도하는 generalization error를 낮춘다는 것이다. test error는 새 입력에 대한 오류의 예상 값(expected value)으로 정의된다. 여기서 expectation은 서로 다른 가능한 입력에 취하는데, 이 입력은 시스템이 실제로 가질 것으로 예상되는 입력값의 분포로부터 구한다.
일반적으로 training set과 별도로 수집된 example test set에서 성능을 측정함으로써 기계 학습 모델의 generalization error를 추정한다.
Linear regression 예제에서는 training error를 최소화하여 모델을 학습했다.
\[\displaystyle \frac{1}{m^{(\mathrm{train})}}\left\|\boldsymbol{X}^{(\mathrm{train})}\boldsymbol{w}-\boldsymbol{y}^{(\mathrm{train})}\right\|_{2}^{2}\tag{5.14}\]
하지만 실제로 우리는 test error에 대해 관심있다. \(\frac{1}{{{m^{{\mathrm{test}}}}}}\left\| {{\boldsymbol{X}^{({\mathrm{test}})}}\boldsymbol{w} - {\boldsymbol{y}^{({\mathrm{test}})}}} \right\|_2^2\)
Training set 만 관찰하면 test set의 성능에 어떤 영향을 미칠까? 통계적 학습 이론(statistical learning theory)의 분야는 몇 가지 해답을 제공한다. training과 test set이 임의로 수집되면 실제로 할 수 있는 일은 거의 없다. training과 test set이 수집되는 방법에 대해 몇 가지 가정을 할 수 있다면 우리는 몇 가지 진전을 이룰 수 있다.
Train data와 test data는 data set으로 부터 data generating process라고하는 확률 분포에 의해 생성된다. 우리는 일반적으로 i.i.d. assumption set을 만든다. 이 i.i.d. assumption은 각 dataset내 example이 서로 독립이며(independent), train set과 test이 서로 동일한 확률 분포에서 도출(identically distributed)된 동일한 분포라는 것이다. 이 가정은 단일 example에 대한 확률 분포로 data 생성 프로세스를 설명할 수 있게 한다. 그 다음 동일한 분포가 모든 train example과 모든 test example를 생성하는 데 사용된다. 공유된 기본 분포(shared underlying distribution)를 data generating distribution라고 한다: \(p_{\mathrm{data}}\)로 표시. 이 확률론적 체계와 i.i.d.(Independent and identically distributed) 가정을 통해 training error와 test error 간의 관계를 수학적으로 연구할 수 있다.
Training error와 test error 사이에서 관찰할 수 있는 즉각적인 연결점은 무작위로 선택된 모델의 예상 training error가 해당 모델의 예상 test error와 동일하다는 것이다. 우리가 확률 분포 \(p(\boldsymbol{x},y)\)를 가지고 그것을 반복적으로 샘플링하여 train set와 test set를 생성한다고 가정하자. 일부 고정 값 \(\boldsymbol{w}\)의 경우 예상되는 training set error는 예상되는 test set error와 정확히 동일하다. 왜냐하면 두 기대치가 동일한 dataset 표본 추출 과정을 사용하여 형성되기 때문이다. 두 조건의 유일한 차이점은 우리가 샘플링하는 dataset에 지정하는 이름이다.
물론 우리는 기계 학습 알고리즘을 사용할 때 미리 매개 변수를 수정하지 않고 두 dataset을 모두 샘플링한다. training set을 샘플링 한 다음, training set error를 줄이기 위해 매개 변수를 선택한 다음 test set을 샘플링한다. 이 프로세스에서 예상되는 test error는 예상되는 training error 값보다 크거나 같다. 기계 학습 알고리즘의 성능을 결정하는 요소는 다음과 같은 능력이다.
1. Training error를 작게 만드는 것
2. Training error와 test error의 차이를 작게 만드는 것
이 두 가지 요소는 기계학습의 두 가지 핵심 과제인 underfitting과 overfitting에 해당한다. 모델이 training set에서 충분히 낮은 error 값을 얻을 수 없을 때 underfitting이 발생한다. training error와 test error 사이의 간격이 너무 클 경우 overfitting이 발생한다.
우리는 모델의 capacity를 변경하여 overfit 또는 underfit를 제어할 수 있다. 비공식적으로 모델의 capacity는 다양한 기능을 수용할 수 있는 능력이다. capacity가 낮은 모델은 training set에 맞추기 어려울 수 있다. capacity가 큰 모델은 test set에 잘 맞지 않는 training set의 특성을 암기함으로써 overfit 될 수 있다.
학습 알고리즘의 capacity을 제어하는 한 가지 방법은 학습 알고리즘이 solution으로 선택할 수 있는 function들의 집합인 hypothesis space를 선택하는 것이다. 예를 들어, linear regression 알고리즘은 입력의 모든 linear function의 집합을 hypothesis space으로 가지고 있다. 우리는 이 linear regression의 hypothesis space에 polynomial(다항식)을 추가해 일반화할 수 있다. 그러면 모델의 capacity가 증가한다.
1차 다항식은 이미 우리가 알고 있는 익숙한 linear regression 모형을 제공한다.
\[\hat{y}=b+wx\tag{5.15}\]
linear regression 모델에 또 다른 feature \(x^2\)를 도입함으로써 \(x\)의 2차 함수 모델을 학습할 수 있다.
\[\hat{y}=b+w_{1}x+w_{2}x^{2}\tag{5.16}\]
이 모델은 입력에 대해 2차 함수를 구현하지만 출력은 여전히 매개 변수의 선형 함수이므로 normal equation을 사용하여 모델을 closed form으로 학습할 수 있다. 예를 들어 9차 다항식등을 계속 추가할 수 있다.
\[\displaystyle \hat{y}=b+\sum_{i=1}^{9}w_{i}x^{i}\tag{5.17}\]
기계 학습 알고리즘은 일반적으로 수행해야 할 tast의 복잡성과 함께 제공되는 training data의 양에 관하여 capacity가 적절한 경우에 가장 잘 수행된다. capacity가 부족한 모델은 복잡한 작업을 해결할 수 없다. capacity가 큰 모델은 복잡한 작업을 해결할 수 있지만, 현재의 작업을 해결하기 위해 필요한 것보다 capacity가 더 높을 경우, 그들은 overfitting 할 수 있다.
그림 5.2는 이러한 원리를 보여준다. 우리는 실제 함수가 2차인 문제에 대해 선형, 2차, 9차 예측을 비교한다. 선형 함수는 근본적으로 곡률을 포함할 수 없으므로 부적합하다. 9차 예측함수는 정확한 기능을 나타낼 수 있지만, training example보다 매개변수가 많기 때문에 training point를 정확하게 통과하는 다른 많은 함수로 무한히 나타낼 수 있다. 우리는 매우 다양한 solution이 존재할 때 일반화되는 solution을 선택할 가능성이 매우 작아진다. 이 예제에서 2차 모델은 작업의 실제 구조와 완벽하게 일치하므로 새로운 data에 잘 일반화된다.
지금까지 우리는 모델의 입력 feature의 수를 변경하여 (그리고 그 feature들과 관련된 새로운 매개변수들을 동시에 추가) 모델의 용량을 변경하는 것에 대해서만 설명하였다. 실제로 모델의 capacity를 변경하는 많은 방법이 있고, capacity가 모델 선택에 의해서만 결정되는 것은 아니다. 이 모델은 training objective를 줄이기 위해 매개 변수를 변경할 때 학습 알고리즘이 선택할 수 있는 함수의 family을 정한다. 이것은 모델의 representational capacity(표현 용량)라고 불린다. 대부분의 경우 이 family에서 최상의 함수를 찾는 것은 매우 어려운 최적화 문제이다. 실제로 학습 알고리즘은 실제 최상의 함수를 찾지는 못하고, 단지 training error를 현저히 감소시킨다. 최적화 알고리즘의 불완전성(imperfection)과 같은 이러한 추가 제한은 학습 알고리즘의 effective capacity(유효 용량)가 모델의 representational capacity보다 작을 수 있음을 의미한다.
기계 학습 모델의 generalization(일반화)을 개선하기위한 우리의 현대적 생각은 적어도 Ptolemy(클라우디오스 프톨레마이오스, 고대 그리스의 수학자)의 시대 만큼이나 거슬러 올라가는 철학자들의 생각을 상세하게 한 것이다. 많은 초기 학자들은 지금 오컴의 면도날 (Occam’s razor, c. 1287-1347)로 널리 알려져 있는 절약규칙을 사용한다. (Occam’s razor: "많은 것들을 필요없이 가정해서는 안된다, 더 적은 수의 논리로 설명이 가능한 경우, 많은 수의 논리를 세우지 말라) 이 원칙은 알려진 관측을 똑같이 잘 설명하는 경쟁 가설들 중에서 가장 단순한 것을 선택해야한다는 것이다. 이 아이디어는 통계적 학습 이론(Statistical learning theory, Vapnik and Chervonenkis, 1971; Vapnik, 1982; Blumer et al., 1989; Vapnik, 1995)의 창시자들에 의해 20 세기에 공식화되고 보다 정확 해졌다.
통계적 학습 이론은 모델의 capacity를 정량화 하는 다양한 수단을 제공한다. 이 중 가장 잘 알려진 것은 Vapnik-Chervonenkis dimension 또는 VC dimension이다. VC dimension은 이진 분류자(binary classifier)의 capacity를 측정한다. VC dimension은 Classifier가 임의로 labeling 할 수 있는 m 개의 다른 x 점들에 대한 훈련 세트가 존재하게 하는 최대 m에 의해 정의된다. 모델의 capacity를 정량화하면 통계적 학습 이론이 정량적 예측을 할 수 있다. 모델의 capacity가 커짐에 따라 증가하고, training example수의 증가에 따라 감소하는데 이 양에 의해 Training error와 generalization error간의 불일치가 위에서부터 bound된다는 것은 통계적 학습 이론의 가장 중요한 결과이다. 이러한 경계는 기계 학습 알고리즘이 동작할 수 있다는 실질적인 근거를 제공하지만 Deep learning 알고리즘에서는 거의 사용되지 않다. 이것은 종종 부분적으로 boundary가 상당히 느슨하고 Deep learning 알고리즘의 capacity를 결정하기가 어려울 수 있기 때문이다. Deep learning의 capacity를 결정하는 문제는 특히 어려운데, effective capacity가 최적화 알고리즘의 능력에 따라 제한되기 때문이다. 그리고 우리는 Deep learning에서 사용되는 매우 일반적인 non-convex 최적화 문제를 이론적으로는 거의 이해할 수 없다.
우리는 단순한 함수가 더 잘 일반화되지만 (training error와 test error 사이에 작은 차이를 가지기 위해), 낮은 training error를 달성하기에 충분히 복잡한 hypothesis을 선택해야 한다는 것을 기억해야한다. 일반적으로 모델 capacity가 증가함에 따라 가능한 최소 error 값을 점근 적(asymptotes)으로 나타낼 때까지 (error 측정 값이 최소값을 가졌다고 가정) training error가 감소한다. 일반적으로 generalization error는 모델 capacity의 함수로서 \(\mathrm{U}\) 형 곡선을 갖는다. 이것은 그림 5.3에서 보여준다.
임의로 capacity가 큰 가장 극단적인 경우에 도달하기 위해 non-parametric 모델의 개념을 도입했다. 지금까지 우리는 linear regression과 같은 parametric 모델만 보았다. Parametric 모델은 데이터가 관측되기 전에 크기가 유한하고 고정된 매개변수 벡터에 의해 설명되는 함수를 학습하는데, non-parametric 모델은 이런 제한이 없다
때로 non-parametric 모델은 실제로는 구현할 수 없는 이론상의 추상적 개념(예: 가능한 모든 확률 분포를 검색하는 알고리즘)일 수 있다. 그러나 그 복잡성을 training set 크기의 함수로 만들어 실제적인 non-parametric 모델을 설계할 수 있다. 한가지 예로 nearest neighbor regression이 있다. 고정 길이 벡터를 갖는 linear regression과 달리 nearest neighbor regression 모델은 training set에서 \(X\)와 \(y\) 만 저장한다. test point \(x\)를 분류하라는 메시지가 표시되면 모델은 training set에서 가장 가까운 항목을 찾아 연관된 regression target을 반환한다. 즉, \(\hat{y} = y_{i}\)이고, \(i =\mathop {\arg \min }\limits_{i} ||X_{i,:} -x||_{2}^{2}\) 이다. 알고리즘은 learned distance metrics(Goldberger et al., 2005)과 같이 \(L^{2}\) norm 이외의 다른 distance metric로 일반화할 수도 있다. 알고리즘이 가장 가까운 것으로 연결되어 있는 모든 \(X_{i,:}\)에 대해 \(y_{i}\) 값을 평균하여 연결을 끊을 수 있는 경우, 이 알고리즘은 regression dataset에 대해 최소로 가능한 training error(두 개의 동일한 입력이 서로 다른 출력과 관련이 있는 경우 0보다 클 수 있음)를 달성할 수 있다.
마지막으로 parametric 학습 알고리즘을 다른 알고리즘 내부에 배치하여 필요에 따라 매개 변수의 수를 늘려서 non-parametric 적 학습 알고리즘을 만들 수도 있다. 예를 들어 입력의 다항식 확장 위에 linear regression에 의해 학습된 다항식의 차수를 변화시키는 학습의 바깥 루프를 상상할 수 있다.
이상적인 모델은 단순히 data를 생성하는 진정한 확률 분포를 알고 있는 oracle이다. 심지어 그런 모델조차도 여전히 많은 문제에 대해 약간의 error가 발생할 것이다. 왜냐하면 그 분포에는 여전히 noise가 있을 수 있기 때문이다. supervised learning의 경우, \(x\)에서 \(y\) 로의 매핑은 확률적일 수 있거나, \(y\)는 \(x\)에 포함된 변수 이외의 다른 변수를 사용하는 결정론적 함수 일 수도 있다. 실제 분배 \( p (x,\ y)\)에서 oracle이 겪는 오차를 Bayes error라고 한다.
Training error와 generalization error는 training set의 크기가 다르기 때문에 다양하다. 예상되는 generalization error는 training example의 수가 증가함에 따라 절대로 증가할 수 없다. non-parametric 모델의 경우 가능한 최저 error가 달성될 때까지 더 많은 data가 더 나은 generalization을 산출한다. 최적의 capacity보다 작은 fixed parametric 모델은 Bayes error를 초과하는 error 값에 근접한다. 그림 5.4를 참조하십시오. 모델이 최적의 capacity 가질 수는 있지만 training과 generalization error간에 큰 격차가 있음을 유의하십시오. 이러한 상황에서 더 많은 training example을 수집함으로써 이러한 차이를 줄일 수 있다.
5.2.1 The No Free Lunch Theorem
학습 이론은 기계 학습 알고리즘이 한정된 training set로부터 잘 일반화될 수 있다고 주장한다. 이것은 논리의 몇 가지 기본 원칙과 모순되는 것 같다. 귀납적 추론, 또는 한정된 일련의 예제에서 일반적인 규칙을 추론하는 것은 논리적으로 유효하지 않다. 집합의 모든 구성원을 설명하는 규칙을 논리적으로 추론하려면 집합의 모든 구성원에 대한 정보가 있어야한다.
부분적으로, 기계 학습은 순전히 논리적 추론에서 사용되는 전적으로 확실한 규칙이 아닌 확률 적 규칙 만 제공함으로써 이 문제를 피한다. 기계 학습은 우려하는 세트의 대부분 구성원에 대해 올바른 규칙을 찾을 것을 약속한다.
불행히도, 이것조차도 전체 문제를 해결하지는 못한다. 시스템 학습에 대한 “공짜 점심은 없다 이론”(Wolpert, 1996년)은 가능한 모든 데이터 생성 분포에 대해 평균을 취해, 이전에 관찰되지 않은 점들을 분류할 때 모든 분류 알고리즘이 동일한 error rate를 가지고 있다고 명시하고 있다. 즉, 어떤 의미에서는 기계 학습 알고리즘이 보편적으로 다른 어떤 알고리즘보다 우수하지 않다. 우리가 생각할 수 있는 가장 정교한 알고리즘은 모든 포인트가 같은 클래스에 속한다는 것을 예측하는 것 만큼 모든 가능한 작업에 대해 동일한 평균 성능을 가진다.
다행히도, 이러한 결과는 우리가 가능한 모든 데이터 생성 분포에 대해 평균을 낼 때만 유효하다. 만약 우리가 실제 응용 프로그램에서 마주치는 확률 분포의 종류에 대해 가정한다면, 우리는 이러한 분포에서 잘 작동하는 학습 알고리즘을 설계할 수 있다.
이것은 기계학습 연구의 목적이 보편적 학습 알고리즘이나 절대 최상의 학습 알고리즘을 찾는 것이 아니라는 것을 의미한다. 대신 우리의 목표는 AI 에이전트가 경험하는 "실제 세계"와 관련이 있는 분포의 종류와 우리가 관심을 갖는 분포를 생성하는 데이터의 종류에서 가져온 데이터에 대해 어떤 종류의 기계 학습 알고리즘이 잘 작동하는지 이해하는 것이다.
5.2.2 Regularization
“공짜 점심은 없다” 규칙은 특정한 일을 잘 수행하기 위해 기계 학습 알고리즘을 설계해야 한다는 것을 의미한다. 우리는 학습 알고리즘에 일련의 선호도(preferences)를 구축함으로써 그렇게 한다. 이러한 기본 설정이 학습 문제와 일치할 때 알고리즘이 성능이 향상된다.
지금까지 우리가 논의한 학습 알고리즘을 수정하는 유일한 방법은 학습 알고리즘이 선택할 수 있는 솔루션의 가설 공간에서 함수를 추가하거나 제거하여 모델의 capacity를 늘리거나 줄이는 것이다. 우리는 regression 문제에 대한 다항식 차수를 증가시키거나 감소시키는 구체적인 예를 제시했다. 우리가 지금까지 설명한 관점은 지나치게 단순하다
알고리즘의 동작은 hypothesis space에서 허용되는 function set을 얼마나 크게 만들어야 하는가에 의해서가 아니라 그 function이 특수성(specific identity)에 의해 크게 영향을 받는다. 지금까지 학습한 학습 알고리즘 인 linear regression은 입력의 선형 함수 집합으로 구성된 hypothesis space을 가지고 있다. 이러한 선형 함수는 입력과 출력 사이의 관계가 실제로 선형에 가까운 문제에 매우 유용할 수 있다. 하지만 매우 비선형 적으로 동작하는 문제에는 유용하지 않다. 예를 들어 linear regression을 \(x\)에서 \(\sin (x)\) 예측에 사용하면 잘 수행되지 않는다. 따라서 우리는 어떤 함수를 통해 해결책을 도출할 수 있는지, 그리고 이러한 기능의 양을 조절함으로써 알고리즘의 성능을 제어할 수 있다.
또한 우리는 hypothesis space에서 한 알고리즘에 대한 선호도를 학습 알고리즘에 부여할 수 있다. 즉, 두 가지 기능이 모두 적용 가능하지만, 그 중 하나가 선호된다는 것을 의미한다. 선호되지 않은 솔루션은 선호된 솔루션보다 training data에 훨씬 잘 맞는 경우에만 선택된다.
예를 들어 linear regression에 대한 training 기준을 수정하여 weight decay(가중치 감소)를 포함할 수 있다. weight decay와 함께 linear regression를 수행하기 위해, 우리는 training에 대한 mean squared error와 더 작은 \(L^{2}\) norm을 가지는 선호도를 나타내는 기준 \(J(w)\)의 합을 최소화한다. 구체적으로는,
\[J(w)=\mathrm{MSE}_{\mathrm{train}}+\lambda w^{\top}w\tag{5.18}\]
여기서 \(\lambda\)는 더 작은 weight에 대한 우리의 선호도를 제어하는 미리 선택된 값이다. \(\lambda=0\)에서는 선호도를 부여하지 않으며, 더 큰 \(\lambda\)는 weight를 더 작게 만든다. \(J(w)\)를 최소화하면 training data를 맞추는 것과 weight가 작은 것 사이의 균형을 잡는 weight를 선택할 수 있다. 이것은 우리에게 더 작은 기울기를 갖는 솔루션을 제공하거나 더 적은 feature에 무게를 두는 솔루션을 제공한다. 우리가 weight decay를 통해 overfit, underfit 경향을 제어하는 모델의 예로서, \(\lambda\)의 서로 다른 값으로 고차원의 다항식 regression 모델을 학습할 수 있다. 그림 5.5. 참조.
좀 더 일반적으로 우리는 cost 함수에 regularizer라는 페널티를 추가하여 함수 \(f(x;\theta)\)를 학습하는 모델을 정규화(regularization)할 수 있다. weight decay의 경우, 정규 표현식은 \(\Omega(w)=w^{\top}w\)이다. 7 장에서 우리는 많은 다른 regularizers들이 가능한지 볼 것이다.
한 기능에 대한 선호도를 다른 기능에 비해 표현하는 것은 hypothesis space에서 구성원을 포함 또는 제외하는 것보다 모델의 capacity를 제어하는 보다 일반적인 방법입니다. 우리는 hypothesis space에서 한 기능에 대한 무한히 반대하는 표현하는 것으로 한 기능을 배제하는 것을 생각할 수 있다.
우리의 weight decay 예제에서 우리는 최소화하는 criterion(기준)의 추가 용어를 통해 명시 적으로 더 작은 weight로 정의된 선형 함수에 대한 선호를 표현했다. 암시 적으로나 명시 적으로 다른 솔루션에 대한 환경 설정을 표현하는 많은 방법이 있다. 이러한 다양한 접근 방식을 regularization (정규화)라고 한다. 정규화는 generalization error는 줄이지 만 training error는 줄이지 않는 학습 알고리즘을 수정하는 것이다. 정규화는 기계 학습 분야의 핵심 관심사 중 하나이며, 최적화에 의해서만 그 중요성과 비교된다.
5.3 Hyperparameters and Validation Sets
대부분의 기계 학습 알고리즘에는 학습 알고리즘의 동작을 제어하기 위해 사용할 수 있는 몇 가지 설정이 있다. 이러한 설정을 hyperparameters라고한다. hyperparameters의 값은 학습 알고리즘 자체에 의해 조정되지는 않다 (하나의 학습 알고리즘이 다른 학습 알고리즘을 위한 최상의 hyperparameters를 학습하는 중첩 학습 프로시저를 설계할 수는 있다).
그림 5.2에서 본 polynomial regression 예제에서 단일 hyperparameter가 있다. 즉, 다항식의 차수로 capacity hyperparameter가 사용된다. weight decay의 강도(strength)를 제어하는 데 사용되는 \(\lambda\) 값은 hyperparameter의 또 다른 예이다
때론 최적화가 어렵기 때문에 학습 알고리즘이 hyperparameter로 설정되는 경우가 있다. 더 자주, 우리는 hyperparameter를 배우지 않는데, training set의 hyperparameter를 배우는 것이 적절하지 않기 때문이다. 이것은 모델 capacity를 제어하는 모든 hyperparameter에 적용된다. training set에서 학습된 경우, 그 hyperparameter는 항상 최대로 가능한 capacity를 선택해 overfitting을 발생시킨다. 그림 5.3 참조. 예를 들면, 우리는 항상 낮은 차수의 다항식과 \(\lambda>0\)의 weight decay 설정보다, 높은 차수의 다항식과 \(\lambda=0\)의 weight decay 설정으로 더 잘 training set을 맞출 수 있다.
이 문제를 해결하기 위해, 우리는 training 알고리즘이 관측하지 못하는 example의 validation set이 필요하다.
이전에 우리는 학습 과정이 완료된 후에 training set과 동일한 분포에서 나온 example로 구성된 지속되는(hold-out) test set이 학습자의 generalization error를 추정하는 데 어떻게 사용될 수 있는지에 대해 논의하였다. Test set의 example이 hyperparameter를 포함한 모델 선택에 사용되지 않는 것이 중요하다. 이러한 이유로 validation set에서 test set의 example을 사용할 수 없다. 따라서 우리는 항상 training data로부터 validation set를 구성한다. 특히, 우리는 training data를 두 개의 분리된 subset으로 나누고, 이 subset 중 하나는 매개변수(parameter)를 학습하는 데 사용하고, 다른 하나는 validation set로서 training 중 또는 후에 generalization error를 추정하는데 사용되며, 그에 따라 hyperparameter가 업데이트 될 수 있다. 매개 변수를 학습하는 데 사용되는 data의 subset은 전체 training 과정에서 사용되는 더 큰 data 풀(pool)과 혼동될 수 있지만 일반적으로 여전히 training set이라고한다. Hyperparameter를 선택하는 데 사용되는 data의 subset을 validation set이라고 한다. 일반적으로 training 자료의 약 80 %를 training을 위해, 검증을 위해 20 %를 사용한다. validation set이 hyperparameter를 학습하는 데 사용되므로 validation set error는 일반적으로 training error보다 적은 양으로 generalization error를 낮게 추정한다. 모든 hyperparameter 최적화가 완료된 후, test set를 사용하여 generalization error를 추정할 수 있다.
실제로 동일한 test set이 여러 해 동안 여러 알고리즘의 성능을 평가하기 위해 반복적으로 사용되었을 때, 특히 과학 커뮤니티가 test set에서 보고 된 최첨단 성능을 상회하는 모든 시도를 고려할 때 우리는 결국 test set에서 좋은 평가를 받게 된다. 따라서 벤치 마크는 부실해질 수 있으며 학습된 시스템의 실제 현장 성능을 반영하지 못한다. 고맙게도 커뮤니티는 새로운 (일반적으로 보다 야심적이고 큰) 벤치 마크 dataset으로 이동하는 경향이 있다.
5.3.1 Cross-Validation
Dataset을 고정된 training set과 고정된 test set으로 나누면 test set이 적을 경우 문제가 될 수 있다. 적은 test set은 추정된 평균 test error에 대한 통계적 불확실성(statistical uncertainty)을 의미하며 주어진 작업에 대해 알고리즘 \(A\)가 알고리즘 \(B\)보다 우수하다고 주장하는 것을 어렵게 만든다.
Dataset에 수십만 가지 이상의 예제가 있는 경우 심각한 문제는 없지만, dataset이 너무 적으면 평균 cost를 증가시켜 test error 추정에 모든 example을 사용할 수 있는 대체 절차가 있다. 이 절차는 무작위로 선택한 여러 하위 집합 또는 분할된 dataset에 대해 training과 test계산을 반복한다는 아이디어를 기반으로 한다. 가장 일반적인 방법은 k-fold cross-validation 절차이다. 알고리즘 5.1에서 dataset의 파티션을 \(k\) 개의 중복되지 않는 subset으로 분할하여 k-fold cross-validation을 수행한다. 그런 다음 \(k\)번째 시도의 test error들을 평균하여 test error를 추정할 수 있다. 시행 i에서, data의 i 번째 서브 set은 test set으로 사용되고 나머지 data는 training set으로 사용된다.(즉 전체 training dataset을 5개의 subset으로 분할 했을 때, 첫번째 시도에서는 첫번째 subset을 test set으로 사용하고, 나머지 subset들은 training set으로 사용하고, 두번째 시도에서는 두번째 subset을 test set으로 사용하고, 나머지 subset들은 training set으로 사용하고... 이것을 반복한다) 한 가지 문제점은 평균 error estimators (Bengio and Grandvalet, 2004)의 분산에 대한 unbiased estimators가 존재하지 않지만 일반적으로 근사가 사용된다는 것이다.
5.4 Estimators, Bias and Variance
통계 분야는 training set뿐만 아니라 일반화 작업을 해결하는 기계 학습 목표를 달성하는 데 사용할 수 있는 많은 도구를 제공한다. 매개 변수 추정, bias, 분산과 같은 기본 개념은 일반화, underfitting과 overfitting의 개념을 공식적으로 특성화(characterize) 하는 데 유용하다.
5.4.1 Point Estimation
Point estimation은 관심있는 단일 "best" prediction(예측)의 양(quantity)을 제공하려는 시도 이다. 일반적으로 관심있는 양(quantity)은 5.1.4 절의 linear regression 예제의 weight와 같은 일부 매개 변수 모델의 단일 매개 변수(single parameter) 또는 매개 변수 벡터(vector of parameter) 일 수 있지만 전체 함수(whole function) 일 수도 있다.
매개 변수의 추정치를 실제 값과 구별하기 위해 매개 변수 \(\theta\)의 point estimation을 \(\hat{\theta}\)으로 나타낸다.
\(\{x^{(1)},\ldots,x^{(m)}\}\)가 m개의 independent and identically distributed(i.i.d.) data point라고 하자. Point estimator 또는 statistics는 어떤 data의 함수이다:
\[\hat{\theta}_{m}=g\ (x^{(1)},\ .\ .\ .\ ,\ x^{(m)})\tag{5.19}\]
이 정의에서는 \(g\)가 실제 \(\theta\)에 가까운 값을 반환한다거나, \(g\)의 범위가 \(\theta\)의 허용 값 집합(set of allowable values)과 동일할 것을 요구하지 않는다. point estimator의 이러한 정의는 매우 일반적이며, 설계자는 큰 유연성을 가질 수 있다. 따라서 거의 모든 기능이 평가자로 인정되지만, 좋은 estimator는 output이 training data를 생성한 실제 \(\theta\)에 근접한 함수이다.
현재로서는 통계학에서 frequentist의 관점을 취하고 있다. 즉, 실제 매개 변수 값 \(\theta\)는 고정되어 있지만 알 수 없는 반면 포인트 추정치 \(\hat{\theta}\)은 data의 함수라고 하자. Data를 랜덤 프로세스에서 가져오기 때문에 모든 데이터의 함수는 랜덤이다. 따라서 \(\hat{\theta}\)는 확률 변수다.
Point estimation은 또한 입력 변수와 목표 변수 간의 관계를 추정할 수 있다. 이러한 유형의 point estimate를 function estimator라고 한다.
Function Estimation위에서 언급한 바와 같이, 때로는 function estimation (또는 function approximation) 수행에 관심이 있다. 여기서는 입력 벡터 \(x\)에 주어진 변수 \(y\)를 예측하려고 한다. \(y\)와 \(x\)사이의 대략적인 관계를 설명하는 \(f(x)\)가 있다고 하자. 예를 들어, \(x\)에서 예측할 수 없는 \(y\)의 부분을 \(\epsilon\)이 나타내는 \(y =f(x)+\epsilon\)이 있다고 가정할 수 있다. 함수 추정에서, 우리는 \(f\)의 근사치 또는 \(\hat{f}\) 추정에 관심있다. Function estimation은 실제로 매개 변수 \(\theta\)의 추정과 동일하며 function estimator \(\hat{f}\)는 function space에서의 point estimator일 뿐이다. linear regression 예제(5.1.4절에서 논의)와 다항 regression 예제(5.2절에서 설명)는 모두 변수 \(w\)를 추정하거나 \(x\)에서 \(y\)로 매핑하는 함수 \(\hat{f}\)을 추정하는 것으로 해석될 수 있는 시나리오의 예이다.
이제 point estimators의 가장 일반적으로 연구된 특성을 검토하고 우리에게 이러한 추정자에 대해 무엇을 말하는지 논의한다.
5.4.2 Bias
Estimator의 bias는 다음과 같이 정의된다.
\[\mathrm{bias} (\hat{\theta}_{m})=\mathbb{E}(\hat{\theta}_{m})-\theta\tag{5.20}\]
기대 값은 데이터 (확률 변수의 샘플)로 부터 구해지고, \(\theta\)는 데이터 생성 분포를 정의하는 데 사용되는 \(\theta\)의 실제 기본 값이다. Estimator \(\hat{\theta}_{m}\)는 \(\mathbb{E}(\hat{\theta}_{m})= \theta\)를 의미하는 \(\mathrm{bias}(\hat{\theta}_{m})= 0\) 인 경우 unbiased라고 한다. \(\displaystyle \lim_{m\rightarrow\infty}\mathrm{bias}(\theta_{m})=0\)이 \(\displaystyle \lim_{m\rightarrow\infty}\mathbb{E}(\hat{\theta}_{m}) =\theta\)를 의미하는 경우 Estimator \(\hat{\theta}_{m}\)는 asymptotically unbiased (점근적 unbiased)라고 한다.
Example: Bernoulli Distribution 평균 \(\theta\)의 베르누이 분포를 가지는 독립 항등(independently and identically) 샘플들의 집합 \(\{x^{(1)},\ .\ .\ .\ ,\ x^{(m)}\}\)을 생각해보자.
\[P(x^{(i)};\theta)=\theta^{x^{(i)}}(1-\theta)^{(1-x^{(i)})}\tag{5.21}\]
이 분포의 \(\theta\) 매개 변수에 대한 일반적인 estimator는 training sample의 평균이다.
\[\displaystyle \hat{\theta}_{m}\ =\frac{1}{m}\sum_{i=1}^{m}x^{(i)}\tag{5.22}\]
이 estimator가 bias되었는지 결정하기 위해 Eq. 5.22를 Eq. 5.20로 대체할 수 있다.
\[\mathrm{bias }(\hat{\theta}_{m})=\mathbb{E}[\hat{\theta}_{m}]-\theta\tag{5.23}\]
\[=\displaystyle \mathbb{E}\ [\frac{1}{m}\sum_{i=1}^{m}x^{(i)}]\ -\theta\tag{5.24}\]
\[=\displaystyle \frac{1}{m}\sum_{i=1}^{m}\mathbb{E}[x^{(i)}]\ -\theta\tag{5.25}\]
\[=\displaystyle \frac{1}{m}\sum_{i=1}^{m}\sum_{x^{(i)}=0}^{1}\ (x^{(i)}\theta^{x}(i)\ (1-\theta)^{(1-x^{(i)})})\ -\theta\tag{5.26}\]
\[=\displaystyle \frac{1}{m}\sum_{i=1}^{m}(\theta)-\theta\tag{5.27}\]
\[=\theta-\theta=0\tag{5.28}\]
Bias \((\hat{\theta})=0\) 이기 때문에, 우리는 우리의 estimator \(\hat{\theta}\)가 biase되지 않았다고(unbiased) 한다.
Example: Gaussian Distribution Estimator of the Mean 이제 샘플 집합 \(\left\{x^{(1)},\ldots,x^{(m)}\right\}\)를 생각해보자. 이 샘플은 Gaussian 확률 밀도 \(p(x^{(i)})=\mathcal{N}(x^{(i)} \mu,\sigma^{2})\)를 따라 독립 항등으로 분포로 샘플링 되었고, \( i\in \left\{1,\ldots,m\right\}\)이다. Gaussian 확률분포는 다음과 같이 주어진다.
\[p(x^{(i)};\displaystyle \mu,\ \sigma^{2})=\frac{1}{\sqrt{2\pi\sigma^{2}}}\exp \left(-\displaystyle \frac{1}{2}\frac{(x^{(i)}-\mu)^{2}}{\sigma^{2}}\right)\tag{5.29}\]
Gaussian 평균 파라미터의 일반적인 estimator는 표본 평균(sample mean)이다.
\[\displaystyle \hat{\mu}_{m}=\frac{1}{m}\sum_{i=1}^{m}x^{(i)}\tag{5.30}\]
표본 평균의 bias를 결정하려면 다시 기대 값을 계산해야 한다.
\[\mathrm{bias} (\hat{\mu}_{m}) =\mathbb{E}[\hat{\mu}_{\mathrm{m}}]-\mu\tag{5.31}\]
\[=\displaystyle \mathbb{E}\ [\frac{1}{m}\sum_{i=1}^{m}x^{(i)}]\ -\mu\tag{5.32}\]
\[=\displaystyle \ (\frac{1}{m}\sum_{i=1}^{m}\mathbb{E}[x^{(i)}])\ -\mu\tag{5.33}\]
\[=\displaystyle \ (\frac{1}{m}\sum_{i=1}^{m}\mu)\ -\mu\tag{5.34}\]
\[=\mu-\mu=0\tag{5.35}\]
이와 같이 우리는 표본 평균이 Gaussian mean parameter의 unbiased estimator라는 것을 알 수 있다.
Example: Estimators of the Variance of a Gaussian Distribution 한가지 예로써, Gaussian 분포의 분산 매개 변수(variance parameter) \(\sigma^{2}\)의 두 가지 다른 estimator를 비교한다. 우리는 estimator가 bias되어 있는지를 알아야 한다. 첫번째 \(\sigma^{2}\)는 표본 분산(sample variance)이다.
\[\displaystyle \hat{\sigma}_{m}^{2}=\frac{1}{m}\sum_{i=1}^{m} (x^{(i)} - \hat{\mu}_{m})^{2}\tag{5.36}\]
여기서 \(\hat{\mu}_{m}\)는 위에 정의된 표본 평균이다. bias는 다음과 같이 계산된다.
\[\mathrm{bias}(\hat{\sigma}_{m}^{2})=\mathbb{E}[ \hat{\sigma}_{m}^{2}] -\sigma^{2}\tag{5.37}\]
먼저 \(\mathbb{E}[\hat{\sigma}_{m}^{2}]\)를 구한다.
\[\displaystyle \mathbb{E}[\hat{\sigma}_{m}^{2}]\ =\mathbb{E}\ [\frac{1}{m}\sum_{i=1}^{m}\ (x^{(i)}-\hat{\mu}_{m})^{2}]\tag{5.38}\]
\[=\frac{{m - 1}}{m}{\sigma ^2}\tag{5.39}\]
식 5.37로 돌아가서, 우리는 \(\hat{\sigma}_{m}^{2}\)의 bias가 \(-\sigma^2/m\)라고 결론짓는다. 그러므로 표본 분산은 biased estimator이다.
Unbiased sample variance estimator
\[\displaystyle \tilde{\sigma}_{m}^{2}=\frac{1}{m-1}\sum_{i=1}^{m}\ (x^{(i)}\ -\hat{\mu}_{m})^{2}\tag{5.40}\]
는 다른 접근법을 제공한다. 이름에서 알 수 있듯이 이 estimator는 unbiased이다. 즉, \(\mathbb{E}[\tilde{\sigma}_{m}^{2}] =\sigma^{2}\) 이다:
\[{\mathbb{E}}[\tilde \sigma _m^2] = {\mathbb{E}}\left[\frac{1}{{m - 1}}\sum\limits_{i = 1}^m {{{\left( {{x^{(i)}} - {{\hat \mu }_m}} \right)}^2}} \right]\tag{5.41}\]
\[=\displaystyle \frac{m}{m-1}\mathbb{E}\left[\hat{\sigma}_{m}^{2}\right]\tag{5.42}\]
\[=\displaystyle \frac{m}{m-1}\ (\frac{m-1}{m}\sigma^{2})\tag{5.43}\]
\[=\sigma^{2}\tag{5.44}\]
우리는 두 개의 estimator를 가지고 있다 : 하나는 bias되었고, 다른 하나는 그렇지 않다. Unbiased estimator는 분명히 바람직하지만, 항상 “best”는 아니다. 우리는 종종 다른 중요한 특성을 지닌 biased estimator를 사용한다.
5.4.3 Variance and Standard Error
Estimator가 고려해야할 또 다른 속성은 데이터 샘플의 함수에 따라 달라질 것으로 예상되는 차이의 크기이다. Estimator의 bias를 결정하기 위해 estimator의 기대 값을 계산하는 것처럼 분산을 계산할 수 있다. Estimator의 분산은 간단히 분산(variance)이다.
\[\mathrm{Var}(\hat{\theta})\tag{5.45}\]
여기서 확률 변수는 training set이다. 또는 분산의 제곱근을 standard error(표준 오차)라고 하며 \(\mathrm{SE}(\hat{\theta})\)로 나타낸다.
Estimator의 분산 또는 standard error는 데이터 생성 프로세스로 dataset을 다시 샘플링 할 때 데이터에서 estimator가 얼마나 차이가 날지에 대한 기대를 측정한다. bias가 낮은 estimator를 선호하는 것처럼 상대적으로 낮은 편차가 선호된다.
한정된 수의 표본(sample)을 사용하여 통계를 계산할 때, 실제 분포의 매개 변수에 대한 우리의 추정치는 불확실하다(uncertain). 같은 분포에서 다른 표본을 얻을 수 있고 통계치가 달라 질 수 있다. Estimator의 예상되는 변동량은 정량화 하려는 error의 source다.
평균에 대한 standard error는 다음과 같다.
\[{\mathrm{SE}}({\hat \mu _m}) = \sqrt {{\mathrm{Var}}\left[ {\frac{1}{m}\sum\limits_{i = 1}^m {{x^{(i)}}} } \right]} = \frac{\sigma }{{\sqrt m }}\tag{5.46}\]
여기서 \(\sigma^{2}\)는 샘플 \(x^{i}\)의 실제 분산이다. Standard error는 \(\sigma\)의 estimator를 사용하여 추정되기도 한다. 표본 분산의 제곱근이나 분산의 unbiased estimator의 제곱근은 표준 편차에 대한 unbiased된 추정치를 제공하지 않는다. 두 방법 모두 실제 표준 편차를 작게 추정(underestimate)하는 경향이 있지만, 실제로는 여전히 사용되고 있다. 작게 추정된 분산의 제곱근은 그보다 더 적다. \(m\)이 클 경우, 이 근사값은 상당히 합리적이다.
평균의 standard error는 기계 학습 실험에서 매우 유용한다. 우리는 종종 test set에서 error의 표본 평균을 계산함으로써 generalization error를 추정한다. test set의 example 수가 이 추정의 정확성(accuracy)을 결정한다. 평균이 normal 분산으로 근사화 된다는 central limit theorem을 이용하면 standard error를 사용하여 기대 값이 선택 범위에 속할 확률을 계산할 수 있다. 예를 들어 평균 \(\hat{\mu}_{m}\)와 분산 \(\mathrm{SE}(\hat{\mu}_{m})^{2}\)를 갖는 정규 분포에서 95 % 신뢰 구간 \(\hat{\mu}_{m}\)는 다음과 같다.
\[({\hat \mu _m} - 1.96{\rm{SE}}({\hat \mu _m}),{\hat \mu _m} + 1.96{\rm{SE}}({\hat \mu _m}))\tag{5.47}\]
기계학습 실험에서 일반적으로, 알고리즘 A의 95% 신뢰 구간의 상한 error값이 알고리즘 B의 95% 신뢰구간의 하한 error 값보다 작으면, 알고리즘 A가 B보다 더 좋다고 한다.
Example: Bernoulli Distribution Bernoulli 분포로부터 독립 항등으로 추출 된 표본 집합 \(\{x^{(1)},\ .\ .\ .\ ,\ x^{(m)}\}\)를 다시 생각해보자 (\( P(x^{(i)}\ ;\theta)=\theta^{x^{(i)}}(1-\theta)^{(1-x^{(i)})}\)임을 상기하자). 이번에는 추정치 \(\theta_{m} =\displaystyle \frac{1}{m}\sum_{i=1}^{m}x^{(i)}\)의 분산을 구할 것이다.
\[\mathrm{Var}(\hat{\theta}_{m}) = \mathrm{Var}(\displaystyle \frac{1}{m}\sum_{i=1}^{m}x^{(i)})\tag{5.48}\]
\[=\displaystyle \frac{1}{m^{2}}\sum_{i=1}^{m} Var (x^{(i)})\tag{5.49}\]
\[=\displaystyle \frac{1}{m^{2}}\sum_{i=1}^{m}\theta(1-\theta)\tag{5.50}\]
\[=\displaystyle \frac{1}{m^{2}}m\theta(1-\theta)\tag{5.51}\]
\[=\displaystyle \frac{1}{m}\theta(1-\theta)\tag{5.52}\]
Estimator의 분산은 dataset내 example 수인 \(m\)의 함수로 감소한다. 이것은 일관성을 논의 할 때 다시 봐야할 일반적인 estimator의 속성이다 (5.4.5 절 참조).
5.4.4 Trading off Bias and Variance to Minimize Mean Squared Error
Bias와 분산은 estimator에서 두 가지 다른 error 원인을 측정한다. bias는 함수 또는 매개 변수의 참값으로부터 예상되는 편차를 측정한다. 반면에, 분산은 데이터의 특정 표본 추출(sampling)의 기대 값과의 편차를 나타낸다.
더 큰 Bias와 더 큰 분산 중 하나를 선택하면 어떻게 될까? 우리는 어떻게 그것들을 선택할까? 예를 들어, 그림 5.2의 함수를 근사화 하려한다고 가정하자. 큰 bias를 가진 모델과 큰 분산을 가지는 모델 중에 선택해야 한다면 어떻게 선택해야 할까?
이 trade-off를 성사시키는 가장 일반적인 방법은 cross-validation(교차 유효성 검사)을 사용하는 것이다. 경험적으로 cross-validation은 실제 많은 task에서 성공적이다. 또는 estimator의 mean squared error (MSE)를 비교할 수도 있다.
\[\mathrm{MSE} =\mathbb{E}[(\hat{\theta}_{m}-\theta)^{2}]\tag{5.53}\]
\[=\mathrm{Bias}(\hat{\theta}_{m})^{2}+\mathrm{Var}(\hat{\theta}_{m})\tag{5.54}\]
MSE는 estimator와 매개 변수 \(\theta\)의 실제 값 사이의 (제곱 오차를 이용) 전반적인 예상 편차를 측정한다. 식 5.54에서 MSE를 측정하는 것은 bias와 분산이 모두 포함된다. MSE는 작은 것이 좋으며, bais와 분산을 어느 정도 체크할 수 있는 추정량이다.
Bias와 분산의 관계는 기계 학습의 capacity, underfitting, overfitting과 관련 있다. Generalization error가 MSE에 의해 측정되는 경우 (Bias과 분산은 generalization error의 의미 있는 요소임), capacity를 증가시키면 분산이 증가하고, bias가 감소하는 경향이 있다. 이것은 그림 5.6에서 보여준다. 여기서 generalization error의 U자형 곡선을 capacity의 함수로 다시 볼 수 있다.
5.4.5 Consistency
지금까지 우리는 고정된 크기의 training set에 대한 다양한 estimator의 특성을 논의했다. 일반적으로 우리는 training set의 양이 늘어남에 따라 estimator의 행동에 관심을 가진다. 특히 dataset의 data point \(m\)의 수가 증가하면 point estimator가 해당 매개 변수의 실제 값으로 수렴되는 것이 일반적이다. 더 공식적으로, 다음을 원한다.
\[\mathop {\lim }\limits_{m \to \infty } {\hat \theta _m}\mathop \to \limits^p \theta \tag{5.55}\]
기호 \(\mathop \to \limits^p\)는 수렴이 확률, 즉 어떤 \(\epsilon > 0\), \(m \rightarrow \infty\)일때, \(P (|\hat{\theta}_{m}\ -\ \theta|\ >\ \epsilon) \rightarrow 0\)로 나타낸다. 식 5.55는 consistency(일관성)이라고 한다. \(\hat{\theta}\)과 \(\theta\)의 거의 확실한 수렴(almost sure convergence)을 의미하는 strong consistency와 함께 weak consistency이라고도 한다. 확률 변수 \(\mathrm{x}^{(1)}, \mathrm{x}^{(2)}\) sequence의 almost sure convergence 값 \(x\)는 \(p (\displaystyle \lim_{m\rightarrow\infty}\mathrm{x}^{(m)}\ =x) =1\)일 때 발생한다.
Consistency는 데이터 example 수가 증가함에 따라 estimator에 의한 bias가 감소하도록 보장한다. 그러나 그 반대는 성립하지 않는다. Asymptotically unbiased는 consistency을 의미하지 않는다. \(\{x^{(1)},\ldots,x_{\wedge}^{(m)}\}\)로 구성된 dataset이 normal distribution \(\mathcal{N}(x;\mu,\ \sigma^{2})\)의 평균 매개 변수 \(\mu\)를 계산하는 것을 생각해보자. Dataset의 첫 번째 sample \(x^{(1)}\)를 unbiased estimator로 사용할 수 있다 : \(\theta=x^{(1)}\). 이 경우, \(\mathbb{E}(\hat{\theta}_{m}) =\theta\)이므로 data point 수에 관계없이 estimator는 bias되지 않는다. 이것은 물론 estimator가 asymptotically biased되어 있음을 의미한다. 그러나 \(\theta_{m} \rightarrow\theta\)가 \(m\rightarrow\infty\)와 같은 경우가 아니기 때문에 이는 consistent estimator(일관된 추정치)는 아니다.
5.5 Maximum Likelihood Estimation
이전 장에서 우리는 일반적인 estimation의 정의를 보았고 그 특성을 분석했다. 하지만 이 estimator들은 어디서 왔을까? 어떤 함수가 좋은 estimator를 만든 다음 bias과 분산을 분석할 수 있다고 추측하기보다는 다른 모델에 대한 좋은 estimator인 특정 함수를 도출할 수 있는 원칙을 가지려 한다.
그러한 원칙 중 가장 일반적인 것이 Maximum likelihood이다.
확률 분포분포 \(p_{\mathrm{data}}(\mathrm{x})\)로부터 생성되는 unknown이지만 실제 data로부터 독립적으로 얻은 \(m\) \(\mathbb{X}= \{x^{(1)},\ .\ .\ .\ ,\ x^{(m)}\}\)를 고려하자.
\( p_{\mathrm{model}}(\mathrm{x};\theta)\)를 \(\theta\)에 의해 색인 된 동일한 공간에 대한 확률 분포의 parametric family라고 하자. 즉, \(p_{\mathrm{model}}(x;\theta)\)는 어떤 구성 \(x\)를 실제 확률\(p_{\mathrm{data}} (x)\)를 추정하는(estimate) 실수로 매핑한다.
\(\theta\)에 대한 maximum likelihood estimator는 다음과 같이 정의된다.
\[\theta_{\mathrm{ML}} = \mathop {\arg \max }\limits_\theta p_{\mathrm{model}} (\mathbb{X};\theta)\tag{5.56}\]
\[= \displaystyle \mathop {\arg \max }\limits_\theta \prod_{i=1}^{m} p_{\mathrm{model}} (x^{(i)};\theta) \tag{5.57}\]
이 곱셈은 여러 가지 이유로 불편할 수 있다. 예를 들어, numerical underflow가 발생하기 쉽다. 보다 편리하지만 동등한 최적화 문제를 만들기 위해, likelihood에 로그를 취하면 arg를 변경하지 않고 곱셈을 더하기로 바꿀 수 있다.
\[\displaystyle \theta_{\mathrm{ML}}=\mathop {\arg \max }\limits_\theta \sum_{i=1}^{m}\log p_{\mathrm{model}} (x^{(i)};\theta)\tag{5.58}\]
Argmx는 cost함수를 rescale해도 변하지 않기 때문에, \(m\)로 나누면 criterion(표준) 버전을 얻을 수 있다. 이것은 training data에 의해 정의된 경험적 분포(empirical distribution)에 대한 기대(expectation)으로 표현된다.
\[\theta_{\mathrm{ML}}=\mathop {\arg \max }\limits_\theta \mathbb{E}_{\mathrm{x}\sim\hat{p}_{\mathrm{data}}}\log p_{\mathrm{model}} (x^{(i)};\theta)\tag{5.59}\]
Maximum likelihood 추정을 해석하는 한 가지 방법은 training set에 의해 정의된 경험적 분포와 모델 분포 사이의 불일치성을 최소화하고 KL divergence에 의해 측정 된 두 모델 간의 차이 정도를 최소화하는 것으로 해석하는 것이다. KL divergence는 다음과 같다.
\[D_{\mathrm{KL}}(\hat{p}_{\mathrm{data}}\Vert p_{\mathrm{model}}) =\mathbb{E}_{\mathrm{x}\sim\hat{p}_{\mathrm{data}}}[\log\hat{p}_{\mathrm{data}}(x)-\log p_{\mathrm{model}}(x)]\tag{5.60}\]
왼쪽의 항(term)은 모델이 아닌 데이터 생성 프로세스의 함수이다. 이것은 우리가 KL divergence을 최소화하기 위해 모델을 훈련시킬 때, 우리는 단지 다음을 최소화하면 된다는 것을 의미한다.
\[-\mathbb{E}_{\mathrm{x}\sim\hat{p}_{\mathrm{data}}}[\log p_{\mathrm{model}} (x)]\tag{5.61}\]
그것은 물론 식 5.59의 최대화와 같다.
이 KL divergence를 최소화하는 것은 분포 간의 cross-entropy를 최소화하는 것과 정확히 일치한다. 많은 저자들은 Bernoulli 또는 softmax 분포의 the negative log-likelihood를 위해 "cross-entropy"라는 용어를 사용하지만 이는 잘못된 말입니다. the negative log-likelihood으로 구성된 어떠한 loss도 training set에 의해 정의된 경험적 분포와 모델 간의 cross-entropy다. 예를 들어 mean squared error는 경험적 분포와 Gaussian 모델 간의 cross-entropy이다.
따라서 우리는 모델 분포를 경험적 분포 \(\hat{p}_{data}\)와 일치시키기 위해 maximum likelihood를 이용할 수 있다. 이상적으로는 실제 data 생성 분포 \(p_{data}\)와 일치시키고 싶지만, 이 분포에 직접 액세스할 수는 없다.
Likelihood를 maximize하거나 KL divergence를 최소화하거나 와 관계없이 최적의 \(\theta\)는 동일하지만 objective function(목표 함수)의 값은 다르다. 소프트웨어에서 우리는 종종 cost function을 최소화하는 것으로 표현한다. 따라서 maximum likelihood는 negative log-likelihood(NLL)의 최소화, 또는 동등하게 cross-entropy의 최소화가 된다. Kl divergence가 최소값으로 0을 가지기 때문에 minimum KL divergence으로써 maximum likelihood는 이 경우 유용하다. \(x\)가 실수일 때, negative log-likelihood는 음수가 될 수 있다.
5.5.1 Conditional Log-Likelihood and Mean Squared Error
우리의 목표가 주어진 y를 예측하기 위해 조건부 확률 \(P (\mathrm{y}\ |\mathrm{x};\theta)\)를 추정하는 것인 경우, Maximum likelihood estimator는 쉽게 일반화 될 수 있다. 이것은 대부분의 supervised learning의 기본적인 형태이기 때문에 실제로 가장 일반적인 상황이다. \(\boldsymbol{X}\)가 모든 input이고, \(\boldsymbol{Y}\)가 관측된 모든 target일 경우, conditional maximum likelihood estimation은 다음과 같다.
\[\displaystyle \theta_{\mathrm{M}\mathrm{L}}=\arg_{\theta}\max P(\mathrm{\boldsymbol{Y}}|\boldsymbol{X};\theta)\tag{5.62}\]
Example들을 i.i.d.로 가정하면, 다음과 같이 분해(decompose) 될 수 있다.
\[\displaystyle \theta_{\mathrm{ML}}=\arg_{\theta}\max\sum_{i=1}^{m}\log P\ (y^{(i)}\ |x^{(i)};\theta)\tag{5.63}\]
Example: Linear Regression as Maximum Likelihood 5.1.4 절의 초반부에 소개된 이 방법은 maximum likelihood 절차가 될 수 있다. 이전에는 입력 \(\boldsymbol{x}\)를 취하여 출력 값 \(\hat{y}\)를 만드는 알고리즘으로 linear regression을 유도했다. \(\ boldsymbol {x}\)에서 \(\hat{y}\) 로의 맵핑은 mean squared error를 최소화하기 위해 선택되었는데, 이는 우리가 다소 임의적으로 도입한 criterion이다. 이제 우리는 maximum likelihood estimation의 관점에서 linear regression를 재검토한다. 단일 예측 \(hat{y}\)를 생성하는 대신 모델을 조건부 \((y\ |\ \boldsymbol{x})\)이라고 생각한다. 무한히 큰 training set을 사용하면 같은 입력 값 \(x\)에 대해 여러 \(y\)를 가지는 example들을 볼 수 있을 것이다. 학습 알고리즘의 목표는 이제 모든 \(x\)와 호환되는 모든 다른 \(y\) 값에 \(p(y|\boldsymbol{x})\)를 맞추는 것이다. 이전에 얻은 것과 같은 linear regression 알고리즘을 유도하기 위해 \(p (y|\ \boldsymbol{x}) =\mathcal{N}(y;\hat{y}(\boldsymbol{x};\boldsymbol{w}),\ \sigma^{2})\)을 정의한다. 함수 \(\hat{y}(\boldsymbol{x};\boldsymbol{w})\)는 Gaussian 평균의 예측 값을 구한다. 이 예제에서는 분산이 사용자가 선택한 일부 상수 \(\sigma^{2}\)로 고정되어 있다고 가정한다. 우리는 \(p (y\ |\boldsymbol{x})\)의 기능적 형태 선택으로 maximum likelihood estimation가 이전에 개발한 것과 동일한 학습 알고리즘을 구하는 것을 알 수 있다. Example들이 i.i.d.로 가정되므로, conditional log-likelihood (식 5.63)는 다음과 같이 주어진다.
\[\displaystyle \sum_{i=1}^{m}\log p\ (y(i)\ |x^{(i)};\theta)\tag{5.64}\]
\[=-m\displaystyle \log\sigma-\frac{m}{2}\log(2\pi)-\sum_{i=1}^{m}\frac{||\hat{y}^{(i)}-y^{(i)}||^{2}}{2\sigma^{2}}\tag{5.65}\]
여기서 \(\hat{y}^{(i)}\)는 \(i\)번째 입력 \(\boldsymbol{x}^{(i)}\)에 대한 linear regression 출력이고 \(m\)은 training example의 개수이다. log-likelihood를 mean squared error와 비교하면
\[\displaystyle \mathrm{MSE}_{\mathrm{train}}=\ \frac{1}{m}\sum_{i=1}^{m}||\hat{y}^{(i)}-y^{(i)}||^{2}\tag{5.66}\]
우리는 mean squared error를 최소화하는 것과 같은 \(w\) 파라미터의 추정으로 log-likelihood를 최대화하는것을 알 수 있다. 두 criteria은 다른 값을 가지지 만 최적의 position은 동일하다. 이는 MSE를 maximum likelihood estimation 과정으로 사용하는 것을 정당화한다. 우리는 maximum likelihood estimation 가 몇 가지 가치 있는 속성들을 가지고 있음을 볼 것이다.
5.5.2 Properties of Maximum Likelihood
Maximum likelihood estimator의 주된 장점은 수렴 관점에서 \(m\rightarrow\infty\)의 수로 가장 좋은 estimator가 될 수 있다는 것이다.
적절한 조건 하에서 maximum likelihood estimation는 일관성(consistency)의 속성을 가지고 있으며 (위의 5.4.5 절 참조), 이는 training example이 무한대에 가까워짐에 따라 매개 변수의 maximum likelihood estimation이 실제 값으로 수렴한다는 것을 의미한다. 이러한 조건은 다음과 같다.
\( \bullet \) 실제 분포 \(p_{\mathrm{data}}\)는 \(\theta\) 모델 군(family) 내에 있어야한다. 그렇지 않으면 어떤 estimator도 복구할 수 없다.
\( \bullet \) 실제 \(p_{\mathrm{data}}\)는 \(\theta\)의 하나의 값과 정확히 일치해야 한다. maximum likelihood는 적절한 \(p_{\mathrm{data}}\)를 복구하지만 데이터 생성 처리에서 \(\theta\)의 어떤 값을 사용할지 결정할 수는 없다
Maximum likelihood estimator 외에 다른 귀납적 원칙들이 있으며, 그 중 다수는 일관된 estimator라는 특성을 공유한다. 그러나 일관성은 통계적 효율성면에서 다를 수 있다. 즉, 하나의 일관된 estimator가 고정 된 수의 샘플 \(m,\)에 대해보다 낮은 generalization error를 얻거나 등가 적으로 고정 된 수준의 generalization error를 얻기 위해 더 적은 example을 요구할 수 있다.
통계적 효율은 일반적으로 함수의 값이 아니라 매개 변수의 값을 추정(실제 매개 변수를 식별할 수 있다고 가정)하는 것이고, 매개 변수 사례(linear regression와 같은)에서 연구된다. 실제 매개 변수에 얼마나 가깝게 있는지를 측정하는 방법은 expected mean squared error 의해 추정된 값과 실제 매개 변수 값의 제곱 차이를 계산하는 것이다. 예상 값은 데이터 생성 분포의 \(m\) 훈련 샘플을 통해 구해진다. 파라메터 mean squared error는 \(m\)이 증가함에 따라 감소하고, 큰 \(m\)에 대해, Cramer-Rao lower bound (Rao, 1945; Cramér, 1946)는 일관된 estimator가 maximum likelihood estimator보다 낮은 mean squared error을 가질 수 없는 것을 보여준다.
이러한 이유로 (일관성 및 효율성), maximum likelihood는 종종 기계 학습에 사용되는 선호 estimator로 간주된다. Example이 overfitting을 발생시킬 만큼 적은 경우, weight decay와 같은 regularization 전략을 사용하여 training data가 제한되어 있을 때 편차가 적은 maximum likelihood의 biased version을 얻을 수 있다.
5.6 Bayesian Statistics
지금까지 우리는 frequentist statistics와 단일 값 \(\theta\)의 추정에 기반한 접근방식에 대해 논의했고, 그 하나의 추정치를 기반으로 모든 예측을 만들었다. 또 다른 접근법은 예측을 할 때 \(\theta\)의 모든 가능한 값을 고려하는 것이다. 후자는 Bayesian statistics 도메인이다.
5.4.1절에서 frequentist 관점에서 실제 매개 변수 값 \(\theta\)는 고정되어 있지만 알 수 없는 반면, point estimate \(\hat{\theta}\)는 dataset의 함수 인 확률 변수 (임의의 것으로 간주됨)이다.
통계에서 Bayesian의 관점은 상당히 다르. Bayesian은 확률을 사용하여 지식 상태의 certainty(확실한) 정도를 나타낸다. dataset은 직접 관찰되므로 무작위가 아니다. 반면, 실제 매개 변수 \(\theta\)는 알려지지 않았거나 불확실하므로 확률 변수로 나타난다.
Data를 관측하기 전에 prior probability distribution(사전 확률 분포) \(p(\theta)\) (간단하게 “prior”로도 사용됨)를 사용하여 \(\theta\)에 대한 지식을 나타낸다. 일반적으로, 기계 학습 종사자는 높은 불확실성을 반영하기 위해 상당히 넓은 (즉 높은 엔트로피로) 사전 분포를 선택한다. 예를 들어, \(\theta\)가 일정한 범위 또는 부피에 일정한 분포로 존재한다고 가정할 수도 있다. 그 대신 모든 prior는 "단순한" 솔루션에 대한 선호를 반영한다. (예 : 계수의 크기가 작거나 함수는 상수에 가깝다).
\[p(\displaystyle \theta|x^{(1)},\ \ldots,\ x^{(m)})=\frac{p(x^{(1)},\ldots,x^{(m)}|\theta)p(\theta)}{p(x^{(1)},\ldots,x^{(m)})}\tag{5.67}\]
Bayesian estimation이 일반적으로 사용되는 시나리오에서, prior는 상대적으로 높은 entropy를 갖는 uniform 또는 Gaussian 분포로 시작하고, 일반적으로 data의 관측은 posterior가 entropy를 잃고 매개 변수의 몇 가지 높은 값에 응집되게 한다.
Maximum likelihood estimation과 비교하여 Bayesian estimation은 두 가지 중요한 차이점이 있다. 첫째, \(\theta\)의 point estimation을 사용하여 예측하는 maximum likelihood 접근법과 달리 Bayesian 방식은 \(\theta\)를 통해 전체 분포를 사용하여 예측하는 것이다. 예를 들어, \(m\)을 관측한 후, 다음 데이터 샘플 \(x^{(m+1)}\)에 대한 예측 분포는 다음과 같이 주어진다.
\[p (x^{(m+1)}|x^{(1)},\displaystyle \ .\ .\ .\ ,\ x^{(m)})=\int p(x^{(m+1)}\ |\theta)p(\theta\ |x^{(1)}\ ,\ .\ .\ .\ ,\ x^{(m)}) d\theta\tag{5.68}\]
여기서 양(positive)의 확률 밀도를 갖는 \(\theta\)의 각 값은 다음 예제 예측에 기여하며, posterior 밀도 자체에 의해 weight가 부여된다. \(\{x^{(1)},\ldots,x^{(m)}\}\)를 관찰 한 후, \(\theta\)의 값에 대해 여전히 불확실하다면, 이 불확실성은 우리가 구할 예측 값에 직접적으로 반영된다.
5.4절에서 우리는 frequentist 접근법이 주어진 \(\theta\)에 대한 point 추정치 불확실성을 어떻게 그 분산으로 평가(evaluate)하여 다루는지를 논의했다. Estimator의 분산은 관측된 데이터의 대체(alternative) sampling으로 추정치가 어떻게 변할 수 있는지에 대한 평가이다. "평가자(estimator)가 불확실성을 어떻게 다룰 것인가?"에 대한 Bayesian의 답은 "단순하게 그것을 적분하는 것"인데, 이는 overfitting을 막는 경향이 있다. 물론 이 적분은 확률 법칙을 적용한 것이므로, Bayesian 접근법은 정당(justify)하다. 반면 estimator를 구성하는 frequentist의 기계들은 단일 point estimation으로 dataset에 포함된 모든 지식을 요약하기 위한 다소 ad hoc decision(그때 그때 상황에 맞는 결정)에 기초한다
Bayesian접근법과 maximum likelihood의 두번째 차이점은, bayesian prior distribution의 기여 때문에 생긴다. Prior는 선험적으로 선호되는 매개 변수 공간의 영역으로 확률 질량 밀도(probability mass density)를 이동시킴으로써 영향을 미친다. 실제로, prior는 종종 더 간단하거나 더 부드러운 모델에 대한 선호를 표현한다. Bayesian 접근법의 비평가들은 prior를 "예측에 영향을 미치는 주관적인 인간 판단의 원천(source)"으로 간주한다.
제한된 training data만 사용할 수 있을 때, bayesian 방법이 일반적으로 훨씬 더 일반화(generalized)되지만, 일반적으로 training example 수가 많을 때는 높은 계산 비용으로 인해 어려움을 겪는다.
Example: Bayesian Linear Regression Bayesian 추정법을 사용하여 linear regression 매개 변수를 학습한다. linear regression 분석에서 \(y\in \mathbb{R}\) 값을 예측하기 위해 입력 벡터 \(x\in \mathbb{R}^{n}\)에서의 linear mapping을 학습한다. 예측은 \(w \in \mathbb{R}^{n}\)에 의해 parameterize 된다.
\[\hat{y}=w^{\top}x\tag{5.69}\]
\(m\) training sample set \(y\)가 주어지면, 우리는 전체 training set에 대해 \(y\)의 예측을 다음과 같이 나타낼 수 있다:
\[\hat{y}^{(\mathrm{train})}\ =\ X^{(\mathrm{train})}w.\tag{5.70}\]
\(y^{(\mathrm{train})}\)를 Gaussian conditional 분포로 표현하면, 다음과 같다:
\[p (y^{(\mathrm{train})} | X^{(\mathrm{train})}, w) =\mathcal{N}(y^{(\mathrm{train})}; X^{(\mathrm{train})}w, I) \tag{5.71)}\]
\[\propto \exp(-\displaystyle \frac{1}{2} (y^{(\mathrm{train})} - X^{(\mathrm{train})} w)^{\top} (y^{(\mathrm{train})} - X^{(\mathrm{train})} w))\tag{5.72}\]
여기서 우리는 \(y\)를 Gaussian 분산으로 가정하여 표준 MSE 공식을 따른다. 이후에는 표기상의 부담을 줄이기 위해 \((X^{(\mathrm{train})},\ y^{(\mathrm{train})})\)는 \((X,\ y)\)로 한다.
모델 매개 변수 벡터 \(w\)에 대한 posterior distribution를 결정하기 위해 먼저 prior distribution을 정해야 한다. Prior는 이런 매개 변수의 값에 대한 우리의 순수한 믿음을 반영해야 한다. 모델의 매개 변수에 대한 우리의 이전 믿음을 표현하는 것이 때때로 어렵거나 부자연스럽긴 하지만 실제로는 \(\theta\)에 대한 높은 불확실성을 표현하는 상당히 넓은 분포를 가정한다. 실수 매개 변수의 경우, prior distribution으로 Gaussian을 사용하는 것이 일반적이다.
\[p(w)=\displaystyle \mathcal{N}(w;\mu_{0},\ \Lambda_{0})\propto\exp\ (-\frac{1}{2}(w-\mu_{0})^{\top}\Lambda_{0}^{-1}(w-\mu_{0}))\tag{5.73}\]
여기서 \(\mu_{0}\)와 \(\Lambda_{0}\)는 각각 distribution mean vector 와 covariance 행렬을 나타낸다. (특별한 공분산 구조를 가정할 필요가 없다면, 일반적으로 대각 공분산 행렬 \(\Lambda_{0} =\mathrm{diag}(\lambda_{0})\)를 가정한다.)
따라서 prior가 지정되면, 우리는 모델 매개 변수에 대한 posterior distribution을 결정할 수 있다.
\[p (w\ |\ X,\ y)\propto p(y\ |X,\ w)p(w)\tag{5.74}\]
\[\propto\exp (-\displaystyle \frac{1}{2}(y-Xw)^{\top}\ (y-Xw)) \exp(-\displaystyle \frac{1}{2}(w-\mu_{0})^{\top}\Lambda_{0}^{-1}(w-\mu_{0}))\tag{5.75}\]
\[\propto\exp (-\displaystyle \frac{1}{2}(-2y^{\top}Xw+w^{\top}X^{\top}Xw+w^{\top}\Lambda_{0}^{-1}w-2\mu_{0}^{\top}\Lambda_{0}^{-1}w)) .\tag{5.76}\]
우리는 이제 \(\Lambda_{m} = (X^{\top}X+\Lambda_{0}^{-1})^{-1}\)와 \(\mu_{m}=\Lambda_{m}(X^{\top}y+\Lambda_{0}^{-1}\mu_{0})\)을 정의한다. 이 새로운 변수를 사용하여, posterior를 Gaussian 분포로 재 작성할 수 있다.
\[p (w|\ X,\ y)\propto\exp (-\displaystyle \frac{1}{2}(w-\mu_{m})^{\top}\Lambda_{m}^{-1}(w-\mu_{m})+\frac{1}{2}\mu_{m}^{\top}\Lambda_{m}^{-1}\mu_{m})\tag{5.77}\]
\[\displaystyle \propto\exp\ (-\frac{1}{2}(w-\mu_{m})^{\top}\Lambda_{m}^{-1}(w-\mu_{m}))\tag{5.78}\]
매개 변수 벡터 \(w\)를 포함하지 않는 모든 항은 생략되었다. 그것은 분포가 정규화 되어 적분 값이 1이어야 한다는 사실에 의해 암시된다. 식 3.23는 다변수 Gaussian분포의 정규화 방법을 보여준다.
이 posterior distribution를 조사하면 Bayesian inference(추론)의 효과에 대해 약간의 직감(intuition)을 얻을 수 있다. 대부분의 경우 \(\mu_{0}\)을 \(0\)로 설정한다. 만일 \(\Lambda_{0} = \frac{1}{\alpha}I\)를 설정 한다면, \(w\)에 대해 \(\mu_{m}\)는 frequentist linear regression와 동일한 추정치, \(\alpha w^{\top}w\)로 구해지며, weight decay penalty와 같다. 한 가지 차이점은 \(\alpha\)를 0으로 설정하면 Bayesian 추정치가 정의되지 않는다는 것이다. 우리는 무한히 넓은 \(w\)의 prior로 Bayesian 학습 과정을 시작할 수 없다. 더 중요한 차이점은 Bayesian 추정치가 추정치 \(\mu_{m}\)만 제공하지 않고, 공분산 행렬(covariance matrix)을 제공한다는 것이다. 이것은 \(w\)의 모든 다른 값이 얼마나 유사 한지 나타낸다.
5.6.1 Maximum A Posteriori (MAP) Estimation
가장 근본적인 접근법(principled approach)은 매개 변수 \(\theta\)에 대한 Bayesian posterior distribution을 사용하여 예측하는 것이지만, 종종 단일 점 추정(single point estimate)하는 것이 가치 있다. point estimation이 가치 있다는 한가지 이유는, 우리가 가장 관심있는 모델의 Bayesian posterior와 관련된 연산(operation)은 대부분 다루기가 어렵고, point estimation은 다루기 쉬운 근사(approximation)를 제공한다는 것이다. 단순히 Maximum likelihood로 돌아 가기보다, prior가 point estimation에 선택에 영향을 주게 함으로써, Bayesian 방식의 이점을 얻을 수 있다. 합리적인 방법 중 하나는 maximum a posteriori (MAP) point estimation를 선택하는 것이다. MAP 추정은 maximal posterior probability point (또는 연속 \(\theta\)의 경우 maximal probability density)를 선택한다.
\[\theta_{\mathrm{M}\mathrm{A}\mathrm{P}}=\mathop {\arg \max }\limits_\theta p (\displaystyle \theta|\ x)=\arg_{\theta}\max\log p(x\ |\theta)+\log p(\theta)\tag{5.79}\]
위 식의 \( \log p(x\ |\ \theta)\)는 standard log-likelihood term이고 \(\log p(\theta)\)는 prior distribution에 해당한다.
예를 들어, weight \(w\)에 대한 Gaussian prior의 linear regression 모델을 생각해보자. 이 prior가 \(\displaystyle \mathcal{N}(w;0,\ \frac{1}{\lambda}P)\)에 의해 주어진다면 식 5.79의 log-prior term은 "익숙한 \(\lambda w^{\top}w\) weight decay penalty 항" 더하기 "\(w\)에 의존하지 않으며 학습에 영향을 주지 않는 항"에 비례한다. 이와 같이, weight에 대해 Gaussian prior를 가지는 MAP Bayesian 추론은 weight decay에 해당한다.
Full Bayesian 추론과 마찬가지로, MAP Bayesian 추론은 prior로부터 가져왔고 training data에서 찾을 수 없는 정보를 활용하는 이점이 있다. 이 추가 정보는 (ML estimation과 비교하여) MAP point estimation의 분산을 줄이는 데 도움이 된다. 그러나 그것은 "증가한 bias의 대가"이다.
Weight decay로 정규화 된 maximum likelihood 학습과 같은 많은 정규화 된 평가 전략은 Bayesian 추론에 대한 MAP approximation을 만드는 것으로 해석할 수 있다. 이는 정규화가 \(\log p(\theta)\)에 해당하는 목적 함수에 새로운 항를 추가하는 것 적용된다. 하지만, 모든 regularization penalty가 MAP Bayesian 추론에 해당하는 것은 아니다. 예를 들어, 일부 regularizer term은 확률 분포의 로그(logarithm)가 아닐 수도 있다. 다른 regularization term은 데이터에 의존하며, 물론 prior probability distribution를 정규화를 위해 사용할 수 없다.
MAP 베이시안 추론은 복잡하지만 해석 가능한 regularization term를 쉽게 설계할 수 있는 방법(straightforward way)을 제공한다. 예를 들어, 더 복잡한 penalty term은 단일 Gaussian 분포가 아니라 Gaussian 분포의 조합(mixture)을 prior로 사용하여 도출할 수 있다 (Nowlan and Hinton, 1992).
'논문 & 책 리뷰 > Deep learning' 카테고리의 다른 글
Chapter 5. Machine Learning Basics (2/2) (0) | 2019.01.27 |
---|---|
Sample mean and sample variance. (0) | 2019.01.26 |
Chapter 4. Numerical Computation (0) | 2019.01.13 |
Chapter 3. Probability and Information Theory (0) | 2019.01.09 |
Chapter 2. Linear Algebra (0) | 2019.01.07 |
글
Part I: Applied Math and Machine Learning Basics
4. Numerical Computation
기계 학습 알고리즘은 대개 많은 양의 계산을 필요로 한다. 일반적으로 이것은 correct solution에 대한 수학적 기호로 표현되는 수식을 분석하여 유도하는 것이 아니라 반복 프로세스(iterative process)를 통해 solution의 예상치를 업데이트하는 방법으로 수학적 문제를 해결하는 알고리즘을 의미한다. 일반적인 연산에는 최적화 (함수를 최소화하거나 최대화하는 인수 값 찾기)와 linear equation system 해결이 포함된다. 디지털 컴퓨터에서 실수는 한정된 메모리로 표현될 수 없기 때문에, 실수가 수학적 함수에 포함되면 이것을 평가(evaluating)하는 것만으로도 어려울 수 있다.
4.1 Overflow and Underflow
디지털 컴퓨터에서 연속 수학(continuous math)을 수행하는 기본적인 어려움은 한정된 수의 bit로 무한히 많은 실수를 나타낼 필요가 있다는 것이다. 즉, 거의 모든 실수에 대해 컴퓨터에서 숫자를 나타낼 때 근사 오차(approximation error)가 발생한다. 대부분의 경우 이것은 반올림 오류(Rounding error)다. 반올림 오류는 문제가 되는데, 특히 많은 연산에서 혼합될 때 문제가 발생하며 반올림 오류 누적을 최소화하도록 설계되지 않은 경우 이론적으로 작동하는 알고리즘이 실패하는 원인이 될 수 있다.
예를 들어, 일반적으로 우리는 0으로 나누어지는 것을 피해야한다(일부 software 환경에서는 예외가 발생하고, 다른 software환경에서는 숫자가 아닌 placeholder로 결과가 반환된다). 또는 \(\log 0\)을 피해야한다(이것은 주로 \(-\infty\)로 다뤄지며, 산술 연산에 사용되는 경우 숫자가 아니다).
수치 적 오류의 또 다른 매우 위험한 형태는 overflow이다. overflow는 크기가 큰 숫자를 \(\infty\) 또는 \(-\infty\)로 근사 할 때 발생한다. 추가 산술은 일반적으로 이러한 무한대 값을 숫자가 아닌 값으로 변경합니다.
underflow와 overflow에 대해 안정화 되어야하는 함수의 한 예가 softmax함수다. softmax함수는 multinoulli 분포와 관련된 확률을 예측하는 데 자주 사용된다. softmax 함수는 다음과 같이 정의된다.
\[\displaystyle \mathrm{softmax}(\boldsymbol{x})_{i}= \displaystyle \frac{\exp(x_{i})}{\sum_{j=1}^{n}\exp(x_{j})}\tag{4. 1}\]
모든 \(x_i\)가 어떤 상수 \(c\)와 같은 경우를 생각해보자. 분석적으로, 우리는 모든 출력이 \(\frac{1}{n}\)과 같아야 함을 알 수 있다. 수치 적으로 이것은 \(c\)가 큰 경우에는 발생하지 않을 수 있다. \(c\)가 매우 음수면 \(\exp(c)\)가 underflow가 된다. 즉, softmax의 분모가 0이되므로 최종 결과는 정의되지 않는다. c가 매우 크고 양수이면 exp (c)가 overflow되어 다시 식 전체가 정의되지 않는다. 이 두 가지 어려움은 softmax (\( \boldsymbol{z} \))를 대신 평가하여 해결할 수 있다. 여기서 \(\boldsymbol{z}=\boldsymbol{x}-\max_{i}x_{i}\)이다. 단순 대수 (simple algebra)에서 softmax 함수의 입력 벡터에 Scalar를 더하거나 빼도 softmax의 값은 변경되지 않는다. \(\max_{i}x_{i}\)를 빼면 \(\exp\)에 대한 최대 인수가 \(0\)이 되어 overflow 가능성이 없어진다. 마찬가지로 분모의 항(term) 중에 최소 하나는 1의 값을 가지므로 분모가 underflow 하여 0으로 나누게 될 가능성이 없어진다.
아직 작은 문제가 하나 남아있다. 분자의 underflow는 식 전체가 0으로 평가되도록 할 수 있다. 즉, softmax subroutine을 먼저 실행한 다음 log함수에 결과를 전달하여 \(\log\mathrm{softmax}\boldsymbol(x)\)를 구현하면 실수로 \(-\infty\)를 얻을 수 있다. 대신, 우리는 수치 적으로 안정된 방식으로 \(\log\mathrm{softmax}\)를 계산하는 별도의 함수를 구현해야 한다. \(\log\mathrm{softmax}\)함수는 softmax 함수를 안정화하는 데 사용한 것과 같은 트릭을 사용하여 안정화될 수 있다.
우리는 이 책에 기술된 대부분 알고리즘 구현에서 필요한 모든 수치적 세부 고려사항을 명시하지 않는다. Low level library 개발자는 deep learning 알고리즘을 구현할 때, 수치 문제를 염두에 두어야한다. 이 책의 대부분의 독자는 안정적인 구현을 제공하는 low level library에 의존할 수 있다. 어떤 경우에는 새로운 알고리즘을 구현하고 새로운 구현을 자동으로 안정화 할 수 있다. Theano (Bergstra et al., 2010; Bastien et al., 2012)는 Deep learning에서 발생하는 많은 일반적인 수치적 불안정 표현을 자동으로 탐지하고 안정화시키는 software package의 예이다.
4.2 Poor Conditioning
Conditioning은 입력의 작은 변화와 관련하여 함수가 얼마나 빠르게 변하는지를 나타낸다. 입력의 반올림 오류로 인해 출력이 크게 변경될 수 있기 때문에 입력이 작게 변할 때 빠르게 변하는 함수는 체계적 계산에 문제가 될 수 있다.
함수 \(f(\boldsymbol{x}) = \boldsymbol{A}^{-1}\boldsymbol{x}\)를 생각해 보자. \(\boldsymbol{A} \in \mathbb{R}^{n\times n}\)이 고유 값 분해(eigenvalue decomposition)를 가질 때, 그 condition number는 다음과 같다.
\[\mathop {\max }\limits_{i,j} \left| {\frac{{{\lambda _i}}}{{{\lambda _j}}}} \right|\tag{4.2}\]
이것은 가장 큰 고유 값(largest eigenvalue)과 가장 작은 고유 값(largest eigenvalue)의 크기의 비율이다. 이 수가 크면 행렬 inversion은 입력의 error에 특히 민감하다.
이 민감도(sensitivity)는 행렬 inversion 중에 반올림 오류의 결과가 아니라 행렬 자체의 고유 한 특성이다. Poorly conditioned matrix은 역행렬을 곱하면 기존 error가 증폭한다. 실제로 error는 inversion 과정 자체의 수치 error에 의해 더 복합될 것이다.
4.3 Gradient-Based Optimization
대부분의 Deep learning 알고리즘에는 일종의 최적화가 포함된다. 최적화는 \(x\)를 변경하여 일부 함수 \(f(x)\)를 최소화하거나 최대화하는 작업이다. 우리는 대부분의 최적화 문제를 \(f(x)\)를 최소화하는 관점에서 접근한다. 최대화는 \(-f(x)\)를 최소화함으로써 최소화 알고리즘을 사용할 수 있다.
최소화하거나 최대화하려는 기능을 목적 함수(Objective function) 또는 criterion이라고합니다. 최소화할 때 비용(cost) 함수, 손실(loss) 함수 또는 오류(error) 함수라고 부를 수도 있다. 일부 기계 학습 서적이 이러한 용어 중 일부에 특별한 의미를 부여하기는 하지만 이 책에서는 이 용어를 서로 바꿔 사용할 수 있다.
우리는 종종 위 첨자 \(*\)로 함수를 최소화하거나 최대화하는 값을 나타냅니다. 예를 들어 \(x^{*} = \arg\min f(x)\)라고 할 수 있다.
우리는 이미 독자가 미적분학에 익숙하다고 가정하지만, 미적분 개념이 최적화와 어떻게 관련되는지에 대한 간단한 리뷰를 제공한다.
함수 \(y=f(x)\)가 있다고 가정하자. 여기서 \(x\)와 \(y\)는 실수이다. 이 함수의 미분(derivative)은 \(f'(x)\) 또는 \(\displaystyle \frac{dy}{dx}\)로 나타낸다. \(f'(x)\)는 점 \(x\)에서 \(f(x)\)의 기울기를 나타낸다. 즉 입력의 작은 변화가 출력에 얼마나 변화를 주는지를 정한다: \(f(x+\epsilon)\approx f(x)+\epsilon f'(x)\)
따라서 미분은 \(y\)를 조금 개선하기 위해 \(x\)를 어떻게 변경해야 하는지 알려주기 때문에 때문에 함수를 최소화하는 데 유용하다. 예를 들어, 우리는 충분히 작은 \(\epsilon\)에 대해 \(f(x-\epsilon\)sign (\(f'(x)))\)가 \(f(x)\)보다 작음을 알 수 있다. 따라서 \(x\)를 미분의 반대 방향으로 조금씩 이동하여 \(f(x)\)를 줄일 수 있다. 이 기법을 gradient descent라고한다 (Cauchy, 1847). 이 기법의 예는 그림 4.1을 참조하라.
\(f'(x)=0\) 일 때, 미분은 이동 방향에 대한 정보를 제공하지 않는다. \(f'(x)=0\) 인 점을 critical points 또는 stationary points이라고합니다. Local minimum은 \(f(x)\)가 모든 주변 점들보다 낮은 지점이므로, 극소량을 움직여 \(f(x)\)를 줄이는 것이 더 이상 가능하지 않다. Local maximum 값은 \(f(x)\)가 모든 주변 점들보다 높은 점이므로 극소량을 움직여 \(f(x)\) 수치를 높일 수 없다. 어떤 critical points는 최대 점이나 최소 점이 아니다. 이것을 안장 점(saddle points)이라고한다. 각 유형의 critical point의 예는 그림 4.2를 참조하라.
\(f(x)\)가 최소값을 얻는 점은 global minimum이다. 함수의 global minimum은 하나 또는 여러 개일 수 있다. 또한 local minima가 global minima가 아닐 수 있다. Deep learning에서 우리는 최적(optimal)이 아닌 많은 local minima를 가질 수 있는 함수를 최적화하고, 매우 평평(flat)한 지역들로 둘러싸인 많은 안장 점들(saddle points)을 최적화한다. 이 모든 것이 특히 함수에 대한 입력이 다차원(multidimensional) 일 때 최적화를 매우 어렵게 만든다. 그러므로 우리는 대개 매우 낮지 만 공식적인 의미에서 반드시 최소가 아닌 \(f\)값을 찾는 것에 그친다. 예제는 그림 4.3을 참조하라.
우리는 종종 여러 입력을 갖는 함수를 최소화한다.:\(\mathbb{R}^{n}\rightarrow \mathbb{R}\). “최소화"가 되기 위해서 출력은 하나의 scalar만 있어야한다.
여러 개의 입력이 있는 함수의 경우 편미분(partial derivative)의 개념을 사용해야한다. 편미분 \(\displaystyle \frac{\partial}{\partial x_{i}}f(\boldsymbol{x})\)는 점 \(\boldsymbol{x}\)에서 변수 \(x_{i}\)가 증가함에 따라 \(f\)가 어떻게 변하는지를 나타낸다. 기울기(Gradient)는 미분이 벡터와 관련된 경우에, 미분의 개념을 일반화한다. \(f\)의 gradient는 \(\nabla_{x}f(x)\)로 표시된 모든 편미분을 포함하는 벡터다. Gradient의 \(i\)번째 원소는 \(x_{i}\)에 대한 \(f\)의 편미분이다. 다차원(Multi-dimension)에서 critical point는 Gradient의 모든 원소가 \(0\) 인 점이다.
단위 벡터 \(\boldsymbol{u}\) 방향으로의 방향 미분(directional derivative)은 \(\boldsymbol{u}\) 방향으로의 함수 \(f\)의 기울기이다. 즉, 방향 미분은 \(\alpha\)에 대한 함수 \(f(\boldsymbol{x}+\alpha \boldsymbol{u})\)의 미분을 \(\alpha=0\)에서 구한 것이다. Chain rule을 사용하면, \(\displaystyle \frac{\partial}{\partial\alpha}f(x+\alpha u)=u^{\top}\nabla_{x}f(x)\)를 알 수 있다.
방향 미분(directional derivative)을 사용하여 \(f\)가 가장 빠르게 감소하는 방향을 찾을 수 있다.
\[\displaystyle \min_{u,u^{\top}u=1}u^{\top}\nabla_{x}f(x)\tag{4.3}\]
\[=\displaystyle \min_{u,u^{\top}u=1}||u||_{2}||\nabla_{x}f(x)||_{2}\cos\theta\tag{4.4}\]
여기서 \(\theta\)는 \(\boldsymbol{u}\)와 기울기(gradient) 사이의 각도다. \(||u||_{2}=1\)로 대체하고 \(u\)와 의존성(dependency)이 없는 인자를 무시하면 \(\displaystyle \min_{\boldsymbol{u}}\cos\theta\)로 단순화된다. 이것은 \(\boldsymbol{u}\)가 gradient와 반대 방향을 가리킬 때 최소화된다. 즉, gradient가 올라가는 방향을 가리키고, 음의 gradient가 내려가는 방향을 가리킨다. 음의 gradient 방향으로 이동하여 \(f\)를 줄일 수 있다. 이것은 steepest descent 또는 gradient descent로 알려져 있다.
steepest descent는 다음과 같이 새로운 포인트를 제시한다.
\[x'=x-\epsilon\nabla_{x}f(x)\tag{4.5}\]
여기서 \(\epsilon\)은 learning rate이며, step size를 결정하는 양의 scalar다. 우리는 몇 가지 다른 방법으로 \(\epsilon\)를 선택할 수 있다. 일반적인 방법은 \(\epsilon\)를 작은 상수로 설정하는 것이다. 때로는 directional derivative가 사라지게 하는 step size를 조정할 수 있다. 다른 방법으로는, 여러 값의 \(\epsilon\)에 대해 \(f(x-\epsilon\nabla_{x}f(x))\)를 가장 작게 만드는 \(\epsilon\)을 선택하는 것이다. 이 전략을 line search라고 한다.
Steepest descent는 모든 gradient 원소가 0 일 때 (또는 실제로는 0에 매우 가까울 때) 수렴한다. 경우에 따라 반복 알고리즘을 실행하지 않고 \(\boldsymbol{x}\)에 대한 방정식 \(\nabla_{\boldsymbol{x}}f(\boldsymbol{x}) =0\)을 풀면 critical point로 바로 이동할 수 있습니다.
Gradient descent는 연속 공간(continuous space)에서의 최적화로 제한되지만, 더 나은 상태를 위한 작은 움직임(대략적으로 가장 작은 움직임)을 만드는 일반적인 개념은 불연속 공간(discrete space)으로 일반화될 수 있다. Discrete parameter의 목적 함수 값을 증가시키는 것을 hill climbing이라고 한다 (Russel and Norvig, 2003).
4.3.1 Beyond the Gradient: Jacobian and Hessian Matrices
때로 우리는 입력과 출력이 모두 벡터인 함수의 편미분을 모두 찾아야한다. 그러한 모든 편미분을 포함하는 행렬은 Jacobian행렬이라고 한다. 특히 함수 \(f:\mathbb{R}^{m} \rightarrow \mathbb{R}^{n}\)인 경우 \(\boldsymbol{f}\)의 Jacobian행렬 \(\boldsymbol{J}\in \mathbb{R}^{n\times m}\)은 \(J_{i,j} =\displaystyle \frac{\partial}{\partial x_{j}}f(\boldsymbol{x})_{i}\)가 되도록 정의된다.
우리는 때로 편미분의 미분에도 관심이 있다. 이를 2차 미분(second derivative)이라고 한다. 예를 들어, 함수 \(f\) : \(\mathbb{R}^{n} \rightarrow \mathbb{R}\)의 경우, \(x_{j}\)에 대한 f의 미분의 \(x_{i}\)에 대한 미분을 \(\displaystyle \frac{\partial^{2}}{\partial x_{i}\partial x_{j}}f.\)로 표시한다.
단일 차원에서는 \(f''(x)\)로 \(\frac{{{\partial ^2}}}{{\partial {x^2}}}f\)를 나타낼 수 있다. 2차 미분은 입력을 변화시킬 때 1차 미분 값이 어떻게 변하는지를 알려준다. 이것은 gradient step이 gradient만으로 기대했던 것보다 많이 증가될지 여부를 알려주기 때문에 중요하다. 우리는 2차 미분을 곡률(curvature)을 측정하는 것으로 생각할 수 있다. 우리가 2차 함수를 가지고 있다면 (실제로 발생하는 많은 함수는 2차가 아니지만, 최소한 지역적으로(locally) 2차 함수로 근사 될 수 있다.) 그 함수의 2차 미분이 0이면 곡률이 없다. 즉 완벽하게 평평한 선이고, 그 값은 gradient만 사용하여 예측할 수 있다. Gradient가 1이면 음의 기울기를 따라 크기 \(\epsilon\) 크기의 step을 만들 수 있고, cost 함수는 \(\epsilon\)만큼 감소한다. 2차 미분 값이 음수면 함수는 아래쪽으로 곡선을 그리므로 cost 함수는 실제로 \(\epsilon\)보다 크게 감소할 수 있다. 마지막으로, 2차 미분 값이 양수이면 함수는 위쪽으로 곡선을 그리므로 cost 함수는 \(\epsilon\)보다 작게 감소할 수 있다. 곡률의 다른 형태가 gradient에 의해 예측된 cost 함수의 값과 실제 값 사이의 관계에 어떻게 영향을 미치는지 보려면 그림 4.4를 참조하라.
여러 차원의 입력을 가지는 함수의 경우, 많은 2차 미분이 존재한다. 이 미분들을 Hessian matrix라고 불리는 행렬로 모을 수 있다. Hessian 행렬 \(\boldsymbol{H}(f)( \boldsymbol{x})\)는 다음과 같이 정의된다.
\[H(f)(x)_{i,j}=\displaystyle \frac{\partial^{2}}{\partial x_{i}\partial x_{j}}f(x)\tag{4.6}\]
동등하게, Hessian은 gradient의 Jacobian이다.
2차 편미분이 연속이면, 미분 연산자는 교환 가능(commutative)하다. 즉, 그 순서가 바뀔 수있다 :
\[\displaystyle \frac{\partial^{2}}{\partial x_{i}\partial x_{j}}f(x)=\frac{\partial^{2}}{\partial x_{j}\partial x_{i}}f(x)\tag{4.7}\]
이것은 \(H_{i,j}=H_{j,i}\)를 의미하므로 Hessian 행렬은 대칭 행렬이다. Deep learning에서 우리가 접하게 되는 함수의 대부분은 거의 모든 곳에서 대칭 Hessian을 가지고 있다. Hessian 행렬은 실수이고 대칭이므로 실제 고유 값(eigenvalue) 집합과 고유 벡터(eigenvector)의 직교 기저(orthogonal basis)로 분해할 수 있다. 단위 벡터 \(\boldsymbol{d}\)로 표시되는 특정 방향의 2차 미분은 \(\boldsymbol{d}^{\top}\boldsymbol{Hd}\)로 표시된다. \(\boldsymbol{d}\)가 \(\boldsymbol{H}\)의 고유 벡터 일 때, 그 방향의 2차 미분은 그 고유 벡터에 대응하는 고유 값에 의해 구해진다. \(\boldsymbol{d}\)의 다른 방향에 대해 방향성 2차 미분(directional second derivative, \(\boldsymbol{d}\)가 크기는 1이고 방향만 가짐)은 고유 값(eigenvalue)들의 가중 평균(weighted average)이다. weight는 0~1사이의 값을 가지며, 고유 값에 대응하는 고유 벡터(eigenvector)와 \(\boldsymbol{d}\)의 각도차가 작을 수록 크다. 최대 고유치는 최대 2차 미분 값을 결정하고 최소 고유 값은 최소 2차 미분 값을 결정한다.
(방향성) 2 차 미분은 gradient descent step이 얼마나 잘 수행될 수 있는지를 알려준다. 우리는 현재 점\(x^{(0)}\)에서 함수 \(f(x)\)를 2차(second-order) Taylor series 근사화 할 수 있다.
\[f(x)\displaystyle \approx f(x^{(0)})+(x-x^{(0)})^{\top}g+\frac{1}{2}(x-x^{(0)})^{\top}H(x-x^{(0)})\tag{4.8}\]
여기서 \(g\)는 gradient이고 \(H\)는 \(x^{(0)}\)에서의 Hessian이다. Learning rate \(\epsilon\)를 사용하면 새로운 점 \(x\)는 \(x^{(0)}-\epsilon g\)로 주어진다. 이를 근사치로 대체하면
\[f(x^{(0)}-\displaystyle \epsilon g)\approx f(x^{(0)})-\epsilon g^{\top}g+\frac{1}{2}\epsilon^{2}g^{\top}Hg\tag{4.9}\]
여기에는 세가지 항(term)이 있다: 함수의 원래 값, 함수의 기울기로 인한 예상된 개선(improvement), 함수의 곡률을 위해 적용해야 하는 보정(correction). 여기서 마지막 항(term)이 너무 크면 gradient descent step가 실제로 오르막으로 이동할 수 있다. \(\boldsymbol{g}^{\top}\boldsymbol{Hg}\)가 0이거나 음수 일 때, Taylor series 근사화는 \(\epsilon\)의 계속 증가하면 \(f\)가 계속 감소할 것이라고 예측한다. 실제적으로, 테일러 급수는 큰 \(\epsilon\)에 대해 정확성을 유지할 수 없으므로, 이 경우 \(\epsilon\)의 heuristic 선택을 더 많이 사용해야한다. \(\boldsymbol{g}^{\top}\boldsymbol{Hg}\)가 양수 일 때, 함수의 Taylor series 근사화를 감소시키는 최적의 step size를 구하면 다음과 같다. (\(\epsilon\)에 대한 미분 값이 0이 되는 \(\epsilon\)이 optimal 값)
\[\displaystyle \epsilon^{*}\ =\frac{g^{\top}g}{g^{\top}Hg}\tag{4.10}\]
최악의 경우, \(g\)가 최대 고유 값 \(\lambda_{\max}\)에 대응하는 \(H\)의 고유 벡터와 일직선이 될 때, 최적의 step size는 \(\displaystyle \frac{1}{\lambda_{\max}}\)가 된다. 우리가 최소화하는 함수가 2차 함수로 잘 근사화 될 때 까지, Hessian의 고유 값이 learning rate의 크기를 결정한다.
2차 미분은 임계점(critical point)이 local maximum인지 local minimum인지, saddle point인지 여부를 결정하는 데 사용될 수 있다. 임계점 \(f'(x) =0\) 에서, \(f''(x) > 0\) 일 때, \(f'(x)\)가 오른쪽으로 갈수록 증가 함을 의미하고, 왼쪽으로 갈수록 감소함을 의미한다. 이것은 충분히 작은 \(\epsilon\)에 대해 \(f'(x-\epsilon) <0\), \(f'(x+\epsilon)>0\)임을 의미한다. 즉, 우리가 오른쪽으로 움직일 때, 경사는 오른쪽으로 올라가기 시작하고, 왼쪽으로 움직일 때, 경사는 왼쪽으로 올라가기 시작한다는 것이다. 따라서 \(f'(x)=0\)이고 \(f''(x) >0\) 일 때, x는 local minimum이라고 결론 지을 수 있다. 유사하게, \(f'(x)=0\)이고 \(f''(x) <0\)일 때, \(x\)는 local maximum이라고 결론 지을 수 있다. 이를 2차 미분 테스트(second derivative test)라고 한다. 불행하게도, \(f''(x)=0\) 일 때, 테스트는 결정적이지 않다. 이 경우 x는 saddle point 또는 flat region의 일부일 수 있다.
다차원에서 우리는 함수의 2차 미분을 모두 구해야 한다. Hessian 행렬의 고유값 분해 (eigendecomposition)를 사용하여 2차 미분 테스트를 여러 차원으로 일반화할 수 있다. \(\nabla_{\boldsymbol{x}}f(\boldsymbol{x})=0\)인 임계점에서 임계점이 local maximum, local minimum 또는 saddle point인지 여부를 결정하기 위해 Hessian의 고유 값을 검사할 수 있다. Hessian이 양의 정부호(positive definite, 모든 고유치가 양수이면)일 때, 그 점은 local minimum이다. 이것은 모든 방향의 방향성(directional) 2차 미분이 양수인지 관찰하고, 단 변수 2차 미분 테스트를 참조해 알 수 있다. 마찬가지로 Hessian이 음의 정부호(negative definite, 모든 고유 값은 음수)를 가지면, 이 점은 local maximum이다. 다차원에서, 실제로 몇가지 경우에 saddle point라는 긍정적인 증거를 발견할 수 있다. 적어도 하나의 고유 값이 양수이고 적어도 하나의 고유 값이 음수일 때, \(\boldsymbol{x}\)는 \(f\)의 하나의 단면(cross section)에는 local maximum이지만, 다른 단면(cross section)에는 local minimum이라는 것을 알 수 있다. 예제는 그림 4.5를 참조하라. 마지막으로 다차원 2차 미분 테스트는 단 변수 경우처럼 결정적이지 않을 수 있다. 0이 아닌 모든 고유 값이 동일한 부호를 가지지만 적어도 하나이상 0일 때마다 그 테스트가 결정적이지는 않다. 이는 단 변수 2차 미분 테스트가 고유 값이 0에 해당하는 단면에서 결정적이지 않기 때문이다.
다차원에서, 각 방향에 대해 다른 2차 미분이 있기 때문에 단일 지점에 다양한 2차 미분이 있을 수 있습니다. Hessian의 condition number는 얼마나 많은 2차미분이 있는지 계산한다. Hessian의 condition number가 좋지 않은 경우 gradient descent가 제대로 수행되지 않는다. 이것은 한 방향에서 미분이 빠르게 증가하고 다른 방향에서는 천천히 증가하기 때문이다. gradient descent는 도함수에서의 이러한 변화를 인식하지 못하므로 도함수가 오랫동안 음의 방향(negative direction)으로 남아있는 방향으로 우선적으로 탐색해야 한다는 것을 알지 못한다. 좋은 step size를 선택하는 것 또한 어렵다. Step size는 overshooting을 피하고 강한 양의 곡률을 가진 방향으로 올라갈 만큼 충분히 작아야 한다. 이것은 일반적으로 step size가 너무 작아서, 곡률이 낮은 다른 방향으로 크게 진행하지 못했음을 의미한다. 예제는 그림 4.6을 참조하라.
이 문제는 Hessian 행렬의 정보를 사용하여 검색을 안내함으로써 해결할 수 있다. 그렇게 하는 가장 간단한 방법은 Newton’s method로 알려져 있다. Newton’s method는 2차 테일러 급수 전개를 사용하여 어떤 점 \(\boldsymbol{x}^{(0)}\) 근처의 \(f(\boldsymbol{x})\)를 근사화하는 것에 기반한다.
\[f(x)\displaystyle \approx f(x^{(0)})+(x-x^{(0)})^{\top}\nabla_{x}f(x^{(0)})+\frac{1}{2}(x-x^{(0)})^{\top}H(f)(x^{(0)})(x-x^{(0)})\tag{4.11}\]
이 함수의 임계점을 풀면 다음과 같이됩니다.
\[x^{*}=x^{(0)}\ -H(f)(x^{(0)})^{-1}\nabla_{x}f(x^{(0)})\tag{4.12}\]
\(f\)가 양의 정부호 2차 함수(positive definite quadratic function) 인 경우, Newton’s method는 식 4.12를 한 번 적용하여 함수의 최소로 직접 점프하는 것이다. \(f\)가 실제로 2차식이 아니고 지역적으로(locally) 양의 정부호 2차식(positive definite quadratic)으로 근사 될 수 있는 경우, Newton’s method는 식 4.12을 여러 번 적용한다. 근사값을 반복적으로 업데이트하고 근사값의 최소 값으로 점프하면 임계점(critical point)에 도달할 수 있다. 이것은 local minimum 근처에서 유용한 속성이지만 saddle point 근처에서는 해로운 속성 일 수 있다. Newton’s method은 인접한 임계점이 최소 일 때 (Hessian의 모든 고유 값은 양수)만 적절하다, Saddle point의 경우, gradient descent가 saddle point를 향하지 않는 한, gradient descent가 saddle point쪽으로 끌리지 않는다. (8.2.3에서 논의)
Gradient descent같이 gradient만 사용하는 최적화 알고리즘을 “1차 최적화 알고리즘(first-order optimization algorithm)”이라고 하고, Newton’s method와 같이 Hessian 행렬을 이용하는 최적화 알고리즘을 “2차 최적화 알고리즘(second-order optimization algorithms)”이라고 한다(Nocedal and Wright, 2006).
이 책의 대부분의 상황에서 사용되는 최적화 알고리즘은 다양한 함수에 적용가능 하지만 거의 보장되지는 않는다. 이것은 Deep learning에 사용되는 함수들이 매우 복잡하기 때문이다. 다른 많은 분야에서 최적화에 대한 많이 주된 방법은 제한된 함수 들에 대해 최적화 알고리즘을 설계하는 것이다.
Deep learning에서, 우리는 때때로 함수를 Lipschitz continuous나 Lipschitz continuous 도함수로 제한함으로써 어떤 보장(guarantee)을 얻는다. Lipschitz continuous 함수는 변화율이 Lipschitz 상수 \(\mathcal{L}\)에 의해 한정되는 함수 \(f\)이다:
\[\forall x,\ \forall y,\ |f(x)-f(y)|\ \leq \mathcal{L}||x-y||_{2}\tag{4.13}\]
이 속성은 gradient descent와 같은 알고리즘에서, 입력의 작은 변화가 출력에 작은 변화를 가져올 것이라는 가정을 정량화 할 수 있기 때문에 유용하다. Lipschitz의 연속성은 매우 약한 제한(weak constraint)에 속하며, deep learning에서 많은 최적화 문제는 Lipschitz continuous가 비교적 사소한 수정으로 만들어 질 수 있다.
아마도 특수화된 최적화(specialized optimization)의 가장 성공적인 분야는 convex optimization(볼록 최적화)일 것이다. convex optimization 알고리즘은 더 강력한 제한(stronger restriction)을 가함으로써 더 많은 보장(guarantee)을 제공할 수 있다. convex 함수 최적화 알고리즘은 convex한 함수에만 적용할 수 있다. 즉, Hessian이 항상 positive semidefinite인 함수이다. 그러한 함수들은 saddle point가 없기 때문에 잘 작동하며, 모든 local minima은 필연적으로 global minima이다. 그러나, Deep learning에서 대부분의 문제는 convex optimization으로 표현하기가 어렵다. convex optimization은 일부 Deep learning 알고리즘의 서브 루틴으로 만 사용된다. convex optimization 알고리즘의 분석은 Deep learning 알고리즘의 수렴을 증명하는 데 유용할 수 있다. 그러나 일반적으로 convex optimization의 중요성은 Deep learning에서 크게 감소한다. Convex optimization에 대한 자세한 내용은 Boyd and Vandenberghe (2004) 또는 Rockafellar (1997)를 참조하라.
4.4 Constrained Optimization
때로 우리는 \(x\)의 가능한 모든 값에서 \(f(x)\) 최대화 최소화하기보단, \(x\)에 대한 어떤 집합 \(\mathbb{S}\)내의 \(x\)값에서 \(f(x)\)를 최소화 또는 최대화하고 싶을 수 있다. 이것을 constrained optimization(제한된 최적화)라고 한다. Constrained optimization 용어에서 집합 \(\mathbb{S}\)내에 있는 점 \(x\)를 “feasible points”라고 한다
어떤 의미에서 작은 솔루션을 찾고자 할 때, 일반적인 방법은 \(||x|| \leq 1\)과 같은 norm constraint를 부과하는 것이다.
Constrained optimization에 대한 한 가지 간단한 방법은 제약 조건을 고려한 gradient descent를 수정하는 것이다. 만약 작은 일정한 스텝 크기 \(\epsilon\)를 사용하면, 우리는 gradient descent step을 만들 수 있고, 그 결과를 다시 \(\mathbb{S}\)로 투영(projection) 할 수 있다. line search을 사용한다면, 새로운 \(x\)가 feasible이 되게 하는 step size \(\epsilon\)만을 검색하거나 라인상의 각 포인트를 constraint region으로 투영(projection) 할 수 있다. 가능하다면, step을 수행하거나 line search를 시작하기 전에 feasible region의 tangent space로 gradient를 투영하여 이 방법을 보다 효율적으로 만들 수 있다 (Rosen, 1960).
좀더 복잡한 방법으로. Constrained optimization을 unconstrained optimization으로 변환하는 것이다(원래의 constrained optimization의 solution이 unconstrained optimization의 solution으로 변환 가능해야 한다). 예를 들어, \(x\in \mathbb{R}^{2}\)에 대해 \(f (x)\)를 최소화하고 \(x\)가 정확하게 단위 \(L^{2}\) norm을 갖도록 제약하면, 대신에 \(\theta\)에 대해 \(g(\theta)=f([\cos\theta,\ \sin\theta]^{\top})\)를 최소화 할 수 있으며, 원래의 문제에 대한 해답으로 \([\cos\theta,\ \sin\theta]\)를 반환한다. 이 접근법은 창의성(creativity)이 필요하다. 최적화 문제 사이의 변환은 우리가 마주 칠 때마다 특별히 설계되어야 한다.
Karush-Kuhn-Tucker (KKT) 접근법은 constrained optimization에 대해 매우 일반적인 솔루션을 제공한다. 우리는 KKT 접근법을 사용하여 “generalized Lagrangian” 또는 “generalized Lagrangian function”이라고 하는 새로운 함수를 소개한다.
Lagrangian을 정의하기 위해, 우리는 등식과 부등식의 관점에서 \(\mathbb{S}\)를 기술할 필요가 있다. \(\mathbb{S}\)는 \(\mathbb{S}\) \(=\{x |\forall i, g^{(i)}(x)=0 \ \rm{and} \ \forall j, h^{(j)}(x) \leq 0\}\)을 만족하는 m 개의 함수 \(g^{(i)}\)와 \(n\)개의 함수 \(h^{(j)}\)이다. \(g^{(i)}\)가 포함된 방정식을 equality constraints라고하고 \(h^{(j)}\)와 관련된 부등식을 inequality constraints라고 한다.
각 constraint에 대한 새로운 변수 \(\lambda_{i}\)와 \(\alpha_{j}\)를 소개한다. 이를 KKT multiplier라고 한다. Generalized Lagrangian은 다음과 같이 정의된다.
\[L(x,\displaystyle \ \lambda,\ \alpha)=f(x)+\sum_{i}\lambda_{i}g^{(i)}(x)+\sum_{j}\alpha_{j}h^{(j)}(x)\tag{4.14}\]
이제 우리는 generalized Lagrangian의 unconstrained optimization을 사용하여 constrained minimization 문제를 풀 수 있다. 적어도 하나의 feasible point가 존재하고, \(f (x)\)가 값 \(\infty\)를 가질 수 없다면,
\[\mathop {\min }\limits_x \mathop {\max }\limits_{\lambda} \mathop {\max }\limits_{\alpha, \alpha \geq 0} L(x,\ \lambda,\ \alpha)\tag{4.15}\]
는 다음과 같은 optimal objective function value 와 optimal points x의 집합을 갖는다.
\[\displaystyle \min_{x\in \mathrm{S}}f(x)\tag{4.16}\]
이것은 constraint가 만족하면 항상 다음 식을 만족하고,
\[\displaystyle \max_{\lambda}\max_{\alpha,\alpha\geq 0}L(x,\ \lambda,\ \alpha)=f(x)\tag{4.17}\]
이고, constraint가 위반 되면 항상 다음 식을 만족하기 때문이다.
\[\displaystyle \max_{\lambda}\max_{\alpha,\alpha\geq 0}L(x,\ \lambda,\ \alpha)=\infty\tag{4.18}\]
이러한 특성은 infeasible point는 optimal point가 될 수 없고, feasible points내의 optimal point가 변하지 않음을 보장한다.
Constrained maximization 문제를 수행하기 위해, \(-f (x)\)를 최적화하는 문제로 generalized Lagrange함수를 만들 수 있다.
\[\displaystyle \min_{x}\max_{\lambda}\max_{\alpha,\alpha\geq 0}-\left(f(x)+\sum_{i}\lambda_{i}g^{(i)}(x)+\sum_{j}\alpha_{j}h^{(j)}(x)\right)\tag{4.19}\]
또한 이것은 바깥 루프를 maximization 하는 문제로 변환할 수 있다.
\[\displaystyle \max_{x}\min_{\lambda}\min_{\alpha,\alpha\geq 0}f(x)+\sum_{i}\lambda_{i}g^{(i)}(x)-\sum_{j}\alpha_{j}h^{(j)}(x)\tag{4.20}\]
Equality constraint관련 항(term)의 부호는 중요하지 않다. 우리는 그 부호를 더하기나 빼기로 마음대로 정할 수 있다. 왜냐하면 각 \(\lambda_{i}\)에 대해 임의의 부호를 자유롭게 선택 가능하기 때문이다.
Inequality constraints (부등 제약)은 좀더 살펴볼 필요가 있다. \(h^{(i)}(x^{*}) =0\)이면 constraint \(h^{(i)}(x)\)가 활성화(active)된다고 한다. Constraint이 활성 되지 않으면, 해당 constraint을 사용하여 발견 solution은 해당 constraint가 삭제되더라도 적어도 local solution으로 남아있게 된다. inactive constraint가 다른 solution을 배제시키는 것은 가능하다. 예를 들어, Globally optimal points(넓고 평평한 동일 cost 영역)의 전체 영역에 대한 convex problem은 constraint에 의해 이 영역이 제거된 부분 집합을 가질 수 있고, non-convex 문제는 inactive된 constraint에 의해 제거된 더 나은 local stationary points을 가질 수 있습니다. 그러나 수렴된 점은 inactive constraint에 포함되는지 여부에 관계없이 stationary point로 남아 있다. 이것은 inactive \(h^{(i)}\)가 음의 값을 가지므로, \(\displaystyle \lambda\max_{a,\alpha\geq 0}L(x,\ \lambda,\ \alpha)\)에 대한 해는 \(\alpha_{i} =0\)이 가 되기 때문이다. 이와같이 우리는 solution에서 \(\alpha h(x)=0\)임을 알 수 있다. 즉, 모든 \(i\)에 대해 solution에서 constraint \(\alpha_{i} \geq 0\) 와 \( h^{(i)}(x)\leq 0\) 중 적어도 하나가 만족해야 함을 알 수 있다. 이것에 대한 직관적 해석으로, solution이 inequality에 생긴 경계위에 있을 때는 KKT multiplier가 solution \(x\)에 영향을 주는 0이 아닌 값이 되어야 하고, 그렇지 않을 때는 KKT multiplier solution에 영향을 주지 않는 0이어야 한다는 것을 알 수 있다.
Generalized Lagrangian의 “gradient가 0이라는 것과, \(x\)와 KKT multipliers 둘다 모든 constraint을 만족하며, \(\alpha \odot h(x) =0\)이다”라는 특성을 Karush-Kuhn-Tucker (KKT) 조건 (Karush, 1939; Kuhn and Tucker, 1951)이라고 부르며, 이러한 특성은 constrained optimization 문제의 optimal points을 설명한다.
KKT 접근법에 대한 자세한 내용은 Nocedal and Wright (2006)를 참조라.
4.5 Example: Linear Least Squares
다음 식을 최소화하는 \(x\)를 찾는다고 가정하자.
\[f(x)=\displaystyle \frac{1}{2}||Ax-b||_{2}^{2}\tag{4.21}\]
이 문제를 효율적으로 해결할 수 있는 특수 선형 대수 알고리즘이 있습니다. 그러나 이러한 기법들이 어떻게 작동하는지 알기 위한 간단한 예제인 gradient-based 최적화를 통해 문제를 어떻게 푸는지 알아볼 것이다.
먼저 gradient를 구해야 한다.
\[\nabla_{x}f(x) =A^{\top}(Ax-b) =A^{\top}Ax-A^{\top}b\tag{4.22}\]
그 다음 작은 step들을 거치면서 이 gradient 내리막을 따라갈 수 있다. 자세한 내용은 알고리즘 4.1을 참조하라.
Newton’s method를 사용하여 이 문제를 해결할 수도 있다. 이 경우, 실제 함수가 2차이므로, Newton’s method에 의해 사용된 2차 근사는 정확하고, 알고리즘은 한 단계만에 global minimum으로 수렴한다.
이제 우리는 같은 함수를 최소화하기를 원하지만, \(x^\top x\leq 1\)이라는 제약(constraint)이 있다고 가정하자. 최적화를 위해 다음과 같이 Lagrangian을 정의한다.
\[L(x,\ \lambda)=f(x)+\lambda(x^{\top}x-1)\tag{4.23}\]
이제 문제를 해결할 수 있다.
\[\displaystyle \min\max L(x,\ \lambda)\tag{4.24}\]
Unconstrained least squares problem에 대한 smallest-norm solution은 Moore-Penrose pseudoinverse를 사용하여 찾을 수 있다: \(x=A^{+}b\). 이 점이 feasible이면, 그것은 constrained problem에 대한 solution이다. 그렇지 않으면 constraint가 active된 solution을 찾아야한다. \(x\)에 관하여 Lagrangian을 미분하면 다음 식을 얻을 수 있다.
\[A^{\top}Ax-A^{\top}b+2\lambda x=0\tag{4.25}\]
이것은 solution이 다음과 같은 형식을 취할 것임을 알려준다.
\[x=(A^{\top}A+2\lambda I)^{-1}A^{\top}b\tag{4.26}\]
\(\lambda\)의 크기는 결과가 constraint를 만족하도록 선택해야 한다. \(\lambda\)에 대한 gradient ascent를 수행하여 이 값을 찾을 수 있다.
\[\displaystyle \frac{\partial}{\partial\lambda}L(x,\ \lambda)=x^{\top}x-1\tag{4.27}\]
\(x\)의 norm 이 1을 초과하면 이 미분은 양의 값을 가지므로, 도함수를 따라 올라가고 Lagrangian는 \(\lambda\)에 대해 증가시키기 위해 \(\lambda\)를 증가시킨다. 왜냐하면, \(x^\top x\) penalty에 대한 계수가 증가했기 때문에 \(x\)에 대한 선형 방정식을 풀면 더 작은 norm의 solution을 얻을 수 있기 때문이다. 선형 방정식을 풀고 \(\lambda\)를 조정하는 과정은 \(x\)가 올바른 norm을 가지며 \(\lambda\)의 미분이 0이 될 때까지 계속된다.
이것으로 기계 학습 알고리즘을 개발하는 데 사용되는 수학적 선행학습을 마친다. 우리는 이제 일부 본격적인 학습 시스템을 구축하고 분석할 준비가 되었다.
출처 : https://www.deeplearningbook.org/contents/numerical.html
'논문 & 책 리뷰 > Deep learning' 카테고리의 다른 글
Sample mean and sample variance. (0) | 2019.01.26 |
---|---|
Chapter 5. Machine Learning Basics (1/2) (0) | 2019.01.22 |
Chapter 3. Probability and Information Theory (0) | 2019.01.09 |
Chapter 2. Linear Algebra (0) | 2019.01.07 |
Deeplearning 책 리뷰 (0) | 2018.12.28 |
RECENT COMMENT