생각하는 지능

본 토픽은 현재 준비중입니다. 공동공부에 참여하시면 완성 되었을 때 알려드립니다.

지능적 에이전트

이제 본격적인 인공지능의 이론에 대해서 설명드리겠습니다.
현재 초안 작성 중이므로 좀 편하게 적었습니다.
불편하시더라도 작성이 완료되기 전까지는 그냥 읽어주세요.

사고의 작동과정

사람이 어느 환경 또는 상황을 이해한다는 것은 그리 어려운 일이 아니다.

어떠한 방식으로 작동하는지 알 수 없지만 분명한 것은 이해가 가능하다는 것이다.

간단하게 한번 생각해보자.

어떠한 행동할 하기 위해서 그 전에 무슨 과정이 있어야 하는지 생각해보는 것이다.

실제 인지하지 못하지만 '이럴 것이다'라고 가정해보는 것이다.

상황은 단순하다. 그냥 목이 마른 상황이다. 앞에 컵과 물통이 놓여있다.

(1)목이 마르다는 생각에 따라서 갈증을 해소해야겠다는 욕구가 생긴다.

(2)갈증을 해소하기 위해서 물을 마셔야겠다는 생각을 한다.

(3)물이 어디에 있는지 알고 싶다.

(4)어떻게 마시는지 알고 싶다.

(5)컵에 물을 어떻게 따르는지 알고 싶다.

갈증을 해소하기 위해서 물을 마셔야겠다는 생각을 한 이후 무수히 많은 생각을 해야 한다.

그래서 물을 마시는 과정을 한번 경험해봤다고 가정하자.

(1)목이 마르다는 생각에 따라서 갈증을 해소해야겠다는 욕구가 생긴다.

(2)과거 컵에 물을 따라서 물을 마신 경험이 있다.

(3)물과 컵을 찾아야겠다.

(4)주변을 살펴본다.

(5)물과 컵을 찾았다.

(6)물과 컵을 양손에 집는다

(7)컵을 위치시키고 물을 따른다.

(8)넘치지 않아야 한다는 것을 인지하므로 2/3만 따른다.

(9)컵을 깨지지 않을 만큼의 힘으로 잡아 든다.

사람이 하는 행동을 구분동작으로 설명했다.

사람이라면 아주 자연스럽게 행동할 모든 것들을 하나하나 알려주고 지켜봐야 한다.

이렇게 해서라도 물을 마실수 있게 해주면 되는거 아니냐라고 질문할 사람을 별로 없을 것이다.

소위 인공지능이라고 불릴만한 그 무엇인가는 저렇게 하나하나 알려줘서 작동하는게 아닐거라 생각하지 않을까.

여기서 주목해야 할 것은 행동이 아니라 매 과정마다 어떻게 행동해야 하는지를 판단하는 과정에 있다.

이 판단 과정이 중요한 것이다.

* 프로그램을 만든다는 의미가 (1)에서 (9)까지의 과정을 하나하나 지시하는 것을 의미한다. *

문제와 행동

이렇게 하나하나 알려주다보면 그냥 사람이 하는게 더 나을것 같다는 생각이 든다.

당연히 이 문제를 해결하기 위해서 다양한 시도를 해보게 되는데 그 중에 하나가 문제와 행동으로 구분해서 생각하는 것이다.

'문제'는 다양한 방법을 통해서 답을 위해서 풀어나가는 것이다.

'행동'은 '문제'에 대한 답을 활용하여 수행하는 것을 이야기한다.

문제와 행동의 관계는 이렇게 생각하면 된다.

문제 : 컵 안에 있는 물이 바닥에 쏟아졌다.

해결 : 바닥에 쏟아진 물을 닦는다.

자, 이 상황을 에이전트의 입장에서는 '환경'이라고 생각한다고 하자.

에이전트가 물이 쏟아졌다는 것을 인지하고, 다른 것도 아니고 물이 쏟아졌다는 사실에 대해서 집중하고 있는 것이다.

