Self-Training & Co-Training

 05_2 : Semi-Supervised Learning : Self-Training and Co-Training


우선 가장 기본적인 준지도학습 방법 Self-Training에 대하여 알아보자.

 Self-Training

우리에게 주어진 정보는 Labeled data $(\mathbf{X}_l,y_l)$과 Unlabeled data $\mathbf{X}_u$이다. Self-training과정은 다음과 같이 진행된다. 

1. 우선 주어진 Labeled data $(\mathbf{X}_l,y_l)$를 사용하여 예측함수 $f$를 학습시킨다.
$$y_l = f(x_l)$$

2. 학습이 완료되면, 예측함수 $f$를 사용해 Unlabeled data $\mathbf{X}_u$의 예측값 $\hat{y}_u$를 구한다.
$$\hat{y}_u = f(x_u)$$
$$\Downarrow$$


3. 이제 기존의 Labeled data와 예측함수에 의해 labeling이 된 Unlabeled data를 합치고, 이 data를 사용해 예측함수 $g$를 학습한다.

이때 어떻게 Unlabeled data를 합치는지에 따라서 많은 variation이 있다. 대표적으로
  • Add all $(x_u,\hat{y}_u)$ to labeled data
  • Add a few most confident $(x_u,\hat{y}_u)$ to labeled data
  • Add all $(x_u,\hat{y}_u)$ to labeled data, weight each by confidence.
모든 Unlabeled data를 합치는 방법, 몇몇개의 가장 예측 confidence가 높은 data만을 합치는 방법, 모든 data를 합치치만 예측 confidence에 따라서 weight를 지정하는 방법 등이 있다.


4. 위와 같은 과정을 Unlabeled data가 없어지거나, 수렴할 때 까지 반복한다.





Propagating 1-Nearest Neighbor


다른 예시로 Propagating 1-Nearest Neighbor의 Psudo-code를 살펴보자.
                                                                                                                                                                                                                   
Input : labeled data $\{(x_i,y_i)\}_{i=1}^l$
Input : unlabeled data $\{x_j\}_{j=l+1}^{l+u}$
Input : distance function $d()$

1. Initially, let $L = \{(x_i,y_i)\}_{i=1}^l$ and $U =\{x_j\}_{j=l+1}^{l+u}$.
2. Repeat until $U$ is empty.
3. Select $x = arg\;\min_{x\in U}\max_{x^\prime\in L} d(x,x^\prime )$.
4. Set $f(x)$ to the label of $x$'s nearest instance in $L$;   Break ties randomly.
5. Remove $x$ from $U$;   Add $(x,f(x))$ to $L$.

                                                                                                                                                                                                                   
1-Nearest Neighbor는 Labeled data와 Unlabeled data 중 가장 가까운 Unlabeled data를 찾는다(3). 그리고 해당 Unlabeled data에 Labeled data의 $y$값을 labeling한다. 이 과정을 Unlabeled data의 labeling이 모두 완료될 때까지 반복한다. 


실행 과정을 그림으로 살펴보면,
<Iteration : 1>

<Iteration : 25>

<Iteration : 74>

<Iteration : end>

Iteration이 될 수록 점점 각 파란색 빨간색 label이 전파(propagate) 되는 것을 확인할 수 있다.



하지만 Outlier나 Noise에 대하여 매우 민감하고 오작동의 여지가 많다는 단점이 있다.
위의 예시처럼 1개의 outlier 만으로도 결과가 확연히 달라진다.



Self-Training 방법의 장단점을 정리해보자.
  • Advantages
    1. The simplest semi-supervised learning method.
    2. A wrapper method, applied to existing (complex) classifiers.
    3. Often used in real tasks like natural language processing.
  • Disadvantages
    1. Early mistakes could reinforce themselves.
    2. Cannot say too much in terms of convergence.

지금까지 알아보았던 Self-Training 방법들은 초창기 개발된 준지도학습 방법들로, 가장 기초적인, 이제는 잘 쓰이지 않는 방법들이다. 간단하게 준지도학습이 어떤 목적으로 어떻게 동작하는지만 이해하고 넘어가도록 하자.





Multi-view Algorithm : Co-Training

Co-Training은 Collaborative Training의 약자로, 특정 객체를 표현하는 Feature 중 mutually exclusive한(상호 배반적인) Feature set이 있을 것이다 라는 가정에서 시작한다. 상호 배반적인 Feature를 통해 따로 학습된 여러개의 모델들이 서로 협력하면서 학습을 진행한다. 다양한 관점에서 바라보는 방법이라서, Multi-view Algorithm이라고도 부른다.


예를들어, 어떤 객체의 feature로 Image와 Text가 있다고 가정해보자. 이 두 feature는 서로 관련성이 없다. (mutually exclusive)
$$X = (x^{(1)},x^{(1)})$$
$$x^{(1)} = image\;features$$
$$x^{(2)} = web\;page\;text$$
2개의 구분되는 feature를 입력으로 사용해 학습하는 각 모델을 만든다. 이 예시에서는 Image classifier와 Text classifier가 그 모델일 것이다. (Supervised learning)

학습을 진행하고, 완료된 후 각 모델을 사용해 Unlabeled data를 예측한다.

예측 결과 중 confidence가 높은 결과들을 상대방 모델의 재학습 데이터에 추가한다.

Self-training의 경우 자신이 예측한 결과가 정답이라고 가정하고 이를 사용해 다시 학습을 진행하는 것이고, Co-training의 경우 상대방 모델이 예측한 결과가 정답이라고 가정하고 이를 사용해 다시 학습을 진행하는 것이다.





위에서 계속 이야기 했던 Confidence는 어떻게 측정하는지 한번 살펴보자.

Confidence measure with Naïve Bayesian

제목에 적혀있는 Naïve Bayesian은 위에서 말했던 mutually exclusive 하다는 전제를 의미한다. (+ 하지만 현실 문제에서는 mutually exclusive한 feature를 찾기 어렵다. 때문에 완전히 mutually exclusive 하지 않더라도 어느정도 feature간의 상관관계가 없다면 Co-Training을 사용하기도 한다)

Confidence는 크게 두가지 항목으로 표현된다.
  • Intra confidence : $-Entropy$
$$-Entropy = -\sum_{i=1} -p_i \log_2 p_i$$
현재 모델이 해당 instance에 대하여 얼마나 극단적인 예측을 하고 있는지 나타낸다.

  • Inter confidence : $-Training\;Error$
각 모델의 예측율을 기반으로 얼마나 정확한지 나타낸다.

Confidence는 두 항목의 곱으로 계산한다.
$$Confidence\;measure = (-Entropy) \times (-Training\;error)$$




※ 이 글은 고려대학교 산업경영공학과 강필성 교수님의 IME654 강의를 정리하고, 공부한 내용을 추가하여 작성되었습니다.

댓글

이 블로그의 인기 게시물

One-Class SVM & SVDD

Support Vector Regression (SVR)