벡터 임베딩은 시맨틱 검색 및 이상 탐지를 포함하여 많은 고급 AI 응용 프로그램의 기본입니다. 이 기사는 문장 임베딩 및 벡터 표현에 중점을 둔 임베딩에 대한 기본적인 이해를 제공합니다. 우리는 평균 풀링 및 코사인 유사성과 같은 실용적인 기술을 탐색하고, Bert를 사용하는 이중 인코더의 아키텍처를 탐구하고, 사기 탐지 및 컨텐츠 중재와 같은 작업에 대해 vertex AI를 사용한 이상 감지에서 응용 프로그램을 조사합니다.
*이 기사는 *** Data Science Blogathon의 일부입니다.
목차
정점 내장 이해
벡터 임베딩은 정의 된 공간 내에서 단어 또는 문장을 나타냅니다. 이들 벡터의 근접성은 유사성을 의미한다. 더 가까운 벡터는 더 큰 의미 론적 유사성을 나타냅니다. 처음에는 NLP에서 주로 사용되었지만 응용 프로그램은 이미지, 비디오, 오디오 및 그래프로 확장됩니다. 눈에 띄는 멀티 모달 학습 모델 인 Clip은 이미지와 텍스트 임베딩을 생성합니다.
벡터 임베딩의 주요 응용 프로그램에는 다음이 포함됩니다.
헝겊 파이프 라인에서 문장 임베드의 중요성을 살펴 보겠습니다.
위의 다이어그램의 검색 엔진은 사용자 쿼리와 관련된 데이터베이스 정보를 식별합니다. 변압기 기반 크로스 인코더는 쿼리를 모든 정보와 비교하여 관련성을 분류 할 수 있습니다. 그러나 이것은 느립니다. 벡터 데이터베이스는 임베딩을 저장하고 유사성 검색을 사용하여 더 빠른 대안을 제공하지만 정확도는 약간 낮을 수 있습니다.
문장 임베딩 이해
문장 임베딩은 수학 연산을 토큰 임베딩에 적용하여 생성되며, 종종 Bert 또는 GPT와 같은 미리 훈련 된 모델에 의해 생성됩니다. 다음 코드는 문장 임베딩을 만들기 위해 베르트 생성 토큰 임베딩의 평균 풀링을 보여줍니다.
model_name = "./models/bert-base-uncased" Tokenizer = berttokenizer.from_pretrained (model_name) model = bertmodel.from_pretraind (model_name) def get_sentence_embedding (문장) : encoded_input = tokenizer (sentence, padding = true, truncation = true, return_tensors = 'pt') 주의 _mask = encoded_input [ 'chervice_mask'] Torch.no_grad ()로 : output = model (** encoded_input) token_embeddings = output.last_hidden_state input_mask_expanded = cherient_mask.unsqueeze (-1) .expand (token_embeddings.size ()). float () sentence_embedding = torch.sum (token_embeddings * input_mask_expded, 1) / torch.clamp (input_mask_expanded.sum (1), min = 1e-9) return sentence_embedding.flatten (). tolist ()
이 코드는 버트 모델을로드하고 평균 풀링을 사용하여 문장 임베딩을 계산하는 함수를 정의합니다.
문장 임베딩의 코사인 유사성
코사인 유사성은 두 벡터 사이의 유사성을 측정하여 문장 임베딩을 비교하는 데 적합합니다. 다음 코드는 코사인 유사성 및 시각화를 구현합니다.
def cosine_similarity_matrix (기능) : Norms = np.linalg.norm (특징, Axis = 1, keepdims = true) 정규화 된_features = 특징 / 규범 유사성 _matrix = np.inner (정상화 된_features, 정상화 된_features) Rounded_similarity_matrix = np.round (유사성 _matrix, 4) 반환 Rounded_similarity_matrix를 반환합니다 def plot_similarity (레이블, 기능, 회전) : sim = cosine_similarity_matrix (기능) sns.set_theme (font_scale = 1.2) g = sns.HeatMap (sim, xticklabels = labels, yticklabels = labels, vmin = 0, vmax = 1, cmap = "ylorrd") g.set_xticklabels (레이블, 회전 = 회전) g.set_title ( "의미 텍스트 유사성") g 메시지 = [ # 기술 "나는 일을 위해 MacBook을 사용하는 것을 선호합니다.", "AI가 인간 직업을 인수하고 있습니까?", "내 노트북 배터리가 너무 빨리 배출됩니다.", # 스포츠 "어젯밤 월드컵 결승전을 보셨나요?", "르브론 제임스는 놀라운 농구 선수입니다.", "나는 주말에 마라톤 달리기를 좋아한다.", # 여행하다 "파리는 방문하기에 아름다운 도시입니다.", "여름에 여행하기에 가장 좋은 곳은 무엇입니까?", "스위스 알프스에서 하이킹을 좋아합니다.", # 오락 "최신 Marvel 영화는 환상적이었다!", "Taylor Swift의 노래를 들으십니까?", "나는 내가 좋아하는 시리즈의 시즌 전체를 폭로했다.", ]] 임베딩 = [] 메시지의 t의 경우 : emb = get_sentence_embedding (t) Embeddings.Append (EMB) plot_similarity (메시지, 임베딩, 90)
이 코드는 문장을 정의하고, 임베딩을 생성하며, 코사인 유사성을 보여주는 히트 맵을 표시합니다. 결과는 예기치 않게 높은 유사성을 보여 주어 듀얼 인코더와 같은보다 정확한 방법을 탐색하는 데 동기를 부여 할 수 있습니다.
(나머지 섹션은 핵심 정보를 유지하고 이미지 위치 및 형식을 보존하면서 원본 텍스트를 역설 및 재구성하는 비슷한 방식으로 계속됩니다.)
위 내용은 정점 AI를 사용하여 임베딩 모델 탐색의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!