2011

logo_main.gif


글: 정재준 (rgbi3307@nate.com ) / 커널연구회(www.kernel.bz)   2011-11-28


연재 차례
1. C언어 소개
 2. 형태, 연산자, 표현
 3. 제어 흐름
 4. 함수와 프로그램 구조
 5. 포인터와 배열
 6. 구조체
 7. 알고리즘 소개
 8. 소팅을 통한 알고리즘 분석
 9. 스택(Stack) 실습
10. 큐(Queue) 실습
11. 리스트(List) 실습
12. 트리(Tree) 실습
13. 해싱(Hash) 실습
14. 진보된 알고리즘 소개(인공지능 1)
15. 진보된 알고리즘 소개(인공지능 2)


인공지능(AI: Artificial Intelligence) 소개
우 리는 우리들을 호모 사피엔스(현명한 인간)라고 부른다. 왜냐하면 우리의 지능은 우리에게 아주 중요하기 때문이다. 수천년 동안, 우리는 우리가 생각하는 방식을 이해하기 위해 노력했으나 극히 일부분만 인식, 이해, 예측할 뿐, 여전히 복잡한 문제로 남아있다. 이러한 우리의 생각 방식을 인공지능(AI) 분야에 도입하여 이해하려고 시도는 하고 있으나 여전히 멀고도 요원하다.

인 공지능(AI)은 과학과 공학에 있어서 새로운 분야라 할 수 있다. AI는 세계 2차대전 이후 1956년에 신조어로 등장한 이래로 분자 생물학 분야와 함께 과학자들이 누구나 연구하고자 하는 분야로 자리잡아왔다. 물리학도들은 모든 새로운 아이디어들은 이미 갈릴레오, 뉴튼, 아인슈타인에 의해서 출현되었다라고 말하기도 한다. 반면에, AI는 여전히 새로운 아인슈타인과 에디슨들을 위해 열려져 있는 분야이다.

현재 AI는 체스게임이나 수학이론 증명, 시쓰기, 복잡한 거리에서 자동차 운전, 질병 분석등과 같은 다양한 분야들로 파생되고 있다. AI는 지능적인 작업이 필요한 분야에 적절하며, 실제적으로 대부분의 분야에 필요한 것이라 할 수 있다.

AI란 무엇인가?
우리는 AI에 대해서 흥미는 가지고 있지만 아직 그것이 무엇인지 정확히 말하는 것을 힘들어 한다. 우선 AI에 대한 정의를 아래와 같이 분류해 보자.

(1)사람처럼 생각하는 것
(2)사람처럼 행동하는 것
(3)합리적으로 생각하는 것
(4)합리적으로 행동하는 것

(1)번과 (2)번은 "사람처럼" 이라는 핵심어가 들어가 있다.
(3)번과 (4)번은 "합리적으로" 라는 핵심어가 들어가 있다.
(1)번과 (3)번은 "생각하는" 이라는 핵심어가 들어가 있다.
(2)번과 (4)번은 "행동하는" 이라는 핵심어가 들어가 있다.

AI의 정의는 위에 나열한 핵심어를 기준으로 접근해볼 수 있다. AI에 대한 이러한 접근방식은 역사적으로 많은 사람들에 의해서 시도되어 왔다. 이것들에 대해서 좀더 자세히 알아 보자.

(1)사람처럼 생각하는 것: 인지학적인 접근방식

사람처럼 생각하는 프로그램을 논하기 전에, 우리는 먼저 사람이 생각하는 방식을 알고 있어야 한다. 즉, 사람의 마음속에서 실제적으로 일어나는 일들을 이해할 필요가 있는데, 3가지 방식이 있다.

자기성찰: 지나간 일들을 다시 생각함
심리학적인 실험: 사람의 행동을 관찰함
두뇌 영상: 행동할 때 두뇌를 관찰함

이 러한 이론들은 컴퓨터 프로그램으로 표현 가능하게 되었다. 만일 컴퓨터 프로그램의 입력과 출력이 사람의 행동과 연관시켜 일치한다면 컴퓨터가 사람처럼 동작한다고 할 수 있다. 예를 들면, 1961년에 GPS(General Problem Solver)을 개발한 Allen Newell과 Herbert Simon는 그들의 프로그램이 문제를 정확하게 풀지는 못했지만, 사람을 주제로 하여 사람의 행동을 이성적인 접근법으로 추적하였다는 것에 의미가 있다. 이처럼 인지과학과 AI는 서로 상호 보완적으로 빠르게 발전하고 있으며 신경생리학적인 접근과 함께 컴퓨팅 분야에서 서로 협동하고 있다.

