Closed 1920039 closed 4 years ago
안녕하세요. 책을 읽어주시고 좋은 질문을 해주셔서 감사드립니다. 질문주신 부분에 대한 답변을 드립니다.
예제 7.27의 학습에서 임베딩 레이어의 가중치는 랜덤한 값으로 초기화된 상태에서 LSTM레이어와 Dense레이어의 가중치와 마찬가지로 정답을 맞추기 위해 좀 더 나은 값으로 학습됩니다. 그런데 이때 학습 네트워크가 감성 분석을 위한 상황에만 맞춰져 있고 학습 단어의 수가 20,000개로 적기 때문에 임베딩 레이어는 각 단어를 표현하기 위한 좀 더 좋은 표현을 배우지 못하고 과적합되는 것입니다. 같은 20,000개의 단어와 300차원의 벡터를 사용한다고 해도 KoBERT처럼 5천 4백만개~2억 7천만개의 단어를 학습한 뒤 그 중 본문의 긍정/부정 감성 분석에 필요한 20,000개의 단어를 뽑아서 사용한다면 단어를 표현하는 벡터의 품질이 달라질 것입니다. 임베딩 레이어의 벡터 품질을 측정하는 방법에 대해서는 이 논문에서 비슷한 단어의 벡터 유사도 평가, 유비 추론(analogy) 등이 나와 있으니 참고해보시면 좋을 것 같습니다.
[[0], [1], [0], [0], [1]]
로 정답의 인덱스만 표시하고 있습니다. 이것은 희소행렬의 특징으로 행렬을 모두 나타내는 것이 아니라 원-핫에 해당하는 인덱스만 표시하는 것입니다. 만약 정답의 형태가 [[1,0], [0,1], [1,0], [1,0], [0,1]]
이었다면 말씀주신대로 sparse_categorical_crossentropy
가 아니라 categorical_crossentropy
를 사용해야 할 것입니다.추가로 궁금하신 점이 있으면 말씀 부탁드립니다. 감사합니다.
1. 임베딩 레이어를 만들기 위해 저렇게까지 엄청난 규모로 사전학습을 시키는군요. 제가 보고 있는 다른 책에서는 학습 단어의 수를 1,000개만 쓰고 있어서 20,000개도 매우 많다고 생각했습니다(1,000개의 경우는 val_accuracy가 잘 안나오기는 합니다)
2. 'sparse matrix'와 'sparse_categorical_crossentropy'라는 표현이 혼동을 일으키는 것 같습니다. 교재 p.134에 따르면 [0,0,0,0,0,0,0,0,1]은 대부분의 값이 0인 sparse matrix인데, 이는 메모리 낭비가 있어서 그 대신 '9'를 그냥 쓸 수 있는 sparse_categorical_crossentropy를 쓴다고 되어 있습니다. 즉, sparse matrix의 낭비를 막기 위해 'non-sparse matrix(dense matrix?)'를 사용하는 경우의 crossentropy가sparse_categorical_crossentropy라고 이해해야 하나 봅니다
친절하게 설명해 주셔서 감사합니다!
네, 그렇습니다. 참고로 2에서 예를 들어주신 [0,0,0,0,0,0,0,0,1]
은 원소의 수가 9개이기 때문에 sparse matrix로 나타내면 [8]
이 됩니다.
감사합니다.
안녕하세요. 책을 정성스럽게 써주셔서 잘 읽고 있습니다.
책 p.214에 LSTM이 과적합된 이유를 '임베딩 레이어를 랜덤한 값에서부터 시작해서 학습시키기 때문에 각 단어를 나타내는 벡터의 품질이 좋지 않아서'라고 하셨는데, 그 뜻이 정확히 이해되지 않습니다. 또 '이를 개선하기 위한 방법으로 임베딩 레이어를 별도로 학습시켜서'라고 하셨는데, 이것은 어떤 의미인가요?
다음 책 p.212에 'sparse는 정답인 Y가 희소 행렬일 때 사용한다'고 하시면서 sparse_categorical-crossentropy를 사용하셨는데, 해당 건에서는 Y가 0과 1 밖에 없어서 categorical_crossentropy에 해당하지 않나요?