마르코프 목걸이는 무엇입니까?

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.666666667am을 곱한 목록을 만듭니다.0.333333333 곱하기 do..이제 우리의 행운의 노드를 선택하자!
    우리의 행운의 노드는...do ! 이것은 매우 낮은 기회다.
    문장: I do
  • do 노드에 진입합니다.가능하다, ~할 수 있다,...
    우리는 지금 무엇을 해야 합니까?우리 문장은 여기까지인가요?아니오
    우리 다시 무작위로 노드를 선택하자.
  • 우리의 행운의 노드는...Kevin. !
    문장: I do Kevin.이것은 우리의 세 글자의 문장: I do Kevin..
    우리의 알고리즘은 계속 이렇게 될 것이다.
    만약 우리가 모든 가능한 문장의 수량을 계산하려고 한다면:
    2^len(data)
    
    따라서, 만약 우리의 데이터에 4개의 유일한 단어가 있다면, 계수는2^4 = 16구.그렇습니다!
    읽어주셔서 감사합니다!

    좋은 웹페이지 즐겨찾기