CRF(Conditional Random Field; 조건부 랜덤 필드)

김동준·2025년 9월 23일

LLM

목록 보기
25/50

CRF(Conditional Random Field; 조건부 랜덤 필드)


CRF란?

CRF는 "연속된 데이터를 순서대로 분류할 때" 사용하는 머신러닝 모델이다. 예를 들어, 문장 속 단어들이 각각 어떤 품사인지, 혹은 사람 이름인지 아닌지 구분하려고 할 때 쓰인다.


간단한 예시: 문장 속 사람 이름 찾기

“Donald J Trump is the President.”

  • 여기에 있는 단어들을 하나씩 보며 각각이 사람 이름인지 아닌지 표시해야 한다.
  • 예를 들어, 단어 “Donald”, “J”, “Trump”는 사람 이름 → 표시: B-PER(문장 시작), I-PER(이어서), I-PER
  • “is”, “the”, “President”는 사람 이름 아님 → 표시: O

문제점과 CRF의 도움

  • 단어 하나씩 따로 판단하면 실수가 많다. 예를 들어, 바로 앞 단어가 사람 이름이라면 다음 단어도 사람이름일 가능성이 크다.
  • 그래서 CRF는 도와준다. 단어 하나하나를 단독으로 판단하지 않고, 문장 전체 단어들의 관계를 함께 고려해서 더 정확하게 판단한다.

CRF가 사용하는 규칙 예

  • 문장 시작에서 바로 “I-PER” (이름의 중간)을 쓰면 안 된다.
  • "O" (사람 이름 아님) 다음에 갑자기 "I-PER"가 나오면 안 된다.
  • "B-PER" 다음에는 일관되게 "I-PER"가 와야 한다.

CRF는 이런 규칙들을 학습해 적용함으로써, “Donald J Trump” 전체를 하나의 이름 그룹으로 인식한다.


요약

  • CRF는 단어들의 나열(시퀀스) 문제에서 각 단어에 올바른 태그를 붙일 때 문맥과 주변 정보를 고려해 최적의 전체 태그 조합을 찾는 모델이다.
  • 자연어 처리에서 많이 쓰이며, 품사 태깅, 개체명 인식 등에 자주 활용된다.
  • 단어 하나하나가 아니라, 이웃 단어들과의 관계를 함께 고려해 더 정확한 예측을 돕는다.

이해를 도울 간단한 비유로는, CRF가 퍼즐 맞추기처럼 문장 속 단어들의 관계를 조합해 가장 잘 맞는 전체 답안을 찾는 과정이라고 할 수 있다.

이 설명은 자연어 처리 교양수업에서 전반적 이해에 적합한 수준이며, CRF는 기본적인 시퀀스 라벨링 문제를 해결하는 강력한 도구라는 점을 알 수 있다[1][2][8].

출처
[1] Conditional Random Fields 설명 | PYY0715's Research Blog ... http://pyy0715.github.io/CRF/
[2] CRFs: conditional random fields (조건부 랜덤 필드) https://wikidocs.net/128394
[3] Conditional Random Fields - ratsgo's blog https://ratsgo.github.io/machine%20learning/2017/11/10/CRF/
[4][개념정리]Fully Connected CRFs란? https://jaylala.tistory.com/entry/%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%ACFully-Connected-CRFs%EB%9E%80
[5][자연어처리] 파이썬으로 CRF를 이용한 품사 태깅 구현하기 https://tobelinuxer.tistory.com/91
[6] 12-06 BiLSTM-CRF를 이용한 개체명 인식 https://wikidocs.net/147234
[7] 조건부 난수 필드 - 위키피디아 https://translate.google.com/translate?u=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FConditional_random_field&hl=ko&sl=en&tl=ko&client=srp
[8] CRF를 이용한 Named Entity Recognition - jjw - 티스토리 https://jjdeeplearning.tistory.com/18

profile
Story Engineer

0개의 댓글