본문 바로가기

Deep Learning71

Keras를 통한 SimpleRNN, LSTM 출력값의 이해 임의의 입력 생성하기 import numpy as np import tensorflow as tf from tensorflow.keras.layers import SimpleRNN, LSTM, Bidirectional train_X = [[0.1, 4.2, 1.5, 1.1, 2.8], [1.0, 3.1, 2.5, 0.7, 1.1], [0.3, 2.1, 1.5, 2.1, 0.1], [2.2, 1.4, 0.5, 0.9, 1.1]] train_X=np.array(train_X, dtype=np.float32) train_X=train_X[np.newaxis, :] train_X # array([[[0.1, 4.2, 1.5, 1.1, 2.8], # [1. , 3.1, 2.5, 0.7, 1.1], # [0.3, .. 2021. 12. 16.
LSTM, GRU Vanilla RNN * Vanilla RNN은 장기의존성 문제(Problem of Long-Term dependencies)로 인해 긴 sequence의 data를 입력으로 받는 것이 권장되지 않는다. * 이는 RNN의 backpropagation과정인 BPTT에 대한 이해, gradient vanishing에 대한 이해가 선행되어야 하지만, 이번 포스팅에서는 이를 수식적으로 살펴보기 보다는 간단한 예시로 넘어가려고 한다(BPTT에 대한 포스팅은 추후에 올리겠다). * 예를 들어 긴 sequence, 100단어로 구성된 문장의 마지막 단어를 예측하는 모델의 경우를 살펴보자. 마지막 단어를 유추하기 위해서는 hidden state를 통해 전달되어 온 이전 정보들을 통해 문장에 대한 맥락을 파악하게 될 것.. 2021. 12. 16.
RNN(Recurrent Neural Network) 순환 신경망(RNN, Recurrent Neural Network) * Feed Forward Neural Network에서는 input value가 activation function을 거치고 그 결과 값이 다시 다음 hidden layer의 input으로 들어가며 데이터가 한 방향으로만 흐르는 특징을 보여준다. 대표적으로 DNN, CNN등이 그러하다. * 반면 RNN은 데이터가 한 방향으로만 흐르지 않는다. activation function을 거친 값이 다음 hidden layer의 input이 되기도 하고 혹은 동시에 곧바로 output layer로 향하기도 한다. * 그림은 편향 b를 생략하고 입력 vector $x_t$, 출력 vector $y_t$만 표시한 그림이다. 위 cell이라고 표시한.. 2021. 12. 16.
16.3 신경망 기계 번역을 위한 인코더-디코더 네트워크 인코더 디코더 네트워크 인코더 디코더 네트워크 구조 * 위 그림은 영어 단어를 입력하면 프랑스어로 번역해주는 인코더-디코더 네트워크를 뜻한다. * 인코더 부분의 input은 I drink milk를 뒤집어 놓은 문장인 것을 확인할 수 있다. 이는 문장의 시작 단어가 인코더의 마지막에 가도록 하기 위해서이며, 디코더가 번역할 첫 단어가 문장의 시작 단어( ' I ' ) 이기 때문이다. * 각 단어는 초기에 1차원 값(ex - milk : 288) 으로 표현되어 있지만, Embedding layer를 지나면서 단어 임베딩으로 변환되어 인코더, 디코더의 input으로 들어가게 된다. * 각 time step마다 디코더는 vocabulary dictionary에 있는 단어에 대한 점수를 출력하고 이 output.. 2021. 11. 24.