Chủ Nhật, 10 tháng 11, 2013

Một giải thích đơn giản nhưng thú vị về thuật toán của Google

Bài viết này bắt đầu từ một câu đùa của tôi trên Twitter:


Nếu bạn biết tôi, điều này có lẽ không làm bạn ngạc nhiên (có thể tôi nợ bạn một lời xin lỗi). Điều đáng ngạc nhiên là Matt Cutts của Google trả lời một cách rất nghiêm túc:



Điều mà Matt quan tâm không phải là câu đùa của tôi mà là trên thực tế có bao nhiêu người còn chưa hiểu rõ về thuật toán. Đoạn tweet trên đã dẫn tới một số cuộc đối thoại rất có ích, trong đó có ý kiến của Danny Sullivan về bản chất thuật toán Humming bird của Google.
Những cuộc trao đổi này khiến tôi nhận ra rằng lâu nay chúng ta thường hiểu thuật toán một cách hời hợt và đơn giản hơn nhiều so với bản chất thật của nó, bài viết này là một chuỗi các nội dung, từ khái niệm căn bản nhất về thuật toán đến những quan điểm và hướng đi của Google trong năm 2014.

Thuật toán của Google 

Không có định nghĩa cụ thể về thuật toán, chỉ là cách chúng ta nghĩ về nó thế nào, nó như một khối mã nguồn lớn mà Google thỉnh thoảng điều chỉnh. Theo suy luận của những người làm chúng tôi, nó giống như thế này:


Thông thường, khi Google thông báo một bản: “câp nhâp”,  chúng ta sẽ nhìn thấy biểu tượng màu xanh da trời. Cứ mỗi 2 đến 3 tháng, chúng tôi lại nghe tới một sự thay đổi đáng kể về thuật toán, Google cũng khẳng định đã có 665 bản update trong năm 2012. Vậy rõ ràng còn nhiều cập nhật quan trọng hơn là chỉ một vài dòng code thay đổi trong hệ thống mã nguồn lớn.

Đầu vào và đầu ra

Tất nhiên là thuật toán phải mang lại thay đổi gì đó, và chúng ta có đầu vàođầu ra. Trong trường hợp tìm kiếm, đầu vào cơ bản nhất là chỉ số Google index của tất cả các trang web, và đầu ra là các trang kết quả của bộ máy tìm kiếm (SERPs)


Khá đơn giản phải không ? Có thông tin trang webs (đầu vào), Goole sẽ trả về kết quả tìm kiếm (đầu ra). Thực tế không đơn giản một chút nào, ngay từ bước “đầu vào”.
Trước tiên, việc index được tiến hành từ hàng chục các trung tâm dữ liệu trên toàn thế giới, và từng trung tâm dữ liệu được coi như một thành phố thu nhỏ, được liên kêt bởi một trong những hệ thống toàn cầu tân tiến nhất. Để dễ hiểu hơn, tôi sẽ minh hoạ bằng nhìn hình ảnh dưới đây:


Từng khối màu minh họa trong “Index” là hệ thống hàng ngàn máy móc, một số lượng khổng lồ các phần cứng, phần mềm và con người. Nếu đi sâu vào đó thì bài viết này sẽ không bao giờ kết thúc. Tuy nhiên chúng ta cần hiểu là Index không phải là đầu vào quan trọng nhất của thuật toán. Để đơn giản hóa, hệ thống sẽ trông như thế này:


Các sơ đồ liên kết, dữ liệu địa phương, mạng lưới xã hội, chủ yếu là Google+, và Knowledge Graph (dữ liệu kiến thức)- tập hợp các cơ sở dữ liệu của Google,  là tất cả các yếu tố đầu vào, ngoài việc Index các tất cả các trang web trên toàn thế giới. Xin nhắc lại đây chỉ là một khái niệm nên tôi sẽ chia ra từng chức năng rõ ràng như cấu trúc vật lý, nhưng mỗi phần của yếu tố đầu vào là rất đôc đáo và quan trọng trong việc giải thích kết quả tìm kiếm.
Vì mục đích bài viết này, tối sẽ không cụ thể hóa từng ví dụ, những đầu vào như lịch sử tìm kiếm và địa điểm của bạn. Cụ thể hóa cũng quan trọng, nhưng nó ảnh hưởng đến nhiều phần trong minh họa này, và khá phức tạp để đi vào chi tiết.

Sự tương thích, xếp hạng và tái xếp hạng

Là những người làm SEO, chúng ta thường ám ảnh bởi thứ hạng, nhưng chúng ta quên rằng thứ hạng chỉ là một phần hoạt động trong thuật toán, tôi nghĩ sẽ tốt hơn khi chia quá trình thành hai bước : Bước 1 là sự tương thích – relevance, Bước 2 là thứ hạng - ranking. Trong một trang xếp hạng của Google, có thể chia ra như sau:


Nói cách khác, đầu tiên Google sẽ nhặt ra những trang chứa nội dung phù hợp với kết quả tìm kiếm, sau đó chọn các trang này theo thứ tự. Bước 1 dựa theo sự tương thích- một trang có thể có nhiều links, có google+, có chỉ số giá trị (citation) trên thế giới, nhưng nếu nó không hợp với câu truy vấn, nó sẽ không có thứ hạng để xuất hiện . Trang của Millard Fillmore trên The Wikipedia sẽ không bao giờ có thứ hạng cho từ khóa“những Iphone tốt nhất” dù uy tín trang The Wikipedia có cao đến đâu.
Thậm chí xếp hạng không phải là một chu trình riêng lẻ. Tôi đang cố gắng diễn đạt một chủ đề cực kỳ phức tạp bằng một vài dòng, vấn đề này tôi sẽ đặt tên là “tái xếp hạng” re-ranking. Về cơ bản, Google xác định xếp hạng mà chúng ta thường gọi là kết quả tự nhiên.  Sau đó thuật toán thứ hai sẽ cùng tham gia vào quá trình: nó bao gồm các kết quả về local, social và những yếu tố như tin tức và hình ảnh. Thuật toán thứ hai sẽ tái xếp hạng lại một kết quả ban đầu:


Đầu vào đặc biệt, các hình phạt và disavow

Cũng có những đầu vào đặc biệt (special inputs), tôi chưa tìm được một thuật ngữ hay hơn. Ví dụ Google áp dụng hình phạt thủ công - manual penalty cho một site, việc này được đánh dấu ở đâu đó và đưa vào hệ thống. Và cũng là một phần của index, nhưng vì quả trình này được thực hiện thủ công và liên quan đến Google Webmaster Tools, theo tôi nên xem nó là một khái niệm riêng biệt.
Tương tự công cụ Disavow cũng là một đầu vào riêng biệt, được quản lý bởi các nhà quản trị mạng, dữ liệu này được xử lý định kỳ và được đưa trở lại các thuật toán, hoặc biểu đồ liên kết - link graph. Có thể đây là một quá trình xử lý bán tự động để kiểm tra và làm sạch dữ liệu và chúng ta có thể hình dung bằng bức tranh như dưới đây:
Tất nhiên có nhiều đầu vào tác động đến các thành phần khác của hệ thống, ví dụ XML sitemaps trong Google Webmaster Tools giúp việc định hình quá trình index. 

Cập nhập: Panda, Penguin and Hummingbird

Và cuối cùng chúng tôi có thêm các thuật toán đươc cập nhập mà tất cả chúng ta biết và thích thú. Trong nhiều trường hợp, một lần cập nhập chỉ là sự thay đổi nhỏ trong mã nguồn của Google, tuy nhiên trong vài năm qua, các lần câp nhập của thuật toán có chút phức tạp hơn.
Bắt đầu với Panda, ra mắt vào tháng hai năm 2011, nó chỉ là một sự tinh chỉnh một số mã nguồn có vấn đề, một thuật toán phụ (sub-algorithm) với cấu trúc riêng của nó, bên cạnh thuật toán chính. Và hàng tháng Panda được chạy lại, cập nhập lại dữ liệu và dữ liệu này được xử lý bởi một thành phần mà bạn có thể gọi là yếu tố xếp hạng của Panda (Panda ranking factor). Yếu tố này tác động đến thuật toán chính. Có khả năng Penguin cũng hoạt động như thế, một thuật toán phụ với dữ liệu riêng biệt, hãy xem hình trên:


Tôi không nói là Panda và Penguin là giống nhau, nó hoạt động theo cách khác nhau, tôi chỉ muốn trình bày đơn giản đó là hai thuật toán được cập nhập dựa theo dữ liệu và mã nguồn riêng của chúng, và chỉ được đưa lại vào hệ thống theo định kỳ.
 Vậy tại sao Google không viết lại thuật toán cho Panda và Penguin? một phần là do chiến lược, nguồn lực cần thiết cho quá trình xử lý dữ liệu này vượt quá cơ sở hạ tầng hiện tại. Google muốn nhanh và mạnh mẽ hơn, những thuật toán phụ này có thể kết hợp hoàn hảo với nhau. Một lý do khác là phải kiểm chứng và giảm thiểu những tác động. Do vậy Google chỉ cập nhập Penguin theo định kỳ vì bản cập trước đã tác động rất rộng. Đó có thể không phải là quá trình mà họ muốn đưa vào trong thời điểm này.
Vậy còn những cập nhập mới đây về Hummingbird ? vẫn còn nhiều điều chúng tôi không biết, nhưng theo Google, Chim ruồi được viết lại cơ bản về cách thức hoạt động cho thuật toán chính. Theo tôi, chúng ta chưa thấy những tác động đáng kể của chim ruồi, và những kết quả tiềm tàng của mã nguồn mới này có thể xuất hiện sau vài tháng hoặc vài năm, nhưng chúng ta đang nói về những thuật toán cốt lõi (core algorithm), dẫn đến hình ảnh cuối cùng:


Kết quả cuối cùng này cũng làm chính tôi – người tạo ra nó phải ngạc nhiên, một minh họa căn bản nhất, rõ ràng và không hề sơ sài. Thực tế thì Google chia thành hàng chục phần nhỏ và phức tạp hơn rất nhiều, tuy nhiên tôi hy vọng giúp bạn có thể cảm nhận được thuật toán của Google là gì và hoạt động ra sao.

2 nhận xét: