7. Recurrent Neural Networks

7.1. Introduction

어떤 데이터들은 시계열 데이터, 텍스트, 생물학적 데이터이기도 하다. 순환 신경망은 이에 적합하다. 텍스트를 단지 단어 모음으로 분석하는 것은 감성 분석, 기계 번역, 정보 추출 등에는 적합하지 않다. 이 때는 망의 구조 내에 단어 순서에 대한 정보를 더 직접적으로 담는 것이 중요하다. 순환 신경망은 이에 적합하며, 입력을 열 내에 존재하는 순서대로 받고 처리하고 각 시점에 따른 입력을 이전 입력의 역사와 연관지을 수 있는 능력을 가졌다. 이는 순환 신경망(RNN)으로 잘 만족되며, 망의 층과 열의 특정 위치(타임스탬프)간 일대일대응이 존재한다. 이 때 층별 구조가 시점별로 반복되므로 순환 신경망이라 한다. 이는 입력 열을 받아 출력 열을 낸다. 이의 적용례는 언어 모델, 자가회귀 분석, 번역, 감성 분석 등이 있다. 순환 신경망의 매개변수를 학습하는 데는 경사 폭발/증발 등의 난점이 있어서 LSTM, GRU 등의 변형이 쓰인다.

7.1.1. Expressiveness of Recurrent Networks

순환 신경망은 튜링 완전이지만 이것 자체만으로는 크게 쓸모는 없다.

7.2. The Architecture of Recurrent Neural Networks

순환 신경망의 기본적 구조에 대해 알아보자. 순환 신경망을 나타낼 때는 대개 피드포워드 망처럼 보이도록 자가 순환을 펼친다. 이 때 타임스탬프간 가중치는 공유된다. 아래에서는 모든 입력과 출력이 존재한다고 가정하지만, 입력/출력 중 일부가 유실된 경우에는 단순히 해당하는 항을 없애면 된다. 이 구조는 자연어 처리에 적합하다. 입력 상태에서 은닉 상태를 내는 함수와 은닉 상태에서 출력 상태를 내는 함수는 다르다. 단어 t개의 텍스트가 있을 때 마지막 출력은 그 텍스트의 매핑 결과를 나타내고, \mathbf{W}_{xh}의 각 열은 각 단어의 매핑을 나타낸다. 순환 신경망은 가변 길이 입력에 대한 함수를 계산할 수 있다.

7.2.1. Language Modeling Example of RNN

간단한 문장 예제를 알아보자. 이 때 순환 신경망은 각 단어마다 다음 단어를 예측하게 된다. 이 출력값은 그 자체로 확률은 아니며 소프트맥스에 의해 확률로 변환된다.

7.2.1.1. Generating a Language Sample

이 접근법은 학습이 끝나면 언어의 임의 표본을 생성하는 데 쓰일 수 있다. 언어 모델은 조건적 출력을 생성하는 데 최적화되어 있다. 언어 모델링 순환 신경망의 주 목적은 언어의 임의 열을 생성하는 것이 아니라 특정 맥락의 효과를 포함하도록 여러 방법으로 수정될 수 있는 구조적 기반을 제공하는 데 있다.

7.2.2. Backpropagation Through Time

순환 신경망에서 역전파를 할 때의 문제점은 가중치 공유가 업데이트 과정에 영향을 준다는 것이다. 이 경우 시간에 따른 역전파라는 기법이 필요하다. 이는 타임스탬프에 걸쳐 가중치들에 대한 경사를 각각 계산한 뒤 이를 가중치마다 전부 합하는 것이다.

Truncated Backpropagation Through Time

열의 길이가 굉장히 길 경우에는 분절 시간에 따른 역전파를 한다. 이는 전방 전파 시에는 그대로 하고 역전파 업데이트 시 적절한 길이만큼만 수행하는 것이다.

Practical Issues

가중치 엔트리는 [-\frac{1}{\sqrt{r}}, \frac{1}{\sqrt{r}}]의 작은 값으로 초기화된다. 사전학습을 사용할 수도 있다. 학습 예제가 시작/끝 토큰을 포함할 수도 있다. 이 때 텍스트의 끝을 어떻게 정해야 할지 또한 학습할 수 있다. 실제로는 층을 복수 개씩 많이들 쓴다.

