본문 바로가기

AI

Recurrent Neural Network

반응형
  • 분포 가설과 분산 표현
  • Embedding
  • Recurrent layer
    • RNN
    • LSTM

자연어 처리의 큰 흐름

  • RNN
    • 순차적인 데이터 처리에 적합한 모델
    • 장기 의존성 문제
    • 기울기 소실 문제
  • LSTM 등장
    • RNN 한계 극복
      • 기억 문제 개선
      • 장기 의존성 처리 능력
    • 계산 비용이 많이 든다
    • 병렬 처리가 어렵다
  • GNU 등장
    • LSTM보다 더 간단한 구조로 복잡성이 줄어든다
  • Transformer
    • self-Attention 메커니즘
    • 병렬 처리 가능
    • RNN과 LSTM 단점을 극복
    • 시퀀스에 대한 장기 의존성을 처리

분포 가설과 분산

  • Sparse representation
    • 벡터의 특정 차원에 단어 혹은 의미를 직접 매핑하는 방식
    • 해당 데이터에서 실제로 중요한 정보가 있는 일부 요소만을 표현하고 나머지 요소는 0으로 표현하는 것
    • 표현 공간의 크기를 줄일 수 있어 계산의 효율성을 높일 수 있다
      • 하지만 정보 손실의 가능성 → 정보를 제거하는 것이기 때문에
  • Distributed representation
    • 분포 가설
      • 단어를 고정 차원의 벡터로 표현하면 유사한 맥락에서 나타나는 단어의 의미 정도 비슷하다
    • 분산 표현
      • 특정 문맥 패턴 사이에서 단어 사이의 거리를 통해 유사도를 나타낼 수 있다
      • Embedding layer는 단어의 분산을 표현하기 위한 레이어
        • 입력 데이터 x 차원 형태의 분산 표현 사전을 만든다.

Embedding layer

컴퓨터용 단어 사전이라고 이해하면 쉽다. 단어 사전에서 수많은 데이터를 거치며 각 단어의 의미를 업데이트 하는 것이다.

임베딩은 일반적으로 입력 차원을 줄이는 역할을 하기 때문에 데이터 추상화 및 표현 능력을향상시키는데 도움을 줄 수 있다.

  • Weight
    • 단어의 개수
    • Embedding size
  • embedding size를 조절해서 단어를 더 깊이 있게 표현할 수도 있다.
  • layer 역할
    • 입력으로 들어온 단어를 분산 표현으로 연결해주는 역할
    • weight에서 특정 행을 읽어오는 것과 같아 룩업 테이블이라고도 한다
    • 지나치게깊으면
      • overfitting
      • 높은 계산 비용
  • 동작원리
    • 원 핫 인코딩
      • 단어에 순번을 매겨서 표현하는 방식에 지나지 않음
      • 이 개념이 Embedding layer와 결합하여 매우 유용하게 사용되었다
    • Linear 연산
      • 원 핫 인코딩을 위한 단어 사전을 구축한다
      • 단어를 사전의 인덱스로 변환Embedding layer를 통해서 얻어지는 Dense vector는 단어의 의미적 특성을 더 낮은 차원의 벡터로 나타낸다. 이때 유사한 의미를 가진 단어를 가까운 공간에 위치하도록 만들어진다.
      • 보통 데이터 속 단어들을 단어 사전의 인덱스 숫자로 표현했다가 모델에 입력하는데 사실은 이 과정이 인덱스를 원 핫 인코딩 변환 후 Embedding layeer의 입력으로 넣어서 처리해주고 있는 과정인 것이다.
    • 단순 단어 대응 , 미분 기반 동작 아님
      • 어떤 연산 결과를 Embedding layer에 연결시키는 것은 불가능하다
        • 연산결과는 일반적으로 모델 내에서 다양한 계산과 레이어들을 거쳐서 만들어지는 값이므로 Embedding 레이어와 바로 연결 시키는 것은 형식저그로나 의미적으로나 어려움이 있다.
      • 입력에 직접 연결되게 사용해야한다.
        • 입력은 원 핫 인코딩 단어 벡터의 형태일 때가 이상적이다.

RNN

