TensorFlow 유사성 소개

소스 노드 : 1079311

TensorFlow 유사성 소개

TensorFlow 유사성은 유사성 모델의 학습, 색인 생성 및 쿼리를 용이하게 하는 Google에서 새로 출시된 라이브러리입니다. 여기에서 자세한 내용을 확인하세요.


종종 우리는 다른 것과 유사한 것을 찾을 수 있어야 합니다. 유사성 검색 그렇게 하는 데 유용한 기술입니다. 데이터 과학에서는 대조 학습 유사성 검색에 사용할 수 있는 유사성 모델을 구축하는 데 사용할 수 있습니다.

유사성 모델 항목이 미터법 공간에 포함되어 유사한 항목이 서로 가깝고 서로 다른 항목에서 멀어지는 상황을 초래하는 임베딩을 출력하도록 훈련되었습니다. 이는 직관적으로나 수학적으로 이미 익숙한 단어 임베딩과 직접적으로 관련되어 있습니다. 파리와 런던은 머스타드와 케첩처럼 서로 가깝지만 이 두 그룹은 서로 비교적 멀리 떨어져 있습니다.

이와 같은 방식으로 차량을 비교하기 위해 유사성 모델을 사용할 수 있습니다. 예를 들어, BMW와 Mercedes 세단은 서로 가깝게 내장되고 Yamaha와 Kawasaki 오토바이는 밀접하게 내장됩니다. 오토바이는 세단과 상대적으로 더 멀리 떨어져 있을 것이며, 결과적으로 보트, 캠핑카, 밴, 자전거 등과 같은 다른 이종 차량과도 멀어질 것입니다.

그림
유사성 모델 개요( )

 

딥러닝은 이러한 유사성 모델에 자주 사용되는 신경망을 훈련하는 데 사용됩니다. 이러한 모델의 학습을 용이하게 하기 위해 Google은 최근에 TensorFlow 유사성.

Tensorflow 유사성은 메트릭 학습을 위한 최첨단 알고리즘과 유사성 기반 모델을 연구, 교육, 평가 및 제공하는 데 필요한 모든 구성 요소를 제공합니다.

모델이 훈련된 후에는 검색을 용이하게 하기 위해 임베딩 인덱스가 구축됩니다. 검색을 위해 TF 유사성은 ANN(Fast Approximate Nearest Neighbor Search)을 사용하여 가장 가까운 일치 항목을 검색합니다. 포함된 항목 사이의 거리는 거리 측정법의 함수이므로 ANN을 사용하면 조회가 빠르고 정확합니다.

유사성 모델은 또한 유연하고 확장 가능하므로 재교육 없이 무제한의 항목 클래스를 모델에 추가할 수 있습니다. 간단히 대표 새 항목 임베딩을 계산하여 기존 인덱스에 추가하면 됩니다.

그림
TensorFlow 유사성 개요( )

 

TensorFlow 유사성은 특히 새로운 Keras 모델의 도입으로 유사성 모델의 훈련은 물론 후속 쿼리를 직관적으로 촉진합니다. SimilarityModel(), 인덱싱 및 쿼리 삽입을 지원합니다. TF 유사성을 사용하면 엔드투엔드 모델 학습 및 쿼리가 간단해집니다.

설명하기 위해 다음은 TF 유사성의 예제 코드입니다. GitHub 저장소 이는 MNIST 데이터 세트를 간결하게 훈련, 색인화 및 쿼리합니다.

from tensorflow.keras importlayer # L2 표준으로 출력 레이어 삽입 from tensorflow_similarity.layers import MetricEmbedding # 특수한 메트릭 손실 from tensorflow_similarity.losses import MultiSimilarityLoss # tensorflow_similarity.models에서 인덱싱을 지원하는 하위 클래스 keras 모델 import 유사성 모델 # 데이터세트를 가져오는 데이터 샘플러 tf 데이터세트 카탈로그에서 직접 from tensorflow_similarity.samplers import TFDatasetMultiShotMemorySampler # Nearest Neighbor 시각화 도우미 from tensorflow_similarity.visualization import viz_neigbors_imgs # MNIST 데이터세트에서 균형 잡힌 배치를 생성하는 데이터 샘플러 = TFDatasetMultiShotMemorySampler(dataset_name='mnist',classes_per_batch=10) # 유사성 구축 모델 표준 Keras 레이어 사용 input =layer.Input(shape=(28, 28, 1)) x = 레이어.Rescaling(1/255)(입력) x = 레이어.Conv2D(64, 3, 활성화='relu')( x) x = 레이어.Flatten()(x) x = 레이어.Dense(64, 활성화='relu')(x) 출력 = MetricEmbedding(64)(x) # 특수 유사성 모델 구축 model = 유사성모델(inputs, 출력) # 대조 손실을 사용하여 유사성 모델 훈련 model.compile('adam', loss=MultiSimilarityLoss()) model.fit(sampler, epochs=5) # 검색 가능하도록 100개의 내장된 MNIST 예제를 색인화 sx, sy = Sampler.get_slice (0,100) model.index(x=sx, y=sy, data=sx) # 주어진 예제에 대해 가장 유사한 색인화된 MNIST 예제 상위 5개를 찾습니다. qx, qy = Sampler.get_slice(3713, 1) nns = model.single_lookup (qx[0]) # 쿼리 예제와 상위 5개 이웃 시각화 viz_neigbors_imgs(qx[0], qy[0], nns)


다른 것과 유사한 것을 찾고 있다면 TensorFlow 유사성이 도움이 될 수 있습니다. 자세한 내용은 다음에서 확인하세요. GitHub 레포또는 체크 아웃 안녕하세요 바로 이해하기 위한 예입니다.

 
관련:

출처: https://www.kdnuggets.com/2021/09/introducing-tensorflow-similarity.html

타임 스탬프 :

더보기 너 겟츠