본문 바로가기

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

[3주차] 딥 러닝 구조 (다층구조 활용)

반응형

 딥 러닝을 활용한 다중 클래스 분류

딥 러닝(Deep Learning) 기초 개념인 MLP(Multi Layer Perceptron) 내용에 대해 학습하였다. 이제부터는 Hidden Layer 개수를 추가(L ≥ 2)하여 비선형 문제를 포함한 복잡한 함수를 표현할 수 있게 되었다. 이에 따라, 발생될 수 있는 오버 피팅을 정규화로 제어하고, 딥 러닝을 활용한 다중 클래스 분류(Multiclass Classification) 2 가지를 보도록 한다.

 

 ① Structure of MLP, (L=2)

본격적으로 머신 러닝의 한 부분인 딥 러닝 구조에 대해서 학습하고, 최적 파라미터에 접근하는 방법에 대해 알아보도록 한다.

• Structure of Layers (input → hidden 1 → hidden 2 → output)


  𝑥𝑅D𝑓𝑅K → [M/L model] → compute loss L
  𝑤=[𝜔1,,𝜔J]D×J
  𝑢=[𝜇1,,𝜇𝑃]J×P
  𝑣=[𝑣1,,𝑣𝐾]P×K
* output layer 에서는 activation 을 하지 않는다. 단순 합만 주로 계산한다.
* MLP(DNN) contains multiple non-linear hidden layers
⇒ very expressive model that can be learn very complicated relationships between input and outputs
⇒ DNN is a universal function approximator !
※ 모든 트레이닝 데이터를 fitting 할 수 있는 표현력이 좋지만, overfitting 을 조심해야 한다 !

 

 ② Multi-class classification using DNN

가령, 신경망 구조를 통해 이미지를 보고 동물을 구분해야 한다고 하자. 여태까지의 이진 분류(개 이거나, 개가 아니거나)가 아닌, 다중 클래스 분류(개/고양이/닭 등)를 위해 해당 결과(class)에 대한 점수(score) 개념이 필요하다. 따라서, 해당 이미지가 주어진 class에 얼마나 적합한지 나타내는 점수에 대해 학습하고, 이 점수의 오차를 설명해주는 Loss Function 2가지(SVM vs. Softmax) 경우를 살펴보고 정확도를 높이기 위한 파라미터를 찾아보도록 한다.

 

• Multiclass Classification using DNN
- Training dataset : {(𝑥𝑖, 𝑦𝑖)} 𝑖=1𝑛
    𝑥𝑖𝑅D
    𝑦𝑖 ∈ {1,⋯,𝐾}
- 각 class 𝑘 의 weight vector: 𝑤𝑘, bias: 𝑏𝑘
  𝑤=[𝜔1,,𝜔K]D×K𝑏=[𝑏1𝑏𝐾]𝐾×1
- Define the score function ⋯ 𝑥 가 어떤 클래스에 속하는 점수
  𝑓(𝑥;𝑤,𝑏)=𝑤𝑇𝑥+𝑏
𝑓(𝑥;𝑤,𝑏) = [𝑓1𝑓𝑘𝑓𝐾] = [(𝜔1)𝑇𝑥+𝑏1(𝜔𝐾)𝑇𝑥+𝑏𝐾] ⋯ output vector 형태
  𝑤𝑇𝑥+𝑏=(𝜔1,,𝜔𝐾)𝑇𝑥+𝑏
𝑤𝑇𝑥+𝑏 = [(𝜔1)𝑇(𝜔𝐾)𝑇]𝑥 + [𝑏1𝑏𝐾] ⋯ 이와같이 분리될 수 있다.

  The score for the 𝑘-th class given 𝑥𝑖 ⋯ sample point 𝑥𝑖가 주어졌을 때, class 𝑘 에 들어가는 점수
  𝑓(𝑥𝑖;𝑤,𝑏)𝑘𝑓𝑘𝑖=(𝜔𝑘)𝑇𝑥𝑖+𝑏𝑘

  ※ Interpretation of score
  - The correct class has a score that is higher than the scores of incorect class
    -. class 𝑘 점수가 다른 class 점수보다 높도록 한다. ⋯ class 𝑘 has a highest score
  - The training data is used to learn the parameters (𝑤,𝑏) for that purpose
    -. 즉, 올바른 클래스의 점수가 커지도록 파라미터를 최적화시켜야 한다.
  ⇒ (𝑥𝑖,𝑦𝑖)에 대하여 𝑥𝑖의 score 가 𝑦𝑖 class 에서 최대가 되도록 (𝑤,𝑏) 를 정해준다.

