본문 바로가기

학습공간/데이터마이닝방법론2

[2주차] 대규모 기계학습 (최적화 방법론)

반응형

 최적화 방법론 (Optimization)

볼록 최적화(Convex Optimization) 방법론이며, 다차원 공간에서의 대규모 기계학습을 위한 컨벡스 프로그래밍(Convex Programming for large-scale Machine Learning) 내용과 딥 러닝(Deep Learning) 기초 개념인 MLP(Multi Layer Perceptron) 내용에 대해 다룬다.

 

 ① 컨벡스 프로그래밍 - 예제 (SVM, multiclass SVM)

이제부터 최적화에 대해 조금 더 집중적으로 공부하도록 한다. 이에 앞서 데이터마이닝연구세미나 과목에서 다루었던 최적화의 개념과 KKT 조건, 라그랑주 승수법을 복습하고 컨벡스 프로그래밍 문제를 살펴보도록 한다.

 

• 최적화 (Optimization)
- SLT 에서 개발 된 M/L 모형에 대한 해법을 제시한 분야
𝑔=argmin𝑔𝒢𝑅𝑛(𝑔)를 찾는 Learning Algorithm
- Optimization 의 일반 형태는, 목적 함수를 최소화 하는 것이다.
min 𝜽(𝑥):𝑅𝑛𝑅:objective function
{𝑖(𝑥)=0,𝑖=1,,𝑚𝑔𝑝(𝑥)0,𝑝=1,,𝑡

  𝑆 = {𝑥 ∈ Rⁿ : 𝑖(𝑥), 𝑖=1,⋯,𝑚 ; 𝑔𝑝(𝑥)≥0, 𝑝=1,⋯,𝑡}
  : feasible set (feasible region) ⋯ 조건을 만족하는 모든 𝑥
- 벡터로 나타내보면,
(𝑥)=[1(𝑥)𝑚(𝑥)]𝑔(𝑥)=[𝑔1(𝑥)𝑔𝑡(𝑥)]
간단하게 표현하면, {minimize𝜽(𝑥)subject toℎ(𝑥) = 0𝑔(𝑥) ≥ 0
Equality constraints, Inequality constraints ...

  • KKT 조건(Karush–Kuhn–Tucker conditions)
  [Definition] Lagrangian 
  𝐿(𝑥,𝜇,𝜋)=𝜽(𝑥)𝜇(𝑥)𝜋𝑔(𝑥)
  Lagrangian multiplier (dual variable) {𝜇=[𝜇1,,𝜇𝑚]𝜋=[𝜋1,,𝜋𝑡]
  라그랑지안 승수(𝜇, 𝜋)가 다음과 같을때 1-order KKT 필요 조건을 보면,

  first-order KKT necessary condition for optimality
  만약, 𝑥̅ 가 optimal point 이면,
  다음을 만족하는 𝑢̅ 와 𝜋̅ 가 존재한다.
  Primal Feasibility {(𝑥̅)=0𝑔(𝑥̅)0
  라그랑지안을 𝑥 에 대해 미분(𝛻𝑥, gradient) 하면,
  Dual Feasibility {𝛻𝑥𝐿(𝑥̅,𝑢̅,𝜋̅)=0𝜋̅0
  CSC: Complementary Slackness Condition {𝜋̅𝑔(𝑥̅)=0
  ※ 참고로 이 조건들은 뒤의 SVM 해석에 필요한 개념이니 숙지하도록 한다.
• 컨벡스 프로그래밍 문제(Convex Programming Problem)
- Convex 문제라고 한다면, 𝜽(𝑥) 와 feasible set 𝑆 가 독립 Convex 하고, local min 이 global min 이다.
(𝜽(𝑥):convex𝑆:convex):localminglobalmin
- 잠깐 비선형 계획법에서 솔루션 형태를 살펴보면, 아래와 같은 부분이 local min, global min (𝑥*) 이다.
Minimization of Convex Function

  ※ 다시 말하면, 컨벡스 문제일 경우 local minimum 을 구하면 된다.

  * 대규모 기계학습 (Large-Scale Machine Learning)
  - Convex optimization : logistic regression, SVM 전형적인 컨벡스 문제
  - highly non-linear, non-convex : DNN 전형적인 컨벡스하지 않은 문제
  
  {𝑥𝑅𝑑:𝑑 : 수만~수백만, 수억입력 Data 수 :𝑛 : 수억Parameter 수 :수억, 수천억
  ※ 다차원 피쳐 스페이스, 대규모 입력 데이터, 구해야 할 파라메터 수의 증가...

  * Methods (따라서 대규모 학습에 적합한 방법들을 소개)
  • Steepest descent (가파른 하강)
  • Conjugate gradient (켤례 기울기)
  • Newton method (뉴턴)
  • Quasi-newton Method (준뉴턴)
  • Augmented lagrangian (증강 라그랑지안)
  • Proximal (근위)
  • ADMM (승수 교번)
  등, 다양한 방법들이 있고... 여기에 Stochastic Version 이 존재한다.
  (이 버전이 일반 버전과 어느정도 퍼포먼스 차이가 있는지 공부한다.)

  * SVM (Support Vector Machine) : Vapnik 이 SLT 만들면서 같이 만듦
  - Find the classifier that maximize the margin and minimize the margin error simultanously.
  VC 이론의 창시자인 Vapnik이 SLT 를 만들면서 같이 만든 모델이 SVM 이다.
  마진을 크게하고 동시에 마진 에어를 축소시키면서 분류기를 찾는 기법으로 중요한 모델 중 하나.
  𝒳 : 𝑅𝑑
  𝒴 = {-1, 1}
  ℋ = {𝑥 ∈ 𝑅𝑛 | 𝑤𝑇𝑥 +𝑤0 = 0} ⋯ hyperplanes
  Training data set {(𝑥𝑖, 𝑦𝑖)} 𝑖=1𝑛
  Classifier 𝑔(𝑥) = 𝑠𝑖𝑔𝑛(𝑤𝑇𝑥 +𝑤0)
  ※ 𝑤𝑇𝑥 +𝑤0 0 보다 크면 class:1 로 할당하고, 작으면 class:-1 로 할당한다.
  logistic 0-1 function 일 때는 어떤 값이 0 보다 크다/작다로 할당을 했지만,
  클래스가 {-1, 1} 경우에는 함수 값의 사인을 보고 결정하는 것이 일반적인 형태이다.

  ▶ 대표적인 3가지 모델
  (1) Hand margin : linearly separable 한 경우
두 클래스를 완전히 나눌 수 있을 때

  min𝑤12𝑤𝑇𝑤
  subject to 𝑦𝑖(𝑤𝑇𝑥𝑖+𝑤0)1,𝑖 ⋯ 전형적인 convex 문제
  ⋯ objective 가 quadratic 하고, constraint 가 모두 linear 한 전형적인 문제
  dual
  max𝛼12𝑖,𝑗𝑦𝑖𝑦𝑗(𝑥𝑖)𝑇𝑥𝑗𝛼𝑖𝛼𝑗+𝛼𝑖
  subject to 𝑦𝑖𝛼𝑖=0
  𝛼𝑖0,𝑖=1,,𝑛 ⋯ 보통 dual 문제를 풀어서 해결

  (2) 1-norm soft margin : linearly separable 하지 않을 때, 약간의 에러 허용
  min𝑤,𝜉12𝑤𝑇𝑤+𝐶𝑛𝑖=1𝜉𝑖
  subject to 𝑦𝑖(𝑤𝑇𝑥𝑖+𝑤0)1𝜉𝑖,𝑖
  𝜉𝑖0,𝑖
  ⋯ ℋ 으로 가를 수 없을 때...
  dual
  max𝛼12𝑖,𝑗𝑦𝑖𝑦𝑗(𝑥𝑖)𝑇𝑥𝑗𝛼𝑖𝛼𝑗+𝛼𝑖
  subject to 𝑦𝑖𝛼𝑖=0
  0𝛼𝑖𝐶,𝑖 ⋯ 𝑠.𝑡. (box constraint 영역이 조금 다르다.)

  (3) 2-norm soft margin : 이젠 마진 에러를 1-norm이 아닌 유클리디안(2-norm)을 쓴 경우
  min𝑤,𝜉12𝑤𝑇𝑤+𝐶𝑛𝑖=1𝜉𝑖2
  subject to 𝑦𝑖(𝑤𝑇𝑥𝑖+𝑤0)1𝜉𝑖,𝑖
  ⋯ 특성 상 𝜉𝑖0 생략 가능하다...
  dual
  max𝛼12𝑖,𝑗𝑦𝑖𝑦𝑗[(𝑥𝑖)𝑇𝑥𝑗+1𝐶𝛿𝑖𝑗]𝛼𝑖𝛼𝑗+𝛼𝑖
  subject to 𝑦𝑖𝛼𝑖=0 ⋯ Kronecker delta 𝛿
  𝛼𝑖0,𝑖 ⋯ Hand margin과 같다.


  𝜉𝑖=(1𝑦𝑖(𝑤𝑇𝑥𝑖+𝑤0))+ : posterior+?
  =max(0,1y𝑖(𝑤𝑇𝑥𝑖+𝑤0)) : margin error
  𝛼 : dual optimal solution
  𝑤=𝑖𝑆𝑉𝛼𝑖𝑦𝑖𝑥𝑖
  𝑆𝑉 = {𝑖:𝛼𝑖>0} : support vector index 𝑖
  𝛼𝑖 가 0 보다 큰 𝑥𝑖 를 support vector 라고 부른다.
  * Multi-class SVM (Support Vector Machine)
  - binary-class SVM 이 아닌, 다중 클래스 서포트 벡터 머신에 대해서 살펴보도록 한다.
  ⇒ sample {(𝑥𝑖, 𝑦𝑖)} 𝑖=1𝑛 𝑥𝑖𝑅𝑑, 𝑦𝑖 ∈ = {0, 1,⋯,𝑘-1}

  1) One-Against-All (OAA) SVM
  : 𝑘 개의 binary SVM 모델 구축
  m-th SVM : {class m 의 example label =+1나머지 class 의 example label =-1
  min𝑤𝑚,𝑏𝑚,𝜉𝑚12𝑤𝑚𝑇𝑤𝑚+𝐶𝑛𝑖=1𝜉𝑖𝑚
  subject to
      (𝑤𝑚)𝑇𝜙(𝑥𝑖)+𝑏𝑚1𝜉𝑖𝑚,𝑦𝑖=𝑚

      (𝑤𝑚)𝑇𝜙(𝑥𝑖)+𝑏𝑚1+𝜉𝑖𝑚,𝑦𝑖𝑚
        𝜉𝑖𝑚0,𝑖=1,,𝑚
  ⇒ 이 문제를 풀면 𝑘 개의 decision function 𝑔𝑚(𝑥), 𝑚=0,⋯,𝑘-1 이 구해짐
𝑔𝑚(𝑥)=(𝑤𝑚)𝑇𝜙(𝑥)+𝑏𝑚,𝑚=0,,𝑘1
  𝜙(𝑥) : Kernel Support Vector Machine (non-linear) 사용했지만, 여기선 𝑥 를 써도 성립한다.
  𝑥 가 주어지면 final classifier 𝑔(𝑥) 는,
𝑔(𝑥)=argmax𝑚𝑦𝑔𝑚(𝑥)score
  score : 𝑥 가 class 𝑚 에 속할 점수 ⋯ 𝑔𝑚(𝑥) 이 구해지면 𝑥 에 대해서 제일 점수가 좋은 클래스를 할당하겠다.
  𝑥 가 주어지면 𝑚 개의 𝑑𝑓 에 대입하여 제일 큰 값을 가져다주는 클래스에 할당하겟다는 개념, like set MAX(posterior) 

  2) One-Against-One (OAO) SVM
  : (𝑘2) 개의 SVM 모델 구축 ⋯ 𝑘 개에서 2 개 추출(each class pairs)
  decision variables 𝑤𝑖𝑗,𝑏𝑖𝑗,𝜉𝑖𝑗 쌍의 개수 𝑡 는 몇 개인지 모른다.
  ※ 𝑛 개의 example 중 각각의 𝑖𝑗 클래스에 속하는 수 𝑡

  min𝑤𝑖𝑗,𝑏𝑖𝑗,𝜉𝑖𝑗12𝑤𝑖𝑗𝑇𝑤𝑖𝑗+𝐶𝑡𝜉𝑡𝑖𝑗
  subject to
      (𝑤𝑖𝑗)𝑇𝜙(𝑥𝑖)+𝑏𝑖𝑗1𝜉𝑡𝑖𝑗,𝑦𝑡=𝑖

      (𝑤𝑖𝑗)𝑇𝜙(𝑥𝑖)+𝑏𝑖𝑗1+𝜉𝑡𝑖𝑗,𝑦𝑡=𝑗
        𝜉𝑡𝑖𝑗0,𝑡=
  ⇒ 각 (𝑖, 𝑗) 문제를 풀어 𝑥 에 대한 decision. 즉, classifier 는 다수결(majority vote)로 한다.
  각 (𝑖, 𝑗) 에 대하여 𝑥 에 대한 decision 을 내리면, 𝑥 는 𝑖 class 또는 𝑗 class 에 속하게 된다.
  그래서 𝑥 가 가장 많이 속한 class 를 𝑥 의 class로 한다. ⋯ majority vote

결론: 다중 클래스의 경우에는, 각 클래스 별 𝑘 개의 classifier 를 만들어서 가장 값이 큰 classifier 를 찾아주는 방법과,
각 pair 별 classifier 를 만들어서 𝑥 가 어디에 속하는지 따져서 가장 많이 속한 클래스로 주는 두 가지 방법이 있다.

Example) Text 분류 : 문서의 representation ⋯ 방법(𝑡𝑓 - 𝑖𝑑𝑓)
문서를 보고 어떤 종류의 문서인지 분류하는 문제
W = {𝑤₁,⋯,𝑤𝑚} dictionary, 𝑤𝑖 : 단어
W* = a set of documents [보통 * 를 붙이면 String 이 됨, 말 뭉치(corpus)]
Let, T ∈ W* ← Bay of words [Bow 모델, 워드 뿐만이 아니고 이미지 분류에도 많이 쓰임]
[Define a kernel Φ] ∋∙(such that)
  Φ(T)=(Φ𝑤1(T),,Φ𝑤𝑚(T))
where
  Φ𝑤(T) : frequency of the word 𝜔 in the text T, 𝜔 ∈ W
  (𝑡𝑓: term frequency)
  Introduce weight 𝜇(𝜔) : the weight of the word 𝜔.
  Φ(T)=(Φ𝑤1(T)𝜇(𝜔1),,Φ𝑤𝑚(T)𝜇(𝜔𝑚))
  𝜇(𝜔) = 0 : 𝜔 is called 'stop word' (불용어)
  관사 등 별 의미가 없는 단어
  자연어 데이터 처리 전후에 필터링되는 단어

Assume |W*| = 𝑛.
Define df(𝜔) = # of documents containing the word 𝜔
⇒ weight 의 정의 (전문용어일수록 값이 크다)
  𝜇(𝜔)log𝑛df(𝜔)
  (𝑖𝑑𝑓: inverse document frequency)

* 문서 길이를 정규화 : ‖𝑥‖ = 1 ⋯ 마지막으로 문서 길이를 통일
여기까지가 문서 분류의 feature vector 를 만드는 방법이다.

이제 분류 문제로 접근해보자.
- Formulation : classification (multiclass)
(𝑋, 𝑌) ∈ 𝒳×𝒴
𝒳 ∈ 𝑅𝑑, 𝒴 ∈ {0, 1,⋯,𝑘-1}
RCV1 (Reuters Corpus Volume 1) data set
  {𝑑=47,152 ⋯ 𝑑 : 사전 단어 수𝑘 ≥ 103 ⋯ 𝑘 : 클래스 수800,000 개의 data (영어 뉴스) ⋯ 말뭉치, 문서 수
* loss function : logistic loss ℓ
  ℓ(ℎ, 𝑦) = log(1+𝑒𝑦)
  ℎ(𝑥) = 𝑤𝑇𝑥+𝑤0ℎ(𝑥;𝑤,𝑤0)
  ⋯ binary {-1, 1} OAA 전략
* ERM
  min1𝑛𝑛𝑖=1((𝑥𝑖;𝑤,𝑤0),𝑦𝑖)dataloss+12𝐶𝑤22regularization
  ⋯ regularization : overfitting 방지를 위해 필수
전형적인 컨벡스 프로그래밍이다.

 

 ② 다층 퍼셉트론 - MLP (Multi Layer Perceptron)

딥 러닝의 가장 기본적인 구조이며, 다른 말로 Feedforward Neural Network 이라고 부르기도 한다.

 

• MLP (Multi-Layer Perceptron, Feedforward Neural Network)
[Definition] Perceptron (1957, Rosenblatt)
Structure of Perceptron

① A unit has its weight
𝜔=(𝜔1𝜔𝑑)𝑅𝑑 ⋯ same input dimension
and
② bias (threshold) : b
* output = 𝜙(𝑑𝑗=1𝑤𝑗𝑥𝑗+𝑏) ⋯ non-linearize

* Perceptrin Algorithm
input:     (𝑥𝑖, 𝑦𝑖), 𝑖=1,⋯,𝑛      𝑦𝑖 ∈ {-1, 1}
initialize:      𝑤=0, 𝑏=0
repeat:
      pick    (𝑥𝑖, 𝑦)
      If    𝑦𝑖 (𝑤𝑇𝑥𝑖 +𝑏) ≤ 0
      ※ 𝑦𝑖의 label 이 (𝑤𝑇𝑥𝑖 +𝑏)와 다르다. (fail)
         𝑤 ← 𝑤 + 𝑦𝑖𝑥𝑖
         𝑏 ← 𝑏 + 𝑦𝑖
until:    𝑦𝑖 (𝑤𝑇𝑥𝑖 +𝑏) ≥ 0, ∀ 𝑖
      ※ 제대로 분류 될 때까지 반복한다. (error update, 𝑦𝑖)

Ex) Activation Function
1) ReLU : Rectified Linear Unit
𝜙(𝑍) ≜ (𝑍)+ = max{0, 𝑍} ⋯ 𝑍의 positive part (point 0 외 미분 가능)
ReLU (derivation)

2) Sigmoid ⋯ (logistic function)
𝜎(𝑍) = 11+𝑒𝑍
Sigmoid (derivation)

3) tanh(𝑍) : hyperbolic tangent
tanh(𝑍) = 𝑒𝑍𝑒𝑍𝑒𝑍+𝑒𝑍
tanh, (derivation)

4) softmax : 설명1
softmax(z1,⋯,z𝑛)𝑖 =  𝑒𝑍𝑖𝑛𝑗=1𝑒𝑍𝑗
case vector Z (softmax)

𝑍 가 벡터일때, 𝜎(𝑍)𝑖 라고 쓰기도 한다.
(단, 첨자 𝑖 가 안에 있는 Sigmoid 𝜎(𝑍𝑖) 와 구분)

5) maxout : 일반적으로 가장 큰 것을 뽑아주는 Hardmax
maxout(z1,⋯,z𝑛) = max𝑖{𝑍𝑖}

