VnReview
Hà Nội

Thuật toán là gì, có phức tạp và bí ẩn như mọi người vẫn nghĩ hay không?

"Thuật toán" là thứ không thể hiểu thấu được. Nó cực kỳ bí ẩn, nó biết mọi thứ, nó có quyền lực vô hạn... Xem phim ít thôi, vì chẳng phải vậy đâu!

Một thuật toán là một ý tưởng đơn giản mà ngày nay có tồn tại dưới nhiều vỏ bọc phức tạp. Vị trí trung tâm và mập mờ của thuật toán trong các mạng xã hội như Facebook đã khiến nhiều người nhìn nhận thuật toán nói chung với một sự sùng bái khó hiểu. Thuật toán đã trở thành đồng nghĩa với những thứ có tính kỹ thuật cao và khó có thể hiểu được, vừa là vị trọng tài phán xét những sự thật khách quan, vừa là một thứ không hề đáng tin cậy.

Nhưng khi người ta đề cập đến "thuật toán" - dù là thuật toán đề xuất của Facebook hay một công ty công nghệ nào khác, hay chỉ là những thuật toán chung chung - liệu họ có thực sự biết nó có nghĩa là gì? Xét việc thuật ngữ này được sử dụng khá rộng rãi, và sử dụng sai cũng khá nhiều, có thể đoán được rằng hầu hết mọi người chẳng biết gì về thuật toán. Vậy rốt cuộc, thuật toán là gì?;

1. Một thuật toán là một tập hợp các chỉ dẫn rất cụ thể

Làm sao để nướng một cái bánh, tìm tổng của hai cộng hai, hay điều hành một đất nước theo Hiến pháp Hoa Kỳ - tất cả đều là những ví dụ của thuật toán. Tại sao? Bởi, theo Pedro Domingos, giáo sư khoa học máy tính tại Đại học Washington, định nghĩa của thuật toán là "một chuỗi các chỉ dẫn".

Ngày nay, một thuật toán thường được đề cập đến là "một chuỗi các chỉ dẫn cho máy tính biết phải làm gì". Một chương tình máy tính là một thuật toán, được viết bằng ngôn ngữ lập trình máy tính, mà máy tính có thể hiểu và thực thi được.

Các thuật toán được viết cho máy tính còn phải cực kỳ chuẩn xác, sử dụng các chỉ dẫn "nếu", "thì", và "nếu không". Ví dụ, một chiếc xe tự lái có thể chạy trên một thuật toán điều hướng với nội dung "NẾU đường đi yêu cầu rẽ trái, THÌ rẽ trái". Bạn thấy đấy, phải rất cụ thể mới có thể khiến một chiếc máy tính làm theo một tập hợp các chỉ dẫn nghe có vẻ đơn giản như trên.

Trong tưởng tượng của số đông, những thuật toán đề xuất nội dung là thứ xuất hiện ngay lập tức khi chúng ta nghĩ về thuật toán. Đó là bởi khi nhiều người nghĩ về hoặc nhắc đến các thuật toán, họ đang nhắc đến những thứ như những TV show mà Netflix nghĩ bạn sẽ thích, hay những khách quốc tế nào nên bị đưa vào danh sách cấm bay (vì lo ngại khủng bố chẳng hạn). Dù chúng là những thuật toán cực kỳ phức tạp, xét cho cùng, chúng cũng chỉ là một tập hợp các chỉ dẫn mà máy tính làm theo để hoàn thành một tác vụ cụ thể.

"Với máy tính, thuật toán có thể trở nên phức tạp hơn rất nhiều" - Domingos noi. "Bên cạnh những thuật toán được xác định chỉ trong một vài dòng lệnh, máy tính có thể có những thuật toán dài hàng triệu dòng"

Thuật toán là một tập hợp các chỉ dẫn (instructions)

2. Chúng ta đã viết và sử dụng thuật toán từ lâu trước khi máy tính tồn tại