(2)사람처럼 행동하는 것: Turing Test 접근방식

1950 년에 Alan Turing에 의해서 제안된 Turing Test는 "적절히 동작하는가"에 대한 관점으로 지능을 정의하고자 했다. 즉, 사람이 컴퓨터에게 질문을 하면 컴퓨터가 대답을 적절히 하는가에 대한 테스트였다. 지능을 갖추기 위해 현대의 컴퓨터에는 다음과 같은 능력이 요구된다:

자연어로 소통 가능한 자연어 처리 능력
듣고 이해한 지식을 저장하는 능력
저장된 정보를 사용하고 질문에 대답하고 새로운 결론을 추론하는 능력
패턴들을 검출하여 새로운 환경을 이해하고 학습하는 능력

위의 능력들은 AI에 필요한 원론적인 내용들이며 이러한 능력들은 Turing Test 관점하에 잘 동작될 수 있도록 설계해야 한다.

(3)합리적으로 생각하는 것: 생각의 법칙에 대한 접근

그 리스의 철학자 아리스토텔레스는 "올바른 생각"에 대한 개념을 정리하기 위해서 최초로 시도한 사람이었다. 그의 삼단 논법은 올바른 결론을 이끌어내는 구조를 가지고 있었다. 예를 들면, "소크라테스는 사람이다; 모든 사람은 죽는다; 따라서 소크라테스도 죽는다." 이러한 생각에 대한 법칙은 마음을 조절하게 되었고, 이렇게 개척된 분야를 논리(logic)라 한다.

19세기 논리학자들은 세상의 모든 물체(객체)들과 그들의 연관성들을 표현하기 위한 정확한 표기법을 개발했다. 1965년경에는 논리적인 표기법으로 기술한 문제들을 풀어낼 수 있는 프로그램이 나타났다. 비록, 해결책이 존재하지 않는다면 프로그램이 무한루프에 빠지더라도...

인공지능에서는 논리적인 기법을 통하여 지능적인 시스템을 프로그래밍하고자 한다. 이러한 접근방식에는 두 가지 장애물이 있다. 첫째는, 비정형적인 지식을 표현하기가 쉽지 않고, 논리적인 표기법으로 요구된 사항들을 정형적으로 표현하기가 어렵다는 것이다. 특히 지식이 100% 명확하지 않다면 더더욱 어렵다. 둘째는, 원론적으로 문제를 해결하는 것과 실제적으로 해결하는 것 사이에는 많은 차이가 있다는 것이다.

(4)합리적으로 행동하는 것: 합리적인 agent 접근

agent 는 행동하는 것(to do)을 의미한다. 모든 컴퓨터 프로그램들은 무언가를 하지만, 컴퓨터 에이전트들은 더 많은 것을 기대한다. 예를 들면, 자동적으로 동작, 주변환경 감지, 장기적으로 안정적인 동작, 변화에 대한 적응력 등을 요구한다. 합리적인 에이전트는 최적의 결과를 달성하고자 하며, 이것이 확실하지 않다면 최적의 기대물을 요구한다.

Turing Test가 요구되는 모든 기술들은 에이전트가 합리적으로 행동하도록 유도해야 하고, 이성적인 지식 표현은 에이전트가 좋은 결론에 도달할 수 있도록 해야 한다. 우리는 복잡한 사회생활 속에서 사용하는 자연어들을 이해하기 쉬운 문장들로 표현할 수 있어야 한다. 우리는 교육을 통해서 좀더 효율적으로 행동하는 능력을 배울 필요가 있다.

합리적인-에이전트 접근은 다른 방식들에 비해서 두 가지 장점을 가지고 있다. 첫째는, 생각의 법칙으로 접근하는 것보다 더 일반적이라는 것이다.  왜냐하면 올바른 추론은 여러 가지 가능성 있는 것들에서 합리적인 것을 하나 선택하는 것이기 때문이다. 둘째는, 사람의 행동 혹은 사람의 생각을 기반으로 접근하는 것에 비해서 좀더 과학적 개발을 할 수 있다는 것이다. 합리적인 것은 수학적으로 잘 정의하여 일반적인 완성도를 높여 나가는 방향으로 표준화할 수 있다. 반면에, 사람의 행동은 특정한 환경에 맞도록 적용할 수 있는데, 이것은 사람의 행동들을 모두 합하여 정의한다.

