24. 딥러닝 레이어의 이해(2)

j_hyun11·2022년 2월 9일
0

FUNDAMENTAL

목록 보기
8/11

분포 가설과 분산 표현

1. 희소 표현(Sparse Representation)

  • 벡터의 특정 차원에 단어 혹은 의미를 직접 매핑하는 방식

2. 분포 가설

  • 유사한 맥락에서 나타나는 단어는 그 의미도 비슷하다라는 가정을 함

3. 분산 표현

  • 유사한 맥락에 나타난 단어들끼리는 두 단어 벡터 사이의 거리를 가깝게 하고, 그렇지 않은 단어들끼리는 멀어지도록 조금씩 조정한 단어 벡터
  • 단어 간의 유사도를 계산으로 구할 수 있음

Embedding 레이어

  • 단어의 분산 표현을 구현하기 위한 레이어 ex. 컴퓨터용 단어 사전
  • Embedding 레이어만을 훈련하기 위한 방법 : ELMo, Word2Vec, Glove, FastText 등
  • Weight는 단어의 개수, Embedding 사이즈로 정의됨
  • 입력으로 들어온 단어를 분산 표현으로 연결해 주는 역할 -> 룩업 테이블(Lookup Table)
  • 원-핫 인코딩을 위한 단어 사전을 구축하고 단어를 사전의 인덱스로 변환만 해주면 Embedding 레이어를 완벽하게 사용할 수 있음

주의사항

  • Embedding 레이어는 단어를 대응만 한 것이라서 미분이 불가능함
  • 따라서 어떤 연산 결과를 Embedding 레이어에 연결시키는 것은 불가능
  • 원-핫 인코딩된 단어 벡터의 형태인 입력에 직접 연결되게 사용해야 함

원-핫 인코딩(One-hot Encoding)

  • 텍스트를 유의미한 숫자(벡터)로 바꾸는 가장 손쉬운 방법론
  • N개의 단어를 각각 N차원의 벡터로 표현하는 방식
  • 단어 하나에 인덱스 정수를 할당한다는 점에서 ‘단어 주머니(bag of words, BoW)’라 부르기도 함

단점

  • 컴퓨터가 단어의 의미 또는 개념 차이를 전혀 담지 못함
  • ‘차원의 저주(curse of dimensionality)’ 문제 : 하나의 단어를 표현하기 위해 말뭉치(corpus)에 존재하는 수만큼의 차원을 가지게 되면 계산 복잡성이 기하급수적으로 늘어남

Recurrent 레이어 (1) RNN

  • 문장이나 영상, 음성 등의 데이터-> 순차적인(Sequential) 특성
  • 딥러닝에서 말하는 시퀀스 데이터는 순차적인 특성을 필수로 가짐
  • Recurrent Neural Network 또는 Recurrent 레이어(이하 RNN)
  • (입력의 차원, 출력의 차원)에 해당하는 단 하나의 Weight를 순차적으로 업데이트하는 것
  • RNN은 스스로를 반복하면서 이전 단계에서 얻은 정보가 지속되도록 한다.
  • 문장을 모두 읽은 후 최종 Step에 대한 Output만 필요한 경우,(return_sequences=False)]
  • 문장을 생성했을 때 든 Step에 대한 Output이 필요한 경우,(return_sequences=True)

단점

  • 한 문장을 읽고 처리하는 데에도 여러 번의 연산이 필요해 다른 레이어에 비해 느림

딥러닝 네트워크는 에러에 대한 각 가중치의 미분을 구해 업데이트하는 백프로퍼게이션을 통해 학습할 때,
1. 기울기 소실(Vanishing Gradient) 문제

  • 입력의 앞부분이 뒤로 갈수록 옅어져 손실이 발생
  • 미분 값이 너무 작음
  • 가중치 업데이트가 잘 안되니 학습이 거의 이뤄지지 않음
  1. Exploding Gradient
  • 미분 값이 너무 큼
  • 가중치 업데이트가 너무 크니 학습이 불안정

Recurrent 레이어 (2) LSTM

  • Long Short-Term Memory
  • 기울기 소실 문제를 해결하기 위해 고안된 RNN 레이어
  • sigmoid함수의 output이기 때문에 (0,1)의 값을 갖게 되는데, 1에 가까운 값을 갖게되면 미분값(gradient)이 소멸(vanished)되는 것을 최소한으로 줄일 수 있게됨

LSTM은 3개의 Gate Layer

  • Forget Gate Layer : cell state의 기존 정보를 얼마나 잊어버릴지를 결정하는 gate
  • Input Gate Layer : 새롭게 만들어진 cell state를 기존 cell state에 얼마나 반영할지를 결정하는 gate
  • Output Gate Layer : 새롭게 만들어진 cell state를 새로운 hidden state에 얼마나 반영할지를 결정하는 gate

GRU(Gated Recurrent Unit)

  • LSTM의 Forget Gate와 Input Gate를 Update Gate로 합침
  • Cell State와 Hidden State를 합쳤다.

참고 : https://dgkim5360.tistory.com/entry/understanding-long-short-term-memory-lstm-kr

양방향(Bidirectional) RNN

  • 진행 방향이 반대인 RNN을 2개 겹쳐놓은 형태
  • tf.keras.layers.Bidirectional()
  • 주로 기계번역 같은 테스크에 유리

0개의 댓글