RNN은 CNN과 다르게 NLP문제에 많이 사용된다! 알제? 따라서 시계열 데이터를 다루기에 최적화된 인공신경망이다.

RNN basic

기본적인 ANN구조에서 이전 시간(t-1)의 은닉층의 출력값을 다음시간(t)에 은닉층의 입력값으로 다시 집어넣는 경로가 추가된 형태! “recurrent”라는 단어에서 알 수 있듯, 현재 시간 t의 결과가 다음 시간 t+1에 영향을 미치고, 이는 다시 다음시간 t+2에 영향을 미치는 과정이 반복

장점: 이전상태에 대한 정보를 일종의 메모리 형태로 저장할 수 있음

LSTM과 vanishing gradient problem

RNN은 시계열 데이터를 다루기에 적합하지만, vanishing gradient problem이 발생

예를 들어보면 시간1에서 입력받은 데이터는 시간2,3..이렇게 새로운 데이터가 들어오면 점점 시간1의 영향력이 사라짐. 이게 바로 vanishing gradient problem!

이 문제 때문에 RNN은 장기기억력을 가지지못함 그래서 LSTM을 이용

LSTM은 은닉층의 각각의 노드를 input gate, forget gate, ouputgate로 구성된 메모리블록이라는 복잡한 구조

임베딩

머신러닝 알고리즘을 사용할 때, 그 중에서도 특히 자연어 처리 문제를 다룰 때 널리 사용되는 기

one-hot encoding을 하면 데이터가 sparse해짐, 이러한 sparse한 데이터를 dense하게 바꿔주는데 embedding

Char-RNN

하나의 글자 character를 RNN의 입력값으로 받고, RNN은 다음에 올 글자를 예측하는 문제

그래서 RNN의 타겟 데이터를 인풋문장에서 한 글자씩 뒤로 민 형태로 구성하면된다!

hello라는 문장을 학습시킬 때, RNN의 (인풋,타겟)쌍을 (h,e) (e,l) (l,l) (l,o)로 구

Exploding gradient problem

RNN이 순환 연산구조를 갖기 때문에 exploding gradient problem이 발생하기 쉬움

이걸 해결하는 방법? → gradient clipping!

임계치 설정을 통해 gradient가 발산하는 현상을 막을 수 있다.

Bidirectional Recurrent Neural Networks(RNNs)

이전 타임 스텝뿐만 아니라 다음 타임 스텝까지 고려하는 확장된 RNN

“푸른 하늘에 00이 떠있다”라는 예문, 00을 예측하기 이해 이전의 푸른하늘 뿐만아니라 떠있다도 같이 사용

RNNs의 다양한 응용 형태

One to one

  • 가장 기본적인 구성형태
  • 1개의 인풋, 1개의 아웃풋
  • Char-RNN이 one-to-one의 대표적인 형태

One to many

  • 1개의 timestep을 인풋으로 받아서 여러개의 time-step의 아웃풋 출력
  • image captioning등이 예시

Many to one

  • 여러개의 time-step을 인풋으로 받아서 1개의 time-step을 아웃풋으로 출력
  • sentiment classification등이 예시
  • 막 글이 여러개 쭈루루룩 있을 때, 그 글을 읽고 분석한 뒤 하나의 감정으로 출력

Many to many

  • 여러개의 time-step을 인풋으로 받고, 여러개의 time-step을 아웃풋으로 출력
  • 바로 출력이냐 아니냐 두가지로 나눔
    • Seq2Seq: machine translation등에 이용, 인풋의 특징을 인코딩하고 순차적으로 디코딩
    • video classification에 이용, 해당 time-step의 인풋이미지에 대한 classification을 동일한 시간축내에서 수행

'ML,DL' 카테고리의 다른 글

CNN(2)  (0) 2024.05.21
CNN  (0) 2024.05.21
코코자