티스토리 뷰

본 포스팅은 『텐서플로2와 머신러닝으로 시작하는 자연어처리』를 참고하여 만들어졌습니다.
https://wikibook.co.kr/nlp-tf2/

 

1. 기계 이해

 

기계 이해(Machine Cimprehension)는 기계가 어떤 텍스트에 대한 정보를 학습하고 사용자가 질의를 던졌을 때 그에 대해 응답하는 문제다. 다시 말하자면 기계가 텍스트를 이해하고 논리적 ㅌ추론을 할 수 있는지 데이터 학습을 통해 보는 것이다.

 

텍스트

이순신(李舜臣, 1545년 4월 28일 ~ 1598년 12월 16일 (음력 11월 19일))은 조선 중기의 무신이었다. 본관은 덕수(德水), 자는 여해(汝諧), 시호는 충무(忠武)였으며, 한성 출신이었다. 문반 가문 출신으로 1576년(선조 9년) 무과(武科)에 급제[1]하여 그 관직이 동구비보 권관, 훈련원 봉사, 발포진 수군만호, 조산보 만호, 전라좌도 수군절도사를 거쳐 정헌대부 삼도수군통제사에 이르렀다.
함경도 동구비보권관(董仇非堡權管), 1581년 발포 수군만호(鉢浦水軍萬戶)가 되었다가 전라좌수영의 오동나무를 베기를 거절한 일로 좌수사 성박의 미움을 받기도 했다. 이후 1583년 남병사의 군관과 건원보권관, 훈련원참군, 1586년 사복시주부를 거쳐 조산보만호 겸 녹도둔전사의(造山堡萬戶兼鹿島屯田事宜)로 부임했다. 조산만호 겸 녹둔도사의 재직 중 1587년(선조 20년) 9월의 여진족의 사전 기습공격으로 벌어진 녹둔도전투에서 패하여, 북병사 이일의 탄핵을 받고 백의종군(白衣從軍)하는 위치에 서기도 했다. 그 뒤 두번째 여진족과의 교전에서 승전, 복직하였다. 그 뒤 전라관찰사 이광(李洸)에게 발탁되어 전라도 조방장, 선전관 등을 역임했다. 1589년 정읍현감 재직 중 유성룡의 추천으로 고사리첨사(高沙里僉使)가 되고, 절충장군(折衝將軍), 만포진첨사(滿浦鎭僉使), 진도군수 등을 거쳐 전라좌도수사가 되어 임진왜란을 만나게 되었다.

https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%88%9C%EC%8B%A0
질문

이순신은 어느 시대의 위인인가?

 

기계한테 위와 같은 텍스트에 대한 내용을 학습시켰다고 하자. 그리고 '이순신은 어느 시대의 위인인가?'라는 텍스트와 관련이 있는 질문을 기계에게 한다. 그러면 기계는 위 텍스트의 내용을 토대로 추론해서 이에 대한 응답을 텍스트 내에서 하거나 정답 선택지를 선택하는 방식으로 답하게 된다.

이 문제는 앞서 설명한 자연어 처리에 대한 개념을 모두 활용한다고 봐도 무방하다. 우선 텍스트와 질의에 대한 정보를 알기 위해서는 각 문장의 의미 벡터를 추출할 수 있어야 한다. 이 경우에는 단어 표현 벡터를 활용해 문장의 의미를 표현하는 벡터를 추출할 수 있다.

그리고 텍스트와 질의에 대한 문장 정보 간의 관계가 어떠한지를 보기 위해 문장 유사도를 구하는 방식이 필요할 수 있다. 경우에 따라서는 반대로 질의 내용에 대한 정보를 기반으로 텍스트에 대한 언어 정보를 새롭게 새성하고자 할 수도 있는데 이 방식은 언어 생성 모델과 밀접한 관련이 있다.

또한 이런 질의 정보 데이터를 정리해서 질의한 내용에 대한 응답을 선택할 수 있게 정답에 대한 내용을 분류할 수도 있다. 이 경우 텍스트 분류 모델을 응용할 수 있다.

기계 이해 모델 중 하나인 '메모리 네트워크'를 이용해 앞에서 설명한 자연어 처리 기술이 기계 이해에 어떻게 활용될 수 있는지 보여준다.

메모리 네트워크 전체구조

 

Memory Network

An Ed edition

reniew.github.io

메모리 네트워크 구조를 통해 개념을 간단히 알아보자. 우선 해당 모델은 입력값으로 질의를 입력했을 때 텍스트 정보를 통해 어떻게 답해줄 것인지를 본다. 우선 정보를 주기 위한 문장들이 주어지는데 이 문장들은 단어표현과 같은 방식으로 문장 표현 벡터를 만든다. 이후에 이 문장 벡터들을 모아서 두 개의 행렬로 만드는데, 이렇게 만든 행렬을 통해 질의와의 유사도를 측정한다. 유사도를 측정한 후 유사도가 높은 정보에 가중치를 줘서 출력을 만들어 낸다. 이러한 과정을 학습시키면서 각 질의가 정보 문장 중 어떤 문장과 관련이 높은지 그리고 문장 안에서도 어떠한 단어가 질의에 대한 답인지를 예측할 수 있게 한다.