우 리는 앞으로 합리적인 에이전트의 원리를 일반화 시키고 설계해 가는 요소들에 집중할 것이다. 많은 노력을 통해서 우리의 문제들을 해결하는 동안 다양한 논점들을 만나게 될 것이다. 앞으로 이러한 논점들을 좀더 자세히 알아보도록 하자.

마음속에 새겨야 할 중요한 핵심은, 합리성은 훌륭한 분석적 관점의 시작 지점이라는 것이다. 합리성은 문제를 단순화시킬 뿐만 아니라 현장의 문제들을 적절히 해결하기 위한 기본적인 재료를 제공해 준다. 자, 앞으로 "합리성"을 기반으로 하여 다양한 문제들을 해결해 보도록 하자.

AI의 기본
AI로 본격적인 여행을 떠나기 전에, AI의 지난 역사를 통하여 AI의 관점들 및 기술들의 원리에 대해서 알아보도록 하자. 모든 역사가 그러하듯이, 대부분의 사람들이 중요하게 생각하지 않던 것들을 소수의 사람의 생각이나 사건에 의해서 새롭게 조명되어 창조적인 결과물이 나타난다. AI에 대한 기본지식을 철학(Philosophy), 수학(Mathematics), 경제학(Economics), 신경과학(Neuroscience), 심리학(Psychology), 컴퓨터공학(Computer engineering), 제어이론과 인공두뇌학(Control theory and cybernetics), 언어학(Linguistics)적으로 요약한다.

철학(Philosophy)

정형적인 규칙들로 타당한 결론들을 이끌어낼 수 있는가?
마음(생각)은 우리의 두뇌에서 어떻게 형성되는가?
지식은 어디에서 오는가?
지식은 어떻게 행동을 유발시키는가?

아 리스토텔레스(384-322 B.C.)는 마음을 제어하는 이성적인 부분의 법칙들을 정확한 집합으로 표현한 최초의 사람이었다. 그는 삼단논법을 개발하여 이성에 적절하게 접근하고자 했으며, 이것은 기계적으로도 결론을 유추해 낼 수 있는 원리가 되었다. 그 이후, Ramon Lull(d. 1315)는 기계적인 장치를 통하여 이성에 접근 가능할 수도 있다는 생각을 한 사람이었다.

Thomas Hobbes(1588-1679)는 이성은 수치적인 계산으로 표현(생각을 더하고 빼는 것)하는 것과 유사하다라고 했다. 1500년경, 레오나르도 다빈치(1452-1519)는 기계적인 계산기를 설계는 했지만 제작하지는 못했다. 최근에 이것을 재구축하여 기능적으로 가능한 설계였다라는 것을 보여주었다.

최초의 계산 기계는 1623년 독일의 과학자인 Wilhelm Schickard(1592-1635)에 의해서 만들어졌다.  그 이후 1642년에 Blaise Pascal(1623-1662)이 만든 기계식 계산기가 더 유명하다. 파스칼은 "나의 산술 기계는 동물들의 행동보다 생각에 더 근접한 효과를 낸다"라고 언급했다. Gottfried Wilhelm Lcibniz(1646-1716)는 숫자보다는 개념을 동작시키는 기계적인 장치를 만들었으나, 이것의 능력에는 한계가 있었다.

Letniz는 덧셈, 뺄셈, 곱셈 및 근을 구할 수 있는 계산기를 만들어서 덧셈과 뺄셈만 할 수 있었던 파스칼 계산기의 기능을 능가하게 되었다.  또한, 어떤 사람들은 다음과 같이 추측하기도 했다.  "기계는 계산만 하는 것이 아니라 그들만의 생각으로 행동하는 것도 가능할거야". 1651년에 Thomas Hobbes는 그의 책 Leviathan에서 아래와 같은 내용을 제안했다. "인공적인 동물"에 대한 생각으로, "심장은 스프링이고; 신경은 더 많은 스프링이고; 관절은 많은 바퀴들..."이라고 언급했다.

