의사 레이블을 사용하는 것이 결과에 사소한 영향을 미치는 이유는 무엇입니까?


19

저는 반 감독 학습 방법을 조사 해왔고 "의사 라벨링"이라는 개념을 접했습니다.

내가 이해하는 것처럼 의사 레이블을 사용하면 레이블이없는 데이터뿐만 아니라 레이블이있는 데이터 세트가 있습니다. 먼저 레이블이 지정된 데이터에 대해서만 모델을 학습시킵니다. 그런 다음 해당 초기 데이터를 사용하여 레이블이없는 데이터를 분류 (임시 레이블 첨부)합니다. 그런 다음 레이블이 지정된 데이터와 레이블이없는 데이터를 모두 모델 학습에 다시 공급하여 알려진 레이블과 예측 된 레이블에 모두 다시 맞 춥니 다. (이 과정을 반복하여 업데이트 된 모델로 레이블을 다시 지정하십시오.)

주장 된 이점은 레이블이없는 데이터의 구조에 대한 정보를 사용하여 모델을 개선 할 수 있다는 것입니다. 다음 그림의 변형은 종종 (라벨이없는) 데이터의 위치에 따라 프로세스가보다 복잡한 결정 경계를 만들 수 있음을 "증명"하는 것으로 나타납니다.

반 감독 방법의 결정 경계

Techerin CC BY-SA 3.0의 위키 미디어 공용 이미지

그러나 나는 그 간단한 설명을 구입하지는 않습니다. 원래의 레이블 전용 교육 결과가 상위 ​​결정 경계인 경우에는 의사 레이블이 해당 결정 경계에 따라 지정됩니다. 즉, 상단 곡선의 왼쪽은 의사 레이블이 흰색이고 하단 곡선의 오른쪽은 의사 레이블이 검은 색입니다. 새로운 의사 레이블이 단순히 현재 의사 결정 경계를 강화하기 때문에 재교육 후 멋진 결정 결정 경계를 얻지 못할 것입니다.

또는 달리 말하면 현재 레이블 전용 의사 결정 경계는 레이블이 지정되지 않은 데이터에 대해 완벽한 예측 정확도를 갖습니다 (우리가 데이터를 만드는 데 사용한 것과 동일 함). 의사 레이블이 지정된 데이터를 추가하여 의사 결정 경계의 위치를 ​​변경하게하는 원동력 (그라데이션 없음)이 없습니다.

다이어그램으로 구현 된 설명이 부족하다고 생각하는 것이 맞습니까? 아니면 내가 놓친 것이 있습니까? 그렇지 않다면, 무엇 의사 라벨의 장점은 의사 라벨을 통해 완벽한 정확성을 가지고 사전 재교육 결정 경계 주어진?

답변:


16

주어진 장난감 문제에서 의사 레이블이 작동하지 않습니다.

올리버 등. (2018)은 다른 반 감독 학습 알고리즘을 평가했습니다. 첫 번째 그림은 의사 라벨링 (및 기타 방법)이 귀하의 질문과 동일한 장난감 문제 ( '두 문'데이터 세트라고 함)에서 어떻게 수행되는지 보여줍니다.

여기에 이미지 설명을 입력하십시오

이 그림에는 레이블이 지정되고 레이블이 지정되지 않은 데이터 포인트와 서로 다른 반 감독 학습 방법을 사용하여 신경망을 훈련 한 후 얻은 결정 경계가 표시됩니다. 의심되는 것처럼 의사 레이블은이 상황에서 제대로 작동하지 않습니다. 그들은 의사 라벨링은 "단순성과 일반성으로 인해 실제로 널리 사용되는 간단한 휴리스틱"이라고 말합니다. 그러나 "직관적이지만 예측 기능이 그림 1과 같이 [표시되지 않은 데이터]에 대해 도움이되지 않는 목표를 생성 할 때 잘못된 결과를 생성 할 수 있습니다."

