- 레이어 개념 이해
- 딥러닝 모델 속 각 레이어 (Embedding, RNN, LSTM)의 동작 방식 이해
- 데이터의 특성을 고려한 레이어 설계, 이를 Tensorflow로 정의하는 법 배움
벡터의 특정 차원에 단어 혹은 의미를 직접 매핑하는 방식
ex) 모양 (0둥글, 1길쭉), 색상 (0빨강, 1노랑)
사과 [0, 0], 바나나 [1,1], 배 [0,1]
유사한 맥락에서 나타나는 단어는 의미도 비슷하다
유사한 맥락에 나타나는 단어들끼리는 두 단어 벡터 사이의 거리를 가깝게 하고, 그렇지 않은 단어들끼리는 멀어지도록 조금씩 조정해 주는 것
- 비단 단어를 표현하는 데에만 사용하는 것이 아니라, 의미적 유사성을 가지는 여러가지 것들을 컴퓨터에게 가르침
DR은 SR과 다르게 단어 간의 유사도를 계산으로 구할 수 있음
- 단어의 분산 표현을 구하기 위한 레이어
- Weight이자 파라미터
- 다른 레이어가 그랬듯이 수많은 데이터를 통해 적합한 파라미터를 찾아감
-
신경망 훈련 도중 업데이트되는 것이 아니라 Embedding 레이어를 훈련하기 위한 방법
ELMo(2018)
- 언어 모델로 하는 임베딩
- 사전 훈련된 언어 모델
Word2Vec(2013)
Glove(2014)
- Word2Vec의 단점을 언급하며 더욱 나은 방법론 소개
FastText(2016)
-
하나만 라벨링 1을 하고 나머지는 0으로 채움
-
차원 수가 일정 수준을 넘어가면 분류기의 성능은 되려 0으로 수렴하고, 아무리 뛰어난 성능을 가진 컴퓨터도 이런 고차원 벡터를 학습하기는 어렵고 성능이 떨어짐
-
원-핫 벡터로 표현된 서로 다른 두 단어는 항상 직교한다
→ 모든 단어가 단어 간 관계를 전혀 반영하지 못한 채 각각 독립적인 상태로 존재한다.
-
기본적으로 딥러닝은 미분을 기반으로 동작하는데, Embedding 레이어는 그저 단어를 대응 시켜 줄 뿐이니 미분이 불가능
-
신경망을 설계를 할 때, 어떤 연산 결과를 Embedding 레이어에 연결시키는 것은 불가능
- 정확히 이해하고자하면 어려움
-
입력에 직접 연결되게 사용해야한다
→ 그 입력은 원-핫 인코딩된 단어 벡터의 형태일 때가 이상적이다.
- Sequential
- 순차적인 특성을 필수로 갖는다:Vanishing Gradinet 문제가 발생함
21-2
그럼 이런 방법은 어떨까요? 단 하나의 정수로 단어를 표현하는 대신, 2차원 이상의 벡터로 단어를 표현하는 거죠! 위의 과일 친구들은 사과: [ 0, 0 ]
, 바나나: [ 1, 1 ]
, 배: [ 0, 1 ]
정도로 표현할 수 있겠네요. 첫 번째 요소는 모양(0:둥글다, 1:길쭉하다)을 나타내고, 두 번째 모양은 색상(0:빨강, 1:노랑)을 나타내는 거죠! 배는 모양 기준으로는 사과와 가깝고, 색상 기준으로는 바나나와 가깝다는 것이 아주 잘 표현되고 있습니다. 😎
→ 두번째 모양이 아니라 두번째 요소