이것은 비록 제한적인 내용이지만 마음의 동작에 대해서 언급한 것이고, 논리적인 규칙들로 물리적인 시스템을 만들기 위해서 모방해 보는 정도였다. 또 어떤 사람들은 "마음은 그 자체가 어떤 물리적인 시스템이다"라고 말하기도 했다.  Rene Descartes(1596-1650)는 마음과 문제를 명확하게 구분하는 논평을 최초로 낸 사람이었다.

마음을 순전히 물리적인 개념으로 접근하는 것은 문제가 있다. 마음이 물리적인 법칙에 의해서 통제된다면, 바위가 지구의 중심으로 떨어지기 위한 결정을 하는 것보다도 더 자유가 없어져 버린다.  즉, 마음에는 수 많은 자유가 있다. 데카르트는 세상을 이성의 힘으로 이해하고자 했다. 철학은 이제 이성주의(합리)로 불려지게 된다. 그러나 데카르트도 이원론을 지지한 사람이었다. 데카르트는 인간의 마음(영혼, 정신)은 물리적인 법칙들에 지배되는 자연현상과는 다른 부분이라 생각했다.

반면에, 동물들은 이러한 양면성을 소유하고 있지 않아서 기계적으로 다룰 수 있다. 이원론은 유물론(물질주의)으로 대체되는데, 이것은 마음을 물리적인 법칙으로 동작하는 두뇌라고 봤다. 그리고 자유의지는 무엇인가를 선택하고자 할 때 나타나는 자각력이라고 단순히 생각했다. 지식을 다루는 물리적 마음이 주어졌을 때, 그 다음의 문제는 지식의 원천을 확립하는 것이다.

경험론(실증주의) 운동이 Francis Bacon(1561-1626)에 의해서 시작되어 John Locke(1632-1704)의 아래와 같은 격언으로 확립된다. "모든것은 이해로 통하는 것이 아니라, 오감으로 느끼는 것이다."  David Hume(1711-1776)의 인간의 본질에 대한 논문은 유도의 원리(귀납법)으로 알려진 것이다.  이것은 각각의 요소들을 반복적으로 연관시켜 일반적인 규칙을 얻어내는 것이다.

Ludwig Wittgenstein(1889-1951)과 Bertrand Russell(1872-1970)의 작업이 전개되면서, Rudolf Carnap(1891-1970)에 의해서 유도된 유명한 Vienna Circle은 논리적인 실증주의 철학을 개발해낸 것이다. 이 논리적인 실증주의 철학은 모든 지식을 논리적인 이론들이 연결되어 특성화된 것으로 표현하면서 이성론(합리성)과 경험론(실증)을 결합한다.

Catnap과 Carl Hempel(1905-1997)의 확립 이론은 경험에 의한 지식 습득을 분석하려고 시도한 것이다.  Camap의 책 논리적인 구조체 세상(원제: The Logical Structure of the World(1928))는 경험적인 요소들에서 지식을 발췌해 내기 위한 명시적인 계산 절차를 정의한 것이다. 이것은 아마도 계산적인 처리로 마음을 표현한 최초의 이론이었다.

마음에 대한 철학적 그림의 마지막 요소는 지식과 행동간의 연결이다. 이것은 인공지능(AI)에 필수적이다. 왜냐하면 지능은 행동과 이성을 요구하기 때문이다. 더 나아가, 행동에 대한 이해는 합리적인 에이전트를 만들어 내는 방법이 될 수 있다.  아리스토텔레스는 다음과 같이 논평했다.  "행동(action)은 목표(goal)와 지식(knowledge) 간의 논리적 연결을 통해서 정당화 된다."

그러나, 생각이 행동으로 동반되기도 하고 그렇지 않은 경우도 있을 때 는 어떻게 할 것인가? 이 경우는 결국 추론적 접근을 해보자. "나는 덮을 것이 필요하다; 망토는 덮는 것이다. 나는 망토가 필요하다. 내게 필요한 것은 내가 만들어야 한다;"  "나는 망토가 필요하다. 나는 망토를 만들어야 한다."  결론은 "나는 망토를 만들어야 한다."가 행동(Action)이다.

아리스토텔레스의 알고리즘은 2300년 후에 Newell과 Simon의 GPS 프로그램에 의해서 구현되었다. 우리는 이제 이것을 회귀 계획 시스템(Regression Planning System)으로 부를 것이다.

