[개념] 임베딩(Embedding)

고근호·2023년 10월 11일

임베딩

  • 데이터 분야에서 데이터를 효과적으로 처리하기 위해 사용하는 방법
  • 임베딩은 다양한 종류의 데이터를 수치화하는 과정
  • 임베딩을 통해 데이터를 수치 벡터(numeric vector)로 변환.
  • 보통은 고차원에서 저차원으로 매핑.

  • king - man + woman = queen
  • walking - walked + swam = swimming

이제는 임베딩을 사람이 하지 않고, 딥러닝 스스로 하도록 만듭니다.


Vanilla RNN 모델

import tensorflow as tf

X = tf.keras.Input(shape=[20])
H = tf.keras.layers.Embedding(88585, 28)(X)
H = tf.keras.layers.SimpleRNN(32)(H)
Y = tf.keras.layers.Dense(1, activation="sigmoid")(H)

model = tf.keras.Model(X, Y)
model.compile(loss="binary_crossentropy", metrics="accuracy")

H = tf.keras.layers.Embedding(88585, 28)(X)
  • 88585 개의 index를 28차원 공간의 점으로 표현하라.
  • 딥러닝 스스로 니가 알아서 찍어라.
  • 28차원은 임의로 정한 값.

Embedding Layer

H = tf.keras.layers.Embedding(88585, 28)(X)
  • 임베딩 전 : [837, 789, 24, 9, 584]

  • 콜롬버스의 달걀 같은 느낌
  • 예전에는 사람이 표를 만들어서 했었는데, 이제는 컴퓨터가 28개의 특징을 자동으로 찾는 형태.
  • 딥러닝 : 특징 자동 추출기

  • 각 범주별 1:1 매핑 MxN(88585x28) Matrix
  • Matrix 자체가 학습할 가중치
  • N(28)차원 공간에 데이터 포인트 M(88585)개
  • 랜덤하게 점을 찍고, 학습과정에서 적절한 위치로 포인트 이동.

Vanilla RNN 모델

import tensorflow as tf

X = tf.keras.Input(shape=[20])
H = tf.keras.layers.Embedding(88585, 28)(X)
H = tf.keras.layers.SimpleRNN(32)(H)
Y = tf.keras.layers.Dense(1, activation="sigmoid")(H)

model = tf.keras.Model(X, Y)
model.compile(loss="binary_crossentropy", 
              metrics="accuracy")
profile
rootgo 매일, 꾸준히 성장하는 사람🌱

0개의 댓글