배경

순수한 Bayes의 이론을 실제 적용하는 데 생기는 문제점을 극복하기 위한 방법의 하나로 확신 인자(Certainty Factor, CF)를 이용하는 법에 대해 다룬다. CF는 주어진 증거들로부터 어떤 결론이나 가설을 신뢰할 것인지 아닌지에 대한 정도를 정량화하기 위한 방법으로, 의료용 전문가 시스템인 MYCIN을 개발하는 과정에서 고안되었다.

확신 인자

우선 시스템에서 지식을 표현하기 위해 증거와 결론으로 구성된 법칙(rule)을 사용하고, 각 법칙은 그 분야의 전문가들에 의해 신뢰도(즉, CF)가 주어지는 경우를 생각해 보자. 예를 들자면 내과 의사들은 다음과 같은 법칙에 0.8 정도의 신뢰도를 줄 수 있을 것이다.

if 환절기이고,
  환자가 기침을 하고,
  콧물을 흘리면,
then 환자가 감기에 걸렸다고 추정할 수 있다(with CF=0.8)

실제의 시스템에서는 하나의 결론과 관련된 다수의 법칙들이 존재하게 되므로, 어떤 증거가 입력되어 이와 관련된 법칙이 적용할 때마다 결론의 CF를 적절하게 조정할 필요가 있다. 이러한 목적을 위해 신뢰 척도(Measure of Belief, MB)와 불신 척도(Measure of Disbelief, MD)를 다음과 같이 정의하고, 이로부터 CF를 얻는다.

- MB[c, e] : 주어진 증거 e에 의해 결론 c가 신뢰받을 수 있는 척도. 즉, e가 얼마나 c를 지원할 수 있는지에 대한 정량적 기술
- MD[c, e] : 주어진 증거 e에 의해 결론 c가 부정될 수 있는 척도. 즉, e가 얼마나 c에 반하는 지에 대한 정량적 기술

CF[c, e] = MB[c, e] - MD[c, e]

즉, 어떤 증거 e가 c의 신뢰도를 증가시키게 되면 MB[c, e] > 0이 되고, 오히려 그 반대가 되면 MD[c, e] > 0이 된다. MB와 MD는 0에서 1까지의 값을 가지고 각각에서 1은 절대적인 신뢰와 불신을 의미한다. 물론 하나의 증거가 동시에 양의 MB와 MD를 가질 수는 없다. 다시 말하면 하나의 e에 대해 MB가 양(>0)이면 MD는 0이 되어야 하고, 반대로 MD가 양이면 MB는 0이 되어야 한다. 따라서 CF는 -1에서 +1까지의 범위를 가진다.

하나의 결론에 대해 다수의 증거나 법칙이 존재할 경우 이들 모두를 고려한 누적 확신인자(cumulative certainty factor)는 다음의 식과 같이 표현된다.

CF[c, ec] = MB[c, ef] - MD[c, ea]

단, ec는 결론 c에 관련된 현재까지의 모든 증거
   ef는 결론 c를 신뢰하게(for) 하는 모든 증거
   ea는 결론 c를 불신하게(against) 하는 모든 증거

이상의 식을 적용하기 위해서는 누적 신뢰 척도와 누적 불신 척도를 계산할 수 있어야 한다. 즉, 주어진 증거들에 의해 어떤 가설의 CF가 얻어져 있는 상황에서 새로운 증거가 입력되었을 때, 이 증거는 가설의 불확실성을 줄일 수 있도록 MB나 MD를 증가시키는 방향으로 사용되어야 한다. 새로운 증거가 불확실성을 줄일 수 있으려면 기존의 증거가 밝히지 못한 부분을 부분적이나마 규명할 수 있어야 할 것이며, 이는 새로운 증거가 기존의 증거 외에 추가적으로 기여하는 정도에 의해 가설의 CF가 갱신될 수 있음을 의마한다. 예를 들어 기존의 증거 e1에 대한 신뢰척도 MB[c, e1]과 불신척도 MD[c, e1]이 존재하고, 새로운 증거 e2가 입력되었을 때의 척도들은 다음 식과 같이 계산된다. 여기서 주의할 것은 각 증거들이나 법칙들은 서로 독립이어야 한다는 점이다. “라디오의 소리가 작아졌다는 것”과 “전지의 전압이 떨어졌다”는 사실들은 두 개의 증거라고 생각할 수 없는 것이다.

