Với mỗi truy vấn mà người dùng nhập vào, cỗ máy tìm kiếm của Google cần tìm mọi trang web liên quan tới truy vấn và xếp hạng chúng theo một thứ tự ưu tiên để hiển thị kết quả cho người dùng. Số website trên toàn cầu là rất lớn, ước tính hiện tại có khoảng gần 2 tỉ website¹. Trong bài viết này, chúng ta sẽ tìm hiểu sơ bộ phương pháp Google sử dụng để xếp hạng các trang web này. Ở đây, vai trò của các kiến thức toán học là không thể thiếu.

Hệ thống tìm kiếm thông tin của tập đoàn công nghệ Google được hàng trăm triệu người sử dụng mỗi ngày. Theo một thống kê gần đây, Google chiếm khoảng 78% thị phần tìm kiếm trên toàn cầu, bỏ xa thị phần của các công ty nổi tiếng khác như Baidu, Yahoo, hay Microsoft. Cứ mỗi giây, cỗ máy tìm kiếm của Google xử lí khoảng 40,000 truy vấn; tức xử lí khoảng 3.5 tỉ truy vấn mỗi ngày, và các con số này tăng dần mỗi năm.

Với mỗi truy vấn mà người dùng nhập vào, cỗ máy tìm kiếm của Google cần tìm mọi trang web liên quan tới truy vấn và xếp hạng chúng theo một thứ tự ưu tiên để hiển thị kết quả cho người dùng. Số website trên toàn cầu là rất lớn, ước tính hiện tại có khoảng gần 2 tỉ website¹. Mỗi website thường chứa nhiều trang web (webpage). Ước tính số lượng trang web là rất lớn, hàng chục tỉ trang. Trong bài viết này, chúng ta sẽ tìm hiểu sơ bộ phương pháp Google sử dụng để xếp hạng các trang web này. Có thể tóm gọn về bản chất, mỗi khi ai đó tìm kiếm, Google sẽ cần giải một hệ phương trình tuyến tính rất lớn. Ở đây, vai trò của các kiến thức toán học là không thể thiếu.

Trước tiên, ta thấy rằng các trang web quan trọng thì cần được xếp hạng cao hơn các trang web ít quan trọng. Điểm mấu chốt ở đây là ta cần lượng hoá được độ quan trọng của mỗi trang web. Về mặt trực quan, ta thấy rằng nếu có nhiều trang web quan trọng cùng liên kết tới một trang web A nào đó thì A rất nhiều khả năng là trang web quan trọng. Chú ý rằng các liên kết này là có chiều: trang web A liên kết tới trang web B nhưng B không nhất thiết liên kết tới A.

Về mặt hình ảnh, các trang web lập thành một đồ thị, hay một mạng gồm các cung có hướng. Mỗi đỉnh của đồ thị là một trang web, đỉnh A có cung đi tới đỉnh B nếu trang web A chứa liên kết tới trang web B. Đồ thị này là một đồ thị rất thưa, theo nghĩa số đỉnh thì rất nhiều (hàng chục tỉ), trong khi số cung thì rất ít nếu so với số đỉnh – thông thường mỗi đỉnh chỉ nối với một số ít số đỉnh khác.

Giả sử có N trang web, mỗi trang web \(i\) có \(O_i\) liên kết đi ra khỏi nó và có \(I_i\) liên kết tới nó. Ta kí hiệu \(π_i\) là độ quan trọng của trang web \(i\). Theo giả định “ngưu tầm ngưu, mã tầm mã” ở trên, ta thấy rằng nếu có một số trang web quan trọng liên kết tới trang A thì trang A sẽ là trang web quan trọng, tức là ta có thể xấp xỉ \(π_A\) = \(\sum_{i \rightarrow A}\pi _i\), trong đó tổng tính theo mọi trang web liên kết tới A. Tuy nhiên, xấp xỉ này không tốt bởi trang web \(i\) có thể liên kết tới rất nhiều trang web khác trong mạng, do vậy, mỗi trang đó sẽ chỉ được chia một phần nhỏ của độ quan trọng của trang web \(i\).

Giả sử độ quan trọng của mỗi trang web (hay mỗi đỉnh trong đồ thị) được phân phối đều cho các liên kết đi ra khỏi trang web đó. Nói cách khác, mỗi đỉnh ra kề với đỉnh \(i\) sẽ nhận được độ quan trọng \(π_i\)/\(O_i\) từ đỉnh \(i\). Như vậy, ta có thể xấp xỉ độ quan trọng của mỗi đỉnh bằng cách lấy tổng tất cả các độ quan trọng mà nó nhận được từ các đỉnh kề đi vào nó, ví dụ với đỉnh 1:

\(\hat{\pi}_1\) = \(\sum\limits_{j\to 1}\frac{\pi_j }{O_j}\)

Nếu \(\hat{\pi}_1\) ≡ \(π_1\) thì ta có điểm số quan trọng phù hợp, hay vững. Về mặt toán học, chỉ với một số thay đổi dựa trên ý tưởng ở trên, ta có thể tìm được một bộ điểm số vững và duy nhất cho mọi đỉnh của đồ thị, kí hiệu là \(\begin{Bmatrix}π^*_i\end{Bmatrix}\)

Hình 1: Một đồ thị trang web đơn giản.

Xét một đồ thị ví dụ nhỏ như trên Hình 1 với 4 trang web và 6 liên kết². Bộ điểm số quan trọng của đồ thị này là \(π\) = \([0.125,0.125,0.375,0.375]\). Đồ thị này có ít đỉnh và đối xứng để dễ tính các điểm số. Cách tính \(π\) như sau. Ta thấy đỉnh 1 và 2 tương tự nhau vì đối xứng, mỗi đỉnh có một cung ra và một cung vào. Giả sử độ quan trọng của chúng đều là \(x\). Nếu gộp hai đỉnh 3 và 4 lại thành một “siêu” đỉnh 3+4 thì siêu đỉnh này có 2 cung đi vào, do đó sẽ quan trọng hơn các đỉnh 1 và 2. Bên cạnh đó, đỉnh 3 trỏ tới đỉnh 4 và ngược lại, đỉnh 4 trỏ tới đỉnh 3 nên hai đỉnh này chia sẻ độ quan trọng với nhau theo cách cân bằng. Giả sử độ quan trọng của các đỉnh 3 và 4 đều là \(y\). Xét đỉnh 1, ta thấy nó chỉ có một cung đi vào xuất phát từ đỉnh 4; trong khi đó đỉnh 4 có ba cung đi ra, nên \(x\) = \(y\)/3. Theo điều kiện chuẩn hoá, tổng các điểm số là 1 nên ta có 2\(x\) + 2\(y\) = 1. Giải hệ hai phương trình:

3\(x\) − \(y\) = 0
2\(x\) + 2\(y\) = 1

ta thu được \(x\) = 0.125 và \(y\) = 0.375.

Trong thực tế, Google nói riêng và các bộ máy tìm kiếm khác nói chung cần giải một hệ phương trình tuyến tính rất lớn, tương ứng với ma trận đại số \(G\) cỡ N × N, với N là số trang web liên quan tới truy vấn tìm kiếm. Giả sử \(π\) là véc-tơ cột kích thước N × 1 và \(π^T\) là chuyển vị của nó. Ban đầu, ở thời điểm 0, ta có thể khởi tạo \(π\) = \(π_0\) là một véc-tơ ngẫu nhiên và liên tục cập nhật nó bằng thủ tục lặp

\(π^T_{k+1}\) = \(π^T_k\)\(G\),

trong đó \(π_k\) là véc-tơ điểm số ở bước thứ \(k\). Nếu \(G\) có một số tính chất toán học phù hợp thì véc-tơ \(π_k\) sẽ hội tụ tới một véc-tơ duy nhất \(π^*\) khi số bước \(k\) đủ lớn:

\(π^{*T}\) = \(π^{*T}\)\(G\)

Nói cách khác, \(π^*\) là véc-tơ riêng trái của \(G\) ứng với giá trị riêng bằng 1.

Tóm lại, mỗi khi có người tìm kiếm, Google cần tính toán độ liên quan và độ quan trọng của các trang web chứa kết quả. Để thực hiện tính toán này, ngoài các yêu cầu về công nghệ trong việc tổ chức, lưu trữ dữ liệu rất lớn, Google cần giải một số bài toán lõi vốn trực tiếp cần tới các kiến thức về đại số tuyến tính, giải tích số, xác suất thống kê và khoa học máy tính. Hơn thế nữa, các thuật toán đó cần phải thực hiện rất nhanh để đáp ứng nhiều tỉ truy vấn tìm kiếm mỗi ngày.

Chú thích:

¹Theo http://www.internetlivestats.com/
²Ví dụ này được trích từ cuốn sách Networked Life của GS. Mung Chiang.

Lê Hồng Phương
Phòng Thí nghiệm Khoa học Dữ liệu Trường ĐH Khoa học Tự nhiên, ĐHQG Hà Nội.

 

Tin liên quan:
  • 26
    Shares