Grade

Bài 2 — Làm sao Spotify biết bài hát này "giống" bài hát bạn vừa nghe?

Bạn nghe hết một bài trên Spotify. Chưa kịp chạm vào gì, nó đã tự phát bài tiếp theo — và bài ấy đúng gu tới mức hơi khó chịu.

Q

Quản trị viên

14 tháng 9, 2026· 6 phút đọc

Bài 2 — Làm sao Spotify biết bài hát này "giống" bài hát bạn vừa nghe?

Bạn nghe hết một bài trên Spotify. Chưa kịp chạm vào gì, nó đã tự phát bài tiếp theo — và bài ấy đúng gu tới mức hơi khó chịu.

TikTok cũng vậy. Xem hết ba video về bóng rổ, video thứ tư đã là bóng rổ, dù bạn không hề bấm thích và không hề tìm kiếm.

Ở Bài 1 ta đã thấy mọi thứ đều biến được thành vectơ. Nhưng bài ấy còn nợ một câu hỏi: khi hai vectơ không trùng nhau, làm sao đo được chúng "giống nhau bao nhiêu"?

Câu trả lời nằm ở công thức tích vô hướng, chương II Toán 10.

Ý tưởng: giống nhau nghĩa là cùng HƯỚNG

Giả sử mỗi bài hát được mô tả bằng hai con số:

  • Trục hoành: mức độ sôi động (0 = rất chậm, 10 = rất mạnh)
  • Trục tung: mức độ "lời buồn"

Bốn bài hát:

BàiToạ độMô tả
A(3;4)(3;4)vừa phải, hơi buồn
B(4;3)(4;3)vừa phải, hơi buồn (gần giống A)
C(−4;3)(-4;3)rất trầm lắng nhưng lời buồn
D(6;8)(6;8)gấp đôi A về mọi mặt

Nhìn D: nó có tỉ lệ sôi động/buồn giống hệt A, chỉ là "to" gấp đôi. Nếu ta đo độ giống bằng khoảng cách như Bài 1:

d(A,D)=(6−3)2+(8−4)2=9+16=5d(A,D) = \sqrt{(6-3)^2+(8-4)^2} = \sqrt{9+16} = 5

Khoảng cách 5 — xa hơn cả khoảng cách từ A tới B! Nhưng trực giác nói D giống A hơn. Vậy khoảng cách là thước đo sai ở đây.

Vấn đề: độ dài vectơ phản ánh "cường độ" chứ không phản ánh "gu". Một bài hát được nghe 1000 lần và một bài được nghe 10 lần có thể cùng thể loại. Ta cần một thước đo bỏ qua độ dài, chỉ nhìn hướng.

Đó chính là cosin của góc giữa hai vectơ.

Trực quan hoá

Bốn vectơ bài hát và góc giữa chúng trên mặt phẳng toạ độ

Nhìn hình: A và D nằm trên cùng một tia — góc giữa chúng bằng 0∘0^\circ. Còn A và C thì gần như vuông góc.

Công thức: chính là công thức SGK

Toán 10 cho công thức tính cosin góc giữa hai vectơ:

cos⁡(a⃗,b⃗)=a⃗⋅b⃗∣a⃗∣⋅∣b⃗∣\cos(\vec{a},\vec{b}) = \frac{\vec{a}\cdot\vec{b}}{|\vec{a}|\cdot|\vec{b}|}

với tích vô hướng a⃗⋅b⃗=x1x2+y1y2\vec{a}\cdot\vec{b} = x_1x_2 + y_1y_2 và độ dài ∣a⃗∣=x12+y12|\vec{a}| = \sqrt{x_1^2+y_1^2}.

Trong ngành AI, đại lượng này được gọi là cosine similarity. Cùng một công thức, hai cái tên.

Thang đo rất dễ đọc:

Giá trị cosinGócÝ nghĩa
110∘0^\circgiống hệt về gu
0,90{,}9–11dưới 26∘26^\circrất giống
0090∘90^\circkhông liên quan
−1-1180∘180^\circngược hẳn nhau

Giải bài toán mẫu