[Definition] Feedforward Neural Network (MLP, DNN)
layers (input → [1] hidden → [2] output)
[2] output layer → [3] computation of loss function

1) hidden Layer (아래 3 단계에 따라 정의)
Define : A hidden layer
    ℎ = 𝜑[𝑤𝑇𝑥 + 𝑏]
is characterized by the following :
  i) # of units : 𝐽 ⋯ 몇 개의 유닛을 가지고 있는가?
  ii) weights and bias of a unit 𝑗 : 𝜔𝑗 ∈ 𝑅D, 𝑏𝑗 ∈ 𝑅
  𝑤=[𝜔1,,𝜔J]D×J
  𝑏=[𝑏1𝑏J]vector
  iii) activation function : 𝜑
    𝑗 = 𝜑[(𝑤𝑗)𝑇𝑥 + 𝑏𝑗], 𝑗=1,⋯,𝐽
  =[1J]𝑏=[𝑏1𝑏J]
  𝜔𝑗=[𝜔1𝑗𝜔D𝑗]𝑅Dinput vector 와 차원이 같은 weight vector
  ℎ = 𝜑[𝑤𝑇𝑥 + 𝑏] = [𝜑((𝑤1)𝑇𝑥+𝑏1)𝜑((𝑤𝐽)𝑇𝑥+𝑏𝐽)]
  ← 즉, 𝜑[𝑍1𝑍𝑛] = [𝜑(𝑍1)𝜑(𝑍𝑛)]