MB[c, e1&e2] = 0 if MD[c, e1&e2] = 1
             = MB[c, e1] + MB[c, e2](1 - MB[c, e1]) otherwise

MD[c, e1&e2] = 0 if MB[c, e1&e2] = 1
             = MD[c, e1] + MD[c, e2](1- MD[c, e1]) otherwise


예제 1

문제

다음과 같이 ‘환자는 감기에 걸렸다’는 결론과 관련된 다수의 법칙들이 존재한다고 할 때, 결론에 대한 누적 확신 인자를 계산하여라.

  • 법칙 1: 콧물이 계속해서 흐르면 감기에 걸렸을 수 있다(CF=0.5).
  • 법칙 2: 기침으로 고통을 받게 되면 감기에 걸렸을 수 있다(CF=0.3).
  • 법칙 3: 식욕이 왕성하면 감기에 걸렸을 수 있다(CF=-0.2).


풀이

법칙 1에서 콧물은 감기에 걸렸다는 결론을 지원하는 증거가 되므로 다음을 얻는다.

MB = CF = 0.5      MD = 0

법칙 2는 기존의 신뢰 척도를 다음과 같이 갱신한다.

MB = 0.5 + 0.3(1 - 0.5) = 0.65         MD = 0

법칙 3에서는 CF가 음이므로 불신 척도가 다음과 같이 갱신된다.

MB = 0.65          MD = 0.2

따라서 결론에 대한 누적 확신 인자는 다음과 같다.

CF = 0.65 - 0.2 = 0.45


이제 하나의 증거가 다수의 결론에 이르게 되는 경우를 고려해 보자. 예를 들어 ‘기침을 한다’는 증거가 ‘감기’라는 결론과 ‘천식’이라는 결론을 동시에 지원할 수 있는 것이다. 이처럼 하나의 증거가 다수(예를 들어 두 개)의 결론을 지원할 경우 이들의 신뢰 척도와 불신 척도는 다음과 같이 계산 될 수 있다.

MB[c1 and c2, e] = min(MB[c1, e], MB[c2, e])
MD[c1 and c2, e] = min(MD[c1, e], MD[c2, e])

MB[c1 or c2, e] = max(MB[c1, e], MB[c2, e])
MD[c1 or c2, e] = max(MB[c1, e], MB[c2, e])


예제 2

문제

만약 우리가 프로그램을 작성한 후 컴파일할 때까지는 아무런 문제가 없었으나 실행시켜 보았더니 갑자기 컴퓨터의 작동이 중지되면서 모니터 상에서는 이상한 형태의 출력이 나타난 경우를 상상해 보자. 이러한 상황에 대해 다음의 c1에서 c4까지와 같이 여러가지의 결론들이 내려질 수 있는 데, 만약 ‘문제는 소프트웨어에 있으며 바이러스에 감염되었거나 프로그램에 버그가 있어서 검사용 프로그램을 실행시켜 보아야 한다’라는 복합적인 결론이 내려졌다면 이 결론의 신뢰 척도를 구하여 보아라.

  • c1: 검사용 프로그램을 실행해 보아야 한다(CF=0.6).
  • c2: 문제는 소프트웨어에 있다(CF=0.9).
  • c3: 컴퓨터가 바이러스에 감염되었다(CF=0.3).
  • c4: 프로그램에 버그가 있다(CF=0.5).


풀이

MB[c1 and c2 and (c3 or c4), e] = min(MB[c1, e], MB[c2, e], MB[c3 or c4, e])
                                = min(MB[c1, e], MB[c2, e], max(MB[c3, e], MB[c4, e]))
                                = min(0.6, 0.9, max(0.3, 0.5))
                                = 0.5

이제까지 법칙으로 표현된 지식에 적용된 확신 인자에 대해 살펴보았다. 여기서 우리는 확신 인자의 사용이 기본적인 Bayes 정리의 사용과 구별되는 점이 무엇인지 생각해볼 필요가 있다. CF는 임의의 결론에 관련된 각 법칙의 기여도를 의미하며, 이는 어떤 의미에서 조건 확률 P(c|e) 를 뜻하는 것으로이해될 수도 있다. 그러나 P(c|e) 는 결론 c에 관련된 증거가 유일하게 e일 때 사용할 수 있으며 만약 다른 증거들이 존재할 때는 결합 확률이 고려되어야 하므로, CF가 할당된 독립적인 법칙들을 다루는 방법이 보다 간편할 수 있다.