AI & BigData/인공지능 이론

인공지능(AI) #1_ 논리적 에이전트, 지식 기반 에이전트, 웜푸스 세계

Tigercow.Door 2017. 11. 2. 22:10


최근 인공지능에 대해서 기본적인 이론과 개념을 공부중에 있습니다.

따라서 공부하면서 내용을 정리해서 포스팅을 진행하려 합니다.

'인공지능:현대적 접근' 이라는 책을 기반으로 학습 중이며 내용 중간중간 있는 사진과 도표 및 수도코드의 출처는 해당 책임을 밝힙니다.

내용에 대한 피드백이나 궁금한 점은 언제든지 댓글을 통해 말씀해주시면 감사하겠습니다.


이번 포스팅에서는 논리적 에이전트와 웜푸스 세계에 대해서 알아보도록 하겠습니다.

그리고 이어지는 내용인 논리와 추론, 명제에 대한 내용은 다음 포스팅에서 정리하고 명제 논리에 대해서는 그 다음에 살펴보도록 하겠습니다..


1. 논리적 에이전트(Logical Agents)


사람은 여러가지의 지식을 가지고 있습니다. 그리고 그러한 지식을 표현(representation)할때 문장(sentence)를 사용합니다. 당연히 그러한 문장은 무의미하지 않습니다. 즉, 인간은 무언가에 대한 반응으로 단순한 반사작용의 메커니즘이 아니라 자신이 가지고 있는 지식의 내부 표현들에 작용하는 추론(reasoning) 공정들로 달성됩니다.

인공지능에서는 지식 기반 에이전트(knowledge-based agent)라는 것은 지능에 대한 위와 같은 접근방식을 포함하는 것을 말합니다.


부분 관찰 가능 환경(partially observable)에서 에이전트가 현재 상태에 관해 아는 것을 표현하는 유일한 방식은, 모든 가능한 구체적 상태들을 단순하게 나열하는 것일 뿐입니다. 커다란 환경에서는, 실제 환경에서는 그러한 표현 방식이 비현실적일 확률이 아주 높습니다.

따라서 '논리적 에이전트'에서는 복잡한 세계의 표현을 형성할 수 있고 추리 공정을 이용해서 세계에 대한 새로운 표현들을 유도할 수 있으며 그러한 새 표현들을 이용해서 다음에 할 일을 연역할 수 있는 에이전트를 설계할 수 있도록 공부합니다.

즉, 논리(logic)를 지식 기반 에이전트가 가능한 표현들의 일반적 부류(class)로 취급하고 그러한 에이전트는 정보를 다양한 목적에 맞게 조합 및 재조합할 수 있게 됩니다.

따라서 이러한 지식 기반 에이전트는 명시적으로 서술된 목표의 형태로 새 과제들을 받을 수 있으며, 환경에 대한 새로운 지식을 제공받거나 스스로 습득하고 환경의 변화에 적응하거나 유관한 지식을 갱신할 수 있습니다.


우선 처음에 '지식 기반 에이전트'에 대한 전반적인 설계를 살펴보고, 간단하지만 새로운 환경인 웜푸스 세계를 소개하고 지식 기반 에이전트의 작동 방식을 기술적인 세부사항 없이 알아보겠습니다. 그리고 다음 포스팅 부터 논리의 일반적인 원리들을 살펴보고 이후 좀 더 구체적인 명제 논리의 원리들을 살펴보겠습니다.


2. 지식 기반 에이전트(Knowledge-based agent)


지식 기반 에이전트의 핵심 구성요소는 기본의 지식 베이스, 지식 기지(knowledge base)라고 불리는 것 입니다.

이러한 지식 기지는 문장들의 집합입니다. (Knowledge base is set of sentences in a formal language)

여기서 '문장'이라는 것은 기술 용어입니다. 영어나 한국어 등의 문장과 관련이 있기는 하지만 같은 것은 아니므로 혼동되지 않도록 천천히 이해하시길 바랍니다.


기본적으로 지식 기지라는 것에 새로운 문장, 즉 새로운 지식을 추가하는 방법과 지식 기지에 있는 문장을 질의하는 방법이 필요합니다. 이때, 새로운 문장을 추가하는 방법을 TELL이라 말하며 지식 기지에 있는 문장을 질의하는 방법을 ASK라고 합니다. 그리고 두 연산의 과정 속에는 추리(inference), 즉 기존의 문장들에서 새로운 문장을 이끌어 내는 공정이 존재합니다.

