비전공자도 이해할 수 있는 AI지식 -컴파일러, 인간의 언어를 이해하다-

1. 컴퓨터, 만능 기계의 모습을 갖추다

 

기계가 인간의 언어를 이해한다는 개념은 가장 먼저 컴파일러(compiler)에서 찾아볼 수 있습니다.

 

컴퓨터와 프로그래밍에 대해 조금이라도 배경지식이 있는 분은 컴파일러에 관해 한번쯤은 들어본 적이 있을 거에요.

 

컴파일(compile)이란 한 언어를 다른 언어로 바꿔주는 과정입니다.

 

예를 들면 영어를 한국어로 바꾸는 과정이 컴파일입니다.

 

컴퓨터에 비유하면 인간이 이해하는 고수준 언어(C++, 자바, 파이썬)를 기계가 이해하는 저수준 언어(기계어)로 바꾸는 과정을 칭하죠.

 

컴파일러 개념은 컴퓨터 역사에서 아주 중요한 의미를 지닙니다.

 

왜냐하면 컴파일러가 등장하면서, 비로소 컴퓨터는 계산기를 넘어 비즈니스에도 활용할 수 있는 만능 기계의 모습을 갖추었기 때문이죠

 

 

2. 한 여성 프로그래머가 컴퓨터 역사를 바꾸다

 

컴파일러의 역사는 여성 해군 제독 그레이스 호퍼의 이야기에서부터 시작합니다.

 

https://ko.wikipedia.org/wiki/%EA%B7%B8%EB%A0%88%EC%9D%B4%EC%8A%A4_%ED%98%B8%ED%8D%BC

 

호퍼는 해군으로 복무하면서 미 해군과 민간 연구기관이 함께 진행하던 여러 컴퓨터 개발 프로젝트에 참여했습니다.

 

당시만 해도 컴퓨터 프로그래밍이란, 컴퓨터에 기계어를 직접 입력하는 작업을 의미했습니다.

 

그러나 이 과정은 시간이 오래걸렸고, 기기마다 다른 기계어를 입력해야 해서 호환성이 떨어졌으며

 

문제가 발생할 경우 어디서 문제가 발생했는지 찾기가 매우 어려웠습니다.

 

호퍼는 이 문제를 해결하기 위해 사람과 대화하듯 영어로 명령을 입력하면, 컴퓨터가 이해할 수 있는 언어로 바꿔주는 컴파일러라는 개념을 고안해냅니다.

 

코볼(COBOL)이라는 프로그래밍 언어가 탄생하는 데도 핵심적인 역할을 하여 코볼의 어머니라고 불리기도 합니다.

 

코볼의 문법은 영어와 매우 흡사합니다.

 

회사 직원에게 지시하듯 회계, 매출, 급여 등의 비즈니스와 관련한 업무를 영어로 기술하면 컴파일러가 알아서 컴퓨터가 이해할 수 있는 언어로 바꿔줍니다.

 

덕분에 수많은 사무용 소프트웨어가 등장할 수 있었고, 컴퓨터 비즈니스에 본격적으로 활용되는 계기가 마련됩니다.

 

이 모든 게 호퍼의 업적이죠.

 

 

3. 컴파일러는 무엇을 바꿨나

 

컴파일러의 등장은 일종의 혁신이었습니다. 프로그램을 작성하는데 걸리는 시간이 일주일에서 5분으로 줄었죠.

 

하지만 호퍼가 처음 이 아이디어를 상관에게 보고하자, 미친 생각이라는 대답이 돌아왔다고 합니다.

 

컴퓨터는 수학 문제만 다룰 수 있다는 생각에 갇혀 있던 거죠.

 

상관은 컴퓨터가 영어를 이해하는 것은 있을 수 없는 일이라면서 자금을 지원하지 않았습니다.

 

발상 자체가 터무니없다며 지금까지 해온 것처럼 컴퓨터는 기호와 수학을 이용해 프로그래밍해야한다고 일갈했습니다.

 

