래빗 챌린지 - 심층 학습 Day3 Section4 양방향 RNN

0. 개요



본 기사는 일본 딥 러닝 협회 인정의 강좌 프로그램인 「래빗 챌린지」가 제공하고 있는 과목의 하나인 심층 학습의 리포트이다.
기사 타이틀에 기재된 바와 같이, Day3 Section4 양방향 RNN에 대해서 이하에 정리한다.

1. 양방향 RNN (Bindirectional RNN)



통상의 RNN은 과거의 정보를 보관 유지하는 것으로 시계열 데이터의 학습을 실현하고 있었지만, 쌍방향 RNN의 경우는 과거의 정보에 가세해 미래의 정보도 가미시키는 모델.

단지 RNN에도 물론 적용할 수 있지만 LSTM이나 GRU에도 적용할 수 있다.

문장의 추억이나 기계번역 등 주로 자연언어 처리로 활용되고 있다.
「Python과 Keras에 의한 딥 러닝」에 의하면, 이것은 자연 언어의 특성에 의한 것이라고.

예를 들어 기온 예측의 경우, 예측하고 싶은 날의 직전의 날의 기온이 가장 중요해질 수도 있고, 역방향(미래)으로부터 학습시키면 매우 정밀도가 낮은 것이 된다(미래의 날이 아닌 예측하고 싶다. 일 이전의 데이터도 있는 전제).
이것은 과거부터 미래를 예측한다는 지극히 일반적인 사고방식이다.
그러나, 어느 단어의 다음에 오는 단어는 무엇인가 등의 예측을 시키려고 했을 경우, 역방향으로부터 학습시켜도 정밀도가 나오는 것 같다.
즉, 자연언어는 기온 등과 같이 과거에서 미래와 같이 순방향으로 학습해야 한다고 정해지는 것은 아니고, 순방향으로 학습해도 미래에서 과거처럼 역방향으로 학습한다. 좋다는 특성이 있다.
물론 순방향과 역방향으로 학습하는 내용은 다르다.

참고:
htps : // 아. 비파 pyu s. jp / 데에 p ぇ 아 rn g / rn / brn. HTML
htps //w w. s에서 멋지다. 네 t/짱오 b/br-69866920

2. 연습 챌린지



2.1. 양방향 RNN


def bindirectional_rnn_net(xs, W_f, U_f, W_b, U_b, V):
  # W_f, U_f:入力から中間層、前の中間層から今の中間層の順方向の重み
  # W_b, U_b:W_f, U_fの逆方向
  # V:順方向、逆方向の中間層から出力層の重み
  xs_f = np.zeros_like(xs)
  xs_b = np.zeros_like(xs)

  for i, x in enumerate(xs):
    xs_f[i] = x
    xs_b[i] = x[::-1]

  hs_f = _rnn(xs_f, W_f, U_f)
  hs_b = _rnn(xs_b, W_b, U_b)
  hs = [np.concatenate([h_f, h_b[::-1]], axis=0)] for h_f, h_b in zip(hs_f, hs_b)
  ys = hs.dot(V.T)
  return ys

통상의 RNN이라면 순방향만이었던 것에 역방향이 늘어난 것이므로 복잡한 것은 아니다.

X. 래빗 챌린지란?



래빗 챌린지란, 일본 딥 러닝 협회 인정의 강좌 프로그램의 하나.
E 자격을 수험하기 위해서는 이 래빗 챌린지 등, 어느 하나의 강좌 프로그램을 수료해야 한다.

래빗 챌린지의 특징은 "현장에서 파괴가 효과가 있는 딥 러닝 강좌"의 통학 강좌 녹화 비디오를 편집한 교재를 사용한 자습 스타일이라는 점.
서포트는 다른 강좌보다 적고, 수신이 아니라 자주적으로 배워가는 자세가 아니면 진행되지 않지만, 그만큼, 다른 강좌에 비하면 저렴하고, 손이 내기 쉽다.
어느 정도 지식이 있는 사람, 자력으로 노력한다고 하는 녀석이 있는 사람 전용이 아닐까 느낀다.

좋은 웹페이지 즐겨찾기