환경이라고 말하는 것은 다르게 말하면 하나의 환경에서 어떤 부분에 집중을 할 것인가의 문제다.

물이 쏟아졌어도 그 사실에 집중하지 않으면 환경을 잘 이해하지 못한 것이다.

아이가 우물안으로 들어가려고 하는 환경에서 무엇에 집중해야 하는지 인식하는 것이다.

사람은 아이가 우물로 떨어지면 위험하다는 환경을 바로 인식한다.

궁극적으로 에이전트도 사람처럼 어떤 부분에 집중할지 스스로 판단해야 할 것이다.

그 다음은 어떻게 해야 가장 올바른 행동인가에 대한 것은 '성과측정'이라고 하자.

에이전트가 아이를 우물로부터 데리고 오면 좋은 행동이고 아이를 밀어서 떨어뜨리거나 모른체하면 나쁜 행동인것이다.

에이전트가 인식한 환경에서 무엇이 가장 올바른 행동인가를 측정하는 것을 말한다.

인공지능은 어떤 행동이 가장 올바른 행동인지 스스로 판단하는 것이다.

//나중에 보겠지만 문제에 대한 답이 여러가지가 나온다.

하나만 나오면 좋겠지만 그렇지 않다.

너무나도 다양한 문제들이기 때문에 그 상황에서 가능한 답도 여러가지이다.

이때 에이전트는 어떤 답을 선택할지에 대한 문제가 있다.

에이전트가 아이를 데리고 오면 납치 아닌가.

과장되었다고 표현할 수 있지만 보는 입장에 따라서 에이전트의 의도가 어찌되었든 납치라고 볼 가능성도 있다.

그래서 이 문제를 다룰때는 아주 심오한 철학을 끌어들일 수 밖에 없다.//

그리고 이러한 환경을 어떻게 알았을까를 생각해보자.

이미지로 봤다면 카메라를 통해서 봤고, 소리를 들었다면 녹음기로 들었을 것이다.

이렇게 환경에 관한 정보를 수집하는 것을 '감지기'라고 하자.

마지막으로는 실제 에이전트가 아이를 데리고 오는 행동을 할때 다리와 손을 '작동기'라고 하자.

종합하면 이렇다.

어떤 환경에서 무엇에 집중을 하고 무엇이 특징임을 알아차리고,

가장 올바른 행동을 유도하기 위해 성과측정을 하고,

환경에 대한 정보를 위해 감지기를 사용하고,

실제 행동하기 위해서 작동기를 사용하는 것이다.

(환경), (성과측정), (감지기), (작동기)

에이전트가 가져야 하는 기본적인 사항이라고 생각하면 된다.

이러한 기본을 바탕으로 나중에 나올 아주 다양한 환경을 해결하기 위한 아주 다양한 방법을 설명할 것이다.

아무리 다양해도 위 4가지의 기본적인 사항에 대해서는 기본적으로 가지고 있는 것이라고 생각하면 된다.

지금은 문제에 초점을 맞추고 있다.

행동하는 것은 나중에 보고 지금은 먼저 문제에 집중할 것이다.

문제의 다양성

해결해야 하는 문제의 형태가 다양하다는 사실을 간단하게 알아보자.

아주 기초적인 미로를 탈출하는 간단한 문제가 있다.

그리고 택시 기사가 목적지까지 운전하는 문제가 있다.

무엇이 해결하기 힘들겠는가.

누가봐도 운전이 힘들거라고 생각한다.

그냥 생각해도 문제를 해결해야하는 방식이 다를 것 같다는 생각이 든다.

문제라는 것이 특정 상황에 국한되지 않고 수많은 형태로 이루어져 있기 때문에 그 해결 방법 또한 다양하다.

그래서 문제의 다양성에 대한 이해가 필요하다는 것이다.

계속 변하는 문제

그러면 문제라는 것이 어떻게 다양한지 보자.

아래 나오는 6가지 질문은 하나의 문제를 어떤 형태의 문제인지 구분할 수 있는 질문들이다.