이를 두고 호퍼가 한 얘기는 이후 오래도록 여러 책에서 인용하는 유명한 문장으로 남게 됩니다.

 

"우리말에서 가장 위험한 표현은, '여태껏 이렇게 해왔어'입니다."

 

컴파일러가 인간의 언어를 컴퓨터가 이해할 수 있게 바꾼다는 개념을 처음으로 개척했지만,

 

컴파일러는 아직 정해진 규칙에 따른 제한적인 명령만을 이해할 수 있을뿐, 여전히 넘어야 할 산은 많았습니다.

 

인간이 표현하는 무궁무진한 자연어를 이해하는 것은 전혀 차원이 다른 문제였죠.

 

 

4. 챗봇은 사람의 말을 어떻게 이해하나

 

챗봇이 인간이 내뱉는 모든 질문에 마치 사람처럼 자연스럽게 답변할 수 있다면 그건 곧 범용 인공지능(인간이 할 수 있는 모든 지적 작업을 이해할 수 있는 능력)의 완성을 의미합니다.

 

많은 사람이 당장이라도 내일이면 인간을 뛰어넘는 인공지능이 등장하여 사람처럼 말을 걸고 인간을 능가할 것이라 얘기하지만 아직은 한참 먼 미래의 이야기이죠.

 

"체크카드 한도가 궁금합니다."

 

카카오뱅크 고객은 챗봇에 이렇게 물어볼 수 있습니다. 

 

카카오뱅크는 카카오톡 고객센터 챗봇을 지원합니다. 언제든 챗봇에 궁금한 점을 물어볼 수 있고, 즉시 응답을 받아볼 수 있죠.

 

필요할 때는 상담원을 연결할 수도 있지만, 대부분의 질문에 챗봇이 알아서 답변해줍니다.

 

그렇다면 아직 제한적인 능력을 지닌 고객센터 챗봇이 다양한 질문에 어떻게 능수능란하게 대답하는 걸까요?

 

여러 방법이 있지만 여기서는 문장 유사도를 판별해 비슷한 질문을 찾는 방식을 소개하겠습니다.

 

FAQ는 '자주 묻는 질문에 대한 답변 모음, Frequently Asked Questions'의 약자입니다.

 

'구매 취소는 어떻게 하나요?', '배송은 얼마나 걸리나요?'와 같이 빈번하게 묻는 질문에 관한 답변을 미리 만들어두고 상시 제공하는 서비스죠.

 

FAQ를 이용하면 구매 취소를 어떻게 해야할지 궁금할때 상담원 연결을 기다리지 않고 즉시 원하는 답변을 찾을 수 있습니다.

 

챗봇은 이 FAQ 방식을 활용합니다.

 

고객이 묻는 질문과 비슷한 질문을 FAQ에서 자동으로 찾아낼 수 있다면, 거기에 딸린 답변도 자동으로 보여줄 수 있겠죠.

 

그리고 이 과정에서 바로 문장 유사도를 판별하는 알고리즘을 사용합니다.

 

그렇다면 문장 유사도는 어떻게 판별할까요?

 

앞서 쿼리와 유사한 문서를 찾는 계산 알고리즘을 설명한 바 있습니다. 그때는 어떤 식으로 점수를 계산했죠?

 

무엇보다 해당 단어를 문서가 포함하는지 여부가 가장 중요했습니다.

 

만약 문서에 해당 단어가 존재하지 않는다면 문서의 점수는 0점이었죠.

 

그런데 이 조건에 따르면 한가지 문제가 있습니다. 의미가 비슷한 단어도 점수를 아예 받지 못한다는 점입니다.

 

예를 들어 '예금 금리'와 '저축 이자'는 매우 비슷한 의미지만 서로 일치하는 글자가 전혀 없습니다.

 

이렇게 되면 검색엔진에서 사용하는 유사도 계산 알고리즘을 적용했을때, 전혀 관계없는 결과로 나옵니다.

 

그렇다면 어떻게 해야 유사한 단어를 이해하고 그에 맞는 답을 해줄 수 있을까요?

 

 

TAGS.

Comments