NB를 기반으로 한 Sequential Learning이다(따라서 train이라는 개념이 없다). → Unsupervised, Supervised랑 다른 개념으로 생각하자! 애매하다!
[NER]
What
Sequential Learning의 문제들 중 하나이다.
entity의 name을 인식하는 문제이다.

밑과 같이 feature를 추출해서 label을 매긴다.


feature만 가지고 하면 틀린게 존재할 수도 있다. 예를 들어 지원은 사람 이름일 수도, 동사일 수도 있다. 그래서 각 단어 간의 dependency를 고려해서 모델을 설계해 주기도 한다. 이가 HMM이다.
[MM]
First Order Markov Model
날씨로 예제를 들어서 설명해 볼 것이다.
First order markov 모델에서는 ‘전 날’의 날씨 만을 신경 쓴다.
P(x1)을 곱해준 이유는 첫째 날의 날씨를 default로 해준 것이다. 수식은 밑의 예제를 통해서 더 잘 이해해 볼 수 있다.

Example
다음과 같은 table이 주어졌다고 가정해 보자.

이 때, 첫째 날이 S일 때 다음 7일이 SSRRSCS일 확률을 구해보자.
Solution of First order markov model
우리는 다음과 같이 구할 수 있다.

만약 first order 모델을 바탕으로 next three day를 예측하면 어떻게 될까?
3^3개의 확률이 나오게 된다.. 계산량이 복잡해 진다는 단점이 있다.. 이를 다이나믹 프로그래밍으로 해결하기도 한다..

Second Order Markov Model
First order일 때와 비슷하다. 단 이 때는 전전 날, 전 날 모두 default로 가지고 있어야 한다.

[HMM]
HMM
Observation만 남기고, 나머지를 숨기는 모델이다. (= 그냥 관찰을 이용해서 state 구하는 모델이라고 이해하는 것이 더 편하다)
Markov에서 뽑은 observation만 활용한다.
ex. 비가 오면

예를 들어서 이렇게 생각해 보자!
MM에서는 SCSSC.. 이렇게 state 시퀀스가 주어졌을 때 다음 state의 확률을 구했다면,
HMM에서는

이런식으로 각 state에 대한 ‘관찰’이 주어졌을 때 다음 state의 확률을 구하는 것이다.
우리는 먼저 State(숨겨진 것)를 구해야 한다. 위에서는 State가 주어지면 그 확률을 구해 보았다. 여기서는 State가 주어지지 않는다. 우리가 DB를 바탕으로 State를 정의하고, 이를 바탕으로 확률을 구해야 한다.
우리는
- Estimate transition: State이동할 확률
- Emission Probability: State일 때 Observe할 확률
을 정의해야 한다.

우리가 정의한 것들을 바탕으로 최종적으로 이런 걸 구하고(state만들고, 확률 mapping하는 것), 이를 바탕으로 밑과 같은 확률을 구한다. (이거 만드는 것이 train 과정이다)
(AACA일 때 1244가 될 확률 예시)

Viterbi Algorithm
비터비 알고리즘을 활용하면 순차적으로 확률을 매겨줄 수 있다. → sequence 결정
다음과 같이 sequence를 결정할 수 있다.


Forward-Backward Algorithm
이 알고리즘을 이용하면 앞의 데이터와 뒤의 데이터를 참고해서 중간 데이터의 state를 결정해 줄 수 있다. →label state 결정
다음과 같이 Sequence를 결정해 줄 수 있다.
Forward, Backward하고 최대값을 Pick한다. (주의: 비터비 알고리즘에서는 가장 높은 걸 Pick 했지만, 여기서는 합한 값을 노드에 넣어준다. 무슨 말인지는 밑 예시를 통해서 이해해 보자)
- Forward


- Backward

- Pick

Baum-Welch Algorithm
Unspervised로 HMM을 푸는 방법이다.
마찬가지로 Random으로 정의 → 모델 업데이트 → 정의 → .. 의 EM 알고리즘을 통해서 문제를 해결한다.