RNN (Recurrent Neural Network)에서 계층을 잊어 버림-


13

forget 레이어에서 RNN의 각 변수의 크기를 알아 내려고 노력하고 있지만 올바른 길을 가고 있는지 확실하지 않습니다. 다음 그림과 방정식은 Colah의 블로그 게시물 "LSTM 네트워크 이해"에 있습니다 .

여기에 이미지 설명을 입력하십시오

어디:

  • 는 크기 m의 입력 * 1 벡터xtm1
  • 은 크기 n 의 숨겨진 상태입니다. * 1 벡터ht1n1
  • 은 연결입니다 (예 : x t = [ 1 , 2 , 3 ] , h t - 1 = [ 4 , 5 , 6 ] 이면 [ x t , h t - 1) ] = [ 1 , 2 , 3 , 4 , 5 , 6 ] )[xt,ht1]xt=[1,2,3],ht1=[4,5,6][xt,ht1]=[1,2,3,4,5,6]
  • 는 크기 k * ( m + n ) 행렬의가중치입니다. 여기서 k 는 셀 상태 수 (위의 예에서 m = 3 이고 n = 3 이고 3 개의 셀 상태 인 경우 w f = 3 * 3 매트릭스)wfk(m+n)km=3n=3wf=33
  • 는 크기 k * 1 벡터의바이어스이며, 여기서 k 는 셀 상태의 수입니다 (위의 예에서 k = 3 이므로 b f 3 * 1 벡터 임).bfk1kk=3bf31

를 다음과 같이 설정하면 : [ 1 2 3 4 5 6 5 6 7 8 9 10 3 4 5 6 7 8 ]wf

[1234565678910345678]

그리고 : [ 1 , 2 , 3 ]bf[1,2,3]

그런 다음 Wf.[ht1,xt]=

[1234565678910345678].[123456]=[91175133]

그렇다면 우리는 바이어스 추가 Wf.[ht1,xt]+bf=

[91175133]+[123]=[92177136]

11+exx=[92177136]

[111]

Ct1k=3

위의 가정이 맞습니까?

이것은 또한 셀 상태와 숨겨진 상태의 수가 동일하다는 것을 의미합니까?

답변:


14

좋은 질문입니다!

tl; dr : 셀 상태와 숨겨진 상태는 서로 다른 두 가지이지만 숨겨진 상태는 셀 상태에 따라 다르며 실제로 동일한 크기를 갖습니다.

더 긴 설명

이 둘의 차이점은 아래 다이어그램 (동일 블로그의 일부)에서 확인할 수 있습니다.

셀 상태는 위쪽에서 서쪽으로 동쪽으로 이동하는 굵은 선입니다.

셀 상태는 위쪽에서 서쪽으로 동쪽으로 이동하는 굵은 선입니다. 전체 녹색 블록을 '셀'이라고합니다.

이전 시간 단계에서 숨겨진 상태는 현재 시간 단계에서 입력의 일부로 처리됩니다.

그러나 전체 연습을 수행하지 않고 둘 사이의 종속성을 보는 것이 조금 더 어렵습니다. 다른 관점을 제공하기 위해 여기서 할 것이지만 블로그의 영향을 크게받습니다. 내 표기법은 동일하며 설명에 블로그의 이미지를 사용합니다.

블로그에서 제시된 방식과는 조금 다른 작업 순서를 생각하고 싶습니다. 입력 게이트에서 시작하는 것처럼 개인적으로. 아래에이 관점을 제시하지만, 블로그가 LSTM을 계산적으로 설정하는 가장 좋은 방법 일 수 있다는 점을 명심하십시오.이 설명은 순수한 개념입니다.

무슨 일이 일어나고 있는지 :

입력 게이트

여기에 이미지 설명을 입력하십시오

txtht1

xt=[1,2,3]ht=[4,5,6]

xtht1[1,2,3,4,5,6]

WiWi[xt,ht1]+biWibi

6 차원 입력 (연결된 입력 벡터의 길이)에서 업데이트 할 상태에 대한 3 차원 결정으로 넘어 가고 있다고 가정 해 봅시다. 즉, 3x6 가중치 행렬과 3x1 바이어스 벡터가 필요합니다. 그 값을 몇 가지 드리겠습니다 :

Wi=[111111222222333333]

bi=[111]

계산은 다음과 같습니다.

[111111222222333333][123456]+[111]=[224262]

it=σ(Wi[xt,ht1]+bi)

σ(x)=11+exp(x)x

σ([224262])=[11+exp(22),11+exp(42),11+exp(62)]=[1,1,1]

영어로, 우리는 모든 주를 업데이트한다는 의미입니다.

입력 게이트에는 두 번째 부분이 있습니다.

Ct~=tanh(WC[xt,ht1]+bC)

이 부분의 요점은 상태를 업데이트하는 방법을 계산하는 것입니다. 이 시점에서 새로운 입력에서 셀 상태로의 기여입니다. 계산은 위에서 설명한 동일한 절차를 따르지만 S 자형 단위 대신 tanh 단위를 사용합니다.

Ct~it

itCt~

그런 다음 질문의 핵심 인 잊어 버린 문이 온다.

잊어 버린 문

여기에 이미지 설명을 입력하십시오

잊어 버림 게이트의 목적은 더 이상 관련이없는 이전에 학습 한 정보를 제거하는 것입니다. 블로그에 제공된 예제는 언어 기반이지만 슬라이딩 윈도우를 생각할 수도 있습니다. 질병이 발병하는 동안 한 지역에서 전염성 개인의 수와 같이 자연적으로 정수로 표현되는 시계열을 모델링하는 경우 질병이 한 지역에서 사망하면 더 이상 해당 지역을 고려하지 않아도됩니다. 다음에 질병이 어떻게 진행되는지에 대해 생각합니다.