메모리 네트워크의 사례를 보면 알 수 있듯이 기계 이해는 자연어 처리 기술에 대한 개념이 총망라된 학습 태스크라고 보면 된다. 그렇기 때문에 앞에서 살펴본 다른 자연어 처리 태스크와 비교하면 어렵고 더욱 복잡한 모델링을 필요로 한다. 기계 이해는 아직 연두 단계에 있고  QA 태스크과 관련된 여러 대회를 통해 많은 모델들이 제시되고 있다. 이러한 대회 중 대표적으로 SQuAD를 사례로 들 수 있다.

 

2. 기계 이해를 위한 QA 데이터셋

기계 이해 테스크에서는 대체로 자연 언어를 이해하는 과제에서 기계가 텍스트 내용에 대해 추론을 잘 하는지 파악하는 목적에서 학습하게 된다. 그렇기 때문에 이 태스크를 QA태스크라고 부르며 QA형태의 데이터셋을 활용해 기계에게 학습한다. 이러한 데이터셋은 위키핑디아나 뉴스 기사를 가지고 데이터를 구성하며 대체로 텍스트와 지문, 정답 형태로 구성되어 있다.

 

(1) bAbI

바비(bAbI) 데이터셋은 페이스북 AI연구팀에서 기계가 데이터를 통해 학습해서 텍스트를 이해하고 추론하는 목적에서 만들어진 데이터 셋이다. 총 20가지 부류의 질문 내용으로 구성돼있다. 20가지의 부류는 문장의 내용을 이해하고 논리적인 관계를 파악 할 수 있어야 정답을 맞출 수 있게 설계되어 있다.

bAbI의 경우 기계 모델이 사람이 문제를 풀었을 때보다 더 좋은 점수를 내면서 이미 해결된 부분으로 알려져 있다.

 

bAbI - Facebook Research

The bAbI Project is organized towards the goal of automatic text understanding and reasoning.

research.fb.com

(2) SQuAD

SQuAD(Stanford Question Answering Dataset)는 기계 이해 테스크에서 가장 유명한 데이터셋 중 하나이다. 스탠포드 자연어 처리 연구실에서 만들었으며 위키피디아에 있는 내용을 크라우드 소싱해서 QA 데이터셋으로 만들었다. 46개의 주제에 대해 약 10만 개의 질문 데이터셋으로 구성돼 있으며 인물, 시간, 장소, 이유 등 다양한 형태의 질문이 있다. 그뿐만 아니라 약 10만 개의 어휘와 짧은 텍스트에서부터 400단어가 넘는 긴 텍스트까지 다양한 길이의 지문을 포함하고 있어 상당히 어려운 분야로 손꼽힌다.

 

 

The Stanford Question Answering Dataset

What is SQuAD? Stanford Question Answering Dataset (SQuAD) is a reading comprehension dataset, consisting of questions posed by crowdworkers on a set of Wikipedia articles, where the answer to every question is a segment of text, or span, from the correspo

rajpurkar.github.io

3. Visual Question Answering(VQA)

앞서 설명한 내용은 기계가 텍스트 정보를 이해해서 질의를 던졌을 때 응답하는 학습으로 진행됐다. 만약 기계가 텍스트가 아닌 이미지를 이해하고 질의를 던지면 어떻게 될까? Visual Question Answering(VQA)은 이미지에 대한 정보와 텍스트 질의를 통해 이미지 컨텍스트에 해당하는 응답을 알려주는 태스크다.

VQA 태스크를 해결하기 위해서는 이미지에서 정보를 추출하는 모델(Image Embedding Model)과 질문 텍스트에서 정보를 추출해내는 자연어 처리 모델이 함께 사용되어야 한다. 각 두 정보에 대해 모델을 통해 추출하고 난 후 두 정보를 조합해서 답을 추론하는 모델을 만들어 정답을 찾고자 한다. 이 같은 학습을 여러 데이터를 가지고 한다면 이미지 정보에 대해 질문하게 됐을 때 정답을 추론할 수 있는 인공지능 모델을 만들 수 있을 것이다.

 

 

VQA: Visual Question Answering

Following COCO, we have divided the test set for VQA v2.0 into a number of splits, including test-dev, test-standard, test-challenge, and test-reserve, to limit overfitting while giving researchers more flexibility to test their system. Test-dev is used fo

visualqa.org

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함