2009-09-04 6 views
2

저는 Markov Chain Generators에 대해 더 많이 읽었으며, 실제로 Markov Chain Generator의 전체 프로세스에 흥미를 느끼고 있습니다. 나의 이해에서 미래 상태는 통계적 과거 국가들에 의존한다.Markovian Logic을 통한 결정론 회피

예 :

안녕하세요. 안녕, 돌리. 안녕하세요.

"World"는 "Hello"다음에 66 %의 시간이옵니다.

항상 그렇다면 그때마다 같은 결과를내는 것을 어떻게 피합니까? 통계적 발생은 정적 문자열로 변경되지 않으므로 소스 데이터가 어떤 방식 으로든 수정되지 않는 한 모든 변형이 생성되지 않는다고 가정 할 수 있습니까?

통계적 값을 고려하면서 정적 소스에서 유사 콘텐츠를 얻을 수 있지만 유연성을 허용하려면 어떻게해야합니까? 위의 예제를 사용하여 "Dolly"가 "Hello"를 33 % 만 따르는 경우 제네레이터가 "Hello"를 따라 "Dolly"를 따르도록하려면 어떻게해야합니까?

나는 내가 선택한 것은 다음 선택의 확률을 현재 선택에 따르는 단어의 통계적 유무에 어떻게 근거 할 수 있을까요? 그렇게하면 "돌리"가 시간의 33 %를 차지하고 "월드"가 시간의 66 %를 차지합니다 - 아니면 완전히 잃어버린 것입니까?

답변

3

난수 생성기를 사용하여 내려가는 경로를 선택합니다. 당신은 각 주 (N 개의 이전 항목의 역사)와 그 주에 대한 확률을 저장해야합니다. 그런 다음 임의의 숫자를 선택하고 다음 상태로 전환 할 기준을 결정합니다. 현재 상태가 다음 다음 가능한 상태는, 안녕하세요 경우

<start> -> Hello : 1.0 

Hello -> World. : 0.66666 
Hello -> Dolly. : 0.33333 

Dolly. -> Hello : 1.0 

World. -> <end> : 0.5 
World. -> Hello : 0.5 

: 당신의 예에서

당신이 하나의 N과 마르코프 체인을 가지고 당신이 뭔가를 보았다 사슬 구조를 가질 것 . Dolly .. 0과 1 사이의 난수를 생성하고 World를 선택하십시오. 0.666666보다 작 으면 Dolly를 선택하십시오. 는 N = 2 마르코프 체인

, 당신은 입력 거의 동작이 얻을 :

<start> <start> -> <start> Hello : 1.0 

<start> Hello -> Hello World. : 1.0 

Hello World. -> World. Hello : 0.5 
Hello World. -> World. <end> : 0.5 

World. Hello -> Hello Dolly. : 1.0 

Hello Dolly. -> Dolly. Hello : 1.0 

Dolly. Hello -> Hello World. : 1.0 
0

두 의견 :

1), 임의의 과정에서 샘플을 생성하기를 특정 여부 선택은 상당히 (> 50 %) 가능성이 높고 덜 복잡하므로 가중치가 적용된 "동전 뒤집기"가 필요합니다 : [0,1]에 임의의 실수를 균일하게 생성하고 동일한 고정 순서로 가능성을 고려하여 합계를 유지하십시오 지금까지 확률의. 합계가 임의로 선택한 숫자를 초과하면 바로 그 선택을 선택하십시오. 선택 사항이 비정규 화 된 경우 (합계가 1이 아님) 확률이 합계가되도록 계산하고 s로 모두 나눗셈하거나 임의의 숫자를 [0, s]로 선택해야합니다.

2) 적은 양의 샘플 교육 데이터 (매개 변수의 수와 비교하여)에서 모델을 추정 할 때 초과 모델을 방지하려면 모델 매개 변수에서 베이지안 사전을 사용하십시오. 모델 매개 변수의 수 (이력 크기)가 미리 유한 번호로 고정되어 있지 않은이 멋진 예제는 Infinite HMM을 참조하십시오.베이지안 방법을 사용하지 않는다면, 보유하고있는 훈련 데이터의 양에 맞게 히스토리 길이를 적절하게 선택하거나, ad-hoc 스무딩 (예 : 2 차와 2 차 사이의 선형 보간) 1 모델).