7.2.3. Bidirectional Neural Networks

순환 신경망의 단점은 특정 시점의 상태가 미래 상태에 대한 지식이 없다는 것이다. 양방향 순환 신경망에서는 전방/후방 방향에 대한 별개의 은닉 상태를 가진다. 이의 용례는 필체 인식, 음성 인식 등이 있다. 가중치 행렬들은 전방/후방과 별개로 정해지지만, 동일한 입력/출력과 상호작용한다. 점화식은 다음과 같다.

\mathbf{h}_{t, f} = \mathrm{tanh}(\mathbf{W}_{xh, f}\mathbf{x}_{t} + \mathbf{W}_{hh, f}\mathbf{h}_{t-1, f})

\mathbf{h}_{t, b} = \mathrm{tanh}(\mathbf{W}_{xh, b}\mathbf{x}_{t} + \mathbf{W}_{hh, b}\mathbf{h}_{t+1, b})

\mathbf{y}_{t} = \mathbf{W}_{hy, f} \mathbf{h}_{t, f} + \mathbf{W}_{hy, b} \mathbf{h}_{t, b}

전방/후방 은닉 상태는 서로 상호작용하지 않는다. 전방 전파는 전방 은닉 상태를 먼저 계산하고 이후 후방 은닉 상태를 계산한 뒤 이를 통해 출력을 계산한다. 출력이 계산된 이후 역전파는 전방 은닉 상태에 대해 역전파를 역방향으로 수행하고 후방 은닉 상태에 대해 역전파를 정방향으로 수행한 뒤 이를 통해 업데이트를 수행한다. 이는 필체 인식이나 음성 인식 등에 유용하다. 이는 두 단방향 순환 신경망을 앙상블한 것과 비슷하다고 볼 수도 있다.

7.2.4. Multilayer Recurrent Networks

순환 신경망에서 층을 여러 개 쓸 수도 있다. 이 때 \mathbf{h}_{t, k} = \mathrm{tanh}(\mathbf{W, k}[\mathbf{h}_{t, k - 1}, \mathbf{h}_{t-1, k}]^{T}) 꼴로 나타난다.

7.3. The Challenges of Training Recurrent Networks

순환 신경망은 시계열 입력의 특성으로 인해 학습하기 힘들다. 주된 문제는 경사 증발/폭발 문제이다. 경사를 구할 때 같은 함수를 계속해서 적용하기 때문이다. 구체적으로, 정사각행렬 A의 가장 큰 고유값의 크기가 1보다 크거나 작다면 A를 여러 번 곱했을 때 원소들이 폭발하거나 증발한다. 순환 신경망의 경우에는 경사 증발/폭발 문제와 다른 층간 매개변수 공유가 불안정한 방식으로 동작하도록 만든다. 이에 대한 해법으로는 정규화를 강하게 거는 법도 있고 경사 클리핑도 있다. 급격한 경사가 있는 경우 일차 도함수 대신 이차 도함수를 쓰는 게 더 나은데, 이는 계산량이 너무 많으므로 헤시안 없는 근사를 한다. 좋은 시작점을 고르는 것은 매우 중요한데, 모멘텀 방법을 쓰는 것도 도움이 될 수 있다. 또는 배치 표준화도 도움이 되며, 층 표준화도 도움이 된다. 순환 신경망의 구조를 바꿀 수도 있는데, 메아리상 망을 사용하거나 (너무 단순해서 잘 쓰이지 않는다) 장단기 기억 망을 사용하는 것이 있다. 후자가 더 낫다.

7.3.1. Layer Normalization

배치 표준화를 순환 신경망에 적용할 때의 문제점은 순환 신경망에서의 층의 수는 입력에 따라 다르며 온라인 학습에 쓸 수 없다는 것이다. 그래서 현재 인스턴스에 대해서만 층의 모든 활성값에 대해 표준화를 진행하는 층 표준화를 대신 수행한다. 이는 활성 함수가 적용되기 이전 값들에 대해서 표준화가 진행된다. 이를 재 스케일링하는 증가 벡터, 편향 벡터도 존재하며 이들 또한 학습 대상이다.