2) output Layer (비 선형화)
    𝑓𝑘 = 𝑞[(𝑣𝑘)𝑇ℎ + 𝑐𝑘], 𝑘=1,⋯,𝐾
  𝑓=[𝑓1𝑓𝐾]𝑐=[𝑐1𝑐𝐾]
  𝑣=[𝑣1,,𝑣𝐾]J×K
⇒ 𝑓 = 𝑞[𝑣𝑇ℎ + 𝑐] = 𝑞[𝑣𝑇𝜑(𝑤𝑇𝑥 + 𝑏) + 𝑐] ⋯ 합성함수형태
← 결국, non-linear transformation of 𝑥 이다.

3) computation of loss function for sample (𝑥, 𝑦)
𝐿 = 𝐿(𝑦, 𝑓) ⋯ 각 loss function 별 다르다.

* 𝐿 hidden layer : (Multiple hidden layers)
(1) = 𝜑[𝑤(1)𝑇𝑥 + 𝑏(1)]
⋮       ⋮
() = 𝜑[𝑤()𝑇(1) + 𝑏()], ℓ= 2,⋯,𝐿
𝑓 = 𝑞[𝑣𝑇() + 𝑐]
* In output layer, usually 𝑞 is identity and 𝑐=0
※ output layer 에서는 보통 Activation 하지 않고 Summation 후 즉시 내보낸다.
* Deep Learning : 𝐿 ≥ 1 ⋯ 딥 러닝의 목표
Find weight and bias (𝑤(), 𝑏) and (𝑣, 𝑐) to minimize the loss 𝐿.
← Backpropagation (gradient descent + chain rule) is commonly used to do this efficiently.
반응형