Vào thời kỳ Babylon, con người đã viết ra những thuật toán để giúp họ giải các phương trình toán học, cho phép họ quản lý xã hội nông nghiệp của mình.

"Đã có thuật toán trước khi máy tính xuất hiện, bởi bạn không cần một chiếc máy tính để thực thi một thuật toán, thuật toán có thể được thực thi bởi một con người" - Domingos nói.

Các thuật toán chạy bằng máy tính lần đầu xuất hiện vào giữa thế kỷ 20, khi quân đội bắt đầu viết các công thức để xác định vị trí hướng hoả tiễn vào một vật thể đang di chuyển. Thuật toán sau đó được dùng vào quản lý doanh nghiệp, với các máy tính chạy nhiều công thức nhằm quản lý lương, và tiếp theo là trong khoa học để theo dõi chuyển động trên bầu trời.

Một bước ngoạt đối với thuật toán hiện đại diễn ra khi Larry Page và Sergei Brin viết ra thuật toán Google PageRank. Thay vì chỉ dựa vào thông tin trong một trang web để xác định mối tương quan của nó với một từ khoá tìm kiếm, thuật toán tìm kiếm sẽ dựa vào một loạt các tín hiệu khác có thể giúp nó tìm ra những kết quả tốt nhất. Đáng chú ý nhất trong số này là có bao nhiêu đường link trỏ về một bài viết, và mức độ uy tín của các bài viết đó ra sao, dựa trên bao nhiêu đường link trỏ về các trang đó... Thuật toán này sau đó đã đi vào lịch sử, như chúng ta đã biết!

3. Ngày nay, bạn có thể tìm thấy thuật toán ở mọi nơi

Dù chúng ta có thể nghĩ các thuật toán như những phương trình toán hoạt, theo Domingos, "thuật toán có thể tính toán bất kỳ thứ gì từ bất kỳ thứ gì, có thể không hề có sự tham gia của các con số". Một thuật toán điển hình và cực kỳ phức tạp là thuật toán quản lý News Feed của Facebook. Nó là một phương trình mà Facebook sử dụng để xác định những mẩu nội dung nào nên được hiển thị ra cho người dùng khi họ cuộn trang; nói cách khác, một tập hợp các chỉ dẫn nhằm quyết định điều gì sẽ diễn ra trên News Feed.

"Không hề thiếu nội dung để Facebook đưa lên News Feed của bạn, nhưng họ phải chọn" - Domingos nói. "Và đó luôn là một sự kết hợp của những thứ như bạn quan tâm đến người đã trực tiếp hoặc gián tiếp tạo ra bài viết đó như thế nào? Họ gần gũi với bạn đến mức nào trên mạng xã hội, và thời điểm nó xuất hiện..."

Facebook, Google, Amazon, và các công ty công nghệ lớn khác đều dựa vào thuật toán để đưa nội dung và sản phẩm đến khách hàng. Nhưng còn có những thuật toán xảy ra xuyên suốt cuộc đời bạn mà bạn có lẽ không hề biết.

Ví dụ, Domingos giải thích rằng có những thuật toán nói cho máy rửa bát của bạn biết khi nào cần chuyển từ rửa sang sấy khô, hoặc quản lý quá trình nạp nhiên liệu của xe ô tô và nói cho nó biết khi nào bình xăng đã đầy khi đổ xăng, hoặc làm sao để bóng đổ hiện ra trong các phim hoạt hình kỹ thuật số trùng khớp một cách hoàn hảo với cách bóng đổ xuất hiện dưới mặt trời trong thế giới thực.

"Rõ ràng, mỗi khi bạn tương tác với máy tính, hoặc bạn lên internet, luôn có những thuật toán xuất hiện" - Domingos nói. "Nhưng thuật toán ngày nay còn tham gia vào gần như mọi thứ."

4. Những thuật toán phức tạp nhất là thuật toán sử dụng học máy

Như chúng ta đã biết, một thuật toán thường phải được viết với độ chi tiết cực cao để máy tính hiểu được phải làm gì. Tuy nhiên, điều đó không chính xác khi người ta viết những thuật toán tích hợp học máy - một loại trí tuệ nhân tạo - và cho ra những thuật toán được xếp vào hàng tinh vi nhất hiện nay.