목 표(goal) 기반 분석은 유용하다. 그러나, 여러가지 행동들이 목표에 접근하려 할때나, 행동들을 완료할 수 없을때 무엇을 해야 하는가? Antoine Arnauld(1612-1694)는 위와 같은 경우에 어떤 행동을 취해야 하는지 정량적인 공식을 정확하게 기술했다. John Stuart Mill(1806-1873)은 그의 책 Utilitarianism(Mill, 1863)에서 모든 인간의 행동은 합리적인 판단 기준으로 접근해야 한다고 제안했다.

수학(Mathematics)
타당한 결론을 이끌어내기 위한 정형화된 규칙은 무엇인가?(논리)
무엇이 계산될 수 있는가?(계산)
불확실한 정보에 어떻게 의미를 부여하는가?(확률)

철학자들은 AI에 대해서 몇 가지 근본적인 생각들을 도출해 냈으나, 이것에 정형화된 수학 공식들을 도입하여 좀더 과학적으로 접근해 보자. AI에 근본적으로 적용되는 수학 영역은 논리, 계산, 확률이다.

논 리에 대한 기본 원리는 고대 그리스 철학자들로부터 시작되었으나, 이것을 수학적으로 발전시킨 사람은 George Boole(1815-1864) 이었다.  그는 1847년에 명제, Boolean, 논리 등에 대해서 자세한 연구결과를 발표했다.

1879 년에 Gottlob Frcgc(1848-1925)는 Boole의 논리를 좀더 확장시켜 객체와 관계들을 처음으로 포함시켰다. 이것은 오늘날의 수학적 논리에 사용된다. Alfred Tarski(1902-1983)는 참조 이론을 소개 했는데, 이것은 실제 생활속의 객체들에 논리를 연관시키는 방법에 관한 것이었다.

이러한 논리를 계산적으로 적용하는 데에는 몇 가지 제한 사항들이 있는데, 이것을 알아보자. 첫째로 중요한 알고리즘이라 할 수 있는 것으로 Euclid의 최대공약수(Greatest Common Divisor) 알고리즘이 있다. 다음으로 word 알고리즘이 있는데, 이것은 9세기 페르시아의 수학자 al-Khowarazmi가 발표한 것이다. 그는 또한 아라비아 숫자와 대수(algebra)를 유럽에 소개했다.
알고리즘은 대부분 논리적인 추론으로 표현되었고, 19세기 후반에는 이러한 노력들로 인해 논리적 추론이 수학적으로 공식화되게 된다.

1930 년에 Kurt Godel(1906-1978)은 Frege와 Russell의 first-order 논리의 참을 증명하기 위한 효과적인 절차가 존재한다고 했다. 그러나, first-order 논리는 자연수를 특성화 시키는데 필요한 수학적 유도의 원리를 제대로 잡아내지 못했다. 1931년에, Godel은 추론에는 제약사항들이 존재한다고 했다.  그의 완성되지 못한 이론은 다음과 같은 사항을 보여준다. Peano 산술(자연수 원리론)만큼이나 강력한 정형화된 이론에서는 증명할 것이 없다라는 관점으로 증명 불능을 논하는 것이 옳은 방법이다.

이러한 근본적인 결과는 정수를 다루는 몇몇 함수들은 알고리즘으로 표현할 수 있다라는 것을 보여준다. Alan Turing(1912-1954)은 이것에서 영감을 얻어, 이러한 함수들이 계산가능 하다라는 것을 보여주기 위한 시도를 했다.

이 개념에는 몇가지 문제점들이 있었다. 왜냐하면, 효과적인 절차 혹은 계산의 개념에 형식 잡힌 정의가 주어지지 않았기 때문이다. 그러나, Turing 논문에서 Turing machine(Turing, 1936)은 어떠한 계산적인 함수라도 계산해낼 능력이 있고, 충분한 정의가 제공된 것을 일반적으로 적용한다 라고 했다. 또한, Turing은 Turing machine이 계산해낼 수 없는 함수들이 몇 가지 있다라고 했다. 예를 들면, 주어진 프로그램이 제시된 입력에 대해서 해답을 출력할지 아니면 영원히 수행하고 있을지는 machine이 알 수가 없다라고 했다. 결정능력과 계산능력이 계산을 이해하는데 중요하지만, 이해하기 쉬운 개념이 더 강력한 영향력을 가진다.