Bài toán. Bạn vừa nghe xong bài A(3;4)(3;4). Spotify nên phát B(4;3)(4;3), C(−4;3)(-4;3) hay D(6;8)(6;8)?

Tính cosin giữa A và B:

A⃗⋅B⃗=3⋅4+4⋅3=12+12=24\vec{A}\cdot\vec{B} = 3\cdot4 + 4\cdot3 = 12 + 12 = 24
∣A⃗∣=32+42=25=5,∣B⃗∣=42+32=5|\vec{A}| = \sqrt{3^2+4^2} = \sqrt{25} = 5, \qquad |\vec{B}| = \sqrt{4^2+3^2} = 5
cos⁡(A⃗,B⃗)=245⋅5=2425=0,96\cos(\vec A,\vec B) = \frac{24}{5\cdot5} = \frac{24}{25} = 0{,}96

Bấm arccos⁡(0,96)\arccos(0{,}96) trên máy tính: góc ≈16∘\approx 16^\circ. Rất giống.

Tính cosin giữa A và C:

A⃗⋅C⃗=3⋅(−4)+4⋅3=−12+12=0\vec{A}\cdot\vec{C} = 3\cdot(-4) + 4\cdot3 = -12 + 12 = 0
cos⁡(A⃗,C⃗)=05⋅5=0\cos(\vec A,\vec C) = \frac{0}{5\cdot5} = 0

Tích vô hướng bằng 00 nghĩa là hai vectơ vuông góc — một kết quả bạn đã biết từ Toán 10. Góc 90∘90^\circ, hoàn toàn không liên quan.

Tính cosin giữa A và D:

A⃗⋅D⃗=3⋅6+4⋅8=18+32=50\vec{A}\cdot\vec{D} = 3\cdot6 + 4\cdot8 = 18 + 32 = 50
∣D⃗∣=62+82=100=10|\vec{D}| = \sqrt{6^2+8^2} = \sqrt{100} = 10
cos⁡(A⃗,D⃗)=505⋅10=5050=1\cos(\vec A,\vec D) = \frac{50}{5\cdot10} = \frac{50}{50} = 1

Cosin bằng đúng 11 ⇒ góc 0∘0^\circ ⇒ hai vectơ cùng hướng.

Kết luận. Xếp hạng: D (1,001{,}00) > B (0,960{,}96) > C (00). Spotify phát D trước, rồi tới B.

Chú ý điều vừa xảy ra: theo khoảng cách thì D xa A nhất trong ba bài, nhưng theo cosin thì D giống A nhất. Đổi thước đo, đổi luôn kết luận — và cosin mới là thước đo đúng cho bài toán này.

Vì sao phép chia cho độ dài lại quan trọng đến thế

Mẫu số ∣a⃗∣⋅∣b⃗∣|\vec a|\cdot|\vec b| chính là chỗ "độ dài bị loại bỏ". Hãy xem điều gì xảy ra nếu bỏ nó đi và chỉ dùng tích vô hướng:

A⃗⋅B⃗=24nhưngA⃗⋅D⃗=50\vec A\cdot\vec B = 24 \quad\text{nhưng}\quad \vec A\cdot\vec D = 50

Chỉ vì D dài gấp đôi. Nếu xếp hạng bằng tích vô hướng trần, mọi bài hát phổ biến (vectơ dài) sẽ luôn được gợi ý trước, bất kể gu. Đó đúng là căn bệnh của những hệ thống gợi ý đời đầu: chỉ đẩy nội dung đang hot.

Chia cho độ dài là cách chữa. Nó đưa mọi vectơ về cùng "một đơn vị" trước khi so sánh, nên hai bài hát cùng thể loại được xếp gần nhau dù một bài có triệu lượt nghe còn bài kia chỉ có vài trăm.

Thử thách tự tính

TikTok mô tả mỗi video bằng ba con số: (thời lượng tính bằng chục giây; độ ồn; số lần cắt cảnh). Bạn vừa xem hết video V(2;6;3)V(2;6;3).

Ba video ứng viên:

