TigerCow.Door


안녕하세요.

이번 포스팅부터는 1차 논리(first-order logic)에 대해서 살펴봅니다.


우리는 지난 포스팅에서 명제논리를 사용하여 지식 기반 에이전트가 자신이 속한 세계를 표현하는 방법과 다음에 취할 동작을 연역하는 방법을 살펴보았습니다. 하지만 명제논리는 복잡한 환경에 대한 지식을 간결하게 나타내기에는 표현력이 너무 약합니다. 따라서 우리는 이번 포스팅 부터하여 우리가 가진 상식의 상당 부분을 표현하기에 충분한 표현력을 가진 1차 논리(first-order logic)에 대해서 살펴보겠습니다.


1. 1차 논리(First-order logic)


1차 논리에서는 명제 논리의 장점, 문맥 독립적이고 모호하지 않은 선언적, 조합적 의미론을 기반으로 삼고 자연어의 단점들은 제외하고 표현력이 큰 착안들만 가져왔습니다. 

1차 논리에서는 다음과 같은 것들을 포함합니다.


- 객체(Objects): 사람, 집, 수, 이론, 색, 야구, 전쟁, 세기, ...

- 관계(Relations): 빨갛다. 둥글다, 가짜, 다층, ... / 형제이다, ~보다 크다, ~안에, ~의 일부, ...

- 함수(Functions): ~의 아버지, ~의 절친, ~보다 하나 많다, ~의 시작, ...


1차논리의 언어는 객체들과 관계들을 중심으로 구축됩니다.

명제 논리와 1차 논리의 주된 차이점은 두 언어의 존재론적 함의(ontological commitment)사이에 놓여 있습니다. 즉, 둘은 현실의 본성에 대해 무엇을 가정하는지와 관련해서 크게 다릅니다.

명제 논리에서는 어떤 세계에서 성립하거나 성립하지 않는(그러나 둘 다는 아닌) 사실들이 존재합니다.

하지만 1차 논리는 더 많은 것을 가정합니다. 구체적으로, 1차 논리는 객체들로 세상이 구성되며 그 객체들 사이에는 성립하거나 성립하지 않는 관계들이 있습니다.


논리들을 인식론적 함의(epistemological)로써도 바라볼 수 있습니다.

이는 각 사실에 관해 허용되는 가능한 지식 상태가 얼마나 많은지에 관련된 것입니다. 명제논리와 1차 논리에서는 하나의 문장이 하나의 사실을 표현하며, 에이전트는 그 문장이 참이라고 믿거나 아니면 거짓이라고 믿거나 아니면 아무런 의견이 없습니다.


아래 표는 다섯가지 논리의 존재론적 함의와 인신론적 함의를 정리한 것입니다.




2. 기호와 해석


1차 논리의 기본적인 구문 요소는 객체와 관계, 함수를 나타내는 기호들 입니다. 따라서 기호들은 총 세가지로 나뉘게 됩니다.

- 객체를 나타내는 상수 기호(Constant symbol)

- 관계를 나타내는 술어 기호(Predicate symbol)

- 함수를 나타내는 함수 기호(Function symbol)



3. 항(Term)


항(term)이란 하나의 객체를 지칭하는 논리식입니다. 따라서 상수 기호는 항입니다.

예를 들어, LeftLeg(John)이라는 것이 있을 때 John을 하나의 항이라고 합니다.

특별히 위의 예시와 같은 경우는 복합항이라고 하는데, 하나의 함수 기호와 그 함수 기호에 대한 인수로서의 항들을 감싼 괄호쌍으로 구성됩니다. 복합항또한 하나의 이름일 뿐임을 기억해야 합니다.



4. 원자적 문장(Atomic sentences)


객체들을 지칭하는 항들과 관계들을 지칭하는 술어 기호들이 갖추어졌다면, 그 둘을 조합해서 원자적 문장(atomic sentences)를 만들 수 있습니다. 원자적 문장은 술어 기호가 반드시 하나 있어야 하며, 그 뒤에 괄호로 감싼 항들이 올 수도 있는 형태입니다. 원자적 문장의 인수가 복합항일수도 있습니다.


주어진 모형 안에서, 원자적 문장의 술어 기호가 지칭하는 관계가 그 인수들이 지칭하는 객체들 사이에서 성립하면 그 원자적 문장은 참입니다.