7.4. Echo-State Networks

메아리상 망은 순환 신경망을 단순화한 형태로 입력 차원이 작을 때 잘 동작한다. 이는 텍스트 모델링에는 적합하지 않지만 망의 가중치를 초기화하는 데는 괜찮다. 이는 은닉-은닉층과 입력-은닉층에 대해 무작위 가중치를 사용하고 출력 층만 학습되므로 학습은 매우 빠르다. 은닉-은닉 유닛의 초기화는 가중치 행렬의 가장 큰 고유값이 1이 되어야 한다는 것이다. 은닉-은닉 연결에서는 희박한 연결성을 갖는 것이 좋으며 이 때 연결의 수는 은닉 유닛에 대해 선형으로 잡는다. 입력-은닉 행렬도 은닉-은닉 행렬에 피해를 주지 않도록 조심해서 정해야 한다. 메아리상 망의 기반은 데이터 셋의 특성들의 수를 비선형 변환으로 확장함으로써 입력 표현식의 표현력을 늘일 수 있다는 것이다. 시계열에 사용했을 때 이 접근법은 먼 미래의 결과를 예측하는 데 있어 뛰어나다. 핵심은 t번째 타겟 출력을 t + k 번째 입력으로 잡는 것이다. 이는 고차원 입력에 대해서는 적합하지 않지만 초기화에는 적합하다. 은닉-은닉 행렬도 희박해야 하나? 여기에는 정답은 없다.

7.5. Long Short-Term Memory (LSTM)

순환 신경망의 경사 폭발/증발 문제를 해결하기 위한 접근법 중 하나는 장단기 기억을 쓰는 것이다. 장단기 기억은 순환 신경망 구조를 변경해 은닉 상태가 전파되는 조건을 변경시키는 것인데, 이는 다른 임시 층의 상태가 장기 기억을 통해 비슷한 점이 많다면 경사가 크게 달라지지는 않는다는 직관에 기인한다. 점화식은 다음과 같다:

[\mathbf{i}, \mathbf{f}, \mathbf{o}, \mathbf{c}] = [\mathrm{sigm},  \mathrm{sigm}, \mathrm{sigm}, \mathrm{tanh}]\mathbf{W}_{k} [\mathbf{h}_{t, k-1}, \mathbf{h}_{t-1, k}]

\mathbf{c}_{t, k} = \mathbf{f} \odot \mathbf{c}_{t-1, k} + \mathbf{i} \odot \mathbf{c}

\mathbf{h}_{t, k} = \mathbf{o} \odot \mathrm{tanh}(\mathbf{c}_{t, k})

편향도 사용될 수 있다. \mathbf{i}, \mathbf{f}, \mathbf{o} 값들은 셀 상태에 더할지, 셀 상태를 잊을지, 은닉 상태로부터 셀 상태로의 누수를 허용할지에 대해 결정하는 게이트 역할을 한다. \mathbf{c}_{t, k}의 점화식은 상태를 잊을지, 값을 증가시킬지를 결정하는 항 두 개를 더한다. \mathbf{h}_{t, k}의 점화식은 셀 상태로부터의 누수를 통해 업데이트된다. 장기 셀 상태는 경사가 원활히 흐르면서 은닉 상태로 누수되는 도로의 역할을 한다.

7.6. Gated Recurrent Units (GRUs)

게이트화 순환 유닛(GRU)는 셀 상태를 사용하지 않으면서 단일 망각 게이트만 사용하는 장단기 기억의 단순화로 볼 수 있다. 점화식은 다음과 같다:

[\mathbf{z}, \mathbf{r}] = [\mathrm{sigm} \mathrm{sigm}] \mathbf{W}_{k} [\mathbf{h}_{t, k-1} \mathbf{h}_{t-1, k}]

\mathbf{h}_{t, k} = \mathbf{z} \odot \mathbf{h}_{t-1, k} + (1 - \mathbf{z}) \odot \mathrm{tanh} \mathbf{V}_{k} [\mathbf{h}_{t, k-1} \mathbf{r} \odot \mathbf{h}_{t-1, k}]

