은닉 마르코프 모형

편집 역사 토론
통계 수치해석 소프트웨어 마지막 수정: 2026-07-28 05:37:52

1. 개요[편집]

은닉 마르코프 모형(Hidden Markov Model, HMM)은 직접 볼 수 없는 이산 상태가 마르코프 연쇄를 따라 전이하고, 각 시점의 상태가 확률적으로 관측을 내놓는다고 가정하는 확률 모형이다. 우리가 보는 것은 관측열 O=(o1,,oT)O = (o_1, \ldots, o_T) 뿐이고, 그 뒤에 숨은 상태열 Q=(q1,,qT)Q = (q_1, \ldots, q_T) 은 추론의 대상이다.

모형은 삼중항 λ=(A,B,π)\lambda = (A, B, \pi) 로 완전히 정해진다.

  • 전이행렬 A=[aij]A = [a_{ij}], aij=P(qt+1=jqt=i)a_{ij} = P(q_{t+1} = j \mid q_t = i) — 행 합이 1인 확률행렬.
  • 방출행렬(또는 방출분포) B=[bj(k)]B = [b_j(k)], bj(k)=P(ot=vkqt=j)b_j(k) = P(o_t = v_k \mid q_t = j).
  • 초기분포 πi=P(q1=i)\pi_i = P(q_1 = i).

여기에 두 개의 독립성 가정이 얹힌다. 상태는 1차 마르코프 성질(qt+1q_{t+1}qtq_t 에만 의존)을 만족하고, 관측은 현재 상태가 주어지면 조건부 독립이다. 이 두 가정 덕분에 NTN^T 개의 상태열을 일일이 세는 대신 O(N2T)O(N^2 T) 짜리 동적 계획으로 모든 계산이 끝난다. 즉 HMM의 실용성은 모형의 표현력이 아니라 가정이 만들어준 계산 구조에서 나온다.1

2. 세 가지 기본 문제[편집]

라비너(Rabiner)의 고전적 튜토리얼은 HMM으로 할 수 있는 일을 세 문제로 정리했다.2

문제묻는 것알고리즘복잡도
평가 (evaluation)P(Oλ)P(O \mid \lambda) — 이 모형이 이 관측을 낼 확률전방 알고리즘O(N2T)O(N^2 T)
복호 (decoding)가장 그럴듯한 상태열 argmaxQP(QO,λ)\arg\max_Q P(Q \mid O, \lambda)비터비 알고리즘O(N2T)O(N^2 T)
학습 (learning)argmaxλP(Oλ)\arg\max_\lambda P(O \mid \lambda)바움-웰치 (EM)반복당 O(N2T)O(N^2 T)

평가는 분류에 쓴다. 단어별로 HMM을 하나씩 학습해 두고, 입력 음성에 대해 P(Oλw)P(O \mid \lambda_w) 가 가장 큰 ww 를 고르는 식. 복호는 “어느 구간이 어느 음소였나”, “어느 염기 구간이 유전자였나” 같은 분절(segmentation)에 쓴다. 학습은 레이블 없는 관측열만으로 AA, BB 를 추정하는 비지도 문제다.

3. 전방-후방 알고리즘과 스케일링[편집]

전방 변수를 αt(i)=P(o1,,ot,qt=iλ)\alpha_t(i) = P(o_1, \ldots, o_t,\, q_t = i \mid \lambda) 로 정의하면 다음 재귀가 성립한다.

α1(i)=πibi(o1),αt+1(j)=[i=1Nαt(i)aij]bj(ot+1)\alpha_1(i) = \pi_i b_i(o_1), \qquad \alpha_{t+1}(j) = \left[\sum_{i=1}^{N} \alpha_t(i)\, a_{ij}\right] b_j(o_{t+1})

마지막에 P(Oλ)=iαT(i)P(O \mid \lambda) = \sum_i \alpha_T(i). 대칭적으로 후방 변수 βt(i)=P(ot+1,,oTqt=i,λ)\beta_t(i) = P(o_{t+1}, \ldots, o_T \mid q_t = i, \lambda) 도 뒤에서부터 재귀로 채운다.

βT(i)=1,βt(i)=j=1Naijbj(ot+1)βt+1(j)\beta_T(i) = 1, \qquad \beta_t(i) = \sum_{j=1}^{N} a_{ij}\, b_j(o_{t+1})\, \beta_{t+1}(j)

두 변수를 곱하면 임의 시점의 사후 상태확률이 나온다. γt(i)=P(qt=iO,λ)αt(i)βt(i)\gamma_t(i) = P(q_t = i \mid O, \lambda) \propto \alpha_t(i)\beta_t(i).

여기서 반드시 짚고 넘어가야 할 실무 함정이 스케일링이다. αt\alpha_t 는 확률을 tt 번 곱한 값이라 TT 가 수백만 되면 배정밀도 하한(10308\approx 10^{-308})을 뚫고 0으로 언더플로한다. 관측이 1000프레임짜리 음성 한 문장만 돼도 그냥 죽는다. 해법은 둘 중 하나다.

  • 정규화 스케일링 — 매 시점 ct=1/iαt(i)c_t = 1/\sum_i \alpha_t(i) 로 정규화해 α^t\hat{\alpha}_t 를 들고 다니고, 마지막에 logP(Oλ)=tlogct\log P(O \mid \lambda) = -\sum_t \log c_t 로 복원한다. β\beta 에도 같은 ctc_t 를 곱해두면 바움-웰치의 재추정식에서 스케일 인자가 분자·분모에서 정확히 상쇄돼 보정이 필요 없다.
  • 로그 도메인 계산 — 전부 로그로 두고 합을 logsumexp\operatorname{logsumexp} 로 처리한다. 코드가 단순하고 수치적으로 견고하지만 지수·로그 호출이 붙어 느리다.

부동소수점 연산의 한계를 정면으로 만나는 대표적 사례라, HMM 구현에서 “결과가 전부 NaN”의 8할은 이 지점이다.

4. 바움-웰치 — EM으로 배우기[편집]

상태를 못 보는 채로 AA, BB 를 추정해야 하니 기댓값 최대화 알고리즘(EM)을 쓴다. HMM 버전을 바움-웰치 알고리즘이라 부르며, EM이 이름을 얻기 전에 이미 완성돼 있었다.3

E-단계에서는 현재 파라미터로 전방-후방을 돌려 사후 통계량을 구한다. 상태 점유확률 γt(i)\gamma_t(i) 와 전이 짝 확률

ξt(i,j)=P(qt=i,qt+1=jO,λ)=αt(i)aijbj(ot+1)βt+1(j)P(Oλ)\xi_t(i,j) = P(q_t = i, q_{t+1} = j \mid O, \lambda) = \frac{\alpha_t(i)\, a_{ij}\, b_j(o_{t+1})\, \beta_{t+1}(j)}{P(O\mid\lambda)}

M-단계는 이 기대 카운트로 그냥 비율을 다시 잡는 것이다.

a^ij=t=1T1ξt(i,j)t=1T1γt(i),b^j(k)=t:ot=vkγt(j)t=1Tγt(j)\hat{a}_{ij} = \frac{\sum_{t=1}^{T-1} \xi_t(i,j)}{\sum_{t=1}^{T-1} \gamma_t(i)}, \qquad \hat{b}_j(k) = \frac{\sum_{t:\, o_t = v_k} \gamma_t(j)}{\sum_{t=1}^{T} \gamma_t(j)}

“상태 ii 에서 나간 전이 중 jj 로 간 비율”이라는, 상태를 볼 수 있었다면 최대우도 추정으로 썼을 바로 그 식에 기대 카운트를 꽂은 형태다. EM의 일반 성질에 따라 우도는 반복마다 단조 증가하지만, 도달하는 곳은 지역 최적해다. 초기값과 상태 수 NN 에 결과가 크게 좌우되므로 다중 초기화·k-평균 초기화가 관례이고, NN 은 BIC 같은 정보기준이나 검증 우도로 고른다.4 데이터가 부족하면 관측되지 않은 전이의 확률이 정확히 0으로 박혀 영영 복구되지 않으므로, 평활화(smoothing)나 디리클레 사전분포를 얹는다.

복호 문제는 비터비 알고리즘이 담당한다 — 합 대신 최대, 그리고 역추적 포인터라는 한 끗 차이로 전방 재귀가 최적 경로 탐색이 된다는 것이 요점이고, 자세한 내용은 해당 문서로.

5. 연속 관측과 모형 구조[편집]

관측이 이산 심볼이 아니라 실수 벡터(예: 음성의 MFCC 13차원)이면 방출분포를 가우시안 혼합 모형으로 둔다.

bj(o)=m=1McjmN ⁣(o;μjm,Σjm),mcjm=1b_j(\mathbf{o}) = \sum_{m=1}^{M} c_{jm}\, \mathcal{N}\!\left(\mathbf{o};\, \boldsymbol{\mu}_{jm}, \boldsymbol{\Sigma}_{jm}\right), \qquad \sum_m c_{jm} = 1

이것이 GMM-HMM이며, 2010년대 초까지 음성인식의 표준이었다. 파라미터가 폭증하므로 공분산을 대각행렬로 제한하는 것이 거의 국룰이고, 그 대가로 특징벡터를 미리 주성분 분석류 변환으로 탈상관시켜 둔다. 이후 GMM 자리를 신경망 사후확률로 대체한 DNN-HMM 하이브리드가 성능을 크게 끌어올렸는데, 여기서도 전이 구조와 정렬(alignment)은 여전히 HMM이 담당했다.

