제너레이션 과 A 의 차이점을 이해하도록 도와주세요 . 내가 초보자에 불과하다는 것을 명심하면서, 알고리즘 차별 알고리즘 .
제너레이션 과 A 의 차이점을 이해하도록 도와주세요 . 내가 초보자에 불과하다는 것을 명심하면서, 알고리즘 차별 알고리즘 .
답변:
입력 데이터가 x
있고 데이터를 labels로 분류하려고 한다고 가정 해 봅시다 y
. 생성적인 모델은 학습 의 공동 확률 분포를 p(x,y)
하고 차별적 모델은 학습 조건부 확률 분포를 p(y|x)
- 당신과 같이해야하는 '확률 y
주어진 x
" .
다음은 정말 간단한 예입니다. 다음과 같은 형식의 데이터가 있다고 가정하십시오 (x,y)
.
(1,0), (1,0), (2,0), (2, 1)
p(x,y)
이다
y=0 y=1
-----------
x=1 | 1/2 0
x=2 | 1/4 1/4
p(y|x)
이다
y=0 y=1
-----------
x=1 | 1 0
x=2 | 1/2 1/2
이 두 행렬을 응시하는 데 몇 분이 걸리면 두 확률 분포의 차이를 이해할 수 있습니다.
분포 p(y|x)
는 주어진 예제 x
를 클래스로 분류하기위한 자연스러운 분포입니다. y
이를 직접 모델링하는 알고리즘을 판별 알고리즘이라고합니다. 생성 알고리즘 모델 p(x,y)
은 p(y|x)
베이 즈 규칙을 적용하여 변환 한 다음 분류에 사용할 수 있습니다 . 그러나 배포 p(x,y)
는 다른 목적으로도 사용될 수 있습니다. 예를 들어, 가능성있는 쌍 p(x,y)
을 생성 하는 데 사용할 수 있습니다 (x,y)
.
위의 설명에서 생성 모델이 더 일반적으로 유용하고 더 우수하다고 생각할 수도 있지만 그렇게 간단하지는 않습니다. 이 논문 은 차별적 분류와 생성 적 분류기의 주제에 대해 매우 인기있는 참고 자료이지만, 꽤 많이 진행되고 있습니다. 전반적인 요점은 차별적 모델이 분류 작업에서 일반적으로 생성 적 모델보다 우수한 것입니다.
p(y|x)
이를 모델링하는 알고리즘을 "차별 모델"이라고 암시 하는지 확실하지 않습니다 .
생식 알고리즘 모델은 데이터 신호를 분류하기 위하여 생성되다. 그것은 다음과 같은 질문을한다 : 내 세대 가정에 근거하여,이 신호를 생성 할 가능성이 가장 높은 카테고리는 무엇입니까?
차별적 알고리즘 데이터가 생성 된 방법에 대해 상관하지 않는다, 그것은 단순히 주어진 신호를 분류합니다.
연설을 언어로 분류하는 것이 당신의 임무라고 상상해보십시오.
다음 중 하나를 수행하면됩니다.
또는
첫 번째는 생성 방식이고 두 번째는 차별적 접근법입니다.
자세한 내용은이 참조를 확인하십시오 : http://www.cedar.buffalo.edu/~srihari/CSE574/Discriminative-Generative.pdf .
실제로 모델은 다음과 같이 사용됩니다.
차별적 모델 에서는 y
훈련 예에서 레이블을 예측하려면 x
다음을 평가해야합니다.
이는 단지 가능성이 가장 높은 클래스가 무엇인지 선택 y
고려 x
. 우리가 클래스 사이의 결정 경계 를 모델링 하려고했던 것과 같습니다 . 이 동작은 신경망에서 매우 분명하며, 계산 된 가중치는 공간의 클래스 요소를 격리시키는 복잡한 모양의 곡선으로 볼 수 있습니다.
이제 Bayes의 법칙을 사용 하여 방정식 의를로 대체합니다 . arg max에 관심이 있기 때문에 분모를 지울 수 있습니다 y
. 그래서, 당신은 남아
생성 모델 에서 사용하는 방정식 입니다.
첫 번째 경우에 당신이 가지고 있지만 조건부 확률 분포 p(y|x)
클래스 사이의 경계를 모델링, 두 번째에 당신이 가지고 결합 확률 분포를 p(x, y)
, 이후 p(x | y) p(y) = p(x, y)
, 어떤 명시 적 모델을 각 클래스의 실제 분포를 .
관절 확률 분포 함수를 사용하면 a가 주어지면 y
각각을 계산 ( "생성") 할 수 있습니다 x
. 이러한 이유로이를 "생성"모델이라고합니다.
다음 은 주제와 관련된 CS299 (Andrew Ng) 의 강의 노트 에서 가장 중요한 부분으로, 차별적 학습 알고리즘 과 생성 학습 알고리즘 의 차이점 을 실제로 이해하는 데 도움 이 됩니다 .
코끼리 ( y = 1
)와 개 ( y = 0
) 라는 두 종류의 동물이 있다고 가정하자 . 그리고 X는 동물의 특징 벡터이다.
훈련 세트가 주어지면 로지스틱 회귀 또는 퍼셉트론 알고리즘 (기본적으로)과 같은 알고리즘은 코끼리와 개를 분리하는 직선, 즉 결정 경계를 찾으려고 시도합니다. 그런 다음 새 동물을 코끼리 또는 개로 분류하기 위해 결정 경계의 어느 쪽이 떨어지는 지 확인하고 그에 따라 예측합니다. 우리는 이러한 차별적 학습 알고리즘을 호출 합니다 .
다른 접근법이 있습니다. 먼저 코끼리를 보면 코끼리가 어떻게 보이는지 모델을 만들 수 있습니다. 그런 다음 개를 보면 개가 어떻게 보이는지에 대한 별도의 모델을 만들 수 있습니다. 마지막으로, 새 동물을 분류하기 위해 새 동물을 코끼리 모델과 일치시키고 개 모델과 일치시켜 새 동물이 코끼리처럼 보이는지 또는 훈련 세트에서 본 개처럼 보이는지 확인할 수 있습니다 . 우리는 이러한 생성 학습 알고리즘을 호출 합니다 .
일반적으로 기계 학습 커뮤니티에는 원하지 않는 것을 배우지 않는 관행이 있습니다. 예를 들어, 주어진 x 입력에 y 레이블을 할당하는 것이 목표 인 분류 문제를 고려하십시오. 생성 모델을 사용하면
p(x,y)=p(y|x).p(x)
우리는 현재 작업과 관련이없는 p (x)를 모델링해야합니다. 데이터 sparseness와 같은 실제적인 제한 p(x)
으로 인해 약한 독립성 가정 을 모델링 해야합니다. 따라서 우리는 분류를 위해 차별적 모델을 직관적으로 사용합니다.
위의 StompChicken의 답변과 잘 어울리는 추가 정보 포인트.
근본적인 차이 사이의 차별 모델 및 생식 모델 입니다 :
차별적 모델 런 (하드 또는 소프트) 경계 클래스 사이를
생성 모델 은 개별 클래스 의 분포 를 모델링합니다.
편집하다:
생성 모델은 데이터를 생성 할 수 있는 모델입니다 . 기능과 클래스 (예 : 전체 데이터)를 모두 모델링합니다.
우리가 모델링하는 경우 P(x,y)
:이 확률 분포를 사용하여 데이터 포인트를 생성 할 수 있으므로 모든 알고리즘 모델링 P(x,y)
이 생성됩니다.
예 : 생성 모델
Naive Bayes 모델 P(c)
및 P(d|c)
- c
클래스는 어디 이며 d
피처 벡터입니다.
또한, P(c,d) = P(c) * P(d|c)
따라서 일부 양식 모델의 Naive Bayes는 P(c,d)
베이 즈 네트
마르코프 네츠
차별적 모델은 데이터 포인트 를 구별 / 분류하는 데만 사용할 수있는 모델입니다 . P(y|x)
그러한 경우 에만 모델링 하면됩니다 (예 : 특징 벡터가 주어진 클래스의 확률).
예 : 차별적 모델
로지스틱 회귀
신경망
조건부 임의 필드
일반적으로, 생성 모델은 차별적 모델보다 훨씬 더 많은 모델을 모델링해야하므로 때로는 효과적이지 않습니다. 사실, 클러스터링 등과 같은 대부분의 감독되지 않은 학습 알고리즘은 모델링 P(d)
(및 클래스가 없음)하기 때문에 생성 적이 라고 할 수 있습니다 .
추신 : 답변의 일부는 출처 에서 가져옵니다
여기에있는 많은 답변은 널리 사용되는 수학적 정의에 의존합니다.
- 판별 모델은 조건부 예측 분포를 직접 학습합니다
p(y|x)
.- 제너 모델은 공동 분배를 배울 수
p(x,y)
(또는 오히려,p(x|y)
및p(y)
).
p(y|x)
Bayes의 규칙으로 예측 분포 를 얻을 수 있습니다.
매우 유용하지만이 좁은 정의 는 감독 된 설정을 가정하며 감독되지 않은 방법 또는 반 감독 된 방법을 검사 할 때는 덜 유용합니다. 또한 딥 생성 모델링에 대한 많은 현대적인 접근 방식에는 적용되지 않습니다 . 예를 들어, 이제 샘플링 기반이며 확률 밀도를 명시 적으로 모델링하지 않는 암시 적 생성 모델, 예를 들어 GAN (Generative Adversarial Networks)이 있습니다 p(x)
(차별 기 네트워크를 통한 발산 측정을 배우는 대신). 그러나 우리는 그것들을 (고차원 [10]) 샘플을 생성하는데 사용되기 때문에 "생성 모델"이라고 부릅니다.
보다 광범위하고 근본적인 정의 [2] 동일하게이 일반적인 질문에 대한 피팅 것 같다 :
- 판별 모델은 클래스 간 경계를 학습합니다.
- 따라서 서로 다른 종류의 데이터 인스턴스를 구별 할 수 있습니다 .
- 생성 모델은 데이터 분포를 학습합니다.
- 따라서 새로운 데이터 인스턴스를 생성 할 수 있습니다 .
그럼에도 불구하고,이 질문은 다소 잘못된 이분법을 암시한다 [3]. 생성 적 차별 "이분법"은 실제로 [4] 사이에서 매끄럽게 보간 할 수 있는 스펙트럼 입니다.
결과적으로, 이러한 구별은 특히 많은 인기 모델이 깔끔하게 하나 또는 다른 모델에 속하지 않거나 실제로 하이브리드 모델 인 경우 (고전적으로 "차별적"및 "생성 적"모델의 조합) 경우에 임의적이고 혼란스러워집니다. .
그럼에도 불구하고 여전히 유용하고 일반적인 차이점입니다. 정식 및 최근의 생성 및 차별 모델에 대한 명확한 예를 나열 할 수 있습니다.
또한 생성-차별적 분할 [7]과 스펙트럼 [4,8]을 심층적으로 조사하고 심지어 차별적 모델을 생성 모델로 변환하는 흥미로운 작업도 많이 있습니다 [9].
결국, 정의는 끊임없이 발전하고 있습니다. 특히 빠르게 성장하는 분야에서 :) 소금 한 덩어리로 정의하고 자신과 다른 사람들을 위해 재정의하는 것이 가장 좋습니다.
생성 알고리즘 모델은 학습 데이터에서 완전히 학습하고 응답을 예측합니다.
차별적 인 알고리즘 작업은 두 결과를 분류하거나 구별하는 것입니다.