티스토리 뷰

MLOps

2.4 Hashed Feature

seoyoung02 2022. 12. 3. 08:57

※ 이 포스트는 머신러닝 디자인 패턴을 기반으로 작성되었습니다.

 

특징 해시 디자인 패턴이 카테고리형 입력 변수(강아지, 고양이처럼 분류가능한 입력)를 표현하는 방식은 다음과 같다.

  1. 카테고리를 고유한 문자열로 변환한다.
  2. 변환한 문자열에 대해 결정론적(random seed 없음)이며, 이식 가능한(동일한 알고리즘을 학습과 서빙에서 모두 사용 가능) 해시 알고리즘을 호출한다.
  3. 해시 결과를 원하는 버킷 수로 나누고, 절대값을 취한다.(해시 함수가 음수값을 반환할 수 있기 때문)
    버킷 수는 경험적으로 하나의 버킷이 5개의 항목을 혼합하는 정도가 적절하다고 한다.

이와 같은 방식으로 feature를 나타내게 되면 복잡하고 개수가 많은 input을 적은 수의 숫자로 나타낼 수 있다.

 

따라서 이 패턴은 cardinality, 불완전한 어휘, cold start의 문제를 해결할 수 있다.
Cardinality는 (말하자면) 데이터 안에 카테고리의 갯수이다. Cardinality가 크다는 것은 카테고리의 개수가 많다는 것으로 생각할 수 있고, 이것은 특징벡터가 매우 커지는 문제를 발생시킨다. 하지만 충분한 수의 해시 버킷을 선택함으로써 수백만 개의 카테고리를 수백 개의 버킷으로 해시할 수 있다. 이를 통해 메모리와 모델 크기 요구 사향을 유지할 수 있다.
불완전한 어휘는 무작위한 샘플링으로 인해 데이터에 존재하는 모든 카테고리가 학습 데이터의 포함되지 않는 경우이다(이걸 왜 불완전한 어휘라고 하는지는 좀 궁금하다). 특징 해시를 사용하게 되면 하나의 버킷에 여러 카테고리가 포함되게 되고, 학습 데이터에 특정 카테고리가 포함되지 않는다고 해도 같은 해시 특징값을 가지는 다른 카테고리의 특징을 '차용'해 예측할 수 있다.
Cold start는 모델이 배포된 이후 새로운 카테고리가 추가될 경우 기존 모델은 새로운 카테고리에 대해 예측이 불가능하다는 문제이다. 이것의 해결은 불완전한 어휘 문제와 비슷하게 해결 가능하다. 처음에는 같은 해시 버킷에 포함된 카테고리의 예측을 가져오고, 이후 재학습을 통해 새로운 카테고리의 데이터를 반영하면 된다.

 

대부분의 디자인 패턴이 그렇듯 일종의 트레이드오프가 존재한다. 여기서는 모델 정확도와 손실의 절충점을 찾아야 한다.
해시 버킷은 전체 카테고리의 개수보다 크기가 작으므로 여러 카테고리가 버킷을 공유하는 버킷 충돌(bucket collision)문제가 존재한다. 이 문제는 버킷 수를 굉장히 크게 늘리더라도 버킷 충돌이 발생할 가능성이 45% 정도로 버킷 수를 아무리 늘려도 해결되지 않는다고 한다.
다음으로 카테고리의 분포가 치우쳐있으면 발생할 수 있는 문제가 있다. 특정 카테고리의 입력이 많아지면 같은 버킷에 들어있는 다른 카테고리의 특징에 비해 우세한 수의 카테고리의 영향을 더 많이 받게 될 것이다. 따라서 적은 수의 카테고리에 대한 정확도가 낮아진다.
또한, 의도하지 않은 상관관계가 발생할 수 있다. 예를 들어, 팜 핑거프린트 알고리즘의 경우 문자열을 이진 인코딩하게 되는데, 이는 동일 문자열간의 상관관계를 만들어낼 수 있다(실제로는 상관관계가 없음에도). MD5와 같은 암호화된 해시를 사용하면 이런 문제를 해결할 수 있지만, 일반적으로 salt가 포함되어 있어 결정론적이지 않고, 결괏값 간에도 충돌이 자주 발생하여 실질적으로는 사용 불가능하다.
추가로, 빈 버킷이 발생하는 문제와 튜닝해야할 하이퍼파라미터(버킷 수)가 늘어나는 문제가 있다.

'MLOps' 카테고리의 다른 글

4.5. Distribution Strategy  (0) 2023.01.22
6.6. Feature Store  (0) 2023.01.10
6.5. ML Workflow Pipeline  (1) 2023.01.04
ML Pipeline Solution  (0) 2023.01.04
머신러닝 디자인 패턴(Machine Learning Design Patterns) 개요  (0) 2022.12.12
댓글
최근에 올라온 글
Total
Today
Yesterday
최근에 달린 댓글
링크
공지사항
«   2025/02   »
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
글 보관함