강의 내용
언어 모델은 다음 단어를 예측하는 것이다.
The students opened their __.
빈칸에는 books, laptop 등 다양한 단어가 들어간다.
최근에는 BERT와 같은 언어모델은 masked token을 예측하기도 한다.
I [MASK] to the [MASK].
요즘 언어 모델은 텍스트의 다양한 활용에 대해 쓰인다.
• Summarization
• Dialogue
• Autocompletion
• Machine translation
• Fluency evaluation
그럼 언어 모델이 아는 것 이 무엇인가?
• iPod Touch is produced by __ .
• London Jazz Festival is located in __ .
• Dani Alves plays with __ .
• Carl III used to communicate in __ .
• Ravens can __ .
빈칸에 들어갈 단어는 무엇인가?
언어 모델은 다음과 같이 예측 했다.
• iPod Touch is produced by Apple .
• London Jazz Festival is located in London .
• Dani Alves plays with Santos .
• Carl III used to communicate in German .
• Ravens can fly .
언어 모델의 예측은 보통 말이 된다. 하지만 항상 factually correct하지 않다.
어떠한 현상들이 있을까?
가장 challenging 인 것은 지식을 확실하게 기억할 수 없는 점이다.
그럼 이러한 단점에도 LM 모델을 활용해야하는 걸까?
전통적인 지식 베이스는 SQL 쿼리문으로 지식을 찾는다.
우리는 모든 정보를 데이터베이스에 저장하고, sql문으로 지식을 검색한다.
언어 모델은 지식 베이스처럼 행동할 수 있다. 사전 훈련된 모델에서 fine-tuning을 통해 지식을 배울 수 있다.
전통적인 기법에 비해 언어 모델은
의 장점을 가진다.
하지만 단점으로는,
라는 것들이 있다.
LM에 지식을 넣는 방법이 크게 3가지가 있다.
pretrained word 임베딩들은 entity에 대한 개념을 가지고 있지 않다.
Korea, Republic of South Korea 둘 다 같은 '한국'을 의미하지만 다 다른 embedding을 가진다.
만약 우리가 각각의 entity에 대해 같은 임베딩을 부여하면 어떻게 될까? entity linking을 잘 한다면 매우 유용할 것이다!
Washington was the first president of the United States.
문맥 단어를 보니 워싱턴은 조지 워싱턴과 연결될 가능성이 높다라는 것을 알아내야 한다.
Entity linking은 우리에게 어떤것이 텍스트에 대한 임베딩이 관계가 높은지 말해준다.
Entity embeddings는 단어 임베딩과 비슷하지만, knowledge base에서 필요한 entity를 위한 것이다.
다양한 방법들로 entity embedding들을 훈련시킨다.
• Knowledge graph embedding methods (e.g., TransE)
• Word-entity co-occurrence methods (e.g., Wikipedia2Vec)
• Transformer encodings of entity descriptions (e.g., BLINK)
가장 중요한 문제가 있다.
어떻게 다른 임베딩 공간에서 사전 학습된 entity 임베딩들을 합칠 것인가?
문맥과 entity 정보를 결합하기 위해서 fusion layer(융합 계층)을 만들면 된다.
문장의 개체와 단어 사이에 알렺ㄴ 정렬이 있다고 가정하자.
는 j번째 단어의 임베딩이다.
는 일치하는 entitiy 임베딩을 의미한다.
ERNIE 모델은 텍스트에서 인물 장소, 조직과 같은 중요한 실체들을 인식하고, 이들 간의 관계를 이해하는데 중점을 둔다.
두가지 Encoder로 구성된다.
3가지로 Pretrain 된다.
dEA = r denoising entity autoencoder from Vincent et al
BERT에 비해 ERNIE가 뛰어난 성능을 보였다고 한다.
장단점을 살펴보자,
우선 장점
단점
KnowBERT는 integrated entity linker (EL) 를 pretrain한다.
이전의 방법은 pretrained entity embeddings에 의존해야한다. 만약 fact들이 변경되었다면? 다시 train을 해야하는 불편함이 존재한다.
좀 더 direct한 방법이 있지 않을까?
외부 메모리에 접근하는 모델을 만들어보자!
장점은
Using Knowledge-Graphs for Fact-Aware
Language Modeling (KGLM) 에 대해 알아보자.
Knowledge Graph에서 언어모델 조건을 지정하는 것이 Key idea이다.
언어 모델은 확률 계산을 통해 다음 단어를 예측한다.
KGLM모델도 entity 정보를 사용해서 다음 단어를 계산하는 것이다. 여기서는 LSTM을 사용한다.
우선 "Local" knowledge graph를 먼저 만든다.
Local KG는 시퀀스와 관계있는 entity만 있는 subset을 의미한다.
위 그림은 Super Mario Land와 Nintendo, Game Boy 등의 단어와의 관계를 나타낸 Local KG이다.
훈련 중에 entity가 알려져 있기 때문에 훈련을 위해 이 entity에 주석이 달린 데이터가 있다고 가정하는 것이다.
그럼 local KG를 언제 사용해야 할까? 다음 단어를 예측하는 데 실제로 유용할 수 있는 시기를 어떻게 알 수 있나?
그럼 다음 단어는 3가지 종류가 있다.
LSTM의 hidden state를 활용하여 3가지 중 어떤 종류인지 예측한다.
만약 KG에 Super Mario Land와 Nintendo가 아무 관계가 없다면, 기존 LSTM대로 예측된다.
더 자세히 어떻게 예측하는지 알아보면,
Nintendo에는 상위 엔터티가 Super Mario Land하나 있다.
트리플 중에 가장 관련이 깊은 것을 선택한다.
Related entity (in the local KG)를 찾는 경우
New entity (not in the local KG)를 찾는 경우
Not an entity의 경우
실행은 위 다이어그램처럼 실행된다.
텍스트 시퀀스 사이의 비슷함을 학습하는 것이 다음 단어를 예측하는 것보다 쉽다는 아이디어이다.
그래서 neareest neigbor 데이터스토어에 모든 텍스트 시퀀스 표현을 저장한다.
위 그림을 통해 간단하게 이해해보자.
거리를 우선 계산한 다음 가장 가까운 k개를 찾고 정규화를 시킨다. 만약 동일한 것이 있다면 통합(Aggregation)을 한다. 그리고 test셋과 보간법을 통해 답이 Macbeth라는 것을 찾는다.
그럼 훈련 데이터를 수정하면 어떻게 될까?
비 정형 텍스트에 대해 암묵적으로 지식을 통합할 수 없을까?
가능하다. 훈련 데이터를 수정하면 되는 것이다.
해당 방법의 장점은
Weakly Supervised KnowledgePretrained Language Model 인 WKLM에 대해 알아보자.
핵심 아이디어는 참과 거짓인 지식 사이에서 모델이 구별할 수 있도록 훈련하는 것이다.
거짓인 지식을 만들어내기 위해서 같은 종류이지만 다른 entity로 멘션을 수정한다.
참인 문장 : J.K. Rowling is the author of Harry Potter.
거짓인 문장: J.R.R. Tolkien is the author of Harry Potter.
원래의 기사에서 변환될 entity를 골라서 변환시킨 다음 encoder에 넣고 참인지 거짓인지를 판단한다.
(e = entity, C = context, = true entity mention)
참인지 거짓인지를 구별하기 위해서 entity replacement loss를 사용한다.
Total loss 는 Masked language model loss와 entity replacement loss를 더함으로써 계산한다.
MLM은 token-level, entRep은 entity level로 정의된다.
Masking 만으로 factual knowledge를 배울 수 있을까?
여기 몇가지 최근 연구들이 있다.
BERT에서는 token별로 masking을 처리했다면 ERINE에서는 entity별로 masking을 하는 방법이다.
"Salient span masking"은 이전의 방법들보다 검색과 QA 작업에 대해서 좋은 성능을 보였다.
3가지 방법에 대해 장단점을 비교해보자.
LAMA는 언어 모델에 일련의 '질문'을 하고 모델이 얼마나 '답변'을 잘 하는지 평가한다.
질문들은 일반적으로 간단한 팩트 또는 일반 지식에 관한 것이다.
예를 들어서
"파리는 프랑스의 __"와 같은 문장을 주면 모델이 이 문장의 빈칸을 완성하도록 한다.
모델의 성능은 데이터 마다 달랐다.
BERT-large의 경우에는 관계의 경우가 단순한 경우에 점수가 높았다.
T-REx는 n대n의 관계가 많아 BERT의 점수가 그리 높지 않았다.
LM은 미세 조정이 되지 않은 경우 DrQA보다 낮은 점수를 보였다. DrQA는 Document Reader Question Answering 으로 질문 답변 시스템이다.
LAMA의 단점으로는 왜 모델이 성능이 좋은지 이해하기 어렵다는 단점이 있다. 진짜로 지식을 이해하여 문제를 해결하는 것인지 또는 겉으로 나타나는 표현만으로 문제를 해결하는 것인지 모른다.
언어 모델이 부정확하거나 오도하는 정보를 얼마나 자주 생성하는지 평가하는 것이다.
모델이 진짜 신뢰할 수 있는 것처럼 보이게 하지만 사실은 가짜인 정보와 개념을 사용할 수 있다.
기존 LAMA의 데이터셋에서 관계적 지식 없이도 답변할 수 있는 예제들을 제거한다.
문맥적 단서나 단어의 빈도수 등 비관계적 정보에 기반하여 정답을 유추할 수 있게 한다.
• BERT’s score on LAMA drops ~8% with LAMA-UHN
LAMA에서-UHN에서 BERT의 성능이 LAMA에서 보다 8%정도 떨어진다.
지식을 가만히 냅두고, 쿼리를 수정하는 것만으로도 정확도를 높일 수 있다.
LAMA에 대한 BERT-large의 성능은 쿼리 수정만으로 7%가 높아졌다.
이전에 배운 Knowledge-enhanced systems들이 지식 기반 downstream tasks를 얼마나 잘 수행하는지 평가하고자 한다.
task에는 아래의 것들이 있다.
그리고 이전 모델인 BERT와 비교해서 좋은 점수를 얻었다.
Open Entity에 대해서도 KnowBERT가 좋은 점수를 얻었다.
끝