EX. mapping on image to class score [CS231n]

⇒ score 계산 결과를 보면, 𝑥𝑖 의 class 가 class 2 인것 처럼 보인다.
그러나, 실제 class 는 𝑦𝑖=1 이므로 class 1 이다.
따라서, 현재 weight 𝑤 와 bias 𝑏 는 적절치 않다.
⇒ (𝑤,𝑏) 를 update 해서 class 1 의 score 가 최대가 되도록 해야한다.
※ loss function 을 잘 정의해서 loss 를 최소화 함으로써 이러한 목적이 달성되도록 함
- Define loss function to measure our unhappiness with outcomes such as this.
- We consider two loss function. ① SVM loss ② Softmax loss


① Multiclass SVM loss (hinge loss 또는 margin error)
   
hinge loss

   - The multi-class SVM loss for the 𝑖-th example:
    𝐿𝑖=𝑘𝑦𝑖max(0,𝑓𝑘𝑖𝑓𝑦𝑖𝑖+)=𝑘𝑦𝑖(𝑓𝑘𝑖𝑓𝑦𝑖𝑖+)+
   - The multi-class SVM wants the score of the correct class to be higher than all other classes by at least a margin of data
   * hinge loss [margin error] 구하는 법 - 𝑇𝑖𝑝
   1) Must be ☆ > △
   2) 음수化 + margin (△-☆ +γ)
   3) ReLU化 : hinge loss = (△-☆ -γ)+

