함께하는 데이터 분석

[Find-A] LSTM, GRU, 임베딩 본문

학회 세션/파인드 알파

[Find-A] LSTM, GRU, 임베딩

JEONGHEON 2022. 9. 21. 20:35

순환 신경망의 한계 및 개선 방안

  • RNN은 어느 정도 이상부터는 결과가 한계에 부딪힘
  • 이유는 타임 시퀀스가 늘어나며 역전파 시 하이퍼볼릭 탄젠트 함수의 미분 값이 0 ~ 1 사이의 값이 나오고 여러 번 곱해져 기울기 값이 역전파될 때 타임 시퀀스가 길어질수록 모델이 제대로 학습을 하지 못하는 기울기 소실(vanishing gradient)이라는 현상이 일어남

순환 신경망에서는 활성화 함수를 바꾸는 경우도 있지만 개선 모델인 LSTM과 GRU를 사용

 

 

LSTM(long short-term memory)

  • 기존의 순환 신경망 모델에 장기기억을 담당하는 부분을 추가한 것
  • 기존에는 은닉 상태만 있었다면 셀 상태라는 이름을 가지는 전달 부분을 추가

 

GRU(gated recurrent unit)

  • LSTM보다 간단한 구조를 가지고 있음에도 성능면에서는 밀리지 않는 RNN의 변형 형태
  • LSTM과 달리 셀 상태와 은닉 상태를 분리하지 않고 은닉 상태 하나로 합침

 

임베딩

파이토치 코드로 구현해보기 전에 임베딩을 알아야 함

 

이전까지는 알파벳이나 문자를 One-Hot 벡터로 바꿔서 연산을 했지만 이 방법은 의미적 연산과 확장성이라는 측면에서 한계점 존재

 

One-Hot 벡터 간의 내적은 항상 0이므로 문장 간의 의미적 차이나 유사도를 구하는 것이 불가능

 

의미적 연산의 대표적인 지표로 코사인 유사도가 있는데 분자가 두 벡터의 내적으로 계산이 됨

 

위의 그림처럼 python이라는 단어가 [0 1 0 0 0], ruby가 [0 0 0 1 0], One-Hot은 [0 0 0 0 1]이라는 원-핫 벡터로 정의되었다면 이 두 프로그래밍 언어의 내적은 0

 

즉, 언어가 프로그래밍 언어라는 공통적인 의미를 가지고 있어도 수치적으로 0이 됨

 

내적은 두 벡터가 일치하지 않는 이상 수치가 0이 되므로 연산을 통해 의미를 찾아낼 수 없음

 

그리고 하나의 개념이 추가될 때마다 원-핫 벡터의 길이가 늘어나야 하므로 확장성 면에서 한계를 지님

 

이를 극복하기 위한 방법이 임베딩(embedding)

 

알파벳이나 단어 같은 기본 단위 요소들을 일정한 길이를 가지는 벡터 공간에 투영

 

워드 임베딩은 일정한 크기의 벡터에 단어들을 투영하는 방법

 

위의 그림처럼 python과 ruby 두 단어는 프로그래밍 언어라는 의미적인 공통점이 있어 값이 유사하지만 word와는 값에서 차이가 있음

 

단어들을 벡터화하는 것을 word2vec이라고 함

 

대표적인 기법에는 CBOW, skip-gram이 존재

 

 

CBOW(continuous bag-of-words)

CBOW 방식은 주변 단어들로부터 가운데 들어갈 단어가 나오도록 임베딩하는 방식

 

예를 들면 그림의 예시 문장에서 quick, brown, jumps, over라는 단어가 들어왔을 때 은닉층을 하나 통과하면 fox가 나오도록 모델을 학습하고 그 은닉층의 벡터를 임베딩으로 사용하는 것

 

그러면 주위 단어들과 fox와의 관계가 학습되고, 문장 또는 문선의 모든 문장을 위와 같은 방식으로 학습하면 그 문성에서 사용한 단어들이 의미적으로 임베딩 됨

 

예시로 든 문서에 'The quick brown dog jumps over the lazy fox'라는 문장이 있다면 dog와 fox는 유사한 개체로 인식되고 벡터 공간상으로도 가까운 위치에 임베딩 될 것임

 

 

skip-gram

skip-gram 모델은 CBROW와는 반대로 중심 단어로부터 주변 단어들이 나오도록 모델을 학습하여 임베딩 벡터를 얻는 방식

 

즉 fox가 들어왔을 때 quick, brown, jumps, over라는 단어들이 나오도록 학습하는 것


https://www.hanbit.co.kr/store/books/look.php?p_code=B7818450418 

 

파이토치 첫걸음

딥러닝 구현 복잡도가 증가함에 따라 ‘파이써닉’하고 사용이 편리한 파이토치가 주목받고 있다. 파이토치 코리아 운영진인 저자는 다년간 딥러닝을 공부하고 강의한 경험을 살려 딥러닝의

www.hanbit.co.kr