장단기 기억과 비슷하게, 게이트화 순환 유닛은 업데이트와 리셋 게이트를 사용하며 별도의 내부 기억은 쓰지 않는다. 리셋 게이트는 은닉 상태 중 이전 은닉 상태를 얼마나 가져올지를 제어한다. 업데이트 게이트는 이전 은닉 상태가 얼마나 직접적으로 기여하는지를 제어한다. 게이트화 순환 유닛은 편도함수가 z + (1-z) \cdots 의 형태이므로 z가 작더라도 곱인자 크기는 1에 가까워진다. 또한, 각각의 경사마다 z값과 곱인자 값이 다르기 때문에 경사 증발/폭발의 위험이 적다. 게이트화 순환 유닛은 장단기 기억을 단순화 한 것으로 이해할 수 있지만 장단기 기억의 일부라고 볼 수는 없다. 데이터가 적으면 게이트화 순환 유닛이, 데이터가 많으면 장단기 기억이 좋다.

7.7. Applications of Recurrent Neural Networks

순환 신경망은 여러 적용례가 있다. 조건 언어 모델링, 토큰 특수화된 출력 이용 등.

7.7.1. Application to Automatic Image Captioning

이미지 캡션에도 순환 신경망이 쓰일 수 있다. 이의 문제는 이미지의 표현을 학습하기 위해 별개의 신경망이 필요하다는 것인데 이는 컨볼루션 신경망을 쓴다. 이는 순환 신경망과 같이 훈련된다. 학습 이후 테스트 이미지는 신경망에 입력된다.

7.7.2. Sequence-to-Sequence Learning and Machine Translation

두 개의 순환 신경망을 함께 넣어 한 언어를 번역할 수 있다. 이를 열-열 학습이라 한다. 이 장에서는 단순 순환 신경망의 적용을 다루지만 장단기 기억으로의 확장은 어렵지 않다. 기계 번역에서는 2개의 다른 순환 신경망이 연결된다. 이는 자가부호화기와 비슷하지만 두 순환 신경망의 가중치는 같지 않다. 시작 언어와 도착 언어의 문법과 문장 길이는 다를 수 있으므로 도착 언어의 순환 신경망은 도착 언어 모델을 학습해야 한다. 역전파는 동시에 이루어진다. 기계 번역에 신경망을 쓰게 된 역사는 오래되지 않았다. 이의 단점은문장이 길어지면 성능이 떨어진다는 것인데, 한 해법은 출발 언어의 문장을 역순으로 입력하는 것이다.

7.7.2.1. Question-Answering Systems

열-열 학습의 자연스러운 용례는 질문 답변이다. 이는 정보 추출, 관계 추출과 밀접한 연관이 있다. 기계 번역과의 차이점은 기계 번역은 문서의 큰 말뭉치에 기반한다는 것이고 질문 답변은 망이 기반해야 하는 지식이 훨씬 더 크다는 것이다. 또한 질문 자체가 여러 단계의 변환을 거쳐야 할 수도 있다.

7.7.3. Application to Sentence-Level Classification

이 문제에서 각 문장은 분류 목적을 가진 학습(테스트) 인스턴스로 다루어진다. 문장 분류는 문서 분류보다 더 어렵다 (정보가 불충분하므로). 문장 분류는 감성 분석에 영향을 받기도 한다. don’t 나 hardly 같은 단어는 매각 변환자라 불리기도 하며 이는 열 기반 세팅에서만 모델될 수 있다.

7.7.4. Token-Level Classification with Linguistic Features

토큰 수준 분류의 용례에는 정보 추출이나 텍스트 의미화 등이 있다. 정보 추출에서는 여러 단어나 여러 단어의 조합이 사람, 장소, 조직 중 어느 것과 연관 있는지로 식별된다. 순환 신경망은 비슷하게 정의되나, 출력은 다음 단어가 아니라 태그로 정의된다.

7.7.5. Time-Series Forecasting and Prediction

