스터디/AI

[이론] 순환신경망 이론 RNN

_leezoee_ 2023. 1. 27. 14:49

목차

1. 순환신경망이란 무엇인가.

2. 기울기 소실 문제

3. LSTM

 

순환신경망

 

순환신경망은 머신러닝 지도학습  방법 중 시계열 데이터 분석에 사용하는 Recurren Neural Netsorks(RNN)  알고리즘을 말한다. 

 

머신러닝은 지도학습, 비지도학습, 강화학습으로 나눌 수 있다. 이에 대해 보기 좋게 정리된 블로그 글은 아래를 참조하면 좋을듯하다.

https://ebbnflow.tistory.com/165

 

[인공지능] 지도학습, 비지도학습, 강화학습

머신러닝의 학습 방법은 크게 3가지로 분류됩니다. 지도학습 비지도학습 강화학습 ● 지도학습(Supervised Learning) 지도 학습은 말 그대로 정답이 있는 데이터를 활용해 데이터를 학습시키는 것입

ebbnflow.tistory.com

 

* 일대다(One to Many) 관계 : 입력 하나에 다수의 출력이 나옴

* 다대일(Many to One) 관계 : 다수의 입력에 하나의 출력이 나옴. 감정분석이 해당. 많은 텍스트를 통한 판단(확률)

ex) 구글 번역기가 rnn 인지는 모르겠지만, 다음 단어를 번역하기 위해 이전 단어의 단기적인 정보가 필요한 것을 볼 수 있음. 

 

RNN 이론적 설명은 아래 튜토리얼을 참고하면 좋다.

https://wikidocs.net/22886

 

08-01 순환 신경망(Recurrent Neural Network, RNN)

RNN(Recurrent Neural Network)은 입력과 출력을 시퀀스 단위로 처리하는 시퀀스(Sequence) 모델입니다. 번역기를 생각해보면 입력은 번역하고자 하는 단어…

wikidocs.net

 

 

기울기 소실

 

RNN에 존재하는 큰 문제인 기울기 소실.

 

가중치는 신경망이 시작할 때 0에 가까운 무작위의 값으로 배정이 되는데, 신경망이 학습을 거쳐 가중치가 얼마가 되어야 할 지 식별한다. RNN은 그 특성 상 0에 가까운 무작위의 가중치로 시작한다면 여러번 그 값을 곱하게 되고 점점 작아진 값을 가지게 된다. => 신경망이 시작하면 특정 기울기가 신경망을 지나 역전파가 되는데, 이렇게 뒤로 거슬러 가서 기울기는 작아지고 또 작아지고 반복하게 되는 것. (역전파가 될 때, 기울기는 업데이트를 위해 사용되는데, 기울기가 작아질수록 네트워크가 가중치를 업데이트 하는게 더 힘들어진다. ) => 네트워크에서 가장 뒤편에 있는 레이어에는 이런 문제가 항상 발생하게 되는 것. 

 

가중치가 작다면 기울기 소실(Vanishing), 가중치가 크다면(Exploding) 기울기 폭주 문제가 파생된다.

 

LSTM

 

소실, 폭주하는 그 순환가중치를 1로 만드는 초심플한 방법을 고안.

 

출처 : http://colah.github.io/posts/2015-08-Understanding-LSTMs/

 

Understanding LSTM Networks -- colah's blog

Posted on August 27, 2015 <!-- by colah --> Humans don’t start their thinking from scratch every second. As you read this essay, you understand each word based on your understanding of previous words. You don’t throw everything away and start thinking

colah.github.io

 

[순환신경망 내부]

 

[LSTM 내부]

 

LSTM 모듈 하나는 세 개의 입력을 가지고 두 개의 출력을 내보낸다. 셀(모듈)에 있는 모든 건 벡터 값이다.

크게 네가지의 게이트로 나누어 볼 수 있다. 

 

[LSTM 셀 구조]

 

 

1. 망각 게이트 (Forget Gate) :  과거 정보를 버릴지 말지 결정하는 게이트로 시그모이드 레이어에 의해 결정 된다. 

2. 입력 게이트 (Input Gate) : 현재 정보를 기억하기 위한 게이트로 현재 cell state 값에 얼마나 더할지 결정한다.

3. Update : 과거 cell state를 새로운 state 로 업데이트 하는 과정을 진행.

4. 출력 게이트(Output Gate) : 마지막 출력 값을 결정하는 과정으로 최종적으로 얻어진 cell state  값을 얼마나 뺄지 결정한다.