의사 레이블은 왜 그리고 언제 작동합니까?

의사 레이블은 Lee (2013)에 의해 도입되었으므로 자세한 내용을 찾을 수 있습니다.

클러스터 가정

이명박이 유사 표지에 대한 이론적 근거는 엔트로피 정규화와 유사하다는 것이다. 엔트로피 정규화 (Grandvalet and Bengio 2005)는 분류자가 레이블이없는 데이터에 대해 자신있게 예측할 수 있도록하는 반 감독 학습 기술입니다. 예를 들어, 레이블이 지정되지 않은 지점에 여러 클래스에 분산 된 확산 확률보다는 특정 클래스에있을 가능성이 높은 것을 선호합니다. 목적은 데이터가 클래스에 따라 클러스터된다는 가정을 활용하는 것입니다 (반지도 학습에서 "클러스터 가정"이라고 함). 따라서 근처의 포인트는 동일한 클래스를 가지며 다른 클래스의 포인트는 더 넓게 분리되어 실제 결정 경계는 입력 공간의 저밀도 영역을 통과합니다.

의사 레이블이 실패하는 이유

위의 경우, 의사 가정이 작동하기 위해 클러스터 가정이 필요한 조건이라고 추측하는 것이 합리적입니다. 그러나 위의 두 문 문제가 클러스터 가정을 만족시키기 때문에 충분하지는 않지만 의사 레이블은 작동하지 않습니다. 이 경우 문제는 레이블이 지정된 지점이 거의 없으며 이러한 지점에서 적절한 클러스터 구조를 식별 할 수 없다는 것입니다. 그래서 올리버 등. 설명 (및 질문에서 지적한 바와 같이) 결과 의사 레이블은 분류자를 잘못된 결정 경계로 안내합니다. 아마도 더 많은 레이블이 지정된 데이터가 주어질 것입니다. 예를 들어, 의사 레이블이 작동하는 아래 설명 된 MNIST 사례와 대조하십시오.

그것이 작동하는 곳

Lee (2013)는 유사 라벨링이 MNIST 데이터 세트에 도움이 될 수 있음을 보여주었습니다 (100-3000 라벨이 지정된 예 포함). 그림. 이 백서 중 하나에서 600 개의 레이블이 지정된 예제에 학습 된 신경망 (반 감독 학습없이) 이 클래스 간 클러스터 구조를 이미 복구 할 수 있음을 알 수 있습니다. 의사 레이블 은 구조를 개선 하는 데 도움이되는 것 같습니다 . 이것은 몇 개의 레이블이있는 점이 적절한 군집을 배우기에 충분하지 않은 2 달 예와는 다릅니다.

이 논문은 또한 단지 100 개의 라벨이 붙은 예에서는 결과가 불안정하다고 언급했다. 이는 의사 라벨링이 초기 예측에 민감하고 우수한 초기 예측에는 충분한 수의 라벨링 된 포인트가 필요하다는 아이디어를 다시 지원합니다.

Lee는 또한 노이즈 제거 오토 인코더를 사용하는 감독되지 않은 사전 훈련이 더 도움이된다는 것을 보여 주었지만 이는 라벨이없는 데이터의 구조를 이용하는 별도의 방법 인 것으로 보입니다. 불행히도, 감독되지 않은 사전 훈련 혼자 (의사 라벨링없이)와 비교되지 않았습니다.

Grandvalet과 Bengio (2005)는 의사 라벨링이 CIFAR-10 및 SVHN 데이터 세트 (각각 4000 및 1000 라벨이 지정된 예)에 대해 학습 된 학습을 능가한다고보고했습니다. 위와 같이, 이것은 두 문 문제에서 6 개의 레이블이있는 포인트보다 훨씬 더 레이블이 지정된 데이터입니다.

참고 문헌


5

자가 교육이 작동하는 방식에서 간과 할 수있는 것은 다음과 같습니다.

  1. 그것은 한 번이 아니라 반복적입니다.

  2. 확률 값을 반환하는 분류기를 사용합니다. 각 반복에서 알고리즘이 가장 확실한 경우에 대해서만 의사 레이블을 추가합니다.

