인문학: 대화로봇



여기서는 컴퓨팅 사고력 과정을 적용한 대화로봇을 만듭니다.

대화로봇이 뭐지? 라고 생각할 수 있습니다.

앨런 튜링이란 이름의 수학자는 컴퓨터가 언젠가는 매우 복잡한 일도 할 수 있으며 인간의 지능 바로 앞까지 올 것이라고 예견했습니다.


여기서 하게될 테스트는 튜링 테스트로 알려져 있습니다.

이 테스트는 매우 간단합니다.

만일 컴퓨터가 우리 인간과 의사소통할 수 있는 능력이 있고,

우리가 컴퓨터와 의사소통할 때 인간과 의사소통할 때와의 차이점을 전혀 알아차리지 못한다면 이 컴퓨터는 지능 튜링 테스트에 통화했다고 말합니다.





이 대화로봇은 에이다 러브레이스라는 이름의 세계 최초의 컴퓨터 프로그래머로 부터 시작했습니다.

그녀는 1815년에 태어났습니다.

아버지는 시인이었습니다.

어머니는 에이다의 단독 양육권을 얻어서 수학자와 과학자로 그녀를 길렀습니다.

에이다는 초기버젼의 수학용 컴퓨터로 분석엔진 관련 일을 하는 중에 최초의 컴퓨터 프로그램을 작성했습니다.


에이다에 관한 자세한 내용은 [다음]에서 이어집니다.



1843년 27세의 나이에 에이다가 쓴 분석 엔진에 대한 논문에 컴퓨터 프로그램이란 무엇인가에 대해 썼습니다. 프로그램은 기계에 의해 수행되는 일련의 지시사항이다 라고 썼습니다. 에이다는 그런 기계들이 음악, 그림을 만들고 단순한 계산을 넘어서 다른 응용 프로그램을 구동하게 해줄 것이라고 예견했습니다. 컴퓨터가 세상에 나와 실제로 그런 일들을 하기 무려 100년전에 예측을 한 것입니다. 그녀는 상상력과 직관이 수학과 과학에 핵심적이라고 믿었고, 시와 과학을 종종 통합했습니다.

에이다가 분석엔진에 대한 유명한 논문을 작성할 때는, 그녀가 러브레이스 백작과 결혼해서 세 자녀를 기를 때였습니다. 슬프게도 그녀 일생동안 병에 시달리다 자궁암으로 1852년 36세에 젊은 나이에 사망했습니다.

이제 에이다에게서 영감을 받았으니, 에이다가 대답해주는 것으로 느껴지게하는 대화 로봇을 만들어 봅시다.

[다음]을 클릭하세요.





오른쪽에 에이다의 초기형 대화 로봇이 있습니다.

코드를 실행시키면 질문을 넣을 대화 상자가 보일 것입니다.

지금 그녀가 대답해줄 수 있는 것은 이름과 태어난 때 입니다.

"Who are you?" 나 "When were you born?"으로 물어보면, 답변을 받게 될 것입니다.

새 질문을 더할 준비가 되었다면 [다음]을 클릭하세요.




여러분이 에이다를 전혀 모른다고 하면, 어떤 것을 물어볼 것 같습니까?


만일 여러분이 에이다를 대신해서 답변을 해야하는 상황이라면, 무엇을 알아야 하고 어떻게 답변해야 할까요?

이를 위해 그녀 관련 정보를 찾아봐야 하고, 어딘가에 물어볼 수 있을 것입니다.



인간을 시뮬레이션하는 작업은 매우 어려운 일입니다. 첫째, 처리할 수 있을 정도로 보다 작은 단계로 나눕니다.

어떤 사람이 에이다에게 해줄 것 같은 질문은 무엇이 있을까요?




대화로봇은 논리 진술문으로 '만약'과 '그렇지 않으면'을 사용합니다.

알고리즘은 이렇습니다.

  1. 사용자가 질문을 입력합니다.
  2. 알고리즘이 질문과 일치되는 유형을 찾습니다. 즉 '만약' 질문 속 단어가 답변의 문장과 일치하면, 답변을 기록합니다.
  3. '그렇지 않으면', 즉 다른 경우에는 초기 설정된 "질문을 이해 못하겠습니다"를 보이게 한다.