순환 신경망은 시계열 예측이나 예상에 자연스러운 선택이다. 이 때 문제는 시계열의 길이가 매우 길 수 있다는 것인데 장단기 기억이나 게이트화 순환 유닛이 어느 정도 도움이 되기는 하지만 성능을 떨어트리는 부분도 있다. 시계열의 길이가 짧으면 메아리상 망이 매우 효과적이다. 시계열에서 예측 모델은 대부분 일변수 모델이다. 시계열 회귀나 예상을 할 때 메아리상 망의 활용법은 어렵지 않다.

Relationship with Autoregressive Models

자가회귀 모델은 시계열의 값을 길이 p의 중간 역사에 대한 선형 함수로 모델링한다. 은닉-은닉 가중치 행렬은 은닉 상태를 한 유닛만큼 옮기고 입력 상태는 빈 상태로 복사하는 행렬이어야 한다. 시계열 자가회귀 모델과 메아리상 모델의 차이점은 메아리상 모델은 은닉-은닉 가중치와 입력-은닉 가중치를 무작위로 쓰고 은닉 상태의 차원을 훨씬 더 많이 쓴다는 거싱다.

7.7.6. Temporal Recommender Systems

어떤 추천 시스템은 현재 시점에 크게 영향을 받기도 한다. 현세적 추천 시스템에서는 사용자 평점과 연관된 타임스탬프는 사용자 평점과 관련된 타임스탬프가 추천 과정에서 쓰인다. 이 때 평점의 예상은 아이템과 연관된 정적 특성, 사용자와 연관된 정적 특성, 사용자와 연관된 동적 특성으로 분해되어 의존한다. 여러 경우 명시적 평점은 존재하지 않고 암시적 피드백 데이터만 가용할 때가 많다. 이 경우 음의 샘플링이 필요해진다. 전체 추천 시스템은 세 가지 특성에서 특성을 추출하기 위한 부분망을 각각 가진다. 첫 두개의 망은 피드포워드 망이고 나머지 망은 순환 신경망이다. 위에서 다룰 때는 여러 가정을 단순화했지만 (한 타임스탬프단 단일 평점이 얻어진다든가, 현세적 추천 시스템의 시간 창의 폭이 고정이라든가) 실제 시스템에서는 유동적으로 조절해야 한다. 다른 관점에서는 문제를 상품-동작-시간의 3쌍으로 다루기도 한다. 이는 각 사용자에 대해 모아진 뒤 순환 신경망으로 입력된다.

7.7.7. Secondary Protein Structure Prediction

단백질 구조 예측에서 열의 각 원소는 20 아미노산 중 하나가 되기도 하며, 양방향 순환 신경망이 쓰일 수 있다.

7.7.8. End-to-End Speech Recognition

끝과 끝 음성 인식에서는 양방향 순환 신경망을 이용해 오디오 파일의 스펙트로그램을 가능한 한 적은 단계를 통해 문자의 나열로 변환한다. 이 세팅의 단점은 음성과 구술의 프레임 관계의 정렬 관계를 알아내야 한다는 것이다.

7.7.9. Handwriting Recognition

필체 인식은 음성 인식과 밀접한 연관이 있다. 이는 끝과 끝 음성 인식과 비슷하게 양방향 순환 신경망을 활용한다.

7.8. Summary

순환 신경망은 열 모델링에 쓰이는 형태의 신경망이다. 이는 가중치가 서로 다른 층간 공유되는 시간층 망으로도 볼 수 있다. 순환 신경망은 학습하기 어려운데, 경사 증발과 폭발 문제에 취약하기 때문이다. 이 문제 중 일부는 3장에서 다룬 발전된 학습법 중 하나로 해결할 수 있다. 하지만 더 강건한 순환 망을 사용하는 다른 방법이 있다. 구체적인 예로는 장단기 기억 망을 사용하는 것이다. 이 망은 은닉 상태의 업데이트 과정을 더 유하게 해서 경사 폭발/증발 문제를 피한다. 순환 신경망과 그 변형은 이미지 캡션, 토큰 단계 분류, 문장 분류, 감성 분석, 음성 인식, 기계 번역, 계산 생물학 등에서 널리 쓰인다.

7.9. Bibliographic Notes

여러 관련 문헌이 존재한다.

7.9.1. Software Resources

여러 관련 소프트웨어 프레임워크가 존재한다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중