(참여 못해서 죄송합니다 ㅠㅠ 22시 전까지 과제를 끝낼 수 있을 것 같았는데 …. 쪼금이라도 쓸만한 문제가 있으면 좋겠네요)
강의에서 소개한 RNN의 가장 큰 강점이 무엇인가?
Sequential data를 처리할 수 있어 사람의 언어처럼 복잡한 순서를 가져도 처리하는데 용이하다
hidden state의 역할과 명칭의 이유에 대해 설명하시오
hidden state를 통해서 전에 어떤 문자가 나왔는지에 대해 전달받아 그 전 입력값의 처리 결과를 반영하여 모델이 순서를 이해한다. . 출력되지 않고 다음 셀로 전달하기 때문에 전체적으로 봤을때는 숨겨져 있다.
순환신경망 모델인 RNN, LSTM, GRU를 복잡성의 정도를 비교하시오
LSTM > GRU > RNN
LSTM은 GRU보다 더 많은 게이트와 파라미터를 가지고 있어 복잡성이 높고 RNN은 가장 기본적인 순환 신경망 구조임
RNN 셀에 입력되는 텐서의 모양에 해당하는 각 성분을 설명해시오
(batch_size, sequential_length, input_dim)
output의 차원의 개수는 hidden state의 차원 개수를 결정한다
X , hidden state의 차원 개수가 output의 차원 개수를 결정함
강의에서 소개한 one-hot encoding의 강점을 설명하시오
categorical data를 처리하는데 용이하고 인덱스를 부여하는 방법과 달리 순서를 부여하지 않아 모든 character가 동일한 가치를 갖게 한다.
강의에서 소개한 RNN charseq 학습 코드의 일부이다.
학습 과정에 있어서 하이라이트된 코드의 역할을 각각 설명하시오
sample = " if you want you"
char_set = list(set(sample))
char_dic = {c: i for i, c in enumerate(char_set)} ***(1)
# hyper parameters
dic_size = len(char_dic)
hidden_size = len(char_dic)
learning_rate = 0.1
# data setting
sample_idx = [char_dic[c] for c in sample]
x_data = [sample_idx[:-1]] ***(2)
x_one_hot = [np.eye(dic_size)[x] for x in x_data] ***(3)
y_data = [sample_idx[1:]] ***(4)
X = torch.FloatTensor(x_one_hot) ***(5)
Y = torch.LongTensor(y_data)
(1) index와 char를 동시에 가져와서 char_dic에 저장한다
(2) x_data에서는 문자열의 맨 마지막 char를 예상하기에 빼준다
(3) x_data의 index로 one hot vector를 만들어준다. 단위 행렬을 만들어 각문자에 해당하는 벡터를 선택해 넘파이 배열에 저장해준다
(4) x_data와 달리 맨 앞 char를 빼준다
(5) 넘파이 배열로 구성된 데이터를 텐서로 변환해준다.