CS 230 - 딥 러닝
한국어


순환 신경망 치트시트
Star

Afshine AmidiShervine Amidi
Wooil Jeong에 의해 번역됨

개요

전통적인 RNN의 아키텍처 ― RNNs이라고 알려진 순환 신경망은 이전의 출력을 은닉층에서 입력으로 사용하게 하는 신경망의 한 종류입니다. 이는 일반적으로 다음과 같습니다:


각 시점 $t$에 대해 활성화 $a^{< t >}$와 출력 $y^{< t >}$는 다음과 같이 표현됩니다.

\[\boxed{a^{< t >}=g_1(W_{aa}a^{< t-1 >}+W_{ax}x^{< t >}+b_a)}\quad\mbox{와}\quad\boxed{y^{< t >}=g_2(W_{ya}a^{< t >}+b_y)}\]
여기서 $W_{ax}, W_{aa}, W_{ya}, b_a, b_y$는 시간적으로 공유되는 계수이고, $g_1, g_2$는 활성화 함수입니다.

일반적인 RNN 아키텍처의 장단점은 아래 표에 요약되어 있습니다:

장점 단점
• 모든 길이의 입력을 처리할 수 있는 가능성
• 입력 크기에 따라 모델 크기가 증가하지 않음
• 계산 시 이력 정보가 고려됨
• 시간에 따라 가중치가 공유됨
• 계산 속도가 느림
• 오래 전 정보에 대한 접근이 어려움
• 현재 상태에 대한 향후 입력을 고려할 수 없음

RNN의 응용 ― RNN 모델은 자연어 처리 및 음성 인식 분야에서 주로 사용됩니다. 다양한 응용 프로그램이 아래표에 요약되어 있습니다:

RNN의 유형 일러스트레이션 예제
일-대-일
$T_x=T_y=1$
전통적인 신경망
일-대-다
$T_x=1, T_y>1$
음악 생성
다-대-일
$T_x>1, T_y=1$
감성 분류
다-대-다
$T_x=T_y$
이름 엔터티 인식
다-대-다
$T_x\neq T_y$
기계 번역

손실 함수 ― 순환 신경망의 경우, 모든 시점의 손실 함수 $\mathcal{L}$은 다음과 같이 매 시점의 손실을 기준으로 정의됩니다:

\[\boxed{\mathcal{L}(\widehat{y},y)=\sum_{t=1}^{T_y}\mathcal{L}(\widehat{y}^{< t >},y^{< t >})}\]

시간에 따른 역전파 ― 역전파는 각 시점에 수행됩니다. $T$시점에서, 가중치 행렬 $W$에 대한 손실 $\mathcal{L}$의 도함수는 다음과 같이 표현됩니다:

\[\boxed{\frac{\partial \mathcal{L}^{(T)}}{\partial W}=\sum_{t=1}^T\left.\frac{\partial\mathcal{L}^{(T)}}{\partial W}\right|_{(t)}}\]

장기 의존성 처리

일반적으로 사용되는 활성화 함수 ― RNN 모듈에서 사용되는 가장 일반적인 활성화 함수는 다음과 같습니다:

시그모이드 하이퍼볼릭탄젠트 렐루
$\displaystyle g(z)=\frac{1}{1+e^{-z}}$ $\displaystyle g(z)=\frac{e^{z}-e^{-z}}{e^{z}+e^{-z}}$ $\displaystyle g(z)=\max(0,z)$
Sigmoid Tanh RELU

그래디언트 소실/폭발 ― 그래디언트가 소실되거나 폭발하는 현상은 RNNs에서 종종 발생합니다. 이와 같은 현상들이 발생하는 이유는 층의 수에 따라 기하 급수적으로 감소하거나 증가할 수 있는 곱셈 그래디언트로 인해 장기 종속성을 포착하기가 어렵기 때문입니다.


그래디언트 클리핑 ― 역전파를 수행할 때 종종 마주치는 그래디언트 폭발 문제를 처리하기 위한 테크닉입니다. 그래디언트의 최대값을 캡핑하면 이 현상이 실제로 제어가 됩니다.


