[Deep Learning: 신경망의 기초]RNN(Recurrent Neural Network)
2 minute read
순환 신경망(RNN)
순차 데이터
- 많은 응용
- 심전도 신호를 분석하여 심장 이상 유무 판정
- 주식 시세 분석하여 사고 파는 시점 결정
- 음성 인식을 통한 지능적인 인터페이스 구축
- 기계 번역기 또는 자동 응답 장치 제작
- 유전자 열 분석을 통한 치료 계획 수립 등
순차 데이터의 표현
- 순차 데이터의 일반적 표기
- 벡터의 요소가 벡터
- 온라인 숫자의 요소는 1차원, 심전도의 요소는 3차원
- 예를 들어 심전도 신호는 초당 100번 샘플링하고 2분간 측정한다면 길이는 T=12000, x = ((0.3, 0.1, 0.2), …)^T
- 위의 예시의 x가 여러개 모인 것이 훈련집합 X가 된다.
- 대표적인 순차 데이터인 문자열의 표현
- 기계번역의 경우
- 입력 x가 “April is the cruelest month.”이고
- 출력 y가 “사월은 가장 잔인한 달”일 때, 어떻게 표현할까?
- 사전(dictionary or term)을 사용하여 표현
- 사전 구축 방법
- 사람이 사용하는 단어를 모아 구축
- 또는 주어진 말뭉치를 분석하여 단어를 자동 추출하여 구축
- 사전을 사용한 텍스트 순차 데이터의 표현 방법
- 단어가방(BoW, Bag of Words)
- 원핫 코드(one-hot code): 특정 기준에만 1, 나머지는 0
- 단어 임베딩(word embedding): 워드 임베딩을 가장 많이 씀
- 단어 가방
- 단어 각각의 빈도수를 세어 m차원의 벡터로 표현(m은 사전 크기)
- 한계
- 정보 검색에 주로 사용되지만, 기계 학습에서는 부적절
- “April is the cruelest month”와 “The cruelest month is April”은 같은 특징 벡터로 표현되어 시간성 정보가 사라짐
- 원핫 코드
- 해당 단어의 위치만 1로 표시(m차원 벡터 요소들 중)
- 단어 가방에서 해결하지 못한 시간성 정보가 보존됨.
- 한계
- 한 단어를 표현하는 데 m차원 벡터를 사용하는 비효율. 고차원이 됨
- 단어 간의 유사성을 측정할 수 없음
- 단어 임베딩
- 단어 사이의 상호작용을 분석하여 새로운 공간으로 변환(보통 m 보다 훨씬 낮은 차원으로 변환)
- 변환 과정은 학습이 말뭉치를 훈련집합으로 사용하여 알아냄
- word2vec 등
순차 데이터의 특성
- 특징이 나타나는 순서가 중요
- “아버지가 방에 들어가신다” != “아버지 가방에 들어가신다”
- 비순차 데이터에서는 순서를 바꾸어도 무방
- 샘플마다 길이가 다름
- 순환 신경망은 은닉층에 순환 연결을 부여하여 가변 길이 수용
- 문맥 의존성
- 비순차 데이터는 공분산이 특징 사이의 의존성을 나타냄
- 순차 데이터에서는 공분산은 의미가 없고, 대신 문맥 의존성이 중요함
- “그녀는 점심때가 다 되어서야… 점심을 먹었는데, 철수는…“에서 “그녀는”과 “먹었는데”는 강한 문맥 의존성을 가짐
- 특히 이 경우 둘 사이의 간격이 크므로 장기 의존성이라 부름 <- LSTM으로 처리(RNN 모델 중 하나)
순환 신경망(RNN, Recurrent neural network)
- 순환 신경망(RNN)이 갖추어야 할 세 가지 필수 기능
- 시간성: 특징을 순서대로 한 번에 하나씩 입력해야 한다
- 가변 길이: 길이가 T인 샘플을 처리하려면 은닉층이 T번 나타나야 한다. T는 가변적이다.
- 문맥 의존성: 이전 특징 내용을 기억하고 있다가 적절한 순간에 활용해야 한다.
RNN의 구조
- 기존 깊은 신경망과 유사
- 다른 점은 은닉층이 순환 연결을 가진다는 점
- 시간성, 가변 길이, 문맥 의존성을 모두 처리할 수 있음
- 순환 연결은 t-1 순간에 발생한 정보를 t 순간으로 전달하는 역할
- 수식으로 쓰면, $h^{(t)} = f(h^{(t-1)}, x^{(t)}; \Theta)$
- t=1 순간에 계산하고, 그 결과를 가지고 t=2 순간에 계산하고, 그 결과를 가지고 t=3 순간에 계산하고, …, T순간까지 반복
- 일반적으로 t순간에는 t-1 순간의 은닉층 값(상태) $h^{(t-1)}$과 t 순간의 입력 $x^{(t)}$를 받아 $h^{(t)}$로 전환함
- $\Theta$는 순환 신경망의 매개변수