VideoToạ độ
P(4;12;6)(4;12;6)
Q(6;2;1)(6;2;1)
R(1;3;1,5)(1;3;1{,}5)

Câu hỏi 1. Tính cos⁡(V⃗,P⃗)\cos(\vec V,\vec P). (Gợi ý: P⃗=2V⃗\vec P = 2\vec V.)

Câu hỏi 2. Tính cos⁡(V⃗,Q⃗)\cos(\vec V,\vec Q), làm tròn hai chữ số thập phân.

Câu hỏi 3. Không cần tính, hãy cho biết cos⁡(V⃗,R⃗)\cos(\vec V,\vec R) bằng bao nhiêu, và giải thích tại sao.

Câu hỏi 4. TikTok nên đẩy video nào lên trước?

Đáp án

Câu 1. V⃗⋅P⃗=2⋅4+6⋅12+3⋅6=8+72+18=98\vec V\cdot\vec P = 2\cdot4 + 6\cdot12 + 3\cdot6 = 8+72+18 = 98. ∣V⃗∣=4+36+9=49=7|\vec V| = \sqrt{4+36+9} = \sqrt{49} = 7; ∣P⃗∣=16+144+36=196=14|\vec P| = \sqrt{16+144+36} = \sqrt{196} = 14. Vậy cos⁡=987⋅14=9898=1\cos = \dfrac{98}{7\cdot14} = \dfrac{98}{98} = 1.

Câu 2. V⃗⋅Q⃗=2⋅6+6⋅2+3⋅1=12+12+3=27\vec V\cdot\vec Q = 2\cdot6 + 6\cdot2 + 3\cdot1 = 12+12+3 = 27. ∣Q⃗∣=36+4+1=41≈6,40|\vec Q| = \sqrt{36+4+1} = \sqrt{41} \approx 6{,}40. Vậy cos⁡≈277×6,40≈0,60\cos \approx \dfrac{27}{7\times6{,}40} \approx 0{,}60.

Câu 3. R⃗=0,5 V⃗\vec R = 0{,}5\,\vec V, tức cùng hướng với V⃗\vec V, nên cos⁡=1\cos = 1 — không cần tính. Đây là điểm mấu chốt: nhân một vectơ với số dương bất kỳ không đổi cosin.

Câu 4. P và R đồng hạng nhất (cos⁡=1\cos = 1), Q xếp sau (0,600{,}60). Chú ý R là video ngắn hơn hẳn V mà vẫn được coi là cùng gu — đúng như ta muốn.

Lời kết

Công thức cos⁡(a⃗,b⃗)=a⃗⋅b⃗∣a⃗∣∣b⃗∣\cos(\vec a,\vec b) = \dfrac{\vec a\cdot\vec b}{|\vec a||\vec b|} nằm ở chương II Toán 10, thường được dạy kèm bài tập "tính góc giữa hai vectơ". Chính công thức ấy đang chạy hàng tỉ lần mỗi giây trong TikTok, Spotify, Netflix, Shopee và cả thanh tìm kiếm của Google.

Điểm đáng nhớ không phải là công thức — mà là lý do chọn nó. Ta không đo độ giống bằng khoảng cách, vì khoảng cách trộn lẫn "gu" với "độ phổ biến". Ta đo bằng góc, vì góc chỉ nói về hướng.

Chọn đúng thước đo cho đúng câu hỏi — đó mới là phần khó, và đó là thứ môn Toán dạy được mà việc học thuộc công thức thì không.

Bài 3 sẽ chuyển từ đo đạc sang quyết định: làm sao vẽ một đường thẳng để máy tự phân loại email thành spam và không spam.


Muốn luyện chắc tích vô hướng và góc giữa hai vectơ, thầy cô và các bạn có thể dựng bộ đề riêng trên Grade: chấm tự động ngay khi nộp kèm lời giải chi tiết từng câu. Dùng thử miễn phí tại đây.


Bắt đầu học cùng Grade

Luyện tập, kiểm tra trình độ và theo dõi tiến độ học tập đa môn — trên web và điện thoại.

Đăng ký miễn phí

Bài viết liên quan