많은 사람들이 오랜기간 동안 논의하고 고민한 결과가 아래의 6가지로 문제를 구분하는 것이 좋다고 판단한 것이다.

(1) 환경을 전부 관찰 가능한가

(2) 에이전트가 하나인가 둘인가

(3) 환경이 결정된 것인가 확률적인 것인가

(4) 순차적으로 발생하는가 일시적인 것인가

(5) 정적인가 동적인가

(6) 이산적인가 연속적인가

사실 이렇게 적어놓으면 답답함이 밀려온다.

심지어는 6가지를 조합하면 경우의 수가 어마하게 증가한다.

조합해보면 전체 환경을 관찰 가능하면서 에이전트가 둘이며 동적인 상황도 있다. 그리고 다른 조합도 있다.

이미 머리속은 복잡해지고 전부 다 이해하고 싶지 않다는 생각을 하는 사람들을 위해 이번에도 후려쳐서 설명하려고 한다.

택시 주행을 예로 들어보자.

택시 운전을 하는 동안 빌딩에 창문이 열려있는 것까지 관찰할 필요는 없다.

성과측정에 아무런 도움이 되지 않기 때문이다.

그 순간의 환경에서 수집할 수 있는 정보를 전부 수집하게 되면 에이전트는 마비가 올것이다.

여기서 더 중요한 개념은 그 순간에는 오토바이가 없지만 나중에 나타날 수 있다는 것이다.

전체를 관찰한다는 것은 마치 미래를 내다 보는 것과 같은 것이다.

나중에 어떤 상황이 전개될지 예측 불가능하다면 부분적으로 관찰하는 것이라고 생각하면 된다.

(그에 반해서 체스게임은 모든 것을 관찰 가능한 환경이다.)

그래서 (1)은 부분적으로 관찰 가능한 것이다.

그럼 이 행위를 하는 에이전트는 택시 기사 한명뿐이니 에이전트는 하나로 본다.

(체스게임은 둘이서 게임을 진행하니까 다중 에이전트가 되는 것이다.)

(2)는 단일 에이전트다.

운전을 하는 동안 변화하는 환경은 택시 운전사가 예측 가능하거나 원하는 환경이 아니다.

확률적으로 발생하는 것이라고 보는 게 맞는 것이다.

(3)은 확률적이다.

그리고 (4)는 순차적이며, (5)는 동적이고, (6)은 연속적이다.

이 부분이 어려운것은 아닌데 한번에 많은 정보가 입력되다보니 거부감이 생길 수 있다.

생각해보면 사람은 하나의 환경에 대해서 아무런 고민없이 직감적으로 파악한다.

확률적이거나 동적이라는 말을 생각하지 않는다.

그에 비해 에이전트는 우리도 잘 모르는 복잡한 분석과 구분을 해서 알려줘야 한다.

그럼 왜 이렇게 6가지로 구분을 해서 문제를 나누려고 하는 것일까.

앞에서도 말했지만 답은 '해결책이 다르기 때문이다'가 정답이다.

다르다는 표현보다는 문제별로 가장 적합한 해결책이 있다는 의미로 받아들이면 좋을거 같다.

미로찾기와 택시 운전과 쏟아진 물 닦기는 서로 다른 형태의 문제이다.

그래서 다른 방식의 해결책으로 풀어가는게 좋다는 것이다.

미로찾기는 경우의 수를 이용하는 탐색으로 문제를 풀어가는데 이러한 방식으로 택시 운전을 하려면 아주 어려워 질것이다.

그러니 문제에 따른 해결책을 잘 생각하기 위해서 문제를 구분하는 것이다.

쉬운것은 전체를 관찰할 수 있으면서 단일 에이전트고, 순차적이며, 정적이며, 이산적일때 가장 가장 쉬운 문제라고 보면 된다.

에이전트의 형태

간단하거나 간단하지 않거나 상황에 따라서 너무나도 다양한데 기본 4가지를 변형해서 조금 다른 구조로 구성할 수 있다.

  • 단순 반사 에이전트
  • 모형 기반 반사 에이전트
  • 목표 기반 에이전트
  • 효용 기반 에이전트