프로그램된 답변을 수정해서 자신이 원하는 답변으로 얼마든지 바꿀 수 있습니다. '만약'과 '그렇지 않으면' 과 같은 조건문은 강력해서 우리가 사용했던 소프트웨어의 중요한 부분에서 사용됩니다.

위 기존 코드에 새로운 코드를 추가할 수 있습니다. 7줄에서 '어디에 태어났는가?'에 '영국, 런던'으로 되어 있습니다. 기존 코드를 보며 새로운 질문을 입력한 후 [재생] 버튼을 눌러 코드를 재생성해보세요.

계속하려면 [다음]을 클릭하세요.




'만약'이 있는 조건 논리에 추구해서 불논리(특히 컴퓨터와 전자공학에서 참과 거짓을 나타내는 숫자 1과 0만을 이용하는 방식)를 추가할 수 있습니다. 불논리를 추가하면 대화로봇은 동일 조건에서 두 가지가 질문에도 반응할 수 있게 됩니다. 대화로봇은 '누구십니까?' 질문에 답할 수 있었지만, '이름이 무엇입니까?'라는 질문을 넣을 수도 있습니다. 기존 코드에서 '무엇'이란 단어에 반응하게 했지만, '이름'에 반응하게도 하는 것이 더 좋을 수도 있습니다.

이렇게 되면 같은 대답을 하게 하는 알고리즘 코드 한 줄을 더 추가하는 것보다, 기존 코드에서 질문 속에 '누구' 아니면 '이름'이 들어갔는지 찾도록 업데이트됩니다. 그렇다면 에이다의 이름을 다양한 방식으로 물어볼 수 있게 됩니다.




프로그래밍은 다른 언어들과 마찬가지로 규칙이 있는 언어입니다. 사실 컴퓨터가 튜링테스트를 통과하지 못하기 때문에 우리는 코드를 입력할 때 매우 구체적이어야만 합니다. 우리 인간은 철자나 문법이 다소 정확하지 않은 이메일을 이해할 수 있지만, 컴퓨터는 쓰여진 데로만 보고 오타 혹은 잘못된 문장으로 판단합니다. 언젠가 컴퓨터가 우리가 말하는 뉘앙스나 의도를 이해할 수 있는 날이 오겠지만, 그 전까지는 우리는 자세하게 알고리즘을 만들어야하고 계속 검토하며 수정해야 합니다.

새로운 것을 배우거나 기억할 수 있는 대화로봇의 예를 보려면 [다음]을 클릭하세요.




인터넷에서 대화로봇(chatbot)을 검색하면 대부분 에이다 대화로봇과 같은 논리를 사용함을 볼 수 있을 것입니다. 그것들은 어떤 활동이나 패턴들을 모두 체크해서 알고리즘에 적용했습니다. 오른쪽 대화로봇의 예는 어떻게 답해야 할지 모르는 질문을 만날 때 정답을 배우게 하는 대화로봇입니다. 대화로봇이 질문과 답을 메모리에 저장하는 방식입니다.

몇가지 질문을 하며 코드를 사용해 보세요. 대화로봇에서 답하는 법을 가르치면, 답을 말하게 될 것입니다(가르쳤을 때 사용한 질문을 그대로 사용해야 합니다).

계속하려면 다음을 클릭하세요.





사전에 발생할 모든 코드를 입력하는 방식 대신에, 훈련을 통해서 배우게 하는 과정은 머신 러닝의 한 예입니다. 머신 러닝은 구글이 모호한 쿼리를 더 잘 이해하기위해 사용하는 방법입니다. 머신 러닝의 다른 예들은 인터넷에 많이 있습니다. 알고리즘과 인간과 같은 생물의 차이는 점점 이해되고 있습니다. 때가 되면 그러한 순간적인 차이도 이해하고 반영되겠죠. 우리처럼 지능이나 살아있는 존재에게 어떤 의미가 있는지도 이해되고 반영될 수도 있고요.

학생과 함께 사용할 교육기준을 참고하세요.

고생했습니다. 아래 버튼 중 하나를 클릭해서 계속하세요.