Deep Learning - Recurrent Neural Network (1)
Recurrent Neural Network
Intro
RNN은 순차적인 자료를 처리하는 신경망의 한 종류로서 sequence를 처리하는데 특화되어 있다. 출력의 각 성분은 출력의 이전 성분의 함수이다. 출력의 각 성분은 이전 성분에 적용한 것과 동일한 규칙에 따라 산출되며, 점화식과 같은 방식이 된다.
계산 그래프 펼치기
다음과 같은 Dynamic ststem을 생각해보면,
여기서 $s^{t}$를 계의 상태(state)라고 부른다. 시간 $t$에서 상태 $s$의 정의가 시간 $t-1$에서의 동일한 정의를 참조한다. 즉 재귀적으로 정의되고, 이런 형태를 점화식(recurrenec formula)라고 부른다.
시간 단계의 수 $\tau$가 유한한 경우에는 이 정의를 $\tau -1$번 적용해서 그래프를 펼칠 수 있다.
이런식으로 공식을 펼치면 순환관계가 없는 수식이 나온다. 이러한 수식은 유향 비순환 그래프로 표현할 수 있다.
위 식은 순환 신경망의 은닉단위를 정의하는 공식이다. 순환 신경망을 훈련할 때, $h^{t}$를 일종의 손실 있는 과거 요약 함수, 즉 $t$까지의 지나간 입력 순차열을 요약하는 함수로서 활용할때가 많다. 이러한 요약함수는 시간 $t$까지의 입력 순차열의 모든 정보를 저장할 필요 없이 예측에 충분한 정보만 저장하면 된다.
위 식을 $t$단계로 펼쳐진 점화식 $g^{(t)}$로 표현하면,
이러한 펼치기 과정은 두가지 장점을 제공한다. 첫번째는 학습된 모형은 길이가 가변적인 상태가 아니라 한 상태에서 다른 상태로의 전이를 명시하므로, 그 입력 크기는 순차열의 길이와는 무관하게 항상 동일하다. 두번째로, 모든 시간 단계에서 동일한 전이 함수 $f$를 동일한 매개변수들과 함께 적용하는것이 가능하다.
재귀 신경망
Recursive Neural Network는 순환 신경망의 또 다른 일반화에 해당한다. RNN의 계산 그래프는 사슬 형태이지만 재귀 신경망의 계산 그래프는 깊은 트리 형태이다. 재귀 신경망의 한가지 장점은, 순차열의 길이가 $\tau$라고 할 때 순환 신경망의 깊이는 $\tau$이지만 재귀 신경망의 깊이는 $O(log\tau)$밖에 되지 않는다. 이 장점은 장기 의존관계를 다루는데 도움이 될 수 있다.
장기 의존성
장기 의존성(long-term dependency)의 학습에서 나타나는 문제는 여러 단계에 걸쳐 전파되는 기울기들이 소멸하거나 폭발하는 경향이 이다는 것이다. 대부분 소멸이 발생하고, 폭발은 드물게 일어나지만 최적화에 미치는 악영향이 훨씬 크다. 매개변수들이 적당해서 순환 신경망이 안정적이라고 가정하는 경우에도, 단기 상호작용들에 주어지는 가중치들보다 지수적으로 작은 가중치들이 장기 상호작용들에 주어진다면 장기 의존성과 관련된 어려움이 발생할 수 있다.
순환 신경망은 같은 함수를 시간 단계당 한번씩 여러 번 합성한다. 이런 다수의 합성 때문에 신경망이 극도로 비선형적인 방식으로 행동할 수 있다. 특히, 순환 신경망이 사용하는 함수 합성은 행렬 곱셈과 다소 비슷하다. 점화식
을 비선형 활성화 함수가 없고 입력 $x$도 없는 아주 단순한 순환 신경망으로 간주할 수 있다.
고윳값들이 $t$를 지수로 해서 거듭제곱되므로, 크기가 1보다 작은 고윳값은 0으로 소멸하고 크기가 1보다 큰 고윳값은 폭발한다. 결괒거으로, $h^{(0)}$의 성분 중 가장 큰 고유벡터와 방향이 맞지 않는 모든 성분은 결국 폐기된다.
###
참고 : 이안 굿펠로, 요수아 벤지오, 에런 쿠빌, 『심층학습』, Jpub(2018), p411-443