추리라는 것은 누군가가 ASK 연산을 수행했을때 그에 대한 답이 반드시 과거에 지식 기지에 TELL 연산을 통해 추가된 어떠한 지식(문장)에서 도출되어야 한다는 요구조건을 만족해야 합니다. 다시 말해 추리의 공정이 근거 없이 말을 꾸며내는 것이 되면안된다는 것 입니다.


아래의 사진은 지식 기반 에이전트 프로그램의 기본적인 큰 틀입니다. 해당 에이전트는 지각 하나를 입력받고 동작 하나를 반환합니다. 그리고 에이전트는 지식 기지(KB)를 유지하고 있습니다. 그리고 에이전트는 사전에 자신의 지식 기지에 일정한 배경 지식(background knowledge)를 가지고 있을 수 있습니다.



TELL(KB, MAKE-PERCEPT-SENTENCE(percept, t)) 에서는 주변의 환경을 지각하여(percept) 지식 기지(KB)에 알려주는 TELL연산을 수행합니다. 그리고 지식 기지에 행동(action)을 요청하는 ASK 연산을 수행하고 자신이 선택한 행동을 다시 지식 기지에 알려주는 TELL연산을 수행한 후에 행동을 반환합니다.


위에서 알아본 TELL과 ASK 연산의 정의를 생각해본다면 지식 기반 에이전트는 단순히 특정 동작들을 계산을 통해 도출해내는 프로그램이 아닙니다. 지식 기반 에이전트는 지식 수준(knowledge level)에서의 서술, 정의를 준수합니다. 위에서 언급했듯이 특정한 지식을 통한 근거있는 행동만을 반환하는 것 입니다.

이러한 수준에서 개발자는 에이전트가 현재 알고 있는 것과 에이전트의 목표를 결정해준다면 에이전트의 행동을 바로잡고 예측할 수 있습니다.

예를 들어서 A장소에서 B장소로 가는 것이 목표인 에이전트가 있는데 두 장소를 연결하는 유일한 경로 p라는 것을 에이전트가 알고 있다고 가정하겠습니다. 그렇다면 개발자는 에이전트가 p라는 경로를 통해 움직일 것을 충분히 예상할 수 있습니다. 그것이 에이전트 자신이 목표를 달성하는 유일한 방법임을 자신의 지식 기지에서 도출해 낼 수 있기 때문입니다.


개발자는 에이전트가 알아야 할, 가져야 할 지식을 단순히 TELL연산으로 알려주는 방법으로 하여금 프로그램을 설계할 수 있습니다. 즉 에어전트의 지식 기지가 비어있는 상태에서 에이전트가 주어진 환경에서 적절하게 행동을 반환할 수 있을 때 까지 문장(지식)들을 TELL 연산으로 하나씩 주입할 수 있는 것 입니다. 그리고 이것을 선언적(Declarative) 시스템 구축 접근방식이라고 부릅니다. 또한, 이와 다르게 절차적(procedural) 시스템 구축 접근방식이 존재합니다. 절차적 접근방식은 바람직한 행동을 프로그램 코드에 직접 입력합니다.

그리고 현재에 있어서는 성공적인 에이전트의 설계에 선언적 요소와 절차적 요소가 모두 들어 있는 경우가 많다는 점과 선언적 지식을 좀 더 효율적인 절차적 코드 안에 조합해 넣을 수 있는 경우가 많다는 점이 알려져 있습니다.



3. 웜푸스 세계(Wumpus world)


이번엔 위에서 학습한 내용들을 바탕으로, 지식 기반 에이전트의 가치를 볼 수 있는 웜푸스 세계(Wumpus world)라는 환경을 살펴보겠습니다.



위와 같은 웜푸스 세계에 대해 간략히 설명한다면, 웜푸스 세계는 여러 개의 방이 통로로 연결된 동굴입니다. 동굴 어딘가에는 거대한 괴물인 웜푸스가 존재합니다. 그림을 보면 1열 3행에 존재함을 알 수 있습니다. 웜푸스를 만나면 에이전트는 사망하게 됩니다. 에이전트는 웜푸스를 화살로 쏴서 죽일 수 있지만 화살은 딱 하나만 존재합니다. 그리고 특정 방에는 바닥이 없는 구덩이(pit)이 존재합니다. 구덩이가 존재하는 방에 들어가면 마찬가지로 에이전트가 죽게됩니다. 그리고 금 더미가 놓인 방이 있습니다. 이를 정리해 보면 웜푸스 세계에 존재하는 요소는 웜푸스, 구덩이, 금으로 총 3가지 입니다. 

