[실습하기] 논리적 추론하기
논리적 추론과 분류 프로그램 만들기 (1)
우리는 무언가를 관찰했을 때, 관찰이나 질문을 통해 새롭게 입력된 정보와 우리가 이미 알고 있는 지식을 바탕으로 어떤 새로운 것을 논리적으로 추론하기도 합니다. 예를 들어, 어떤 학생이 ㅇㅇ학교의 교복을 입고 있다고 생각해봅시다. 우리는 그 학생이 입은 교복만 보고도 ㅇㅇ학교의 학생이라는 것을 추론할 수 있습니다. 그 과정을 조금 자세히 살펴보면 다음과 같습니다.
1. 논리적 추론이란?
이와 같이 우리는 무언가가 관찰되면서 입력된 정보와 우리가 이미 알고 있는 지식을 비교하여 새로운 사실을 논리적으로 추론할 수 있습니다. 다섯 고개 놀이도 논리적 추론의 한 예시입니다. 정보가 입력되면(즉, 힌트가 주어지면) 우리가 이미 알고 있는 지식을 바탕으로 정답이 무엇인지를 추론하는 거죠. 논리적 추론은 컴퓨터가 문제를 해결하는 또 다른 방법 중 하나입니다. 이번에는 논리적 추론을 바탕으로 컴퓨터가 문제를 해결하는 방법을 알아보고, 논리적 추론을 통해 동물을 분류하는 프로그램을 만들어 보겠습니다.
2. 논리적 추론이 적용된 사례 살펴보기
이런 논리적 추론을 바탕으로 만들어진 인공지능을 전문가 시스템이라고 합니다. 전문가 시스템은 사람 전문가가 가지고 있는 지식을 어떤 규칙의 형태로 만들어 컴퓨터에 저장해 놓고, 문제가 주어졌을 때 그 지식을 사용해 해결합니다. 전문가 시스템을 활용하면 사람 전문가가 부족한 상황에서도 전문가처럼 문제를 해결할 수 있습니다. 하지만 이 전문가 시스템은 몇 가지 한계를 가지고 있습니다. 먼저 사람의 지식을 모두 규칙 형태로 표현하여 저장하는 것은 매우 어려운 일입니다. 그리고 전문가마다 가지고 있는 규칙이 다른 경우도 많아 하나의 공통된 규칙을 정하기가 어렵습니다.
2-1. 대화 시스템 엘리자
엘리자는 1964년에 개발된 대화 시스템입니다. 엘리자와 인간이 한 문장씩 주고 받을 수 있습니다. 엘리자에는 ‘상대방이 “안녕”이라고 말하면 “만나서 반가워”라고 답한다’ 등의 규칙이 저장되어 있습니다. 그래서 사람이 무언가를 입력하면, 엘리자는 어떤 말이 입력되는지를 관찰한 뒤 저장된 규칙에 따라 대답을 합니다. 완벽한 대화는 아니지만 요즘에 사용하는 챗봇들은 이러한 원리에서 발전해온 것입니다.
1970년대 초에 만들어진 전문가 시스템인 마이신은 환자의 병을 진단하고 약을 처방해주는 의료 인공지능입니다. 마이신에는 의사들이 생각한 전문 지식 규칙이 약 500개 정도 들어가 있습니다. 마이신은 환자에게 질문을 하여 답을 입력받으면, 저장된 규칙에 따라 그 환자가 병에 걸렸는지를 판단하고 약을 처방해 줍니다. 마이신은 약 69% 정도의 정확도를 보여주었습니다.
2-3. 퀴즈 프로그램 왓슨
인공지능 왓슨은 미국의 유명 TV쇼에 출연해 우승을 차지하였습니다. 인공지능 왓슨은 퀴즈의 질문을 이해하고 답을 하는 인공지능 프로그램입니다. 이 당시 왓슨은 전문가 시스템을 바탕으로 다양한 분야에 걸친 지식이 들어가 있어 퀴즈 문제에 대한 정답을 찾을 수 있었습니다. 최근 왓슨은 여기에서 더욱 발전하여 최근 인공지능 기술을 바탕으로 의료 등 다양한 분야에 사용되고 있기도 합니다.
3. 논리적 추론을 통해 동물 분류하기
논리적 추론을 통해 문제를 해결하려면, 우리가 알고 있는 지식을 규칙의 형태로 만들어야 합니다. 독수리, 고양이, 판다, 부엉이, 고슴도치, 펭귄에 대한 지식을 이미 가지고 있다고 생각해봅시다. 우리가 이미 알고 있는 이러한 지식을 활용하여 규칙을 만들 수 있습니다. <예시>를 참고하여 빈칸을 채워봅시다.
<게임 규칙> ① 마음속으로 세 자리 숫자를 생각한 뒤 상대방에게 보이지 않는 곳에 숫자를 적습니다. 이 때 각 자리의 숫자는 0부터 9까지 중 하나로 구성되어 있으며, 같은 숫자는 두 번 이상 사용하지 않습니다. 또한 세 자리 숫자이므로 0은 백의 자리에는 들어갈 수 없습니다. (예: 123(O), 122(2가 두 번 사용되므로 X), 045(세 자리 숫자가 아니므로 X) ② 순서를 정한 뒤 상대방과 번갈아가며 상대의 숫자에 대한 힌트를 얻습니다. 이 때 힌트는 ‘당신의 숫자는 OOO입니까?’라고 묻는 질문을 통해 얻을 수 있습니다. 상대방은 당신이 물어본 숫자를 자신이 생각한 숫자와 비교하여 스트라이크(S), 볼(B), 아웃(O)을 이야기해줍니다. ③ 힌트들을 조합하여 논리적 추론을 통해 상대방이 생각한 숫자가 무엇인지 먼저 맞히는 사람이 승리합니다. ④ 숫자를 맞힐 때에는 세 자리 숫자와 위치가 모두 맞아야 성공입니다. ⑤ 숫자와 자리의 위치가 맞으면 스트라이크(S), 숫자는 맞지만 위치가 틀리면 볼(B)입니다. ⑥ 볼과 스트라이크의 경우, 어떤 숫자가 볼이고 어떤 숫자가 스트라이크인지는 알려주지 않습니다. ⑦ 숫자가 하나도 맞지 않을 경우 아웃(OUT)으로 표시됩니다. ⑧ 힌트의 횟수에는 제한이 없으며, 먼저 성공하는 사람이 있을 때까지 게임을 진행합니다. |
예) 상대방이 생각한 숫자 = 523 일 때
※ 질문을 만들어 묻고 답해봅시다.
1. 이번 시간에 배운 내용을 바탕으로 질문과 정답을 만들어봅시다.
2. 이번 시간에 배운 내용을 바탕으로 질문과 정답을 만들어봅시다.