지식과-사고
코드 블록의 Try it Yourself 버튼으로 직접 실행할 수 있다.
구문
학습목표: 인간의 지식을 기계에 프로그래밍하는 방식에 대해 이해한다.
- 논리,사고,지식
- 규칙기반 시스템
- 지식 표현
1. 논리,사고,지식
Info: 💡 논리,사고,지식의 관계에 대해 알아본다.
1.1. 논리, 사고, 지식
사람의 사고과정을 어떻게 로직을 사용해서 표현할 수 있을까에 대해 그동안 사람들은 많은 연구를 했다.
로직을 이용해서 문제를 기술하고, 그 다음 추론의 전제로 기술한 후 논리 규칙을 이용해서 추론을 해서 결론에 도달하는 이런 방법들이 많이 연구 되었다.
Info: 💡 인간의 사고 과정을 어떻게 모사할 것인가?
- 기호 논리 에 의해 세상을 모델링 ↪ 문제와 전제 를 기술
- 논리 규칙을 적용 ↪ 추론 하여 결론 에 도달 그리고 이런 방법을 기계에게 부여했는데 예를 살펴보자.
Info: 💡 논리식은 인간의 지식을 표현하는 언어.
아래는 논리프로그래밍 언어 중 하나인 Prolog 의 문법이다.
인공지능 개발방법은 굉장히 많고 Prolog 는 오래된 방법 중 하나이다.
요즘은 신경망을 활용한 방법을 더 많이 사용하고 있으니 가볍게 읽고 넘어가자
Parent (x, y) → Child(y, x)
Parent (x, y) → Father(x, y) V Mother(x, y)
Father(x, y) → Male(x) ⋀ Adult (x)
Mother(x, y) →** **Female(x) Adult (x)
Father(x, y) ⋀ Father(y, z) → GrandFather(x,z)
논리식은 인간의 지식을 표현하는 중요한 언어이다.
Parent (x, y) → Child(y, x)”x가 y의 부모라면, y는 x의 자식이다.”Parent (x, y) → Father(x, y) V Mother(x, y)부모라는 Parent라는 개념을 우리가 기술한다고 할 때, x가 y라는 사람의 부모라면 아버지일 수도 있고 또는 어머니일 수도 있으므로 논리식으로 이렇게 작성한다. 이 의미는 "x가 y의 부모라면, x는 y의 아버지이거나 어머니이다.” 이다.Father(x, y) → Male(x) ⋀ Adult (x)x가 아버지 일 경우 “x는 남성이며 성인이다” 라는 논리식이다.Mother(x, y) →Female(x) Adult (x)x가 어머니일 경우 “x는 여성이며 성인이다.” 라는 논리식 이다..Father(x, y) ⋀ Father(y, z) → GrandFather(x,z)”x가 y의 아버지이고, y가 z의 아버지라면, x는 z의 할아버지이다.” 라는 논리식 이다.
이런 식으로 우리가 논리 기호라는 것을 정해서 Parent, Father, Mother, Male, Adult 와 같은 심볼을 정의한 후 논리적인 의미나 개념을 가지고 부모님과 같이 우리가 생각해낸 개념들, 혹은 그것 간의 관계들을 기계한테 표현 해줄 수 있다.
1.2. 논리기반 세계 모델링
1.2.1. 논리기반 세계 모델링
만약 A,B,C 의 상자를 로봇에게 명령하여 목표하는 모양으로 만드는 퍼즐을 제작한다고 가정해 봅시다.
- AI는 현실세계의 상황을 또 다른 현실세계의 상황으로 바꿔주는 것을 컴퓨터에게 지시하는 것이다. 현실세계 (real world)아래의 그림과 같은 상태에 놓여 있다.

- 위의 상황을 현실세계2와 같이 3개의 상자를 모두 바닥위에 놓여 있는 상태로 만들어야 할 경우 우리는 로봇, 즉 인공지능, 컴퓨터에게 이것을 이 현실세계에 있는 상자의 형태나 위치, 상자와의 관계 이런 것들을 컴퓨터에게 로직을 통해서 표현할수 있다. 현실 세계 1의 그림과 같은 상태를 로직으로 표현하면 아래와 같다.
A와 B 상자는 인접하여 붙어있을 경우 On 이라는 관계로 정의 한다.
그러면 위의 내용을 정리하면 B상자 위에는 아무것도 없고 clear 이고 A와 B는 붙어있는 On 상태이다. C 상자는 위에 아무것도 없으니까 clear 로 정의한다.
A상자와 C상자는 바닥에 붙어 있는 상태이므로 Floor 라는 개념으로 정의한다. 그러면 B는 Floor 이 아니므로 바닥에 붙어있지 않을 것이다."
현실세계 1 : Clear(B)∧On(B, A)∧Clear(C)∧Floor(A)∧Floor(C)
이것은 1차 술어논리 혹은 술어논리라고 한다. 현실세계1을 로직으로 표현 한다면 이렇게 표현할수 있다.
- 이제 다음 목표인 현실세계2 를 논리식으로 표현해보자.

현실세계 2 : Clear(A)∧Clear(B)∧Clear(C)∧Floor(A)∧Floor(B)∧Floor(C)
- 현실세계 3을 논리식으로 표현하자.

현실세계 3 : Clear(C)∧On(C,A)∧Clear(B)∧Floor(A)∧Floor(B)
1.2.2. 정리
Info: 🚩 기본적인 인공지능의 문제해결은 현실세계의 상황을 로직으로 표현하여 디지털 세계에서 모델링을 하는 문제이다.
간단하게 살펴본 예시의 현실세계 1의 논리식을 조작해서 현실세계 2의 논리식으로 변환하는 과정이 추론이며 그것이 생각하는 과정이 된다. 주어진 문제가 현실세계1 이라면 해당하는 답의 상태가 현실세계2라고 가정 할 경우 1——>2 로 가는 과정을 추론하고 생각하는 과정으로 본다.
1.2.1.기호논리와지식표현
기호논리에는 명제 논리와 술어 논리가 있다.
기호 논리
| 명제논리 (propositional logic) | A_IS_Clear, B_IS_Clear, C_IS_Clear |
| 술어논리(predicate logic) | Clear(A), Clear(x) |
술어 논리
| 상수 (constants) | 객체, 관계, 함수의 이름 | A, B, On, Clear, Floor |
|---|---|---|
| 술어(predicates) | 잠/거짓 값을 갖는 관계 | On(A, B), Clear(B), Floor(A) |
| 연결자(connectives) | ⋀, ⋁, ¬ → | On(A, B) ⋀ Clear(B) |