RNN(Recurrent Neural Network)
RNN은 입력과 출력을 시퀀스 단위로 처리하는 시퀀스(Sequence) 모델로 유닛간의 연결이 순환적 구조를 갖는 특징을 가지고 있다.
RNN 등장배경
기존 모델의 한계점
- 전부 은닉층에서 활성화 함수를 지난 값은 오직 출력층 방향으로만 향함(한 방향)
- 시퀀스 데이터 처리 성능이 낮음
- 가중치가 데이처의 처리되는 순서와 상관없이 업데이트 되어 이전 샘플을 기억하지 못함
- 피드 포워드 신경망은 입력의 길이가 고정되어 있음
RNN의 기존 모델과의 차이점
- 결과값을 출력층 방향으로도 보내면서, 다시 은닉층 노드의 다음 계산의 입력으로 보낸다
- 다양한 길이의 입력 시퀀스를 처리할 수 있다
- 자연어 처리에 대표적으로 사용되는 인공 신경망
- 타임스텝: 입력 시퀀스의 길이(input_length)
RNN의 유형
- One to one(SimpleRNN): 가장 기본적인 모델
- One to many: 하나의 이미지를 문장으로 표현
- Many to one: 단어 시퀀스에 대해서 하나의 출력을 하는 구조 ex. 감정분류, 주가등락을 통한 회사 파산 여부 분류
- Many to many
- 여러 개의 단어를 입력받아 여러 개의 단어로 구성된 문장을 명사, 동사, 형용사 등으로 구분 반환
- 입력 시퀀스가 다른 시간 단계에서 비디오의 각 프레임의 기능 표현인 비디오 분류에도 사용
RNN의 용어
셀(cell): RNN의 은닉층에서 활성화 함수를 통해 결과를 내보내는 역할을 하는 노드(RNN의 반복 단위, 개별)
메모리셀(memory_cell): 이전의 값을 기억하는 일종의 메모리 역할을 수행하는 셀(RNNcell, 전체)
은닉상태(hidden_state): 은닉층의 메모리셀에서 나온 값이 출력층 방향 또는 다음 시점의 자신(다음 메모리셀)에게 보내는 상태
RNN의 역전파: BackPropagation Through Time (BPTT)
- 모델에 맞는 역전파 방법으로 기울기(오차의 변화에 대한 가중치의 변화)를 찾아 성능을 높임, 경사하강법과 오차 역전파를 이용해 학습
- RNN은 기존 신경망의 역전파롸 달리 타임 스텝별로 네트워크를 펼친 다음 역전파 알고리즘 사용
- 타임스텝의 역방향으로 역전파를 통해 가중치 비율을 조정하여 오차 감소 진행
- 오차 값들을 합한 값을 역전파함으로써 현재시간의 오차를 과거시간의 상태까지 역전파
RNN의 학습과정
-
벡터화(Vectorization)
입력값을 영어로, 출력값을 한국어로 번역할 때
문자열 데이터를 벡터 형태 변환하여 입력
- 매개변수
- num_words : 단어 빈도에 따라 유지할 최대 단어 수입니다. 가장 일반적인 단어 만 유지됩니다.
- filters : 각 요소가 텍스트에서 필터링될 문자인 문자열입니다. 기본값은 문자를 제외한 모든 구두점과 탭 및 줄 바꿈 '입니다.
- lower : 부울. 텍스트를 소문자로 변환할지 여부입니다.
- split : str. 단어 분할을 위한 구분 기호입니다.
- char_level : True이면 모든 문자가 토큰으로 처리됩니다.
- oov_token : 주어진 경우, 그것은 word_index에 추가되고 text_to_sequence 호출 중에 어휘 밖의 단어를 대체하는 데 사용됩니다.
- 벡터화 과정
1) Tokenizer 인스턴스를 생성
2) fit_on_texts와 word_index를 사용하여 key value로 이루어진 딕셔너리를 생성
3) texts_to_sequences를 이용하여 text 문장을 숫자로 이루어진 리스트로 변경
4) pad_sequences를 이용하여 리스트의 길이를 통일화
-
활성화함수
입력값으로 영어를, 출력값으로 한국어를 번역할 때
출력층의 활성함수로 'softmax' 사용하며 각 확률로 나타난 점수는 데이터가 해당 품사 중 하나에 속할 확률을 의미 (총합은 1)
RNN의 한계점
- 기울기 소실/폭발 문제
복잡한 연산으로 인한 기울기 문제 발생
시간을 통한 역전파는 일반 역전파보다 훨씬 많은 곱셈과 연산 도입
해결방법: Truncated-Backpropagation Through Time
- 장기 의존성
RNN은 비교적 짧은 시퀀스에 대해서만 효과를 보임
시점이 길어질수록 앞의 정보가 뒤로 충분히 전달되지 못하는 현상
해결방법: Long Short Term Memory Network(LSTM)