[인공지능] 추론 기법

* 일치-점화를 통한 추론 엔진 싸이클

 - 일치 : 주어진 규칙과 지식베이스의 사실이 일치하는 가를 파악하는 과정

 - 점화 : 일치된 규칙에서 도출되는 결론을 지식베이스에 추가하는 과정

    

 

 - 추론 엔진은 순방향 연결 추론(forward inference chaining)과 역방향 연결 추론(backward inference chaining)이 있다.

 - 규칙의 IF 부분과 사실과의 일치는 추론 사슬(inference chains)을 생성한다.

  ex) 지식베이스에 A, B, C가 사실이라는 것이 존재.

  rule 1) 

   If Y is true and C is true then Z is true.

  rule 2)

   If B is true then X is true.

  rule 3) 

   If X is true and A is true then Y is true.

  > Inference chains

   

 

* 순방향 연결 추론(forward inference chaining)

 - 데이터 지향 추론

 - 알려진 데이터에서 추론을 시작하여, 순방향으로 진행

 - 한번에 사실에 맞는 규칙 하나만 실행되며, 규칙이 점화되면 그 규칙을 지식 베이스에 추가시킨다.

 - 점화하는데 사용된 규칙은 또 다시 수행되지 않는다.

 - 규칙을 모두 탐색하는 것을 하나의 사이클이라고 한다. 

 - 더 이상 점화할 규칙이 없으면 중단되며, 요청한 사실이 참인지를 탐색한후, 결론을 도출한다.

 

 ex) 지식베이스에 A, B, C가 사실이라는 것이 존재. Z가 사실인지를 탐색.

  rule 1) 

   If Y is true and C is true then Z is true.

  rule 2)

   If B is true then X is true.

  rule 3) 

   If X is true and A is true then Y is true.

  rule 4)

   If A is true and B is true then D is true.

  rule 5)

   If W is true then K is true.

   

 

 

   > 싸이클을 2번 돌고 나면 더이상 점화시킬 규칙이 없다. 지식베이스에 Z가 있는지를 확인. 있으므로 사실로 판정.

 - 단점 : 정해진 목표와 관련 없는 많은 규칙들이 수행될 가능성이 있다. 

            위와 같이 하나의 특정한 사실을 추론하는 것이라면 순방향 연결 추론 기법은 효과적이지 못하다고 할 수 있다.

 

* 역방향 연결 추론(backward inference chaining)

- 목표 지향 추론

 - 목표(가정해)를 정하고, 이를 증명하기 위한 증거를 찾는 방식

 - 규칙의 IF부분을 증명하기 위해 작업 중이던 규칙(사용될 여부가 존재하는 규칙/Then 부분에 목표가 있는 경우)은

   스택(stack)에 쌓아두며, 새로운 목표를 설정한다.

 - 더 이상 목표를 역추론하는데 필요한 새로운 목표가 없다면, Pop을 시키면서 규칙을 점화시킨다. 

 

 ex) 지식베이스에 A, B, C가 사실이라는 것이 존재. Z가 사실인지를 탐색.

  rule 1) 

   If Y is true and C is true then Z is true.

  rule 2)

   If B is true then X is true.

  rule 3) 

   If X is true and A is true then Y is true.

  rule 4)

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

   If A is true and B is true then D is true.

  rule 5)

   If W is true then K is true.

   

   > stack이 모두 Pop 된 후 지식베이스에 Z가 있는지를 확인. 있으므로 사실로 판정.

 - 장점 : short-term memory 사용이 적을 수 있다.

            필요한 rule은 사용하지 않아도 된다.

 - 특정한 사실 하나를 추론하는 경우에는 역방향 연결 추론 기법이 더 효과적

 

* 전문가 시스템에서의 추론 기법

 - 정보를 수집한 후 그 정보로부터 특정해를 추론하는 방법이 많이 사용되는 경우는 순방향 연결 추론 엔진 사용

 - 특정해를 가정한후 이를 증명하기 위해 필요한 사실을 찾으려는 것에서는 역방향 연결 추론 엔진 사용

 - 많은 전문가 시스템은 순방향과 역방향 연결 추론 엔진을 모두 적용하고 있다. 즉, 특별히 어떤 것이 좋다고 할 수는 없다.

 