귀하의 예에서 첫 번째 반복은 레이블이 지정된 각 점 근처에 하나 또는 두 개의 점을 레이블링하기에 충분하다고 확신합니다. 다음 반복에서는이 4-6 개의 레이블이있는 점을 수용하기 위해 경계가 약간 회전하며, 비선형 인 경우에도 약간 구부러지기 시작할 수 있습니다. 반복.

작동하지 않을 수도 있습니다. 기본 분류 자, 알고리즘 (의사 레이블 등을 지정하기 위해 얼마나 확신해야 하는가), 데이터 등에 따라 다릅니다.

사용할 수 있으면 더 강력한 다른 알고리즘도 있습니다. 내가 설명한다고 생각하는 것은 자기 훈련이며, 코딩하기 쉽지만 동일한 정보를 반복적으로 보는 단일 분류기를 사용하고 있습니다. 공동 교육에서는 각 지점마다 다른 정보를보고있는 여러 분류기를 사용합니다. (임의의 포리스트와 다소 유사합니다.) 명시 적으로 클러스터링하는 기술과 같은 다른 반 감독 기법도 있습니다.

의견에 대한 회답 : 저는이 분야의 전문가가 아닙니다. 우리는 고객과 일반적으로하는 일에 매우 적합하다고 생각하므로 배우고 있으며 모든 대답을하지 못했습니다.

반 감독 학습 개요를 검색 할 때 가장 큰 인기를 얻은 것은 2008 년의 반 감독 학습 문학 설문 조사 입니다. 그것은 오래전 컴퓨터 측면이지만 여기서 언급 한 내용에 대해 이야기합니다.

분류자가 레이블이있는 노드에서 가장 멀리있는 레이블이없는 점을 가장 확실하게 평가할 수 있다고 들었습니다. 반면에 우리의 직관은 우리를 속일 수 있습니다. 예를 들어, Wikipedia에서 가져온 그래픽에 검은 색, 흰색 및 회색 노드가 있다고 가정 해 봅시다.

첫째, 이것은 2D이며 가장 현실적인 문제는 직관이 종종 우리를 오도하는 더 큰 차원에있을 것입니다. 고차원 공간은 여러 가지면에서 다르게 작용합니다. 일부는 부정적이고 일부는 실제로 도움이됩니다.

둘째, 첫 번째 반복에서 가장 오른쪽에있는 두 개의 회색 점이 검은 색으로 표시됩니다. 검은 색 레이블이있는 점이 흰색으로 표시된 점보다 더 가깝기 때문입니다. 그러나 그것이 양쪽에서 일어난다면, 수직 결정 경계는 여전히 기울어지고 더 이상 수직이 아닙니다. 적어도 내 상상에서는 직선이라면 원래 레이블이 지정된 두 지점 사이의 대각선 빈 공간으로 내려갑니다. 여전히 두 개의 초승달을 잘못 분할하지만 이제는 데이터에 더 잘 맞습니다. 특히 비선형 의사 결정 경계에서 반복을 계속하면 예상보다 더 나은 답변을 얻을 수 있습니다.

셋째, 한 번 레이블이 있고 항상 레이블이있는 것이 실제로 어떻게 작동하는지 확실하지 않습니다. 방법과 알고리즘의 작동 방식에 따라 경계를 구부리면서 경계를 기울여서 (비선형으로 가정), 분류되지 않은 초승달 부분이 레이블을 이동할 수 있습니다.

내 직감은 적절한 (아마도 더 높은 차원의) 데이터 및 적절한 분류기와 결합 된이 세 가지 점이 아주 적은 수의 훈련 (레이블이 지정된) 샘플로 감독하는 것보다 더 잘 수행 할 수 있다는 것입니다. 보증이 없으며 실험에서 내가 찾은-너무 간단한 데이터 세트를 비난합니다-반 감독은 감독 된 것보다 약간 개선 될 수 있으며 때로는 잘못 실패 할 수 있습니다. 그런 다음 다시 만든 두 가지 알고리즘을 사용하여 실제로 좋을 수도 있고 아닐 수도 있습니다.