구조 측면에서는 전이행렬에 0을 박아 위상을 제약하는 설계가 흔하다. 음성·필기·공정 진행처럼 시간이 되돌아가지 않는 현상에는 aij=0 (j<i)a_{ij} = 0\ (j < i)좌-우(left-to-right) 모형을 쓴다. 자유 파라미터가 줄어 학습이 안정되고, 물리적으로 불가능한 경로를 아예 배제한다.

6. 상태공간 모형 계보에서의 위치[편집]

HMM은 더 큰 가족의 한 구성원이다. 잠재 상태가 마르코프 전이를 하고 관측이 상태에 조건부 독립인 구조를 상태공간 모형이라 부르는데, 상태의 성질에 따라 이름이 갈린다.

잠재 상태전이·관측정확 추론이름
이산 유한임의전방-후방 (합)은닉 마르코프 모형
연속선형 + 가우시안닫힌 형태 재귀칼만 필터
연속비선형 · 비가우시안불가 → 표본 근사입자 필터

세 경우 모두 하는 일은 같다. 예측 단계에서 전이모형으로 사전분포를 밀고, 갱신 단계에서 관측 우도로 베이즈 보정한다. HMM의 전방 재귀에서 합을 적분으로 바꾸고 모든 분포를 가우시안으로 두면 그대로 칼만 필터의 예측-갱신 식이 되고, 전방-후방은 RTS 평활자에 대응한다. 적분이 닫히지 않는 일반 비선형계에서는 분포를 입자 집합으로 근사하는 입자 필터로 간다. 이 계보는 자료동화센서 융합에서 실제로 나란히 쓰인다.

여기에 행동과 보상을 얹으면 부분관측 마르코프 결정 과정이 된다. 즉 POMDP의 추론 엔진 부분이 정확히 HMM이고, 그 위에 최적 정책 문제가 하나 더 올라앉은 구조다.

7. 응용[편집]

  • 음성인식 — 음소마다 3상태 좌-우 HMM을 두고 이어 붙여 단어·문장 모형을 만든다. 프레임 길이 가변성을 상태 자기전이 aiia_{ii} 로 자연스럽게 흡수하는 것이 결정적 장점이었다. 종단간 신경망에 자리를 내준 지금도 강제 정렬(forced alignment) 도구로 현역이다.
  • 생물서열 분석 — 프로파일 HMM(삽입·삭제·매치 상태)으로 단백질 패밀리를 모형화하고, 유전자 예측에서 엑손/인트론 구간을 복호한다. Pfam·HMMER 생태계가 여기서 나왔다.
  • 상태 기반 고장진단 — 회전기계나 공구의 마모를 “정상 → 초기 열화 → 진행 → 고장” 같은 은닉 상태로 두고 진동 신호를 관측으로 삼는다. 좌-우 구조가 열화의 비가역성과 잘 맞아서 잔여수명(RUL) 추정에 쓰인다. 회전체 동역학 모형과 결합하면 물리 기반 특징을 관측으로 넣을 수도 있다.
  • 금융·기후 체제 전환 — 변동성 국면이나 기후 레짐을 은닉 상태로 잡는 체제 전환 모형.

한계도 분명하다. 상태 지속시간이 자기전이 확률에 의해 기하분포로 강제되는데, 이게 실제 현상과 안 맞는 경우가 많다(그래서 명시적 지속시간을 두는 HSMM이 나왔다). 1차 마르코프 가정도 장거리 의존성을 못 잡는다. 그럼에도 HMM이 살아남은 이유는 해석 가능한 상태, 정확한 추론, 적은 데이터로도 도는 학습이라는 조합이 여전히 희소하기 때문이다.

8. 관련 문서[편집]

9. Footnotes[편집]

  1. 반대로 말하면, 이 두 가정이 깨지는 순간 HMM의 매력은 대부분 증발한다. “우리 데이터는 마르코프가 아닌데요?”라는 질문에 대한 정직한 답은 “네, 그런데 그렇게 가정하면 풀리거든요”다. V&V 정신으로는 이 가정 자체를 검증 항목에 올려야 한다.

  2. 라비너의 1989년 Proceedings of the IEEE 튜토리얼은 인용 수만 수만 회인 전설의 문서다. 음성 전공자가 아니어도 HMM을 쓰려면 결국 이 논문을 읽게 되는데, 스케일링을 다룬 절만 제대로 읽어도 밤샘 디버깅 몇 번을 아낀다.

  3. 바움과 동료들이 1960년대 후반에 발표한 이 알고리즘은 뎀스터 등의 EM 논문(1977)보다 10년쯤 빠르다. 특수해가 일반론보다 먼저 나오는 건 응용수학의 흔한 순서다.

  4. 상태 수 NN 을 늘리면 우도는 계속 올라간다. 그래서 “우도가 더 높으니 이 모형이 낫다”는 주장은 상태 수가 같을 때만 유효하다. BIC 페널티 12klogT\frac{1}{2}k\log T 를 빼먹고 상태 30개짜리 모형을 자랑하는 발표를 가끔 본다.