Cosine Similarity
Tìm hiểu cách độ tương đồng cosine đo mức độ tương đồng giữa các vector trong AI. Tính embedding hình ảnh bằng Ultralytics YOLO26 và mở rộng quy mô với Ultralytics Platform.
Độ tương đồng cosine là một chỉ số toán học cơ bản được sử dụng trong machine learning (ML) và trí tuệ nhân tạo (AI) để đo mức độ tương đồng giữa hai mảng đa chiều hoặc vector, bất kể kích thước hay độ lớn của chúng. Bằng cách tính góc giữa hai điểm trong không gian vector, chỉ số này xác định liệu chúng có hướng gần như cùng một phía hay không. Cách tiếp cận dựa trên góc này rất quan trọng khi xử lý dữ liệu mà hướng quan trọng hơn tổng độ dài, nhờ đó đặc biệt hiệu quả khi so sánh các biểu diễn dữ liệu trừu tượng như embedding.
Tìm hiểu toán học đằng sau chỉ số này#
Để tính chỉ số này, bạn lấy tích vô hướng của hai vector rồi chia cho tích độ lớn riêng của chúng (độ dài). Điểm số thu được luôn nằm trong phạm vi cố định từ -1 đến 1:
- Điểm số bằng 1 nghĩa là các vector hướng chính xác cùng một phía, cho thấy mức độ tương đồng tối đa.
- Điểm số bằng 0 nghĩa là các vector hoàn toàn vuông góc (tạo thành góc 90 độ), tức là không có sự tương đồng về hướng.
- Điểm số bằng -1 nghĩa là chúng hướng chính xác ngược chiều nhau.
Trong nhiều framework deep learning hiện đại được thiết kế cho thị giác máy tính (CV), bạn có thể dễ dàng sử dụng các hàm tối ưu hóa cho phép toán này, chẳng hạn như module functional của PyTorch hoặc các metric của TensorFlow.
Phân biệt các khái niệm liên quan#
Để biết khi nào nên sử dụng độ tương đồng cosine, bạn nên phân biệt chỉ số này với các phép đo phân tích dữ liệu thường dùng khác:
- Khoảng cách cosine: Dù có liên quan mật thiết, hai thuật ngữ này tỷ lệ nghịch với nhau. Khoảng cách cosine được tính đơn giản bằng 1 trừ đi độ tương đồng cosine. Vì vậy, khoảng cách nhỏ hơn biểu thị mức độ tương đồng giữa các vector cao hơn.
- Khoảng cách Euclid: Chỉ số này đo khoảng cách vật lý theo đường thẳng giữa hai điểm, do đó rất nhạy với kích thước hoặc độ lớn tổng thể của các vector. Ngược lại, độ tương đồng cosine chỉ quan tâm đến góc. Ví dụ, trong phân tích văn bản, một tài liệu dài và một câu ngắn có thể có khoảng cách Euclid lớn, nhưng nếu cùng chủ đề thì độ tương đồng cosine vẫn cao.
Ứng dụng thực tế trong AI#
Độ tương đồng cosine là động cơ cốt lõi của nhiều sản phẩm phần mềm hiện đại, kết nối dữ liệu thô với ý định của con người.
- Tìm kiếm vector và RAG: Trong các ứng dụng Xử lý ngôn ngữ tự nhiên (NLP) như chatbot, truy vấn của người dùng và tài liệu nội bộ được chuyển thành embedding dày đặc. Hệ thống nhanh chóng tính độ tương đồng cosine để truy xuất các tài liệu phù hợp nhất với ngữ cảnh từ cơ sở dữ liệu vector, một bước quan trọng trong Retrieval-Augmented Generation (RAG).
- Hệ thống đề xuất: Các dịch vụ thương mại điện tử và phát trực tuyến sử dụng những công cụ như Scikit-learn và SciPy để biểu diễn sở thích người dùng và các mặt hàng trong danh mục dưới dạng vector. Bằng cách đo điểm tương đồng giữa hồ sơ người mua và các sản phẩm khác nhau, hệ thống có thể đề xuất chính xác những mặt hàng có liên quan về hình ảnh hoặc chủ đề.
Đo độ tương đồng hình ảnh với Ultralytics#
Bạn có thể trích xuất trực tiếp các vector đặc trưng nhiều chiều từ dữ liệu hình ảnh bằng các model thị giác hiện đại nhất. Đoạn mã Python sau minh họa cách tải model Ultralytics YOLO26 cho tác vụ phân loại ảnh, tạo embedding cho hai ảnh và tính độ tương đồng cosine để đo mức độ giống nhau về hình ảnh.
import torch
import torch.nn.functional as F
from ultralytics import YOLO
# Load a pre-trained YOLO26 classification model
model = YOLO("yolo26n-cls.pt")
# Generate embedding vectors for two separate images
results = model.embed(["bus.jpg", "car.jpg"])
# Calculate the cosine similarity between the two visual embeddings
similarity = F.cosine_similarity(torch.tensor(results[0]), torch.tensor(results[1]), dim=0)
print(f"Visual Similarity Score: {similarity.item():.4f}")Đối với các nhà phát triển muốn mở rộng những khả năng tìm kiếm ngữ nghĩa này, việc huấn luyện các model nền có độ chính xác cao là tối quan trọng. Ultralytics Platform tinh giản quy trình này bằng cách cung cấp các công cụ mạnh mẽ cho chú thích dữ liệu, huấn luyện trên cloud có khả năng mở rộng và triển khai model liền mạch, đảm bảo các embedding nền tảng của bạn chính xác và giàu ý nghĩa nhất có thể.