게이트 유형 ― 그래디언트 소실 문제를 해결하기 위해 특정 게이트가 일부 유형의 RNN에서 사용되고 일반적으로 잘 정의된 목적을 가지고 있습니다. 보통 $\Gamma$로 표시되며 다음과 같습니다:

\[\boxed{\Gamma=\sigma(Wx^{< t >}+Ua^{< t-1 >}+b)}\]

여기서 $W, U, b$는 게이트에 고유한 계수이고 $\sigma$는 시그모이드 함수입니다. 주요 내용은 아래 표에 요약되어 있습니다:

게이트 유형 역할 사용
업데이트 게이트 $\Gamma_u$ 과거가 현재 얼마나 중요한가? GRU, LSTM
관련도 게이트 $\Gamma_r$ 이전 정보를 버릴 것인가? GRU, LSTM
게이트 망각 $\Gamma_f$ 셀을 지울 것인가 말 것인가? LSTM
게이트 출력 $\Gamma_o$ 셀을 얼만큼 공개할 것인가? LSTM

GRU/LSTM ― Gated Recurrent Unit (GRU) 및 Long Short-Term Memory units (LSTM)은 전통적인 RNN에서 발생하는 그래디언트 소실 문제를 처리합니다. LSTM은 GRU의 일반화된 형태입니다. 다음은 각 아키텍처의 특성화 방정식을 요약 한 표입니다.

특성화 Gated Recurrent Unit (GRU) Long Short-Term Memory (LSTM)
$\tilde{c}^{< t >}$ $\textrm{tanh}(W_c[\Gamma_r\star a^{< t-1 >},x^{< t >}]+b_c)$ $\textrm{tanh}(W_c[\Gamma_r\star a^{< t-1 >},x^{< t >}]+b_c)$
$c^{< t >}$ $\Gamma_u\star\tilde{c}^{< t >}+(1-\Gamma_u)\star c^{< t-1 >}$ $\Gamma_u\star\tilde{c}^{< t >}+\Gamma_f\star c^{< t-1 >}$
$a^{< t >}$ $c^{< t >}$ $\Gamma_o\star c^{< t >}$
종속성

비고: $\star$ 기호는 두 벡터 사이의 원소 단위의 곱셈을 나타냅니다.


RNN의 변형 ― 아래 표는 일반적으로 사용되는 다른 RNN 아키텍처를 요약한 것입니다:

양방향 (BRNN) 심층 (DRNN)

단어 표현 학습

이 절에서, 우리는 어휘는 $V$, 차수는 $|V|$로 표기합니다.

동기 부여 및 표기법

표현 기법 ― 단어를 표현하는 두 가지 주요 방법이 아래 표에 요약되어 있습니다:

원-핫 표현 단어 임베딩
• $o_w$ 표기
• 나이브 접근법, 유사도 정보 없음
• $e_w$ 표기
• 단어 유사도 고려

임베딩 매트릭스 ― 주어진 단어 $w$에 대해 임베딩 매트릭스 $E$는 다음과 같이 임베디드 $e_w$에 원-핫 표시를 매핑하는 매트릭스입니다:

\[\boxed{e_w=Eo_w}\]

비고: 임베딩 매트릭스 학습은 목표/상황 가능도 모델을 사용하여 수행 할 수 있습니다.


단어 임베딩

Word2vec ― Word2vec는 주어진 단어가 다른 단어로 둘러싸여 있을 가능성을 추정하여 단어 임베딩 학습을 목표로 하는 프레임워크입니다. 인기있는 모델에는 스킵-그램(skip-gram), 네거티브 샘플링(negative sampling) 그리고 CBOW가 있습니다.



스킵그램(Skip-gram) ― 스킵그램 word2vec 모델은 주어진 타겟 단어가 문맥 단어 $c$와 함께 발생할 확률을 평가하여 단어 임베딩을 학습하는 지도 학습 업무입니다. $\theta_t$에 $t$와 연관된 파라미터를 표시함으로써, 확률 $P(t|c)$는 다음과 같습니다.

\[\boxed{P(t|c)=\frac{\exp(\theta_t^Te_c)}{\displaystyle\sum_{j=1}^{|V|}\exp(\theta_j^Te_c)}}\]