"Trong lập trình truyền thống, một người phải viết ra từng chi tiết nhỏ của những điều mà người khác phải làm, và đó là quy trình rất tốn thời gian và chi phí" - Domingos nói. "Học máy là máy tính khám phá các thuật toán của chính nó thay vì được chỉ bảo phải làm gì".

Nói cách khác, học máy là khi một lập trình viên cho một chương trình những dữ liệu thô làm điểm khởi đầu, sau đó cho nó thấy điểm chốt là khối dữ liệu đó ở dạng được tổ chức và phân loại, và để cho chương trình tự tìm hiểu cách đi từ điểm A đến điểm B. Lấy củ hành làm ví dụ: một người biết cách nấu có thể biến củ hành từ một loại nguyên liệu thô tròn xoe thành loại gia vị tuyệt đỉnh. Trong một thuật toán truyền thống, một lập trình viên sẽ viết từng bước hướng dẫn của quá trình nấu. Nhưng trong một thuật toán được phát triển bởi trí tuệ nhân tạo, cho nó mục tiêu là điểm chốt, chương trình sẽ tìm hiểu cách để biến nguyên liệu thô thành gia vị. Nói dễ hiểu là máy móc đã học được cách nấu.

Những loại thuật toán đó sẽ trở nên ngày một mạnh mẽ hơn khi con người biết làm sao để đi từ điểm A đến điểm B. Ví dụ, để một người nhận biết được một con mèo là một con mèo đòi hỏi phải có sức mạnh não bộ tinh vi đến mức không thể viết ra từng bước một được. Nhưng bằng cách cho một chương trình xem một loạt ảnh về mèo, và một loạt ảnh khác không phải là mèo, và đặt điểm chốt mong muốn là phải phân loại được ảnh một con mèo là một con mèo, máy tính có thể học được cách tự mình xử lý vấn đề.

"Đó là khi máy tính học tự lập trình cho chính mình thay vì phải được lập trình bởi con người" - Domingos nói. "Tất nhiên, điều này mang lại hiệu quả cực kỳ cao nếu nó hoạt động như ý, bởi hiện nay bạn có thể tạo ra những thuật toán rất mạnh mẽ, rất phức tạp, với rất ít sự can thiệp của con người". Và mọi chuyện cũng khá thú vị khi thuật toán không hoạt động như ý!

Trong thuật toán sử dụng học máy, máy tính sẽ tự tìm cách đi từ điểm A đến điểm B

5. Thuật toán không phải là ma thuật

Với một lượng dữ liệu cực lớn mà các thuật toán có thể xử lý, nhiều người sẽ cho rằng chúng giống như những chiếc hộp bí ẩn đầy quyền năng, được xây dựng nên để vén màn những bí mật con người chưa thể khám phá. Tuy nhiên, nên nhớ rằng một thuật toán đơn giản chỉ là một tập hợp các chỉ dẫn. Hơn nữa, con người là tác giả các thuật toán, có nghĩa chúng vẫn có thể gặp lỗi.

"Còn có rất nhiều quan niệm sai lầm về thuật toán, một phần bởi người ta không thực sự thấy được những gì đang diễn ra bên trong máy tính" - Domingos nói. "Một nhầm lẫn rất phổ biến là có người nghĩ các thuật toán là thứ hoàn hảo".

Domingos giải thích rằng các lập trình viên đã phải bỏ ra một lượng lớn thời gian vào việc vá các lỗ hổng trong các thuật toán để chúng cho ra kết quả phù hợp. Tuy nhiên, con người không thể lúc nào cũng phát hiện ra những lỗi đó. Hơn nữa, một thuật toán được dựa trên kết quả mà con người muốn thấy, hay thứ mà con người tối ưu hoá chúng để thực hiện. Lấy thuật toán tuyển dụng làm ví dụ: thuật toán này sẽ tìm kiếm những ứng viên tốt nhất cho một vị trí. Nếu con người đặt ra chỉ dẫn là tìm kiếm những phẩm chất không nhất thiết phải liên quan đến một công việc (như là chọn trường đại học có tiếng), thì khi thuật toán nói rằng "ứng viên A là người tốt nhất" chưa chắc đã đồng nghĩa rằng đó là kết luận chính xác.