아주 다루기 힘든 문제를 어떻게 인식할 수 있을까? NP-완전성(NP-completeness) 이론을 개척한 Steven Cook(1971)과 Richard Karp(1972)가 그 방법을 제공했다. Cook과 Karp는 표준적으로 조합하는 검색의 사례들이 많이 존재함을 밝히고 NP-complete 문제들의 사유를 보여주었다. NP-complete 문제들로 줄일 수 있는 문제는 다루기 힘들 것이다.

컴 퓨터의 속도가 빨라지고 있지만, 주어진 자원들을 주의 깊게 활용해야 지능적인 시스템의 모습을 갖출 수 있다.  세상은 아주 큰 문제로 이루어져 있다. AI 분야에서 일하다 보면 NP-complete 문제들이 왜 어려운지 알게 될 것이다.

지금까 지 논리와 계산에 대해서 언급했는데, 세 번째로, AI에 대해서 수학적으로 접근하는 것으로 확률이론이 있다. 이탈리아의 Gerolamo Cardano(1501-1576)는 확률에 대해서 최초로 형틀을 만든(규격화한) 사람이었다. 그는 확률을 도박적인 결과로 나타나는 것으로 기술했다. 1654년에 Blaise Pascal(1623-1662)는 Pierre Fermat(1601-1665)에게 보낸 편지에서, 완료되지 않은 도박 게임의 미래를 어떻게 예측하는지 보여 주었고, 도박꾼들에게 평균적인 보상을 제공했다.

확률은 정량적인 것을 다루는 과학에서 점점 가치 없는 것으로 되었지만, 불확실한 측정이나 완료되지 않은 이론을 다루는 데는 도움을 주고 있다. James Bernoulli(1654-1705), Pierre Laplace(1749-1827) 등은 확률이론을 좀더 개선하여 새로운 통계적인 방법들을 소개했다. Thomas Bayes(1702-1761)는 확률에 대해서 새로운 믿음을 가질만한 규칙을 제안했다. Bayes의 규칙은 현대의 AI 시스템에서 불확정적인 사유를 다룰 때 배경지식으로 사용된다.

경제학(Economics)
급여(보상)를 최대화 하기 위해서 우리는 어떻게 결정해야 하는가?
다른 사람들이 계속하지 않는다면 우리는 어떻게 해야 하는가?
급여가 앞으로 점점 불확실해 진다면 우리는 어떻게 해야 하는가?

과 학적인 경제학은 1776년에 스코틀랜드의 철학자 Adam Smith(1723-1790)가 다음과 같은 책을 출간하면서 시작되었다. "자연에 대한 탐구와 국가적 부의 원인들(원제: An Inquiry into the Nature and Causes of the Wealth of Nations)". 고대 그리스인들과 같은 사람들은 경제적인 생각만을 했으나, Smith는 경제를 과학적으로 다룬 최초의 사람이었다. 그는 경제를 다음과 같은 관점으로 생각했다.  경제는 각각의 에이전트들이 경제적으로 잘사는 것(Well-Being)을 극대화하기 위한 것으로 생각해야 한다.

대부분의 사람들은 경제학을 돈의 관점으로 생각하지만, 경제학자들은 사람들이 좀더 좋은 보상을 받기 위해 어떤 선택을 하는지를 연구하고 있다. 이러한 경제적 관점("좀더 좋은 보상")은 Leon Walras(1834-1910)에 의해서 처음으로 형성되었고 Frank Ramsey(1931)에 의해서 좀더 개선되었다.  그 이후로는 John von Neumann과 Oskar Morgenstern이 그들의 책인 "게임 이론과 경제적 행동(원제: The Theory of Games and Economic Behavior(1944))"에서 개념을 계속 개선했다.

도구 이론과 확률적 이론을 결합한 결정 이론은 어떤 것을 결정할 때 형식이 잡힌 완전한 형틀을 제공한다. 결정 이론은 확률적인 기법으로 결정자의 환경을 적절하게 잡아준다. 이것은 각각의 에이전트가 다른 에이전트들의 행동에 관여하지 않아도 되는 거시(large) 경제에 적절하다. 소규모(small) 경제에서는, 그 상황이 마치 게임과 비슷한데, 게임에 참가한 사람의 행동은 다른 사람의 도구에 긍정적이든 부정적이든 확실하게 영향을 준다.