각각의 요소는 특징을 가지고 있습니다. 그림을 보면 확인 할 수 있듯이 웜푸스가 존재하는 방에 인접한 방은 악취(stench)가 존재하고, 구덩이가 존재하는 방에 인접한 방은 미풍(breeze)이 존재하며, 금이 존재하는 방에는 반짝임(glitter)이 존재합니다.


이러한 환경에 처한 에이전트의 주된 난제는, 초기에 환경의 구성에 대해 전혀 무지하다는 것 입니다. 이러한 무지를 극복하기 위해서는 에이전트에게 추론이 필요합니다. 그럼 에이전트가 웜푸스 세계의 환경을 헤쳐나가는 과정을 확인해보도록 하겠습니다.


먼저, 에이전트의 초기 지식 기지에는 위에서 서술한 환경의 규칙들이 들어있습니다. 먼저 에이전트는 현재 자신이 존재하는 방, (1,1)의 방에 안전함(OK)과 현재 에이전트 자신이 존재하는 곳임을 알리는 A를 기록합니다. 즉, 에이전트 자신은 현재 (1,1)에 존재하며 (1,1)에서는 악취, 미풍 및 반짝임이 존재하지 않습니다. 따라서 (1,1)에는 안전함이 기록되어 있으므로 이러한 지식 기지를 통해 에이전트는 (1,2) 또는 (2,1)의 방이 안전함을 추리할 수 있습니다. 즉 (1,2)와 (2,1)에 안전함을 기록합니다.

에이전트는 오직 안전함이 기록된 곳으로만 이동할 것입니다. 그렇지 않으면 자신이 죽을 수도 있는, 즉 목표를 이루지 못하한다는 것을 알 수 있기 때문입니다. 

이후 에이전트는 (2,1)에서 미풍을 감지하게 됩니다. 따라서 에이전트는 (2,1)에 미풍을 감지했다는 B를 기록합니다. 이로 인해 (2,2)와 (3,1)은 아직 에이전트에게 위험한, 미지의 방입니다. 에이전트가 존재하는 (2,1)의 방에서 이웃한 방은 (1,1), (2,2), (3,1)로 총 세개인데 (1,1)의 방은 안전함이 기록되어 있으므로 (2,2)와 (3,1)의 방에 구덩이가 존재할 수도 있다는 P? 를 기록합니다.

그리고 에이전트는 안전함이 기록되어 있는 또 다른 방 (1,2)로 이동합니다. 그리고 (1,2)에서는 악취를 감지하므로 S를 기록합니다.  또한 같은 방식으로 (1,3)과 (2,2)의 방에 웜푸스가 존재할 수도 있다는 W?를 기록해야 합니다. 하지만 만약 (2,2)에 웜푸스가 존재했다면 (2,1)에서 또한 악취를 감지했어야 합니다. 따라서 웜푸스는 (1,3)에 존재한다는 것을 추리를 통해 알 수 있습니다. 그렇기 때문에 에이전트는 (1,3)에 웜푸스가 존재한다는 W를 기록합니다. 그리고 현재 (2,2)에 구덩이가 존재할 수도 있다는 P? 가 기록되어 있는데 (2,2)에 구덩이가 정말로 존재한다면 (1,2)의 방에서도 미풍을 감지해야 합니다. 하지만 (1,2)의 방에서는 미풍이 감지되지 않으므로 (2,2)에는 구덩이가 존재하지 않음을 알 수 있기에 P? 기록을 지우고 안전함을 기록합니다. 동시에 (3,1)에 구덩이가 존재한다는 P를 기록합니다. 

위와 같은 방식을 통해 에이전트는 (2,3)으로 이동합니다. 해당방에서 에이전트는 반짝임을 감지합니다. 따라서 금을 획득하게 되고 다시 안전함으로 기록되어 있는 방들을 통해 시작지점으로 돌아가게 됩니다.


웜푸스 세계를 통한 에이전트의 행동 및 추리를 보았습니다. 에이전트가 주어진 정보(배경 지식 또는 지식 기지)로 부터 어떠한 결론(행동)을 이끌어 낼 때마다, 만일 주어진 정보가 정확하다면 그 결론 역시 정확함을 보장한다는 것에 주목하시길 바랍니다. 이러한 것은 우리가 처음에 알아 본 것과 같이 추리, 논리적 추론의 근본적인 속성입니다. 




이제 이러한 웜푸스 세계는 잠시 내려두고, 다음 포스팅에서 부터는 논리와 추론, 모델에 대해서 알아 보겠습니다. 논리와 명제 논리에 대해 알아보면서 웜푸스 세계에 대한 내용을 바탕으로 서술되는 부분들이 있으니 꼭 웜푸스 세계에 대한 전체적인 과정을 확인하시길 바랍니다.


728x90