Thông thường, đó là kết quả của sự thiên vị. Và những vấn đề mà thiên vị gây ra có thể còn tệ hơn với các thuật toán tận dụng trí tuệ nhân tạo.

"Trong lập trình truyền thống, bạn phải cân nhắc sự thiên vị của lập trình viên" - Domingos nói. "Trong học máy, bạn chủ yếu phải cân nhắc sự thiên vị đến từ dữ liệu".

Ví dụ, một thuật toán tuyển dụng sử dụng học máy có thể lấy hàng loạt hồ sơ ứng viên làm điểm khởi đầu, và điểm chốt sẽ là hồ sơ của những người đã từng được tuyển dụng trước đây. Tuy nhiên, hầu hết các công ty công nghệ không có sự đa dạng sắc tộc. Do đó, một thuật toán tự động chuyên về tuyển dụng có thể mang sự bất bình đẳng ngoài thế giới thực này vào quá trình chọn lựa của nó.

Nhiều nghiên cứu đã cho thấy trí tuệ nhân tạo có thể thể hiện giới tính và sắc tộc của những người huấn luyện chúng. Trong một nghiên cứu, một thuật toán tạo liên kết từ đã sử dụng toàn bộ số từ vựng tiếng Anh nó tìm được trên web làm dữ liệu huấn luyện nhằm học về mối liên hệ giữa các từ với nhau. Vì thế giới của chúng ta vốn luôn tồn tại sự thiên vị, thuật toán xác định rằng tên nữ giới có liên hệ nhiều hơn đến nghệ thuật, trong khi tên nam giới thì liên hệ nhiều hơn đến toán và khoa học. Các nghiên cứu như thế này cho thấy thuật toán về cơ bản không trung lập, hoàn hảo, hay ác ý: chúng đơn giản là làm những gì con người và dữ liệu huấn luyện nên chúng bảo phải làm. Nói ngắn gọn, chúng cũng lỗi như chúng ta vậy.

6. Thuật toán đang thúc đẩy một cuộc cách mạng công nghệ

Thuật toán có thể không hoàn hảo, nhưng chúng đang biến đổi thế giới của chúng ta.

"Những thứ mà chúng ta nghĩ là hiển nhiên như web và truyền thông xã hội... chúng sẽ không tồn tại nếu không có thuật toán" - Domingos nói.

Khi mà những tập hơn các chỉ dẫn tự động kia trở nên ngày một phổ biến hơn - từ máy rửa bát của bạn, cho đến các siêu máy tính của chính phủ - con người sẽ có thể bồi đáp và sử dụng những kiến thức của chúng ta nhanh chóng hơn và hiệu quả hơn bao giờ hết. Domingos nhìn nhận điều này không khác một cuộc cách mạng là bao.

"Các thuật toán đang thay đổi công việc trí óc giống như cách mạng công nghiệp từng thay đổi công việc tay chân" - Domingos nói. "Các thuật toán là sự tự động hoá trí thông minh. Và nếu bạn nghĩ kỹ, bạn sẽ thấy nó là một thứ rất mạnh mẽ: làm những điều mà trước đây cần sự suy nghĩ và sức vóc của con người, nay có thể làm được bằng một thuật toán"

Thuật toán sẽ còn tiếp tục phát triển. Nhưng cách chúng ta thiết kế nên chúng - thiên vị hay công tâm, hữu dụng hay nguy hại - và chúng ta sẽ chấp nhận sự hiện diện của nó mà không nghi ngại ra sao, đều tuỳ thuộc vào chính chúng ta.

Minh.T.T (theo Mashable)

Chủ đề khác