questionet

embedding layer 본문

Learning questions/쉽게 이해되지 않는 것들

embedding layer

orthanc 2021. 1. 15. 17:48

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 이 실수의 배열,

단어 벡터가 의미하는 것이 무엇인지 알기 위해선

이 실수 배열을 계산해낸 모델이(함수가) 무엇을 계산하기 위해 고안된 함수인지 먼저 알아야 할 것이고

계산의 어느 과정에서 나오게 된 수들인지를 알아야 할 것이다.

하지만 이건 아주 희미한 스케치에 불과하다.

저 수들의 정체를 밝혀내고 싶다

Comments