2
어떤 종류의 분류 자 ​​/ 상황에 대해 확장 할 수 있습니까? 표시된 종류의 예제 데이터를 사용하는 대부분의 분류 자에 대한 나의 이해는 결정 경계에서 (알려진 점에 비해) 높은 신뢰도를 얻는 점이므로 원위 꼬리는 자신있게 잘못 분류됩니다. 예. (또한, 의사 라벨링 및 관련 기술을 효과적으로 사용하는 것과 관련하여 지적 할 수있는 모든 참조 / 추가 독서는 인정 될 것입니다.)
RM

@RM 편집. 어떻게한다는거야?
Wayne

1

경고, 저는이 절차의 전문가가 아닙니다. 좋은 결과를 얻지 못했다고해서 기술이 제대로 작동하지 않는다는 증거는 아닙니다. 또한 이미지에는 다양한 기술을 갖춘 넓은 영역 인 "반감 독식"학습에 대한 일반적인 설명이 있습니다.

나는 당신의 직감에 동의합니다. 나는 이와 같은 기술이 어떻게 작동하는지 볼 수 없습니다. 즉, 특정 응용 프로그램에서 제대로 작동하려면 많은 노력이 필요하다고 생각하며 다른 응용 프로그램에서는 이러한 노력이 도움이 될 필요는 없습니다.

예제 이미지의 것과 같은 바나나 모양의 데이터 세트와 두 개의 간단한 정규 분산 클러스터를 사용하여 더 쉬운 데이터 세트를 가진 두 가지 인스턴스를 시도했습니다. 두 경우 모두 초기 분류기를 개선 할 수 없었습니다.

사물을 장려하기위한 작은 시도로서, 나는 이것이 더 나은 결과를 초래할 것이라는 희망으로 모든 예상 확률에 소음을 추가했습니다.

첫 번째 예는 위의 이미지를 최대한 충실하게 재현 한 것입니다. psuedo-labeling이 여기에서 전혀 도움이 될 것이라고 생각하지 않습니다.

바나나 모양의 데이터 하나 확인

두 번째 예는 훨씬 쉽지만 여기서도 초기 분류기에서 개선되지 않습니다. 나는 특별히 왼쪽 계급의 중심에서 하나의 레이블이 붙은 점을 선택했고, 오른쪽 계급의 오른쪽은 올바른 방향으로 움직이기를 바랐습니다.

예 2, 2D 정규 분포 데이터] =

예 1의 코드 (예 2는 여기서 복제하지 않을 정도로 유사합니다) :

import numpy as np
from sklearn.ensemble import RandomForestClassifier
import matplotlib.pyplot as plt
import seaborn

np.random.seed(2018-10-1)
N = 1000

_x = np.linspace(0, np.pi, num=N)
x0 = np.array([_x, np.sin(_x)]).T
x1 = -1 * x0 + [np.pi / 2, 0]

scale = 0.15
x0 += np.random.normal(scale=scale, size=(N, 2))
x1 += np.random.normal(scale=scale, size=(N, 2))

X = np.vstack([x0, x1])

proto_0 = np.array([[0], [0]]).T # the single "labeled" 0
proto_1 = np.array([[np.pi / 2], [0]]).T # the single "labeled" 1

model = RandomForestClassifier()
model.fit(np.vstack([proto_0, proto_1]), np.array([0, 1]))
for itercount in range(100):
    labels = model.predict_proba(X)[:, 0]
    labels += (np.random.random(labels.size) - 0.5) / 10 # add some noise
    labels = labels > 0.5
    model = RandomForestClassifier()
    model.fit(X, labels)

