2010-02-19

CRF (Conditional Random Field) 의 한글 설명

링크는 여기를 클릭하시고...

거의 유일한 설명인 듯... 일단 옮겨 보았음.

Conditional Random Fields 에 대한 허접한 설명 한글이 꿈틀

한국어 문장에 조건적 임의 필드(CRF) 적용 ( http://link.egloos.com/2892483 )에 달린 댓글에 대한 답글입니다.

고요한하늘: 저도 요즘 CRF에 대해서 공부를 하고 있는데 개념이 잡히지 않아서요, 혹시 알고 계시면 간단히 설명 부탁드립니다.(HMM과 가장큰 차이점)

일단 저도 CRF에 대해서 아는게 거의 없다는 점을 알아주세요. 저는 전공자도 아니고, 군대에 있는 동안 취미로 관련 책들과 인터넷 논문 몇 편 읽었을 뿐입니다.

CRF는 HMM과 근본적으로 다르지는 않습니다. HMM은 아주 단순히 말하자면 현재 상태에서 다음 상태로 전이 확률과 특징 확률을 곱하는 방식이지요. 아주 거칠게 말해서, CRF는 상태 함수가 여럿으로 구성된 HMM으로 말할 수 있습니다. (물론 이 말을 그대로 믿으면 안됩니다. 단순한 묘사일 뿐입니다.)

HMM 은 워낙 단순한 모델이기 때문에 전이함수 * 상태함수만 생각합니다. 여러 함수들을 섞으려면 곱하기만 하면 0에 가까운 작은 값을 나타내는 함수의 영향이 너무 크고, 더하기만 하면 1에 가까운 큰 값을 나타내는 함수의 영향이 너무 큽니다. 이 문제는 아무리 가중치를 주어도 해결하기 힘듭니다. 그래서 참 많이 고민이 됩니다.
CRF는 여러 특징 함수를 섞는 문제를 해결하는 모델입니다. 전이함수와 특징함수를 가중치를 곱한 채로 몽땅 더해서 지수값을 취한 다음에 정규화를 합니다. 나중에는 특징함수와 전이함수의 구분조차 없애버리더군요. -_-;;; 해당 수식은 http://www.inference.phy.cam.ac.uk/hmw26/papers/crf_intro.pdf 의 4페이지에 모두 나와있습니다. 이게 워낙에 튼튼한 방법이라서, 각 함수가 1~0 사이에서 어떠한 자유로운 결과를 내도 됩니다. 나중에 보정을 하면 되니까요. 이게 잘 이해가 안되면 극단적으로, 대충 함수를 열거하면 알아서 조정해주는 프로그램으로 생각하면 됩니다. 저도 그렇게 생각하고 있습니다 ^^;

특징 함수의 종류에는 '이 단어의 첫 글자가 대문자이면 명사일 확률이 1이다' '앞 단어가 the 이면 명사일 확률이 1이다' 등의 단순한 함수조차도 들어갈 수 있습니다. 물론 더 복잡한 함수들도 얼마든지 들어갈 수 있습니다. 각 특징 함수들은 가중치를 가집니다. 학습 데이터를 통해서 그 최적값을 찾아내야 좋은 결과를 얻을 수 있습니다. 이 학습 과정에 관한 연구도 꽤 있습니다. 물론 이를 자동으로 하는 오픈소스 패키지도 있습니다.

HMM은 매우 단순한 모델링 방법이며, forward-backward와 Viterbi 같은 단순한 해석 알고리즘이 주 해석 방법으로 쓰입니다. CRF도 Viterbi와 같은 해석 알고리즘을 활용할 수 있습니다. 이러한 알고리즘들은 통신에서 잡음 제거를 하는 분야에도 널리 쓰이니, 서로 참고하면 좋습니다.

CRF 를 연쇄로 적용할 수도 있습니다. Higher-order CRF는 임의로 정한 길이만큼 연쇄하는 겁니다. bigram HMM을 한 번 더 묶어서 trigram HMM을 만드는 식이랄까요? 당연히 연쇄를 길게 할 수록 품질은 좋아집니다. 하지만 한 단계를 넘어갈 때마다 지수급수적으로 계산량과 필요한 학습 자료량이 늘어나므로, 5단계 이상은 힘듭니다. 그래서 나온게 semi-CRF입니다. 이건 품질이 좋은 긴 연쇄만 남기고, 나머지는 짧은 연쇄로 인식하는 가변 연쇄 방식입니다. 속도도, 품질도 좋다고 합니다.

뭐, 제가 아는 건 대충 여기까지입니다. 오류투성이일 수 있으니 조심하세요. ^^ 도움이 되었나 모르겠네요.
by 최종욱

No comments:

Post a Comment