* 규칙의 충돌 및 충돌 해법

 - 어떠 한 경우에는 IF에 오는 조건이 같은 두가지의 규칙이 있을 수 있다. 이경우 2가지의 규칙은 충돌했다고 한다.

  ex)  rule 1) IF A is true then B is true.

         rule 2) IF A is true then B is false.

         // 이 경우 규칙 1과 규칙 2는 충돌 했다고 할 수 있다.

 - 충돌은 피할 수 없는 경우가 많으며, 이러한 경우에 대비해서 최소한의 규칙만 생성하는 것을 권장한다.

 - 이러한 상황에서 어떤 것을 점화시킬지 정하는 것을 충돌 해법이라고 한다.

  ⓐ 각각의 규칙에 우선순위를 주는방법

   > 이 경우는 규칙에 우선순위를 정함으로써 중요한 순서에 따라 데이터를 처리하게 하는 것이다.

   > 충돌이 되는 경우 우선순위가 높은 것을 점화시킨다.

  ⓑ 최장 일치 전략

   > 이경우는 가장 특수한 규칙을 점화시킨다.

   > 가장 특수한 규칙이란, 조건절에 많은 정보를 닮고 있는 것을 의미한다.

   > 이 경우 한번에 더 많은 정보를 처리 할 것이라는 가정이 깔려 있다.

  ⓒ 가장 최근에 입력된 데이터를 선택하는 방법

   > 각각의 규칙의 사실에 시간테이블을 두어 가장 최근에 입력된 사실을 선택하는 방법이다.

 - 많은 경우 하나의 규칙이 점화 되어 해를 구하면, 더이상 탐색하지 않는 방법을 취하고 있다.

  > 이경우는 구해진 답이 오래되거나 안좋은 해일 수도 있다.

 

* 메타지식

 - 지식에 관한 지식

 - 특정 분야의 지식을 사용하고 제어하는데 필요한 지식으로 일을 처리할 때 효율을 높이는 역할을 한다.

 - 지식베이스의 가장 윗부분에서 사용하여 효율적인 탐색을 유도한다.

 - 메타지식은 추출하기 힘들다.

 

* 규칙기반 전문기 시스템의 장단점

 - 장점

  > 자연스러운 지식표현이 가능하다. 수치 Data가 아니여도 표현이 가능하다.

  > 통일된 구조 : 생성규칙이 단순한 IF -THEN  방식의 통일된 구조를 갖고 있다.

  > 지식과 과정의 분리 : 손쉽게 확장이 가능하다.

  > 불완전하고 불확실한 지식을 다룰 수 있다.

 - 단점 

  > 지식 획득의 병목현상(지식 획득과정이 힘들다)

  > 비효율적인 탐색 전략 : 추론시 오랜 시간이 걸릴 수 있다.

  > 특정 문제에 대해선 해를 구할 수 없을 수도 있다.

  > 학습능력이 없다. 

[출처] https://destiny738.tistory.com/439

 

 

 

 

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
28 [Linux programming][turbo c] The libXbgi Library file 졸리운_곰 2023.02.05 9
27 [unix][linux][compiler] Yacc와 Lex 시작하기 file 졸리운_곰 2021.09.08 11
26 [Visual Studio 2019] Visual Studio로 Linux 원격 개발하기(Ubuntu 설치부터 SSH 서버접속까지) file 졸리운_곰 2021.08.29 8
25 [unix][emacs] 이맥스와 함께하는 개발환경 . emacs 튜토리얼 file 졸리운_곰 2021.08.18 94
24 [Linux][C/C++] cmake 사용법과 활용 file 졸리운_곰 2020.11.08 289
23 [CMake] Linux C/C++ cmake 시작하기 졸리운_곰 2020.11.08 81
22 [C++] CMake Build System file 졸리운_곰 2020.11.08 33
21 Windows 10에 한국어 입출력이 가능한 리눅스 데스크톱 설치하기 file 졸리운_곰 2020.06.29 64
20 wxwidgets 과 codeblock 설치(리눅스) 졸리운_곰 2019.12.25 35
19 ubuntu 18.04.2 LTS 개발환경 세팅 졸리운_곰 2019.12.25 14
18 Ubuntu 16.04 개발환경 세팅하기! 졸리운_곰 2017.03.21 82
17 tcl/tk 자료 secret 졸리운_곰 2017.02.23 0
16 CentOS xrdp 설정 (원격데스크탑) 졸리운_곰 2017.02.01 177
15 Five lightweight Linux desktop worlds for extreme open-sourcers file 졸리운_곰 2016.05.12 76
14 Logging every shell command 졸리운_곰 2016.05.11 187
13 How to keep a detailed audit trail of what’s being done on your Linux systems file 졸리운_곰 2016.05.11 131
12 Docker의 소개와 간단한 사용법 file 졸리운_곰 2015.11.24 299
11 Make Self-Extracting Archives with makeself.sh 졸리운_곰 2015.11.07 99
10 리눅스 간단 배포 Linux simple deploy 제작 : make self file 졸리운_곰 2015.11.07 104
9 Joinc: Linux 커널에서의 디바이스 드라이버 작성 졸리운_곰 2015.06.16 555
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED