테크공부/자연어처리

모두를 위한 딥러닝 : Recurrent Neural Network

es25n.n 2024. 4. 18. 17:08

 

[목차]

  1. 시퀀셜 모델링의 이해
  2. RNN 계열 구조 이해

 

1. 시퀀셜 모델링의 이해

 

👀  RNN (Recurrent Neural Network) 신경망, 순환신경망

•  순차적으로 진행함에 따라 이전 시점에서 계산한 데이터 값까지를 모두 반영하여 데이터 값을 결정하는 방식

• RNN 구조는 input / output에 따라 다양한 영역에 적용가능

RNN의 작동 과정

 

 

 

👀 Sequential modeling :

• 문장과 같이 순차적 데이터를 처리하는 모델

•  시간이나 순서에 따른 패턴을 학습하는 데 특히 유용
• Sequential Data = 순서가 있는 데이터 (예시: 텍스트, 시계열 데이터, 음성 데이터 등)

 

 

 

2. RNN 계열 구조 이해

 

 

✨일 대 다(one-to-many) 구조

• 하나의 이미지 입력에 대해서 사진의 제목을 출력하는 이미지 캡셔닝(Image Captioning) 작업에 사용

 

✨ 다 대 일(many-to-one) 구조

•  단어 시퀀스에 대해서 하나의 출력을 하는 구조

• 입력 문서가 긍정적인지 부정적인지를 판별하는 감성 분류(sentiment classification)
• 메일이 정상 메일인지 스팸 메일인지 판별하는 스팸 메일 분류(spam detection) 

 

✨다 대 다(many-to-many) 구조

• 사용자가 문장을 입력하면 대답 문장을 출력하는 챗봇
• 입력 문장으로부터 번역된 문장을 출력하는 번역기
• 개체명 인식, 품사 태깅이 포함됨

 

 

🤦🏻‍♀️ RNN 한계점

• 순차데이터가 길어질 경우 DNN의 경사 소실 문제 (vanishing gradient) 발생

• Vanishing gradient problem : 관련 정보와 그 정보를 사용하는 지점 사이의 거리가 멀 경우 역전파시 그래디언트가 점차 줄어 학습능력이 크게 저하


🙌🏻 데이터 길이가 길어지면, 앞쪽에 있는 데이터 정보를 잊어버림! 종료 지점에 가까운 부분만을 이용하여 값을 출력한다는 의미!

 


 

 

👀 LSTM 신경망 

: 장기간의 기억 (긴 시퀀스)을 유지함으로써 긴 문장을 처리할 수 있음 

: Vanishing gradient 문제를 해결

 

• Forget gate

: ft는 ‘과거 정보를 잊기’를 위한 게이트

  ht−1과 xt를 받아 시그모이드를 취한 값 = forget gate가 내보내는 값
  시그모이드 함수의 출력 범위는 0에서 1 사이이기 때문에 값이 0이라면 이전 상태의 정보는 잊고, 1이라면 이전 상태의 정보를 온전히 기억하게 됨

 

• Input gate

: ‘현재 정보를 기억하기’ 위한 게이트

  ht−1과 xt를 받아 시그모이드를 취하고, 또 같은 입력으로 하이퍼볼릭탄젠트를 취해준 다음 Hadamard product 연산을
한 값이 바로 input gate가 내보내는 값이 됨

 

 

 

 


 

👀 GRU 신경망

- LSTM의 장점을 유지하면서도 계산 복잡성을 낮춘 셀 구조

- Gradient vanishing 문제를 극복했다는 점에서 LSTM과 유사하지만 게이트 일부(출력 게이트)를 생략한 형태.

- 즉, 항상 메모리에서 결과를 출력

- LSTM보다 간단한 구조, 성능은 LSTM/GRU 중 어떤 것이 좋은지는 실험을 해봐야 알 수 있음.

 

 

 

 

👀 Bidirectional-LSTM/GRU 신경망

: 시퀀스 데이터를 양쪽 방향으로 효과적으로 학습할 수 있도록 도와주는 모델링.

•  양방향으로 정보를 학습하는 LSTM(Long Short-Term Memory)의 변형 중 하나
• 기존의 단방향 LSTM이 현재 시점에서 이전 정보만 고려하는 데 반해, Bidirectional LSTM은 현재 시점에
서 이전과 이후의 정보를 모두 고려하여 학습

• Forward LSTM: 기존의 단방향 LSTM과 마찬가지로, 현재 시점에서 이전 정보를 학습. 입력 시퀀스를 앞에서 뒤로 향해 처리하며, 각 시간 단계에서의 은닉 상태를 계산.

 

• Backward LSTM: 입력 시퀀스를 뒤에서 앞으로 처리하는 추가적인 LSTM. 현재 시점에서 이후의 정보를 학습. 각 시간 단계에서의 은닉 상태를 계산하고, 이를 사용하여 현재 시점에서 이전과 이후의 정보를 모두 종합.

 

Bidirectional-LSTM : Forward LSTM과 Backward LSTM에서 얻은 정보를 결합하여 현재 시점에서의 최종 출력을 생성
- 양쪽 방향의 정보를 활용하여 더 풍부한 표현을 얻게 됨
- 시퀀셜 데이터의 양쪽 방향에서 나타나는 패턴이 중요한 경우에 유용하게 사용.