입력 레이어와 마찬가지로, 잊어 버린 레이어는 이전 시간 단계에서 숨겨진 상태와 현재 시간 단계에서 새로운 입력을 가져와 연결합니다. 요점은 확률 적으로 기억해야 할 것과 기억해야 할 것을 결정적으로 결정하는 것입니다. 이전 계산에서 나는 모든 1의 시그 모이 드 레이어 출력을 보여 주었지만 실제로 0.999에 가까워졌고 반올림했습니다.

계산은 입력 레이어에서 수행 한 것과 매우 유사합니다.

ft=σ(Wf[xt,ht1]+bf)

이것은 우리에게 0과 1 사이의 값을 가진 크기 3의 벡터를 줄 것입니다.

[0.5,0.8,0.9]

그런 다음 정보의 세 부분 중 잊어 버릴 값을 기반으로 결정적으로 결정합니다. 이를 수행하는 한 가지 방법은 균일 (0, 1) 분포에서 숫자를 생성하고 해당 숫자가 단위가 '켜질'확률보다 작은 경우 (단위 1, 2 및 3의 경우 0.5, 0.8 및 0.9) 그런 다음 해당 장치를 켭니다. 이 경우 해당 정보를 잊어 버릴 수 있습니다.

빠른 참고 사항 : 입력 레이어와 잊어 버린 레이어는 독립적입니다. 내가 베팅 한 사람이라면 병렬 처리하기에 좋은 곳이라고 확신합니다.

셀 상태 업데이트

여기에 이미지 설명을 입력하십시오

이제 셀 상태를 업데이트하는 데 필요한 모든 것이 있습니다. 입력과 잊어 버린 게이트의 정보를 조합하여 사용합니다.

Ct=ftCt1+itCt~

옆으로 :하다 마드 제품

x1=[1,2,3]x2=[3,2,1]

x1x2=[(13),(22),(31)]=[3,4,3]

제쳐두고

이러한 방식으로 셀 상태에 추가하려는 항목 (입력)을 셀 상태에서 제거하려는 항목 (잊어 버림)과 결합합니다. 결과는 새로운 셀 상태입니다.

출력 게이트

여기에 이미지 설명을 입력하십시오

이것은 우리에게 새로운 숨겨진 상태를 줄 것입니다. 기본적으로 출력 게이트의 요점은 후속 셀 상태를 업데이트 할 때 모델의 다음 부분에서 고려할 정보를 결정하는 것입니다. 블로그의 예는 다시 언어입니다. 명사가 복수 인 경우 다음 단계의 동사 활용이 변경됩니다. 질병 모델에서 특정 지역의 개인의 감수성이 다른 지역의 감수성이 다르면 감염 가능성이 변경 될 수 있습니다.

출력 레이어는 동일한 입력을 다시 가져 오지만 업데이트 된 셀 상태를 고려합니다.

ot=σ(Wo[xt,ht1]+bo)

다시, 이것은 우리에게 확률의 벡터를 제공합니다. 그런 다음 계산합니다.

ht=ottanh(Ct)

따라서 현재 셀 상태와 출력 게이트는 출력 대상에 동의해야합니다.

tanh(Ct)[0,1,1]ot[0,0,1][0,0,1]

htyt=σ(Wht)

ht

LSTM에는 많은 변형이 있지만 필수 사항을 다루고 있습니다!


답변 주셔서 감사합니다! 한 가지 더 궁금한 점이 있습니다. 심층 신경망은 심할 수 있습니다. ReLU의 미분 값이 1이기 때문입니다 (출력이 0보다 큰 경우). 이 셀에서도 같은 경우입니까? Tanh와 Sigmoid가 어떻게 1의 상수 도함수를 가질 수 있는지 잘 모르겠습니다.
user1157751

천만에요! 신경망은 둘 이상의 숨겨진 레이어가있을 때 '심층'으로 간주됩니다. 활성화 기능 (tanh, sigmoid, ReLU)의 파생물은 네트워크 훈련 방법에 영향을줍니다. 말하자면 입력이 0보다 크면 ReLU의 기울기가 일정하기 때문에 함수의 해당 영역에있는 경우 미분 값은 1입니다. Tanh 및 S 자형 단위는 활성화 영역의 중간에있는 경우 1에 가까운 도함수를 가지지 만, 도함수는 일정하지 않습니다. 어쩌면 내가 .... 파생 상품에 별도의 블로그 게시물을해야한다
StatsSorceress

활성화 영역에서 1에 가까운 미분의 예를 보여줄 수 있습니까? 파생 상품에 대해 이야기하는 많은 리소스를 보았지만 수학은 수행되지 않습니까?
user1157751

좋은 생각이지만, 그것에 대해 적절한 게시물을 작성하는 데 시간이 좀 걸릴 것입니다. 그 동안 tanh 함수의 모양을 생각해보십시오. 길쭉한 'S'입니다. 중간에는 미분이 가장 높은 곳이 있습니다. S가 평평한 곳 (S의 꼬리)에서 도함수는 0입니다. 나는 S 자형이 최대 도함수 0.25를 갖는 하나의 소스를 보았지만 tanh에 대한 등가물은 없습니다.
StatsSorceress가

내가 이해하지 못하는 부분은 x> 0 인 상수 1 도함수를 갖는 ReLU와 다르지만, 시그 모이 드와 tanh는 그 도함수에 대해 가변적 인 값을 가졌다. 이것이 어떻게 "일관 적"일 수 있습니까?
user1157751
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.