questionet
embedding layer 본문
tf.Tensor(
[[[-4.83280793e-02 -2.15197727e-03 1.11781843e-02 -1.43208727e-02]
[ 6.16727024e-03 4.52284105e-02 7.57811219e-03 -2.49007475e-02]
[-8.90119001e-03 -2.55328901e-02 -1.62151456e-02 4.17283215e-02]
[ 1.46619789e-02 3.59559171e-02 3.64218391e-02 2.84857489e-02]
[ 4.29285429e-02 -9.21944529e-03 2.76987664e-02 -1.26652345e-02]]
[[-4.83280793e-02 -2.15197727e-03 1.11781843e-02 -1.43208727e-02]
[ 6.16727024e-03 4.52284105e-02 7.57811219e-03 -2.49007475e-02]
[-4.71881889e-02 -4.50273603e-03 1.65916979e-04 4.65927385e-02]
[ 3.48743461e-02 -2.48775966e-02 -1.71250477e-02 -6.74836338e-05]
[ 4.29285429e-02 -9.21944529e-03 2.76987664e-02 -1.26652345e-02]]
[[-4.83280793e-02 -2.15197727e-03 1.11781843e-02 -1.43208727e-02]
[-1.34522207e-02 2.44923718e-02 -2.59444471e-02 -3.94781604e-02]
[ 6.16727024e-03 4.52284105e-02 7.57811219e-03 -2.49007475e-02]
[-8.90119001e-03 -2.55328901e-02 -1.62151456e-02 4.17283215e-02]
[-1.12561360e-02 9.77188349e-03 1.09049901e-02 2.05837823e-02]]], shape=(3, 5, 4), dtype=float32)
위에 보이는 실수의 배열은
i feel hungry, i eat lunch, now i feel happy 각 세 문장을 벡터로 바꾼 결과다.
예를 들면 2번째 행인 6.16727024e-03 4.52284105e-02 7.57811219e-03 -2.49007475e-02 이 네 개의 실수는
i feel hungry에서 i를 워드벡터로 바꿨을 때 생성되는 배열이다.
NLP의 주요 과제 중 하나는
우리가 사용하는 단어와 그 단어의 의미를 나타내는 벡터를 짝짓는 것이다.
단어를 벡터로 바꾸는 과정을 embedding 이라 하므로
저 60개의 실수 배열은 거칠게 말하면 하나의 embedding layer라 할 수 있겠다.
나의 질문은 다음과 같다.
저 네개의 실수가 의미하는 게 무엇인가?
6.16727024e-03 4.52284105e-02 7.57811219e-03 -2.49007475e-02 이 실수배열이 알파벳 i를 가리키고 있다는 것은 알겠다.
그런데 i의 의미를 저 4개의 실수를 가지고 있는 하나의 벡터가 갖고 있다는게 정확히 무슨 뜻인가?
꼭 4개의 실수일 필요는 없다. 차원을 높여 10개 100개의 실수 배열도 가능하다.
바꿔 말해
어떤 숫자의 배열들이 '단어의 의미를 나타낸다' 는 것이 무슨 뜻이냐는 물음이다.
한 단어가 의미를 갖는다는 건 그 단어가 가리키는 대상이 무엇인지를 아는 것 이상의 무언가를 요구한다.
'나무' 라는 단어는 실제 세계에 존재하는 수많은 다양한 나무들을 고도로 추상화한 개념에 불과하다.
즉 '나무' 라는 단어는 그 자체로 어떤 의미도 가지지 않는다.
첫째 그것이 가리키는 대상이 지금 여기 지칭될 수 있어야 하고,
둘째 또 다른 단어들과의 관계 속에(다시 말해 문장 안에서) 그 의미를 특정할 수 있다.
셋째 심지어 문장 한에서 어떤 단어가 하나의 의미로만 특정되지 않는 경우도 허다하다.
넷째 한 단어는 그 단어가 속한 언어(한국어, 영어, 중국어)내에서만 의미를 가질 뿐, 자신이 속하지 않은 다른 언어군 안에선
그저 하나의 기호에 불과하다.
따라서 6.16727024e-03 4.52284105e-02 7.57811219e-03 -2.49007475e-02 이 실수의 배열,
단어 벡터가 의미하는 것이 무엇인지 알기 위해선
이 실수 배열을 계산해낸 모델이(함수가) 무엇을 계산하기 위해 고안된 함수인지 먼저 알아야 할 것이고
계산의 어느 과정에서 나오게 된 수들인지를 알아야 할 것이다.
하지만 이건 아주 희미한 스케치에 불과하다.
저 수들의 정체를 밝혀내고 싶다
'Learning questions > 쉽게 이해되지 않는 것들' 카테고리의 다른 글
normalization, standardization, regularization (0) | 2021.02.02 |
---|---|
부동 소수점 방식이 낳는 문제는 무엇인가? (0) | 2021.01.18 |
learning rate 와 optimization algorithm의 관계 (0) | 2021.01.17 |
weight regularization (0) | 2021.01.15 |
차원의 저주, 차원 축소 (0) | 2021.01.04 |