일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- API
- Counterfactual Explanations
- requests
- top_k
- GenericGBQException
- correlation
- integrated gradient
- 상관관계
- GCP
- gather_nd
- login crawling
- 유튜브 API
- grad-cam
- API Gateway
- session 유지
- airflow subdag
- Airflow
- XAI
- UDF
- TensorFlow
- 공분산
- hadoop
- tensorflow text
- youtube data
- Retry
- spark udf
- flask
- chatGPT
- subdag
- BigQuery
- Today
- Total
데이터과학 삼학년
데이터 임베딩 최적의 차원 결정 (How to determine the embedding size?) 본문
데이터 임베딩의 최적 차원 결정
머신러닝에서 범주형 변수를 다룰 때 적절한 임베딩 차원을 선택하는 것은 매우 중요
'min(50, num_categories/2)'이라는 흔한 규칙이 있지만, 100개까지의 범주에 대해서만 적용되며,
100개를 넘어가면 어떻게 해야 할까요? 이제 최적 임베딩 차원을 결정하기 위한 데이터 기반 방식을 살펴보겠다!
1000개 이하의 범주에 대한 제안
1000개 이하의 num_categories에 대해 제안되는 공식은
num_embeddings = min(500, num_categories/2)
- 이 제안은 특정 차원에서 무작위 분포된 N 벡터의 직교성을 확인하기 위한 것
- 벡터를 정규화하고 점곱을 계산하여 평균과 표준 편차를 관찰 가능
- 아래 그래프에서 볼 수 있듯이, 약 1000차원에서 두 값의 변화가 상당히 완만해짐

1000개 이상의 범주에 대한 전환
1000개 이상의 num_categories에 대해서는 다음 공식을 사용하여 부드러운 전환을 제안합니다:
num_embeddings = 75.6496 * ln(num_categories + 176.623) - 41.4457
이 공식은 특정 설정에서 관찰된 평균과 표준 편차를 GPT2의 경우와 같이 일치시키기 위해 파생

결론적으로 최적의 임베딩 차원을 결정하는 것은 범주의 수와 그들의 분포를 고려하는 것
제안된 공식은 데이터 기반 통찰력에 기초하고 있으며, 특정 데이터셋에서의 실험 및 유효성 검사가 모델에 가장 효과적인 임베딩 차원을 찾는 데 중요!!
참조
https://ai.stackexchange.com/questions/28564/how-to-determine-the-embedding-size
How to determine the embedding size?
When we are training a neural network, we are going to determine the embedding size to convert the categorical (in NLP, for instance) or continuous (in computer vision or voice) information to hidden
ai.stackexchange.com