f, axs = plt.subplots(1, 2, squeeze=True, figsize=(10, 5))

axs[0].plot(x0[:, 0], x0[:, 1], '.', alpha=0.25, label='unlabeled x0')
axs[0].plot(proto_0[:, 0], proto_0[:, 1], 'o', color='royalblue', markersize=10, label='labeled x0')
axs[0].plot(x1[:, 0], x1[:, 1], '.', alpha=0.25, label='unlabeled x1')
axs[0].plot(proto_1[:, 0], proto_1[:, 1], 'o', color='coral', markersize=10, label='labeled x1')
axs[0].legend()

axs[1].plot(X[~labels, 0], X[~labels, 1], '.', alpha=0.25, label='predicted class 0')
axs[1].plot(X[labels, 0], X[labels, 1], '.', alpha=0.25, label='predicted class 1')
axs[1].plot([np.pi / 4] * 2, [-1.5, 1.5], 'k--', label='halfway between labeled data')
axs[1].legend()
plt.show()

1

여기 내 추측이 있습니다 (이 주제에 대해 많이 알지 못하고이 토론에 2 센트를 추가하고 싶었습니다).

나는 당신이 옳다고 생각합니다. 클래식 모델을 훈련시키고 예측을 데이터로 사용하는 데 아무런 소용이 없습니다. 왜냐하면 당신이 말한 것처럼 옵티마이 저가 더 잘 할 동기가 없기 때문입니다. 무작위 시작 알고리즘은 더 큰 데이터 세트로 인해 이전에 찾은 최적이 정확하다는 것을 "더 확실하게"확신 할 수 있기 때문에 동일한 최적을 찾을 가능성이 더 높지만, 이것은 관련이 없습니다.

즉, 당신이받은 첫 번째 대답은 요점을 가지고 있습니다-Wikipedia의 클러스터링에 관한 예는 모든 것이 다릅니다. 레이블이 지정되지 않은 데이터가 있으면 본질적으로 레이블이없는 다른 점과 공유 된 "잠재적 기능 공간"에 레이블이없는 점이 많이 있습니다. 레이블이 지정되지 않은 포인트를 분리 한 다음 레이블이 지정된 포인트가 속하는 클래스를 기반으로이 잠재 기능 공간에서 분류 할 수 있다는 사실을 발견 할 수있는 경우 레이블이 지정된 데이터에 대해 학습 된 분류 알고리즘보다 실제로 더 잘 수행 할 수 있습니다 .

내 말은, 당신은 이것을해야합니다 :

labelleddataclusteringclassification

... 레이블이없는 데이터로 반복하십시오. 여기에서 학습 된 클러스터 경계 동일하지 않습니다. 클러스터링은 클래스 레이블을 신경 쓰지 않기 때문에 기능 공간을 변환하기 만하면됩니다. 군집화는 분류 경계가 학습되는 잠재 피쳐 공간을 생성하며 이는 레이블 된 데이터에만 의존합니다.

어떤 종류의 클러스터링도 수행하지 않는 알고리즘은 레이블이없는 데이터 세트를 기반으로 최적을 변경할 수 없습니다.

그건 그렇고, 당신이 연결 한 이미지는 여기서 무슨 일이 일어나고 있는지 설명하는 공정한 일을합니다. 결정 경계는 전적으로 클러스터링 알고리즘에 기초하여 학습됩니다. 올바른 클래스가 무엇인지 모릅니다. 모두 무작위 일 수도 있습니다. 모릅니다. 우리가 할 수있는 모든 것은 특징 공간에 어떤 구조가있는 것 같고, 특징 공간에서 클래스 레이블로의 일부 매핑이있는 것 같습니다.

실제로 참조가 없지만 이 Reddit 게시물 에서 이해하는 것처럼 반 감독 학습을 수행하는 GAN에 대한 토론이 있습니다. 암시 적으로 클러스터링을 수행 한 다음 분류를 수행하는 것은 내 직감입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.