비고: 소프트맥스(softmax) 부분의 분모에서 전체 어휘를 합산하면 이 모델이 계산 상으로 비용이 많아들게 됩니다. CBOW는 주변 단어를 사용하여 주어진 단어를 예측하는 또 다른 word2vec 모델입니다.


네거티브 샘플링 ― 주어진 문맥과 타겟 단어가 $k$개의 음의 사례와 1개의 양의 사례에 대해 학습된 모델을 사용하여 평가하는 것을 목표로하는 로지스틱 회귀를 사용한 이진 분류기입니다. 문맥 단어 $c$와 타겟 단어 $t$가 주어지면, 예측은 다음과 같이 표현됩니다.

\[\boxed{P(y=1|c,t)=\sigma(\theta_t^Te_c)}\]

비고: 이 방법은 스킵그램 모델보다 계산 부담이 적습니다.


글로브 ― 글로브:

\[\boxed{J(\theta)=\frac{1}{2}\sum_{i,j=1}^{|V|}f(X_{ij})(\theta_i^Te_j+b_i+b_j'-\log(X_{ij}))^2}\]

여기서 $f$는 $X_{i,j}=0\Longrightarrow f(X_{i,j})=0$이 되는 가중 함수입니다. 이 모델에서 $e$와 $\theta$가 대칭이라는 것을 감안할 때, $e_w^{(\textrm{final})}$ 포함하는 최종 단어는 다음과 같이 주어집니다.

\[\boxed{e_w^{(\textrm{final})}=\frac{e_w+\theta_w}{2}}\]

비고: 학습된 단어 삽입의 개별 구성 요소가 반드시 해석될 필요는 없습니다.


단어 비교하기

코사인 유사성 ― 단어 $w_1$과 $w_2$ 사이의 코사인 유사도는 다음과 같이 표현됩니다:

\[\boxed{\textrm{similarity}=\frac{w_1\cdot w_2}{||w_1||\textrm{ }||w_2||}=\cos(\theta)}\]

비고: $\theta$는 단어 $w_1$과 $w_2$ 사이의 각도입니다.


$t$-SNE ― $t$-SNE ($t$-분포 확률적 임베딩)는 고차원적 임베딩을 저차원 공간으로 축소시키는 것을 목표로 하는 기술입니다. 실제로 2D 공간에서 단어 벡터를 시각화하는 데 일반적으로 사용됩니다.


언어 모델

개요 ― 언어 모델은 문장 $P(y)$의 확률을 추정하는 것을 목표로 합니다.


$n$-그램($n$-gram) 모델 ― 이 모델은 학습 데이터의 표현 수를 계산하여 표현식이 말뭉치(corpus)에 표시될 확률을 정량화하는 것을 목표로하는 나이브(naive)한 접근 방식입니다.


퍼플렉시티(Perplexity) ― 언어 모델은 일반적으로 PP로도 알려진 퍼플렉시티 측도(Perplexity metric)를 사용하여 평가되며, 단어의 수로 정규화된 데이터 세트의 역 확률로 해석될 수 있습니다. 퍼플렉시티는 낮은 것이 좋으며 다음과 같이 정의됩니다:

\[\boxed{\textrm{PP}=\prod_{t=1}^T\left(\frac{1}{\sum_{j=1}^{|V|}y_j^{(t)}\cdot \widehat{y}_j^{(t)}}\right)^{\frac{1}{T}}}\]

비고: PP는 $t$-SNE에서 일반적으로 사용됩니다.


기계 번역

개요 ― 기계 번역 모델은 앞선 인코더 네트워크를 제외하고는 언어 모델과 유사합니다. 이러한 이유로 조건적 언어 모델이라고도 합니다.

목표는 다음과 같은 문장 $y$를 찾는 것입니다:

\[\boxed{y=\underset{y^{< 1 >}, ..., y^{< T_y >}}{\textrm{arg max}}P(y^{< 1 >},...,y^{< T_y >}|x)}\]

빔 탐색(Beam search) ― 기계 번역 및 음성 인식에서 입력 $x$가 주어진 가능성있는 문장 $y$를 찾는 데 사용되는 휴리스틱 검색 알고리즘입니다.

• 1단계: 상위 $B$개의 가능성 있는 단어 $y^{< 1 >}$찾기
• 2단계: 조건부 확률 $y^{< k >}|x,y^{< 1 >},...,y^{< k-1 >}$계산
• 3단계: 상위 $B$ 조합 유지 $x,y^{< 1>},...,y^{< k >}$, 정지 단어에서 종료 처리



비고: 빔 너비(Beam width)가 1로 설정되면 이는 나이브 그리디(Naive greedy) 탐색과 같습니다.


빔 너비(Beam width) ― 빔 너비 $B$는 빔 탐색을 위한 파라미터입니다. $B$의 값이 클수록 성능은 향상되지만 메모리는 증가합니다. $B$값이 작으면 결과는 나쁘지만 계산 집약은 적습니다. $B$에 대한 표준값은 약 10입니다.


길이 정규화(Length normalization) ― 수치 안정성을 향상시키기 위해 빔 탐색은 대개 다음과 같이 정의되는 정규화된 로그 가능도 객체라고 하는 정규화된 객체에 적용됩니다:

\[\boxed{\textrm{Objective } = \frac{1}{T_y^\alpha}\sum_{t=1}^{T_y}\log\Big[p(y^{< t >}|x,y^{< 1 >}, ..., y^{< t-1 >})\Big]}\]

비고: 파라미터 $\alpha$는 연화제로 볼 수 있으며 그 값은 일반적으로 0.5와 1 사이 입니다.


오류 분석 ― 예측된 변환 $\widehat{y}$를 얻을 때 다음과 같은 오류 분석을 수행하여 왜 $y^*$가 좋은 변환을 얻지 못했는지 궁금해 할 수 있습니다:

원인 $P(y^*|x)>P(\widehat{y}|x)$ $P(y^*|x)\leqslant P(\widehat{y}|x)$
근본 원인 빔 탐색 오류 RNN 오류
해결 방안 빔 너비 증가 • 다른 아키텍처 시도
• 정규화
• 더 많은 데이터 얻기

블루 점수(Bleu score) ― 이중 언어 평가 (bleu) 점수는 $n$-그램($n$-gram) 정밀도에 따라 유사성 점수를 계산하여 기계 번역이 얼마나 좋은지를 정량화합니다. 그것은 다음과 같이 정의됩니다:

\[\boxed{\textrm{bleu score}=\exp\left(\frac{1}{n}\sum_{k=1}^np_k\right)}\]
여기서 $p_n$은 다음과 같이 정의된 $n$-그램($n$-gram)의 블루 점수입니다:
\[p_n=\frac{\displaystyle\sum_{\textrm{n-gram}\in\widehat{y}}\textrm{count}_{\textrm{clip}}(\textrm{n-gram})}{\displaystyle\sum_{\textrm{n-gram}\in\widehat{y}}\textrm{count}(\textrm{n-gram})}\]

비고: 인위적으로 팽창된 블루 점수를 방지하기 위해 짧은 예측 번역에 간결 패널티를 적용할 수 있습니다.


주의

주의 모델 ― 이 모델을 사용하면 RNN이 중요한 것으로 간주되는 입력의 특정 부분에 주의를 기울이게 되므로 실제 결과 모델의 성능이 향상됩니다. 시간 t에서의 문맥 활성화 및 출력에 대해 출력 $y^{< t >}$가 지불해야하는 관심의 양을 $\alpha^{< t, t'>}$로 표기함으로써, 다음을 얻습니다:

\[\boxed{c^{< t >}=\sum_{t'}\alpha^{< t, t' >}a^{< t' >}}\quad\textrm{와}\quad\sum_{t'}\alpha^{< t,t' >}=1\]

비고: 주의 점수는 일반적으로 이미지 캡션 작성 및 기계 번역에 사용됩니다.



주의 가중치 ― 출력 $y^{< t >}$가 활성화 $a^{< t' >}$에 지불해야하는 관심의 양은 다음과 같이 계산된 $\alpha^{< t,t' >}$에 의해 주어집니다:

\[\boxed{\alpha^{< t,t' >}=\frac{\exp(e^{< t,t' >})}{\displaystyle\sum_{t''=1}^{T_x}\exp(e^{< t,t'' >})}}\]

비고: 계산 복잡도는 $T_x$에 대해 2차 입니다.