순차 데이터를 처리하기 위해 고안된 것이다. 일반적인 모델에서 학습시키면 각 요소의 전후 관계가 반영되지 않는다.

  • Recurrent Neural Network
    • 단어 입력 만큼 weight를 만드는 것이 아니라 단 하나의 Weight를 순차적으로 업데이트해나가는 것이다.
    • 단점
      • 여러 번 연산이 필요해 다른 레이어에 비해 느리다.
      • 문장이 길어지고 뒤로 갈 수록 기울기 소실 문제가 발생한다.
  • 감정 분석
    • 긍정 부정 나누기
      • 문장을 모두 읽고 최종 step Output만 확인해도 판단 가능하다
    • 문장을 생성하는 경우
      • 이전 단어를 입력으로 받아 생성된 다음 단어 즉 모든 Step에 대한 Output이 필요하

LSTM

RNN은 입력 데이터가 길어질 수록 앞쪽 정보가 뒤쪽까지 전달이 잘 되지 않아서 장기 의존성 문제가 발생한다.

  • 왜 뒤쪽 까지 전달이 안될까?
    • 입력된 단어들의 미분 값이 매우 작아지거나 커지는현상때문이다
      • 미분식이 깊어질 수록 결과 값은 0에 수렴하게 된다
    • 작아지는 경우 → Vanishing gradient → 학습 안됨
    • 커지는 경우 → Exploding Gradient → 학습 불안정

이러한 문제를 해결하기 위해서 LSTM이 등장했다. 하지만 여전히고정 된 covex vector를사용하기 완전히 해결한 것은아니다.

Embedding 벡터의 차원 수의 크기가 동일한 경우 Weight의 크기가 Simple RNN의4배가 된다

  • Long short Term Memory
  • LSTM이 gradient vanishing에 강한 이유
    • 장기 기억과단기 기억을 처리하는 부분을 구분해서 제를 해결하려고 했다.
    • Cell state
      • 핵심 아이디어
      • 전체 체인을 관통해서 흐르면서 long term memory의 역할
      • forget gate는 sigmoid 함수의 output이기 때문에 0과 1을 갖게 된다. 이 값이 1에 가까운 값을 갖게 되면 미분 값이 소멸되는 것을 최소한으로 줄일 수 있게 된다. cell State 공식에 의하면 장기 기억에 대해 큰 비중을둔다는 것이다. 이에 기울기 또한 오래 유지된다는 것!
      • 1보다는 커질 수 없기 때문에 그 값이 넘치지도 않는다
    • gate
      • forget - cell state의 정보를 얼마나 잊어버릴지 결정
      • input- 새롭게 들어온 정보를기존 cell state에 얼마나 반열할지 결정
      • Ouput gate - 새롭게 만들어진 cell state를 새로운hidden state에 얼마나 반영할지 결정

GRU

LSTM의 문제인 복잡한 연산 비용을 개선하고자 비슷한 원리이지만 LSTM 보다 단순하게 만든 구조이다.

cell state와 hidden state를합치고 forget gate와 input gate를 통합했다.

LSTM과 GRU는 성능 차이는 크게 없다. 그렇지만 LSTM은 weight가 많기 때문에 충분한 데이터가 있는 상황에적합하고GRU는 적은 데이터에도 괜찮은 학습 성능을 보여준다.

Bidirectional RNN

단 방향으로는 한계가 있어서 양방향 RNN이 제안 되었다.

  • 필요한 상황
    • 기계 번역
    • 대화
    • 문서 번역
  • weight
    • 순 방향 역방향 각각 weight를 정의하므로 RNN 2배 - 크기의 weight

마치며

RNN과 LSTM은 가장 전통적인 모델이다. 현재는 transformer 모델이 거의 자리 잡고 있으며, 추가적인 깊이 있는 공부가 필요할 것으로 보인다,

반응형

'AI' 카테고리의 다른 글

번역의 흐름  (0) 2024.01.22
Scikit-Learn Machine Learning - 머신 러닝을 알아보자  (0) 2024.01.20
A Review of Generalized Zero-Shot Learning Methods  (0) 2024.01.16
Seq2Seq(시퀀스 투 시퀀스)  (0) 2024.01.15
EDA를 왜 해야 할까?  (0) 2024.01.15