② Softmax classifier (cross entropy loss function)
   ≒ Multiclass logistic regression: 𝒴 = {1, 2, ⋯, 𝐾}
   - Basic idea: feature vector 𝑥 가 주어졌을 때, class 의 posterior 분포
   𝑃(𝑌=𝑗|𝑋=𝑥) ≜ 𝑃(𝑗|𝑥) 를 추정한다. (추정치 𝑝̂(𝑗|𝑥), 𝑗=1,⋯,𝐾)
   ⇒ Final classifier:
    𝑔(𝑥)=argmax𝑗𝑦𝑝̂(𝑗|𝑥)
   - Define 𝑝̂(𝑗|𝑥) : estimated class probability given 𝑋=𝑥
    log𝑝̂(𝑗|𝑥)𝑍=(𝜔𝑗)𝑇𝑥+𝑏𝑗𝑓𝑗score
   ※ when 𝑍 : normalization constant
   ⇒ 𝑝̂(𝑗|𝑥) = 𝑍e𝑓𝑗𝑗=1𝐾𝑝̂(𝑗|𝑥) = 𝑍𝑗=1𝐾e𝑓𝑗 = 1
   ⇒ 𝑝̂(𝑗|𝑥) = e𝑓𝑗𝑘=1𝐾e𝑓𝑘softmax(𝑓)𝑗𝜎(𝑓)𝑗 , 𝑗=1,⋯,𝐾
   ※ estimation 은 위와 같고, 총 합은 1 과 같다. (※ sigmoid 첨자와 구분: 𝜎(𝑓𝑗) = 11+e𝑓𝑗)

   - True class probability given (𝑥, 𝑦) ⋯ sample
   ※ 다음으로, True 분포는 (True 는 모르기 때문에 샘플을 뽑아 실측치로 보겠다.)
    𝑃(𝑗|𝑥)={1,𝑗=𝑦0,otherwiseground truth (실측치)
   - Density estimation using cross entropy
   ※ estimation 추정치를 true 실측치에 가깝게 만들어주면 된다.
    H(𝑃,𝑝̂)𝑗=1𝐾𝑃(𝑗|𝑥)log1𝑝̂(𝑗|𝑥)=log𝑝̂(𝑦|𝑥)
   ⇒ CE loss for the sample point (𝑥, 𝑦)
    𝐿=loge𝑓𝑦𝑘=1𝐾e𝑓𝑘=𝑓𝑦+log𝑘=1𝐾e𝑓𝑘

   Rmk
   1) 𝐾=2    𝒴={0, 1}
    𝑝̂(1|𝑥)=e𝑓1e𝑓0+e𝑓1=11+e(𝑓1𝑓0)=11+e(𝜔𝑇𝑥+𝜔0)=𝜎(𝜔𝑇𝑥+𝜔0)
    𝑝̂(𝑦|𝑥)=𝑝̂(1|𝑥)𝑦(1𝑃(1|𝑥))1𝑦,𝑦=0,1
   CE loss : 𝑦̂ ≜ 𝑝̂(1|𝑥) ⋯ binary logistic regression 과 일치하게 됨.
    𝐿=CE(𝑦,𝑦̂)=log𝑝̂(𝑦|𝑥)=log𝑦̂𝑦(1𝑦̂)1𝑦=[𝑦log𝑦̂+(1y)log(1𝑦̂)]

   2) Training dataset {(𝑥𝑖, 𝑦𝑖)} 𝑖=1𝑛 에 대한 loss
    -. CE loss for an example (𝑥𝑖, 𝑦𝑖)
    𝑝̂(𝑦𝑖|𝑥𝑖)=e𝑓𝑦𝑖𝑖𝑘=1𝐾e𝑓𝑘𝑖where,𝑓𝑘𝑖=(𝜔𝑘)𝑇𝑥𝑖+𝑏𝑘:𝑥𝑖class𝑘score
    𝐿𝑖=loge𝑓𝑦𝑖𝑖𝑘=1𝐾e𝑓𝑘𝑖=𝑓𝑦𝑖𝑖+log𝑘=1𝐾e𝑓𝑘𝑖
   Total loss 𝐿=1𝑛𝑖=1𝑛𝐿𝑖

   Ex: 𝑖 번째 input 에 대한 score vector
   𝒴={1, 2, 3, 4} ; 4 classes

   만약, 𝑥𝑖
   class 3 이면 loss = -log 0.0790 = 2.5383
   class 2 이면 loss = -log 0.7876 = 0.2388 (바람직한 결과)
   * Total loss 가 최소가 되도록 각 class 의 weight 𝑤𝑘 와 bias 𝑏𝑘 를 계산.
   만약, 𝑥𝑖 의 class 가 1 이고
   𝑝̂(𝑗|𝑥𝑖)[1000] 형태이면, loss = zero 가 된다.
   즉, 이 경우 추정치 𝑝̂(𝑗|𝑥𝑖) 와 실측치(true 분포) 𝑃(𝑗|𝑥) 가 일치한다.
• Recall : Multiclass Classification (2 Types of Loss function)

① SVM Loss (hinge loss)
    𝐿𝑖=𝑘𝑦𝑖max(0,𝑓𝑘𝑖𝑓𝑦𝑖𝑖+),=1=max(0,2.850.28+1,0.860.28+1)=1.58

② Softmax Loss
    𝐿𝑖=log𝑝̂(𝑦𝑖|𝑥𝑖)

    𝐿𝑖=log𝑝̂(3|𝑥𝑖)=log0.353=1.04
* Softmax Tip: Numerical Stability : 수치적 안정성
  -. 컴퓨터 수치 연산 시, 발생하는 오버플로우를 막기위한 방법
  -. 상수곱 M 을 정의하고, 윗 첨자 생략
    e𝑓𝑦𝑖𝑗=1𝐾e𝑓𝑗=Me𝑓𝑦𝑖M𝑗=1𝐾e𝑓𝑗=e𝑓𝑦𝑖+M𝑗=1𝐾e𝑓𝑗+logM
    M=max𝑗𝑓𝑗
반응형