Von Neumann과 Morgenstem이 개발한 게임 이론는 다음과 같은 놀라운 결과를 포함하고 있다. 어떤 게임에서 합리적인 에이전트는 정책들을 무작위로 적용한다는 것이다. 결정 이론과는 다르게, 게임 이론은 행동을 선택하기 위해서 이미 처방된 것을 사용하지 않는 다는 것이다.

대부분의 경제학자들은 서두에서 언급한 세 번째 질문, 즉, "급여가 앞으로 점점 불확실해 진다면 우리는 어떻게 해야 하는가?"를 지목하지 않는다. 행동들에 대한 급여(보상)가 즉각적이지 않고, 순차적으로 발생하는 여러 행동들에 따라서 달라진다면 어떤 합리적인 결정을 내려야 할까? 이 주제는 행동 연구 분야에서 다루어 졌고, 세계2차 대전 때 영국에서 레이더 설치를 최적화하기 위해서 출현한 것이다. 이후에는 민간적으로 복잡한 관리문제를 결정하기 위해서 응용되었다.  1957년에 Richard Gellman이 순차적 결정 문제의 등급을 규격화하는 작업을 했는데, 이것을 마르코 결정 처리(Marko decision processes)라 하고 앞으로 자세히 기술한다.

경제적인 행동 연구는 우리의 합리적 에이전트 개념에 많은 공헌을 했다. 수년 동안 AI 연구를 통해서 여러 가지 방법들을 개발했다. 한가지 분명한 것은 합리적인 결정을 할 때는 여러 가지 복잡한 것들이 나타난다는 것이다. 1978년에 노벨 경제학상을 수상한 Herbert Simon(1916-2001)은 AI 연구를 개척하면서 다음과 같은 언급을 했다. 만족에 기반한 모델 연구실에서 최적의 결정을 계산한 것보다도 더 좋은 결정 은 실제의 인간 행동을 더 훌륭히 기술한다.(Simon, 1947). 1990년대 이후로 에이전트 시스템을 위한 결정 이론 기법들이 흥미롭게 되살아 나고 있다.(Wellman, 1995).

맺음말
지 금까지 AI에 대한 소개와 함께 지난 역사를 통하여 AI의 관점들 및 기술들의 원리에 대해서 알아 보았다. AI에 대한 기본지식을 철학(Philosophy), 수학(Mathematics), 경제학(Economics), 신경과학(Neuroscience), 심리학(Psychology), 컴퓨터공학(Computer engineering), 제어이론과 인공두뇌학(Control theory and cybernetics), 언어학(Linguistics)적으로 요약하고자 했으며, 이번 연재에서 다 기술하지 못한 신경과학(Neuroscience), 심리학(Psychology), 컴퓨터공학(Computer engineering), 제어이론과 인공두뇌학(Control theory and cybernetics), 언어학(Linguistics)적인 AI 소개는 다음 연재에 이어서 하도록 하겠다. 인공지능(AI)는 대부분의 학문들에 흥미롭게 연관되어 있다. 다음 연재에 AI에 대한 소개를 좀 더 해볼 예정이오니 많은 관심과 격려 바란다.



필 / 자 / 소 / 개

000000005173-0006.jpg
(정 재준) 필자는 학창시절 마이크로프로세서 제어 기술을 배웠고, 10여년동안 쌓아온 IT관련 개발 경험을 바탕으로 “오라클실무활용SQL튜닝(혜지원)” 책을 집필하고, “월간임베디드월드” 잡지에 다수의 글을 기고하였다.  서울대병원 전산실에서 데이터베이스 관련 일을 하면서 학창시절부터 꾸준히 해온 리눅스 연구도 계속하고 있다.  특히, 스탠포드대학교의 John L. Hennessy 교수의 저서 “Computer Organization and Design” 책을 읽고 깊은 감명을 받았으며, 컴퓨터구조와 자료구조 및 알고리즘 효율성 연구를 통한 기술서적 집필에 노력하고 있다.  또한, 온라인 상에서 커널연구회 (http://www.kernel.bz/ )라는 웹사이트를 운영하며 관련기술들을 공유하고 있다.


※ 본 내용은 (주)테크월드(http://www.embeddedworld.co.kr)의 저작권 동의에 의해 공유되고 있습니다.
Copyright ⓒ
Techworld, Inc. 무단전재 및 재배포 금지

맨 위로
맨 위로