마르코프 목걸이는 무엇입니까?
12092 단어 algorithmsbeginners
마르코프 체인은 가능한 사건의 랜덤 프로세스 (랜덤 프로세스) 이다.
그래서 만약 당신이 정보나 데이터를 제공한다면 사건의 변화를 바꿀 수 있다.
이제 어떻게 작동하는지 봅시다.
예를 들어, 다음과 같은 세 가지 입력이 있습니다.
우리 는 한 걸음 한 걸음 알고리즘 의 작용 을 배웁시다
건축 사슬
["I", "am", "Sam."]
["I", "am", "Kevin."]
["I", "do"]
우리는 모든 표기된 문장을 교체해야 한다.
교체 목록을 나열합니다.
[["I", "am", "Sam."], ["I", "am", "Kevin."], ["I", "do"]]
이 목록에서 교체될 때, 우리는 우리의 체인을 만들어야 한다.
"I"
{
"I": {
}
}
보시다시피 "I"
만이 문장을 생성합니다.그래서 너는
"I I I I I I"
이라는 출력만 얻을 수 있어!"am"
{
"I": {
"am": 1
},
"am": {
}
}
"am"
개의 단어가 "I"
개의 뒤에 있기 때문에 우리는 그것을 추가했다"I"
노드에서1이 1 / 1
으로 변했다.있다"I"
개의 단어 이후에 한 가지 가능성만 나타날 수 있다.우리"am"
이외에 가능한 단어를 위한 또 다른 "I"
만들기이것은
"am"
이후에 발생할 수 있다."Sam."
{
"I": {
"am": 1
},
"am": {
"Sam.": 1
},
"Sam.": {
}
}
"Sam."
을 "am"
에 추가합니다. "am"
이후이기 때문입니다.우리는
"am"
이외에 가능한 단어를 위해 다른 노드를 만들었다이것은
"Sam."
이후에 발생할 수 있다.간단히 말하면, 우리는 이전의
"am"
과 같은 일을 했다.우리의 문장은 이미 끝났으니 다른 문장을 계속해라.
"I"
우리는 어떤 일도 할 필요가 없다. 왜냐하면 "I"
은 이미 존재하기 때문이다.그것은 어떤 노드에도 없다.
"am"
두 번째 문장, 첫 번째 단어의 과정은 같다."Kevin.
{
"I": {
"am": 1
},
"am": {
"Sam.": 0.5,
"Kevin.": 0.5
},
"Sam.": {
},
"Kevin.": {
}
}
"am"
노드에 추가했지만 값은 0.5
입니다.왜?... 때문에두 가지 가능한 단어가 있는데,
"Sam"
과 "Kevin."
이다.따라서 이 값은
1 / 2 = 0.5
이어야 한다.노드를 만들었습니다."am"
이외에, 우리가 모든 새로운 노드를 위해 한 것처럼."I"
아무것도 없다그 어떠한 노드에도 존재하지 않기 때문이다."do"
{
"I": {
"am": 0.666666667,
"do": 0.333333333
},
"am": {
"Sam.": 0.5,
"Kevin.": 0.5
},
"Sam.": {
},
"Kevin.": {
},
"do": {
}
}
현재 왜 "am"
이 0.666666667
과 "do"
0.333333333
으로 바뀌었습니까?간단한 계산을 합시다.지금, 두 가지 가능한 단어가 있다
"I"
, "am"
, "do"
이후.따라서 값은 0.5
에서 0.5
이어야 한다.하지만
"am"
노드 뒤에 단어가 있을 수 있다.계수가 2니까"am"
의 값은 1 - (1 / (1 + 2))
이어야 한다.하지만 "do"
은 그렇습니다.아니오, 그래서 금액을 바꾸지 않을 거예요.그래서 만약에
"am"
의 금액이...1 - (1 / (1 + 2)) = 0.666666667
, "do"
은1 - 0.666666667 = 0.333333333
.문장 만들기
만약 우리가 지금 세 단어의 문장을 만들어야 한다고 가정하자.
그래서 우리는 3개의 랜덤 단어를 선택할 것이다. 그러나 그것들은
어떤 말로 올 수 있겠는가!우리 시작합시다!
우리가 작성한 데이터는 다음과 같습니다.
{
"I": {
"am": 0.666666667,
"do": 0.333333333
},
"am": {
"Sam.": 0.5,
"Kevin.": 0.5
},
"Sam.": {
},
"Kevin.": {
}
}
단계는 다음과 같습니다.응, 우리의 행운의 노드는...
I
! I
I
노드에 진입합니다.가능한 문자는 다음과 같습니다.am
do
0.666666667
에 am
을 곱한 목록을 만듭니다.0.333333333
곱하기 do.
.이제 우리의 행운의 노드를 선택하자!우리의 행운의 노드는...
do
! 이것은 매우 낮은 기회다.문장:
I do
do
노드에 진입합니다.가능하다, ~할 수 있다,...우리는 지금 무엇을 해야 합니까?우리 문장은 여기까지인가요?아니오
우리 다시 무작위로 노드를 선택하자.
Kevin.
!문장:
I do Kevin.
이것은 우리의 세 글자의 문장: I do Kevin.
.우리의 알고리즘은 계속 이렇게 될 것이다.
만약 우리가 모든 가능한 문장의 수량을 계산하려고 한다면:
2^len(data)
따라서, 만약 우리의 데이터에 4
개의 유일한 단어가 있다면, 계수는2^4 = 16
구.그렇습니다!읽어주셔서 감사합니다!
Reference
이 문제에 관하여(마르코프 목걸이는 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/lyfolos/what-is-markov-chain-16o6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)