그리고 이러한 원자적 문장들을 논리 접속사들을 이용하여 좀 더 복합적인 문장을 만들 수 있습니다. 그리고 그러한 문장을 복합문장(complex sentences)이라고 합니다.



5. 전칭 한정사(Universal quantification)


어떤 논리가 객체들을 지원할 때, 객체들이 가진 속성을 그 객체들의 이름으로 일일이 열거하지 않고 간결하게 표현하는 용도로 한정사가 사용됩니다. 한정사에서는 크게 전칭 한정사(Universal quantification)과 존재(existential) 한정사가 존재합니다. 먼저 전칭 한정사에 대해서 살펴보겠습니다.


먼저 하나의 예시를 들어보겠습니다. 다음의 문장은, '모든 왕은 사람이다'를 의미합니다.


편의를 위해 전칭 한정사를 A로 표현하겠습니다.(원 표기는 위 문장의 표기가 맞습니다.)

보통의 경우 A는 "모든 ~에 대해"라고 읽습니다. 따라서 위의 문장은, "모든 x에 대해, 만일 x가 왕이면 x는 사람이다."라는 뜻입니다.

전칭 한정사의 경우 논리곱을 사용하는 데에 있어서 주의를 기울여야 합니다.

예를 들어, 책을 보는 사람은 모두 똑똑하다를 나타내면,

Ax readBook(x) => smart(x)

입니다. 하지만, 

Ax readBook(x) ∧ smart(x)

와 같이 나타내면, 우리가 의도했던 바와 달리, 세상에 존재하는 모든 것이 smart 하게 됩니다.

다시말해, 아래의 문장은, 모든 사람은 책을 읽고 모든 사람은 똑똑하다라는 의미를 나타냅니다.



6. 존재 한정사(Existential quantification)


전칭 한정은 모든 객체에 대한 주장을 표현합니다. 이와 달리 존재 한정은 일부 객체들에 대한 주장을 표현합니다.

예들 들어 다음과 같이 사용됩니다.


편의를 위해 존재 한정사를 E로 표현하겠습니다.(원 표기는 위 문장의 표기가 맞습니다.)

보통 Ex는 "~를 만족하는 x가 존재한다.'로 읽거나 "어떤 x에 대해 ~" 라고 읽습니다.

직관적으로 말해, Ex P 라는 문장은 P가 적어도 하나 이상의 x에 대해 참임을 말합니다.

존재 한정사에서도 주의할 점이 있습니다.

예를 들어, 책을 읽고, 똑똑한 누군가가 존재한다를 나타내면,

Ex readBook(x) ∧ smart(x)

입니다. 하지만,

Ex readBook(x) => smart(x)

와 같이 나타내면, 책을 읽는 누군가가 한명이라도 존재하면 문장이 참이 됩니다.



7. 한정사의 중첩


한정사를 중첩하여 사용할 때는 그 의미를 위해 주의를 기울여야 합니다.

Ax Ey Loves(x,y)

는 모든 사람은 누군가를 사랑한다라는 의미이지만,

Ex Ay Loves(x,y)

는 모두가 사랑하는 사람이 있다라는 의미이기 때문입니다.


따라서 한정사에 있어서는 교환법칙이 성립되지 않습니다.



이후 내용에 대해서는 다음 포스팅부터 진행하도록 하겠습니다.

블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc

댓글을 달아 주세요

  • ddd 2019.10.15 00:34  댓글주소  수정/삭제  댓글쓰기

    글 쓴지 오래되셔서 보실지는 모르겠지만...
    존재 한정사 예제중에
    Ex readBook(x) => smart(x)
    위의 예제에서 책을 읽는 사람이 한명이라도 존재하면 이 문장이 참이된다고 하셨는데
    왜 그렇게 되는지 궁금해요!
    '=>'는 가정이 참이어도 결론이 거짓이면 해당 명제가 거짓이 되는 게 아닌가요?
    아니면 혹시 서술논리는 명제논리랑 다른 방식으로 생각해야하는 걸까요...

    • Favicon of https://doorbw.tistory.com BlogIcon Tigercow.Door 2019.10.18 11:09 신고  댓글주소  수정/삭제

      답변이 늦어서 죄송합니다! 저도 꽤 시간이 지나서 확실치는 않지만 말씀하신 내용이 맞고 제가 잘못 기술한것 같습니다. 주말중에 한번 더 확인해보겠습니다!