전혀 이해를 할 수 없는 용어이다.

각 에이전트의 구조를 간단하게 설명하면 그 차이를 조금 이해할 수 있을 것이다.

단순 반사 에이전트

아주 간단하다. 모든 상황을 파악하고 있는 상황에서 무엇이 가장 올바른 행동인지 찾을 수 있다.

단순히 어떤 상황에 대해서 1:1로 그에 대한 해답을 가지고 있는 경우이다.

배고프다 -> 먹어라, 졸립다 -> 자라, 공이 날아온다 -> 피해라

말 그대로 단순히 반사적으로 대답하면 되는 문제를 해결할 수 있다.

모형 기반 반사 에이전트

상황을 부분적으로만 이해하고 있을때 사용할 수 있다.

물론 모르는 상황에 대비해서 항상 예의 주시하고 있어야 하는데

1.주변의 새롭게 생성되는 상황을 계속 수집해야며

2.에이전트의 행동으로 인해 어떤 영향이 미칠지 미리 알고 있어야 한다.

이 에이전트도 반사라는 단어가 들어가는 걸로 알수 있듯이

상황에 따른 행동이 1:1로 구성되어 있다.

주행중에 앞에 차가 섰다면 차가 막혀서 서있는지 잠시 정차한 것인지 구분을 하지 못한다는 것이다.

목표 기반 에이전트

앞에서 이야기한 단순과 모형 에이전트와 조금 다른 특징을 가지고 있다.

앞에서 설명한 모형 기반 반사 에이전트와 유사하지만

단순히 어떤 상황에 따라서 어떻게 하라고 1:1로 명시하지 않는다.

에이전트가 해결해야 할 목표를 명확하게 가지고 있다는 것이다.

그리고 모형 에이전트에서 행동에 따른 영향을 미리 알고 있어야 하는것에 더해

행동에 따라서 실제 환경이 어떻게 달라지게 될지를 추론하거나 예측이 가능하다는 것이다.

효용 기반 에이전트

에이전트가 얼마나 올바르게 행동하는가를 평가할때 각 항목에 따른 점수를 다르게 부여하는 것이다.

에이전트가 보다 더 높은 점수를 만들기 위해 우선순위를 둔다는 것을 의미할 수도 있다.

앞에 이야기한 모형이나 목표 기반의 에이전트와 유사한 구조를 가지고는 있지만 목표나 상황과 행동의 1:1로 구성된것은 없다.

그보다 행동이 얼마나 효용성이 높은지 측정하는 것이다.

물론 그 효용성에 포함되는 것이 목표가 될 수도 있지만 부가적으로 고려해야하는 것이 존재할 수 있다.

편안함 또는 정확함 등은 목표가 될 수도 있지만 부가적인 사항이라고 생각해보자.

이러한 목표를 해결하는 것에 높은 점수를 부여하지 않고 부가적인 사항에 대해서도 점수를 부여하는 것이다.

부가적인 사항을 해결하면서 효용성을 높혀가는 것이다.

이처럼 에이전트가 가지는 기본적인 구조를 통해서 다양한 문제를 해결할 수 있다.

구조가 이렇게 되어있지만 실제로 유용한 에이전트를 작성하게 되면 그리 간단하지 않다는 것을 알 수 있다.

학습 기반 에이전트

 

작성하고 나서 읽어보면 쉽게 쓴다고 썻는데도 내용이 어렵네요.
용어가 어렵고 경우의 수가 너무 많아서 생각해야 할 것들이 많은게 흠이군요.
아주 단순하게 작성을 해봤으나 너무너무 후려쳐서 설명한거라 오히려 더 이해하기 난해해지더군요.
고민을 해서 어떤 난이도를 가져야 할지 결정하겠습니다.

 

댓글

댓글 본문
작성자
비밀번호
버전 관리
Braden
현재 버전
선택 버전
graphittie 자세히 보기