Tensorflow 2 NLP(자연어처리)/추가적으로 필요한 개념

[1-4] DAN(Deep Averaging Network)란? (+Dropout)

Suhd 2021. 11. 12. 22:30

http://file:///C:/Users/gypsi/Downloads/DAN+%EB%85%BC%EB%AC%B8.pdf

다음 링크에서 관련 논문과 간단한 정리를 볼 수 있다.

https://medium.com/tech-that-works/deep-averaging-network-in-universal-sentence-encoder-465655874a04

 

Deep Averaging network in Universal sentence encoder

Word embeddings are now state of art for doing downstream NLP tasks such as text classification, sentiment analysis, sentence similarity…

medium.com

 

내용을 정리해 보자면,

가장먼저, Composition function 에 대한 이해가 필요하다.

Composition function은 벡터 공간 모델을 얻기 위해 필요하다.

https://ko.wikipedia.org/wiki/%EB%B2%A1%ED%84%B0_%EA%B3%B5%EA%B0%84_%EB%AA%A8%EB%8D%B8

 

벡터 공간 모델 - 위키백과, 우리 모두의 백과사전

벡터 공간 모델(―空間―, 영어: vector space model) 또는 단어 벡터 모델(單語―, 영어: term vector model)은 텍스트 문서를 단어 색인 등의 식별자로 구성된 벡터로 표현하는 대수적 모델이다. 정보 검색

ko.wikipedia.org

 

그리고 이 함수는 '여러개의 단어벡터를 하나의 벡터로 만드는 역할' 을 한다. 즉, 문장을 벡터로 만드는 역할이다.

Composition function에는 2가지 종류가 있다.

1. Unordered : bag of words인 경우. (단어 순서 상관 없음)

2. Syntactic : 단어 순서와 문장 구조를 고려하는 경우

Deep Averaging network(DAN)는 이름에서 볼 수 있듯이 Average를 이용하기 때문에 Unordered 하다.

작동 구조는 책에 나와있듯이 모든 단어 벡터를 다 더하고 평균을 낸 후 하나의 벡터로 만든 후, 문서 분류를 하고 손실 함수를 줄이는 과정으로 이어진다.

+ 손실 함수를 줄이는 과정 이해 ⇒ 손실 함수Cross-entropy

https://truman.tistory.com/164

 

손실 함수(Loss Function)와 최적화(Optimizer)

1. 손실 함수 (Loss Function) 손실 함수는 실제값과 예측값의 차이(loss, cost)를 수치화해주는 함수이다. 오차가 클수록 손실 함수의 값이 크고, 오차가 작을수록 손실 함수의 값이 작아진다. 손실 함

truman.tistory.com

https://3months.tistory.com/436

 

Cross-entropy 의 이해: 정보이론과의 관계

Cross-entropy 의 이해: 정보이론과의 관계 1. 손실함수로서의 Cross-entropy 딥러닝에서 분류 모델에 대한 손실 함수로 cross-entropy 혹은 binary entropy 나 log loss 라는 것을 사용하게 된다. 손실함수로서의..

3months.tistory.com

이 DAN은 문장 내 단어와 단어 사이의 유사도 파악에 좋은 성능을 보인다.

하지만 단어 순서를 고려하지 않아 생기는 문제와 이중부정 문장에는 대처하지 못한다.

ex) Man bites dog 과 Dog bites man 구분 불가

추가적으로, 다음 논문 에서는 DAN에서의 2가지 중요한 observations을 찾을 수 있다.

1. 다양한 Dropout을 이용해 정확도를 향상시킬 수 있다는 것.

2. 학습된 임베딩과 딥 네트워크를 활용이 무엇보다 중요하다는 것.

 

DAN+논문.pdf
0.30MB

 

 

+ 그럼 여기서 Dropout이란 무엇인가?

: training 과정 중 과적합(Overfitting)을 방지하기 위한 방법.

간단히 요약하면,

1. 과적합이 일어나는 이유는 각 요소들의 가중치들이 다 높기 때문이다.

(사공이 너무 많으면 배가 산으로 간다.)

2. 임의로 몇개의 요소들의 가중치를 0으로 만들면서 학습한다.

3. 원하는 목적에 맞는 가중치가 살아남게 만드는게 최종 목표.

⇒ 즉, pre-trained embeddings 가 있다면 가중치 설정이 쉬워지고 정확도 향상이 가능해진다.

다음은 직관적 설명이 담긴 사진이다.

Dropout 예시 (출처: https://algopoolja.tistory.com/50)