Knowledge Representation, Inference Và Proof Systems Giúp Máy Tính Biến Tri Thức Thành Khả Năng Suy Luận Như Thế Nào?
Nếu dữ liệu thực sự là tất cả những gì chúng ta cần để tạo ra trí thông minh, thì một ổ cứng chứa hàng tỷ dòng thông tin có lẽ đã trở thành hệ thống thông minh nhất thế giới.
Nhưng thực tế không phải như vậy.
Điều khiến một hệ thống trở nên thông minh không chỉ nằm ở việc nó biết được bao nhiêu thông tin, mà còn nằm ở khả năng hiểu được ý nghĩa của những thông tin đó và sử dụng chúng để tạo ra những tri thức mới.
Sau khi đã học được ngôn ngữ của suy luận thông qua Logic, First-order Logic và Predicate Logic, máy tính sẽ phải đối mặt với một thách thức khác: làm thế nào để biến những tri thức mà mình đã biết thành khả năng suy luận về thế giới?
Ngôn Ngữ Của Suy Luận: Logic Đã Dạy Máy Tính Hiểu Thế Giới Như Thế Nào?
Trong bài viết này, chúng ta sẽ cùng khám phá vai trò của Knowledge Representation, Inference và Proof System trong hành trình biến dữ liệu thành tri thức và biến tri thức thành khả năng suy luận của máy tính.
1. Vì sao biết dữ liệu là chưa đủ để trở nên thông minh?
Nếu chỉ nhìn vào những thành tựu của AI hiện đại, chúng ta rất dễ đi đến kết luận rằng điều quan trọng nhất là phải có thật nhiều dữ liệu. Hàng tỷ trang web được sử dụng để huấn luyện các mô hình ngôn ngữ lớn (LLM), hàng triệu hình ảnh được dùng để xây dựng các hệ thống nhận diện khuôn mặt và mỗi ngày lại có thêm vô số dữ liệu mới được tạo ra trên Internet. Điều đó khiến nhiều người tin rằng dữ liệu chính là chìa khóa tạo nên trí thông minh của máy tính.
Tuy nhiên, dữ liệu và trí thông minh chưa bao giờ là hai khái niệm đồng nghĩa với nhau.
Dữ liệu chỉ đơn thuần trả lời câu hỏi "hệ thống biết điều gì?", trong khi tri thức còn phải trả lời được câu hỏi "hệ thống hiểu được điều gì từ những gì nó đã biết?". Nhưng ngay cả khi đã có tri thức, một câu hỏi khác lại xuất hiện: "Hệ thống có thể suy ra được những điều gì mới từ các tri thức đó?".
Có lẽ đây mới là điều khiến một hệ thống trở nên thông minh. Trí thông minh không chỉ nằm ở việc biết thật nhiều, mà còn nằm ở khả năng liên kết các tri thức đã biết để tạo ra những kết luận mới, nhận ra những mối quan hệ chưa được nói ra một cách trực tiếp và sử dụng những hiểu biết đó để đưa ra quyết định phù hợp trong từng tình huống cụ thể.
Điều này cũng cho thấy vì sao dữ liệu là chưa đủ để tạo nên một hệ thống có khả năng suy luận. Máy tính không chỉ cần biết thế giới đang tồn tại những gì, mà còn phải biết những thông tin đó có ý nghĩa gì, chúng liên hệ với nhau như thế nào và từ đó có thể khám phá ra những điều gì mới. Nói cách khác, muốn biến dữ liệu thành khả năng suy luận, chúng ta cần nhiều hơn một kho lưu trữ thông tin. Chúng ta cần những cơ chế cho phép máy tính biểu diễn tri thức về thế giới và sử dụng những tri thức đó để tạo ra các kết luận mới một cách chính xác và đáng tin cậy.
Đó cũng chính là lý do Inference và Knowledge Representation trở thành hai trong số những ý tưởng quan trọng nhất của Automated Reasoning và AI hiện đại. Một ý tưởng giúp máy tính biết mình đang hiểu thế giới như thế nào, còn ý tưởng kia giúp nó biết mình có thể suy ra được điều gì từ những gì đã biết. Khi được kết hợp lại, chúng đã biến một cỗ máy chỉ biết lưu trữ dữ liệu trở thành một hệ thống có khả năng suy luận về thế giới mà nó đang quan sát.
2. Inference đã biến tri thức thành khả năng suy luận như thế nào?
Hãy
hình dung một tình huống rất đơn giản. Nếu bạn biết rằng:
- Tất cả các
loài chim đều có cánh.
- Chim sẻ là một
loài chim.
Dù không ai nói trực tiếp rằng "chim sẻ có cánh", bạn vẫn có thể kết luận điều đó là đúng. Việc rút ra một kết luận mới từ những điều đã biết như vậy chính là Inference (suy luận).
Nói
một cách đơn giản, Inference là quá trình sử dụng những tri thức đã có để
tìm ra những tri thức mới một cách chính xác và đáng tin cậy, thay vì dựa vào cảm
tính hay phỏng đoán.
Nếu logic cho chúng ta biết thế nào là một lập luận đúng, thì inference chính là việc áp dụng các quy tắc logic đó để thực sự tạo ra tri thức mới. Logic giống như bộ luật của một trò chơi, còn inference là những nước đi hợp lệ được thực hiện theo bộ luật đó.
Inference
rất dễ bị nhầm lẫn với một khái niệm khác là entailment (quan hệ kéo theo).
Hãy hình dung rằng từ tập tri thức ban đầu của bạn có thể suy ra được hàng
nghìn kết luận đúng khác nhau. Tập hợp tất cả những kết luận đó giống như một
"đống rơm" khổng lồ.
- Việc một kết
luận nào đó thực sự nằm trong "đống rơm" này được gọi là
entailment.
- Còn quá trình
từng bước tìm ra kết luận đó được gọi là inference.
Nói
cách khác:
- Entailment
trả lời câu hỏi: "Kết luận này có thực sự được
suy ra từ những gì ta đã biết hay không?"
- Inference
trả lời câu hỏi: "Làm thế nào để ta tìm ra được
kết luận đó?"
Ví
dụ, từ hai câu:
- Tất cả các
loài chim đều có cánh.
- Chim sẻ là một
loài chim.
Câu "chim sẻ có cánh" là một kết luận được entail bởi hai câu trên. Còn quá trình áp dụng các quy tắc logic để đi đến kết luận "chim sẻ có cánh" chính là inference.
Chỉ
biết một tập các sự kiện là chưa đủ. Điều quan trọng hơn là làm thế nào để từ
những điều đã biết, chúng ta có thể rút ra được những điều mới một cách chính
xác và đáng tin cậy.
Ví
dụ, nếu một hệ thống chỉ biết rằng:
- Paris thuộc Pháp.
- Pháp nằm ở Châu
Âu.
Nhưng
nó không thể suy ra được rằng:
- Paris nằm ở Châu
Âu.
thì hệ thống đó chỉ giống như một "kho lưu trữ dữ liệu", chứ chưa phải là một hệ thống có khả năng suy luận.
Vấn
đề này càng trở nên quan trọng khi chúng ta muốn giao việc suy luận cho máy
tính. Máy tính không có trực giác hay kiến thức nền như con người. Những điều
mà chúng ta cho là quá hiển nhiên đôi khi lại hoàn toàn không hiển nhiên đối với
máy tính. Nó chỉ có thể làm việc với những gì được mô tả một cách chính xác và
các quy tắc suy luận được định nghĩa rõ ràng.
Nếu không có inference, một hệ thống sẽ chỉ biết đúng những gì được cung cấp ban đầu. Muốn nó biết thêm một sự thật mới, chúng ta buộc phải nói cho nó biết một cách trực tiếp. Nó sẽ không thể tự kết hợp các tri thức đã có để khám phá ra những điều mới.
Trong
khi đó, phần lớn tri thức hữu ích của con người lại được hình thành từ chính
quá trình suy luận này. Chúng ta hiếm khi học từng sự thật một cách riêng lẻ;
thay vào đó, chúng ta liên tục kết hợp những điều đã biết để hiểu thêm những điều
chưa được nói ra một cách tường minh. Chính vì vậy, inference trở thành một
thành phần nền tảng của logic, trí tuệ nhân tạo và các hệ thống Automated
Reasoning. Nó biến một "kho tri thức tĩnh" thành một hệ thống
có khả năng tạo ra tri thức mới từ những gì nó đã biết.
Điều quan trọng nhất của inference là: nó không được phép tạo ra những kết luận sai từ những điều đúng. Trong logic, người ta gọi tính chất này là sound (tính đúng đắn). Nói một cách đơn giản, nếu các thông tin ban đầu đều đúng và chúng ta áp dụng đúng luật suy luận, thì kết luận cuối cùng chắc chắn cũng phải đúng.
Ví
dụ, nếu bạn biết rằng:
- Tất cả các
loài chim đều có cánh.
- Chim sẻ là một
loài chim.
thì việc kết luận rằng "chim sẻ có cánh" là hoàn toàn hợp lý. Một hệ thống suy luận đáng tin cậy phải luôn hoạt động theo nguyên tắc như vậy: không được tự ý "bịa" ra những thông tin không thực sự được suy ra từ các tri thức ban đầu.
Tuy
nhiên, chỉ có các luật suy luận thôi là chưa đủ để xây dựng một hệ thống suy luận
hiệu quả.
Hãy
hình dung bạn đang chơi cờ vua. Biết tất cả luật chơi không đồng nghĩa với việc
bạn sẽ trở thành một kỳ thủ giỏi. Nếu mỗi lượt đi bạn thử tất cả các nước đi hợp
lệ có thể có, bạn sẽ nhanh chóng bị choáng ngợp bởi vô số khả năng khác nhau.
Điều quan trọng không chỉ là "đi đúng luật", mà còn là biết nên đi nước
nào trước.
Một hệ thống suy luận cũng gặp vấn đề tương tự. Nếu nó cố gắng áp dụng tất cả các luật suy luận cho mọi thông tin mà nó có, nó sẽ tạo ra vô số kết luận, trong đó rất nhiều kết luận là không cần thiết hoặc không liên quan đến vấn đề cần giải quyết. Hệ thống sẽ phải tốn rất nhiều thời gian và tài nguyên để xử lý những thông tin dư thừa đó.
Vì
vậy, bên cạnh các luật suy luận, một hệ thống suy luận hiệu quả còn cần có một chiến
lược suy luận (reasoning strategy) để trả lời những câu hỏi như:
- Nên bắt đầu
suy luận từ đâu?
- Nên tập trung
vào những thông tin nào?
- Kết luận nào
là quan trọng đối với bài toán đang cần giải quyết?
- Những thông
tin nào có thể bỏ qua vì dư thừa hoặc lặp lại?
Có thể hình dung rằng các luật suy luận giống như luật chơi của một ván cờ, còn chiến lược suy luận chính là cách chúng ta lựa chọn những nước đi tốt nhất. Chỉ khi kết hợp được cả hai yếu tố này, một hệ thống mới có thể suy luận vừa đúng, vừa hiệu quả, thay vì chỉ tạo ra thật nhiều kết luận mà không mang lại nhiều giá trị.
Biết suy luận đúng là điều kiện cần, nhưng biết suy luận đúng lúc và đúng chỗ mới là điều kiện đủ để xây dựng một hệ thống suy luận hiệu quả.
Tầm quan trọng của Inference
Inference
chính là chiếc cầu nối giữa việc "biết điều gì đó" và "làm
được điều gì đó với tri thức ấy".
Một hệ thống thông minh không chỉ đơn thuần lưu trữ dữ liệu. Điều quan trọng hơn là nó phải biết cách sử dụng những gì mình đã biết để đưa ra những kết luận mới và quyết định hành động tiếp theo.
Ví
dụ, một chiếc xe tự lái không chỉ biết rằng:
- Có một vật thể
ở phía trước.
- Vật thể đó
đang di chuyển về phía mình.
mà
còn phải suy luận được rằng:
- Vật thể đó có
thể là một người đi bộ.
- Nó đang tiến
vào vùng nguy hiểm.
- Xe cần phải
giảm tốc độ hoặc phanh lại.
Chính quá trình biến dữ liệu thành những kết luận có ý nghĩa này là công việc của inference.
Trong
khoa học máy tính, inference xuất hiện ở rất nhiều lĩnh vực quan trọng. Chẳng hạn:
- Trong chứng
minh định lý tự động (Automated Theorem Proving), máy tính sử dụng các
luật suy luận để tự tìm ra chứng minh cho những mệnh đề toán học.
- Trong lập
trình logic, một chương trình không chỉ đơn thuần là các câu lệnh được
thực thi tuần tự, mà chính là một tập các tri thức và luật suy luận để trả
lời những câu hỏi mà chúng ta đặt ra.
- Trong xác
minh phần mềm và phần cứng (Formal Verification), inference được sử dụng
để chứng minh rằng một chương trình hoặc một bộ vi xử lý thực sự hoạt động
đúng như đặc tả của nó và không vi phạm những thuộc tính an toàn quan trọng.
Vì vậy, inference không chỉ là một khái niệm trừu tượng của logic học. Nó là cơ chế giúp biến tri thức thành khả năng suy luận, là nền tảng đứng sau nhiều công nghệ hiện đại trong lĩnh vực Automated Reasoning, và cũng chính là một trong những thành phần quan trọng làm nên các hệ thống AI có khả năng lập luận ngày nay.
3. Knowledge Representation đã dạy máy tính hiểu thế giới ra sao?
Hãy
hình dung bạn muốn xây dựng một robot giúp việc trong nhà. Nếu chỉ nói với nó rằng:
- Cái cốc đang ở
trên bàn.
- Chiếc bàn
đang ở trong phòng khách.
thì việc lưu hai thông tin này vào cơ sở dữ liệu là tương đối đơn giản.
Nhưng
nếu bạn hỏi: "Vậy cái cốc đang ở đâu?" robot phải có khả năng suy luận
rằng: "Nếu cái cốc ở trên chiếc bàn và chiếc bàn ở trong phòng khách, thì
cái cốc cũng đang ở trong phòng khách."
Điều
này cho thấy một hệ thống thông minh không chỉ cần lưu trữ thông tin, mà
còn cần biết các thông tin đó có ý nghĩa gì và chúng liên hệ với nhau như thế
nào.
Đó chính là công việc của Knowledge Representation (KR) – Biểu diễn tri thức.
Nói
một cách đơn giản, Knowledge Representation là cách chúng ta mô tả những gì một
hệ thống biết về thế giới bằng một ngôn ngữ hoặc một cấu trúc đủ chính xác để
máy tính có thể hiểu được, đồng thời đủ linh hoạt để nó có thể sử dụng những
tri thức đó cho việc suy luận.
Nói
cách khác, mục tiêu của Knowledge Representation không chỉ là trả lời câu hỏi: "Hệ
thống biết những gì?" mà còn phải trả lời được: "Hệ thống sẽ sử
dụng những điều nó biết để suy luận ra điều gì?"
Vì vậy, Knowledge Representation không đơn thuần là việc lưu dữ liệu, mà là việc quyết định hệ thống sẽ "nhìn thế giới" theo cách nào.
Ví
dụ, chúng ta cần quyết định:
- Trong thế giới
này có những loại thực thể nào? (con người, đồ vật, địa điểm, sự kiện,...)
- Chúng có những
thuộc tính gì?
- Chúng liên hệ
với nhau như thế nào?
- Chúng có thay
đổi theo thời gian hay không?
- Hệ thống có cần
biểu diễn những điều nó chưa biết hoặc chưa chắc chắn hay không?
Những quyết định này sẽ ảnh hưởng trực tiếp đến khả năng suy luận của hệ thống sau này.
KR giải quyết vấn đề gì?
Một
câu hỏi rất tự nhiên là: "Tại sao chúng ta không sử dụng các cấu trúc dữ
liệu thông thường như mảng, danh sách hay bảng dữ liệu?”
Thực tế, các cấu trúc dữ liệu này hoạt động rất tốt khi chúng ta chỉ cần lưu trữ những thông tin cụ thể.
Ví
dụ:
- Chiếc xe màu
đỏ.
- Nhiệt độ hiện
tại là 32°C.
- Có một cái hố
ở vị trí (2,2).
Nhưng tri thức trong thế giới thực thường phức tạp hơn rất nhiều. Chẳng hạn, một hệ thống có thể biết rằng: "Có một cái hố ở vị trí (2,2) hoặc ở vị trí (3,1), nhưng hiện tại tôi chưa biết chính xác nó nằm ở đâu" hoặc "Mọi con chim đều có cánh" hay "Nếu trời mưa thì đường thường sẽ bị ướt".
Những
loại tri thức này có một số đặc điểm mà các cấu trúc dữ liệu thông thường khó
biểu diễn một cách tự nhiên:
- Tri thức có
thể không đầy đủ.
- Tri thức có
thể mang tính tổng quát và áp dụng cho nhiều trường hợp khác nhau.
- Tri thức có
thể thay đổi theo thời gian.
- Tri thức có
thể chứa các mối quan hệ phức tạp giữa nhiều đối tượng khác nhau.
- Hệ thống có
thể cần suy luận ra những điều chưa được nói ra một cách trực tiếp.
Nếu
chỉ sử dụng các cấu trúc dữ liệu thông thường, chúng ta có thể lưu được thông
tin, nhưng lại rất khó để trả lời những câu hỏi như:
- Tôi có thể
suy ra được điều gì từ những gì mình đã biết?
- Điều gì chắc
chắn đúng?
- Điều gì có thể
đúng nhưng chưa được xác nhận?
- Khi có thêm
thông tin mới, những kết luận nào cần phải được cập nhật?
Chính vì vậy, Knowledge Representation ra đời để biến một "kho dữ liệu" thành một "kho tri thức" có khả năng hỗ trợ việc suy luận.
Một
vấn đề quan trọng hơn cả việc biểu diễn tri thức
Thực
ra, trước khi viết ra bất kỳ một mệnh đề tri thức nào, chúng ta còn phải trả lời
một câu hỏi nền tảng hơn: "Chúng ta sẽ cho hệ thống biết những gì về thế
giới?". Ví dụ, khi xây dựng một hệ thống dành cho xe tự lái, chúng ta cần
quyết định:
- Có cần biểu
diễn thời gian hay không?
- Có cần biểu
diễn tốc độ của các phương tiện hay không?
- Có cần phân
biệt người đi bộ với xe máy hay không?
- Có cần biểu
diễn mức độ chắc chắn của các thông tin mà cảm biến thu được hay không?
Nếu
xây dựng một hệ thống hỗ trợ bác sĩ chẩn đoán bệnh, những câu hỏi lại hoàn toàn
khác:
- Có cần biểu
diễn triệu chứng của bệnh nhân không?
- Có cần biểu
diễn xác suất mắc bệnh hay không?
- Có cần biểu
diễn lịch sử điều trị của bệnh nhân không?
Công việc quyết định "thế giới của hệ thống gồm những gì" được gọi là Ontological Engineering (kỹ thuật bản thể luận).
Có
thể hiểu một cách đơn giản rằng đây là quá trình thiết kế "mô hình thế
giới" mà hệ thống sẽ sử dụng để suy nghĩ và suy luận.
Nếu
làm không tốt công đoạn này, hệ thống có thể chỉ hoạt động được với một bài
toán rất hẹp, khó mở rộng sang những lĩnh vực khác và khó thích nghi khi xuất
hiện những tri thức mới. Ngược lại, một mô hình tri thức được thiết kế tốt sẽ
giúp hệ thống không chỉ lưu trữ thông tin hiệu quả mà còn có khả năng suy luận,
mở rộng và thích nghi với những tình huống mới.
Tóm lại, Knowledge Representation không chỉ trả lời câu hỏi "hệ thống biết gì", mà còn trả lời câu hỏi "hệ thống hiểu thế giới như thế nào". Chính cách chúng ta lựa chọn biểu diễn tri thức sẽ quyết định hệ thống có thể suy luận được những gì và giới hạn của nó nằm ở đâu.
Hiểu bản chất của Knowledge Representation
Ý
tưởng quan trọng nhất của Knowledge Representation (biểu diễn tri thức) là: chúng
ta không cần và cũng không thể mô tả mọi chi tiết của thế giới thực. Thay
vào đó, người ta sẽ xây dựng trước một "bộ khung" thật tổng quát để
phân loại tri thức, sau đó mới bổ sung các thông tin cụ thể khi cần.
Hãy
hình dung bạn muốn xây dựng một thư viện khổng lồ chứa mọi kiến thức của nhân
loại. Bạn sẽ không thể viết hết mọi thứ ngay từ đầu. Việc đầu tiên cần làm là tạo
ra các ngăn lớn như "Con người", "Sự vật", "Sự kiện",
"Thời gian", "Địa điểm",... Sau này, khi có thêm tri thức mới,
bạn chỉ cần đặt chúng vào đúng ngăn tương ứng. Bộ khung tổng quát này được gọi
là bản thể luận thượng tầng (Upper Ontology).
Cách làm này cũng giống như trong lập trình hướng đối tượng (OOP). Chúng ta thường tạo ra một lớp tổng quát như Window (Cửa sổ) trước, rồi mới tạo ra các lớp cụ thể hơn như BrowserWindow, Spreadsheet Window hay GameWindow. Bộ khung được thiết kế càng tốt thì việc mở rộng hệ thống sau này càng dễ dàng.
Lấy
ví dụ, chúng ta muốn giao cho AI nhiệm vụ sau: "Hãy tìm một thị trấn ở Mỹ
có dân số dưới 10.000 người". Có hai cách để hệ thống lưu trữ tri thức
này.
·
Cách thứ nhất liệt
kê toàn bộ những thị trấn thoả mãn điều kiện. Nếu ngày mai có thêm một thị trấn
mới thoả mãn điều kiện, chúng ta lại phải cập nhật toàn bộ danh sách.
·
Cách thứ hai
lưu trữ tri thức dưới dạng một quy tắc tổng quát: "Mọi thị trấn ở Mỹ có
dân số dưới 10.000 người đều thoả mãn yêu cầu". Khi đó, nếu chúng ta cung
cấp thêm thông tin: "Thị trấn X ở Mỹ có dân số là 7.000 người" thì hệ
thống có thể tự suy luận: "Vậy thị trấn X cũng thoả mãn yêu cầu".
Chúng ta không cần phải lập trình thêm một quy tắc mới cho thị trấn X.
Đây chính là sức mạnh của việc biểu diễn tri thức bằng những quy tắc tổng quát thay vì liệt kê mọi trường hợp cụ thể.
Hãy
xem xét một ví dụ khác: chúng ta thường nói "cà chua có màu đỏ".
Đây là một quy luật đúng trong phần lớn trường hợp, giúp chúng ta hiểu và trao
đổi thông tin một cách nhanh chóng. Tuy nhiên, thực tế vẫn có cà chua màu xanh,
màu vàng hay màu cam. Máy tính nên lưu trữ tri thức như thế nào?
- Cách
thứ nhất là xem "cà chua có màu đỏ"
là một quy luật mặc định. Nói cách khác, nếu chưa có thông tin nào khác
thì hệ thống sẽ giả sử cà chua có màu đỏ. Chỉ khi nào xuất hiện thông tin
mới như "đây là cà chua xanh" thì hệ thống mới thay đổi kết luận
của mình.
- Cách
thứ hai là mô tả tri thức thật chi tiết ngay
từ đầu, chẳng hạn như phân loại từng giống cà chua và màu sắc tương ứng của
chúng để tránh các ngoại lệ.
Không có cách nào là hoàn hảo. Cách thứ nhất đơn giản và dễ suy luận nhưng phải chấp nhận có ngoại lệ. Cách thứ hai chính xác hơn nhưng lại khiến việc biểu diễn tri thức trở nên phức tạp hơn rất nhiều.
Knowledge
Representation luôn phải chấp nhận sự đánh đổi. Nếu biểu diễn tri thức quá chi
tiết và cố gắng mô phỏng đầy đủ thế giới thực (bao gồm các ngoại lệ, những
thông tin mơ hồ và sự không chắc chắn), thì việc suy luận sẽ trở nên rất phức tạp
và tốn nhiều tài nguyên tính toán. Ngược lại, nếu biểu diễn quá đơn giản thì hệ
thống có thể suy luận rất nhanh, nhưng lại bỏ sót nhiều thông tin quan trọng.
Vì vậy, không có một cách biểu diễn tri thức nào là "tốt nhất cho mọi trường hợp". Điều quan trọng là phải lựa chọn cách biểu diễn phù hợp với bài toán mà chúng ta muốn giải quyết. Một cách biểu diễn được xem là tốt khi nó cân bằng được ba yếu tố: dễ lưu trữ tri thức, dễ suy luận và đủ chính xác cho mục đích sử dụng.
KR nằm ở đâu trong bức tranh lớn?
Có
thể hình dung một hệ thống AI hoạt động theo quy trình sau: Tri thức của thế
giới thực → Biểu diễn tri thức (Knowledge Representation) → Suy luận
(Reasoning) → Đưa ra kết luận hoặc hành động
Ví
dụ:
·
"Chim có thể bay."
·
"Chim cánh cụt là một loài
chim."
·
"Chim cánh cụt không thể bay."
Đầu tiên, hệ thống phải biết cách lưu trữ ba mẩu tri thức trên. Sau đó, nó mới có thể suy luận để kết luận rằng: "Không phải mọi loài chim đều có thể bay".
Vì
vậy, Knowledge Representation có thể được xem là "nguyên liệu đầu
vào" của quá trình suy luận. Nếu tri thức được biểu diễn không tốt thì
dù thuật toán suy luận có mạnh đến đâu, kết quả đưa ra cũng sẽ không chính xác.
Điều
thú vị là không chỉ có một cách duy nhất để biểu diễn tri thức. Có rất nhiều
phương pháp khác nhau đã được phát triển trong AI:
- First-Order
Logic: biểu diễn tri thức bằng các mệnh đề
logic đúng hoặc sai.
- Mạng
xác suất (Probabilistic Networks): cho phép biểu diễn
mức độ tin cậy của tri thức thay vì chỉ đúng hoặc sai tuyệt đối.
- Logic
thời gian (Temporal Logic): dùng để mô tả những
sự kiện thay đổi theo thời gian, chẳng hạn như các hệ thống phản ứng liên
tục.
- Mạng
nơ-ron sâu (Deep Neural Networks): tri thức không được
lưu dưới dạng những câu mà con người có thể đọc được, mà được "mã
hoá" bên trong hàng triệu hoặc hàng tỷ trọng số số học của mô hình.
Dù sử dụng phương pháp nào, mục tiêu cuối cùng vẫn giống nhau: giúp máy tính hiểu được những gì chúng ta biết về thế giới để có thể suy luận và đưa ra quyết định một cách hợp lý.
Nếu Machine Learning giúp máy tính học từ dữ liệu, còn Automated Reasoning giúp máy tính suy luận, thì Knowledge Representation chính là cách chúng ta dạy máy tính hiểu những gì nó đang biết. Máy tính chỉ có thể suy luận tốt khi tri thức được biểu diễn một cách phù hợp.
4. Làm thế nào để máy tính biết mình đang suy luận đúng?
"Nếu
máy tính có thể suy luận, vậy làm thế nào để chúng ta biết rằng nó đang suy luận
đúng?"
Đến đây, có lẽ chúng ta đã có thể trả lời được một phần câu hỏi được đặt ra từ đầu bài viết: máy tính cần một ngôn ngữ của suy luận để có thể biểu diễn tri thức về thế giới và tạo ra những kết luận mới từ những điều mà nó đã biết. Nhưng điều đó lại dẫn chúng ta đến một câu hỏi thú vị hơn.
Giả
sử một hệ thống AI đưa ra kết luận rằng: “Tom đáng yêu”. Chúng ta có thể hỏi nó
rằng: "Vì sao?". Nếu hệ thống trả lời rằng vì "Tom là một con
mèo" và "mọi con mèo đều đáng yêu", chúng ta sẽ cảm thấy hoàn
toàn hợp lý. Nhưng nếu nó kết luận rằng "Tom biết bay" từ hai thông
tin trên thì sao? Bằng cách nào chúng ta biết được rằng hệ thống đang suy luận
đúng hay chỉ đang tạo ra một kết luận nghe có vẻ hợp lý?
Đây thực chất không phải là một câu hỏi mới của AI hiện đại. Nó đã được các nhà Logic học đặt ra từ lâu: điều gì khiến một lập luận trở nên đúng? Liệu một kết luận được xem là đúng chỉ vì chúng ta cảm thấy nó hợp lý, hay nó phải được tạo ra từ những quy tắc suy luận chặt chẽ và đáng tin cậy?
Hãy
xét một ví dụ đơn giản:
- Mọi con người
đều phải chết.
- Socrates là một
con người.
- Vậy Socrates
phải chết.
Hầu hết chúng ta đều đồng ý rằng đây là một lập luận đúng. Tuy nhiên, điều đáng chú ý ở đây không nằm ở nội dung của ba câu nói trên. Nếu thay Socrates bằng bất kỳ một đối tượng nào khác và thay "con người" bằng một khái niệm khác nhưng vẫn giữ nguyên cấu trúc của lập luận, chúng ta vẫn thu được một kết luận đúng. Nói cách khác, điều khiến một lập luận trở nên đúng không chỉ nằm ở việc các tiền đề là đúng, mà còn nằm ở cách chúng ta đi từ các tiền đề đó đến kết luận cuối cùng.
Điều
này cũng chính là vấn đề mà máy tính phải đối mặt khi thực hiện suy luận. Một hệ
thống có thể biết rất nhiều quy luật của thế giới, nhưng nếu không có một cơ chế
giúp xác định đâu là những bước suy luận hợp lệ thì nó hoàn toàn có thể tạo ra
những kết luận sai lầm. Khả năng suy luận vì thế không chỉ là khả năng tạo ra
các kết luận mới, mà còn phải là khả năng chứng minh được rằng những kết luận
đó được tạo ra theo một cách đúng đắn.
Đó
cũng chính là lý do Proof System ra đời. Nếu Logic cung cấp cho máy tính ngôn
ngữ của suy luận thì Proof System lại cung cấp cho nó những quy tắc để biết
mình có đang suy luận đúng hay không. Nó cho phép chúng ta trả lời những câu hỏi
quan trọng như:
- Một kết luận
có thực sự được suy ra từ các tri thức đã biết hay không?
- Những bước
suy luận nào được xem là hợp lệ?
- Điều gì đảm bảo
rằng một hệ thống sẽ không chứng minh những điều sai là đúng?
- Khi nào chúng
ta có thể tin tưởng vào một kết quả mà máy tính đưa ra?
Có lẽ, đây chính là một trong những ý tưởng đẹp nhất của Logic học. Trước khi dạy máy tính cách suy luận, chúng ta cần dạy cho nó biết thế nào là một lập luận đúng.
Proof
System (hệ chứng minh) là một tập hợp các quy tắc suy luận
được định nghĩa rất rõ ràng, cho phép chúng ta đi từ những giả thiết ban đầu đến
một kết luận thông qua nhiều bước lập luận nhỏ.
Bạn
có thể hình dung nó giống như một "cuốn sách luật" dành cho việc suy
luận. Mỗi bước suy luận đều phải tuân theo các quy tắc đã được quy định sẵn. Nếu
tất cả các bước đều hợp lệ thì kết luận cuối cùng cũng được công nhận là đúng.
Ví
dụ, nếu ta biết:
- Nếu trời mưa
thì đường sẽ ướt.
- Hôm nay trời
đang mưa.
Ta
có thể kết luận: Vậy hôm nay đường sẽ ướt.
Đây là một kiểu suy luận rất tự nhiên của con người. Proof System sẽ quy định chính xác rằng trong trường hợp nào chúng ta được phép suy ra kết luận như vậy.
Điểm
quan trọng nhất của Proof System là mọi thứ đều được mô tả một cách chính xác
và không mơ hồ. Vì vậy, nếu một chứng minh được thực hiện đúng theo các quy tắc
của hệ thống, thì bất kỳ ai kiểm tra lại — dù là con người hay máy tính — cũng
phải đi đến cùng một kết luận rằng chứng minh đó là hợp lệ.
Proof System giải quyết vấn đề gì?
Nói
rằng một mệnh đề là "đúng" vẫn chưa đủ. Điều quan trọng hơn là chúng
ta phải trả lời được câu hỏi: "Làm thế nào để chứng minh nó đúng?"
Chẳng
hạn, nếu có ai đó nói: "Chương trình này chắc chắn không bao giờ bị lỗi"
hoặc "Định lý này chắc chắn đúng" thì chúng ta cần một phương pháp cụ
thể để kiểm tra xem những khẳng định đó có thực sự đúng hay không.
Với
các bài toán logic đơn giản, ta có thể thử liệt kê tất cả các khả năng có thể xảy
ra rồi kiểm tra từng trường hợp một. Tuy nhiên, cách làm này chỉ phù hợp với những
bài toán nhỏ.
Khi
hệ thống trở nên phức tạp hơn, chẳng hạn như:
- Chương trình
máy tính có hàng triệu dòng mã nguồn.
- Các hệ thống
trí tuệ nhân tạo cần suy luận trên rất nhiều thông tin.
- Các bài toán
logic có số lượng khả năng cần xem xét là vô hạn.
thì
việc kiểm tra bằng cách "thử hết mọi trường hợp" gần như không còn khả
thi nữa.
Lúc
này, chúng ta cần một cơ chế suy luận từng bước giống như cách con người lập luận,
nhưng được chuẩn hóa thành những quy tắc rõ ràng để máy tính cũng có thể hiểu
và thực hiện được. Đó chính là vai trò của Proof System.
Nếu không có Proof System, mỗi người có thể chứng minh theo một cách khác nhau. Việc kiểm tra tính đúng sai sẽ trở nên khó khăn và thiếu khách quan. Quan trọng hơn, chúng ta cũng không thể giao cho máy tính tự động kiểm tra hay tự động xây dựng các chứng minh toán học và chương trình máy tính.
Có
thể xem Proof System như "bộ luật của suy luận". Nó trả lời cho câu hỏi:
"Muốn chứng minh một điều gì đó là đúng, chúng ta được phép suy luận
như thế nào?"
Chính nhờ những quy tắc chặt chẽ này mà các lĩnh vực như Formal Verification, SAT/SMT Solver, Automated Theorem Proving hay Automated Reasoning mới có thể được xây dựng.
Bản chất của Proof System
Có
hai tính chất quan trọng nhất mà một Proof System tốt cần phải có, đó là Soundness
(tính đúng đắn) và Completeness (tính đầy đủ).
- Soundness
(tính đúng đắn) có nghĩa là hệ thống chỉ được phép
chứng minh những điều thực sự đúng. Nói một cách đơn giản, nó không được
phép "chứng minh nhầm".
- Completeness
(tính đầy đủ) có nghĩa là nếu một điều gì đó thực
sự đúng thì về nguyên tắc, hệ thống phải có khả năng chứng minh được nó.
Nói cách khác, nó không được phép bỏ sót sự thật.
Bạn
có thể hình dung Proof System giống như một vị giám khảo trong một cuộc thi
toán học:
- Nếu vị giám
khảo chấm một bài sai thành đúng thì hệ thống đã mất đi tính Soundness.
- Nếu vị giám
khảo từ chối công nhận một bài giải hoàn toàn chính xác thì hệ thống đã mất
đi tính Completeness.
Một
Proof System lý tưởng phải có được cả hai tính chất này cùng một lúc.
- Nếu chỉ có Soundness
mà không có Completeness, hệ thống sẽ rất "cẩn thận". Nó
không bao giờ công nhận điều sai là đúng, nhưng đôi khi lại không thể chứng
minh được những điều vốn dĩ là đúng.
- Ngược lại, nếu
chỉ có Completeness mà không có Soundness, hệ thống có thể
chứng minh được rất nhiều thứ, nhưng lại nguy hiểm vì đôi khi nó còn
"chứng minh" được cả những điều sai.
Vì vậy, một hệ thống suy luận tốt không chỉ cần tránh sai lầm mà còn phải có khả năng tìm ra mọi sự thật mà nó có thể biểu diễn được.
Điều
thú vị là các nhà logic học đã chứng minh được rằng đối với First-order
Logic (logic vị từ cấp một), chúng ta có thể xây dựng được những Proof
System vừa Sound vừa Complete. Điều này có nghĩa là: Nếu một mệnh
đề là đúng thì về mặt lý thuyết, luôn tồn tại một chứng minh cho nó.
Tuy nhiên, điều đó không đồng nghĩa với việc chúng ta luôn tìm được chứng minh ấy trong một khoảng thời gian hữu hạn.
Hãy
hình dung bạn biết chắc rằng có một cuốn sách nào đó nằm trong một thư viện vô
cùng lớn. Việc cuốn sách đó tồn tại là điều đã được đảm bảo, nhưng không ai có
thể cho bạn biết phải mất bao lâu để tìm thấy nó.
Chứng
minh trong First-order Logic cũng tương tự như vậy.
- Nếu một mệnh
đề là đúng, chúng ta biết rằng sẽ tồn tại một chứng minh cho nó.
- Nhưng quá
trình đi tìm chứng minh đó có thể rất lâu.
- Tệ hơn nữa, nếu
mệnh đề là sai thì việc tìm kiếm có thể kéo dài mãi mãi mà không bao giờ
cho chúng ta câu trả lời cuối cùng.
Chính
vì vậy, mặc dù First-order Logic vừa Sound vừa Complete, chúng ta
vẫn không thể xây dựng được một thuật toán "thần kỳ" có khả năng luôn
trả lời được hai câu hỏi:
·
"Mệnh đề này có đúng hay không?"
·
"Nếu đúng thì hãy tìm chứng minh cho
nó."
trong
một khoảng thời gian hữu hạn đối với mọi trường hợp.
Đây là một trong những kết quả sâu sắc nhất của logic học. Nó cho chúng ta thấy rằng: "Có thể chứng minh được" không đồng nghĩa với "có thể nhanh chóng tìm ra cách chứng minh".
Sự khác biệt rất nhỏ này lại chính là nền tảng của nhiều lĩnh vực hiện đại như Automated Reasoning, Automated Theorem Proving, SAT/SMT Solver và Formal Verification.
Tầm quan trọng của Proof System
Proof
System được xem như "trái tim" của lĩnh vực Automated Theorem
Proving (chứng minh định lý tự động). Nhiệm vụ của các hệ thống này là giúp
máy tính:
- Kiểm tra xem
một chứng minh có đúng hay không.
- Tự động tìm
ra chứng minh cho một mệnh đề logic.
- Hoặc chứng
minh rằng một số tính chất quan trọng của hệ thống luôn được đảm bảo.
Ý
tưởng này được ứng dụng rất nhiều trong Formal Verification (xác minh hình
thức). Ví dụ, thay vì chỉ chạy thử một chương trình hàng nghìn lần rồi hy vọng
nó không có lỗi, chúng ta có thể đặt câu hỏi:
·
"Liệu chương trình này có bao giờ
chia cho số 0 không?"
·
"Liệu hệ thống này có bao giờ rơi vào
trạng thái bị treo không?"
·
"Liệu phần mềm điều khiển máy bay có
luôn đưa ra quyết định đúng trong mọi trường hợp hay không?"
Khi đó, bài toán không còn là "kiểm thử chương trình" nữa mà trở thành bài toán "chứng minh bằng toán học rằng chương trình luôn hoạt động đúng theo đặc tả của nó".
Ngoài
việc xây dựng các chứng minh hình thức, một số hệ thống còn sử dụng kỹ thuật Model
Checking (kiểm tra mô hình). Có thể hình dung đơn giản rằng máy tính sẽ cố
gắng duyệt qua tất cả những trạng thái mà chương trình có thể đi qua để kiểm
tra xem có trạng thái nào vi phạm yêu cầu đặt ra hay không.
Một ứng dụng thú vị khác xuất hiện trong các ngôn ngữ lập trình logic như Prolog. Với Prolog, việc chạy một chương trình thực chất là quá trình máy tính đi tìm lời giải cho một câu hỏi bằng cách áp dụng các quy tắc suy luận đã được định nghĩa từ trước.
Ví
dụ, thay vì viết: "Hãy thực hiện các bước 1, 2, 3 rồi in kết quả ra màn
hình" chúng ta sẽ nói với máy tính rằng:
·
"Đây là những sự kiện mà ta biết là
đúng."
·
"Đây là những quy tắc suy luận được
phép sử dụng."
·
"Hãy tự tìm xem kết luận nào có thể
được suy ra."
Nói cách khác, máy tính không còn chỉ đơn thuần "thực thi chương trình", mà đang thực hiện một quá trình suy luận logic để đi tìm câu trả lời.
Chính vì vậy, Proof System không chỉ là một khái niệm thuần túy của logic học. Nó đã trở thành nền tảng của rất nhiều lĩnh vực quan trọng trong khoa học máy tính hiện đại như Automated Reasoning, Automated Theorem Proving, Formal Verification, Model Checking và cả các ngôn ngữ lập trình logic. Khi một hệ thống AI chứng minh được một định lý toán học, khi một công cụ xác minh được rằng phần mềm của máy bay không vi phạm một yêu cầu an toàn nào đó, hay khi một chương trình Prolog tìm ra lời giải cho một bài toán, ở phía sau tất cả những điều đó đều là những ý tưởng được xây dựng từ Proof System.
5. Khi Logic gặp AI: Một hệ thống có khả năng suy luận được hình thành như thế nào?
Điều
gì khiến một cỗ máy chỉ biết lưu trữ dữ liệu có thể trở thành một hệ thống có
khả năng suy luận?
Câu trả lời hóa ra không nằm ở việc cung cấp cho nó thật nhiều dữ liệu. Một hệ thống thông minh cần nhiều hơn thế.
Trước
hết, nó cần biết mình đang hiểu thế giới theo cách nào. Đây chính là vai trò của
Knowledge Representation. Việc biểu diễn tri thức không đơn thuần là lưu
trữ các thông tin về thế giới, mà còn là quyết định hệ thống sẽ nhìn nhận những
đối tượng nào là quan trọng, chúng có những thuộc tính gì và chúng liên hệ với
nhau ra sao. Chính cách chúng ta lựa chọn biểu diễn tri thức sẽ quyết định hệ
thống có thể suy luận được những gì và giới hạn của khả năng suy luận đó nằm ở
đâu.
Tuy nhiên, một kho tri thức dù được xây dựng tốt đến đâu cũng chỉ là những thông tin được lưu trữ một cách thụ động. Muốn trở thành một hệ thống có khả năng suy luận, máy tính còn phải biết cách sử dụng những tri thức mà mình đang có để tạo ra những kết luận mới. Đây chính là công việc của Inference. Nó cho phép hệ thống trả lời những câu hỏi như: "Tôi có thể suy ra được điều gì từ những gì mình đã biết?" hay "Những kết luận nào chắc chắn đúng nếu các tri thức ban đầu đều đúng?".
Nhưng
khả năng tạo ra những kết luận mới vẫn chưa phải là điều kiện cuối cùng của một
hệ thống thông minh. Một kết luận chỉ thực sự có ý nghĩa khi chúng ta có thể
tin tưởng rằng nó được tạo ra từ những bước suy luận hợp lệ và đáng tin cậy. Đó
cũng chính là lý do Proof System trở thành một mảnh ghép không thể thiếu
của suy luận tự động. Nó giúp đảm bảo rằng hệ thống không chỉ biết suy luận, mà
còn biết mình đang suy luận đúng.
Khi ba ý tưởng này được kết hợp lại với nhau, chúng ta có được một Knowledge Base (cơ sở tri thức) – nơi lưu trữ các sự kiện, các quy luật và những tri thức mà hệ thống biết về thế giới và trở thành nền móng của một Knowledge-based Agent – một hệ thống có khả năng tiếp nhận thông tin từ môi trường, cập nhật tri thức của mình, suy luận để tạo ra những kết luận mới và sử dụng những kết luận đó để đưa ra các quyết định phù hợp.
Điểm
quan trọng nhất cần nhớ là: một agent dựa trên tri thức (knowledge-based
agent) luôn tách riêng hai thứ:
1. Tri
thức (Knowledge): là những thông tin mà agent biết về thế
giới. Ví dụ: "Con người cần oxy để sống" hoặc "Nếu trời
mưa thì đường có thể bị ướt". Đây là những câu mô tả sự thật, còn gọi
là tri thức khai báo (declarative knowledge).
2. Cách
sử dụng tri thức (Reasoning Mechanism): là cách agent suy luận
từ những điều đã biết để đưa ra kết luận hoặc hành động. Đây là phần quy
trình suy nghĩ (procedural process), nhưng nó không phụ thuộc vào một lĩnh
vực cụ thể nào.
Sự tách biệt này mang lại một lợi ích rất lớn: chúng ta có thể dạy agent những kiến thức mới bằng cách thêm thông tin mới vào kho tri thức, mà không cần phải sửa lại phần chương trình suy luận bên trong.
Ví
dụ, nếu muốn một agent hiểu thêm rằng: "Chim cánh cụt là loài chim
nhưng không biết bay" ta chỉ cần thêm thông tin này vào cơ sở tri thức.
Cơ chế suy luận của agent vẫn giữ nguyên, không cần lập trình lại từ đầu.
Đây
chính là ý tưởng của tầng tri thức (Knowledge Level).
Ở
tầng này, chúng ta chỉ quan tâm đến:
- Agent biết
những gì?
- Agent muốn
đạt được điều gì?
- Từ những kiến
thức đó, agent có thể suy luận ra điều gì?
Chúng ta không cần quan tâm bên dưới agent được xây dựng bằng cách nào: có thể bằng cấu trúc dữ liệu, thuật toán tìm kiếm, mạng nơ-ron hay một hệ thống phức tạp khác.
Nói
một cách đơn giản: Tri thức mà một agent sở hữu và cách máy tính triển khai
tri thức đó là hai vấn đề hoàn toàn khác nhau.
Đây
là một trong những ý tưởng quan trọng giúp AI có thể trở nên linh hoạt hơn:
thay vì viết lại chương trình mỗi khi muốn agent học điều mới, chúng ta chỉ cần
bổ sung thêm tri thức cho nó.
Đến
đây, chúng ta có thể ghép các mảnh ghép lại với nhau:
- Logic
cho agent khả năng suy luận một cách chặt chẽ và đáng tin cậy.
- First-Order
Logic cung cấp một ngôn ngữ để mô tả thế giới dưới dạng
đối tượng, thuộc tính và các quy luật tổng quát.
- Knowledge
Representation (Biểu diễn tri thức) trả lời câu hỏi: "Agent
cần biết những gì về thế giới?"
- Inference
(Suy luận) trả lời câu hỏi: "Từ những
điều đã biết, agent có thể kết luận thêm được điều gì?"
- Proof
System (Hệ thống chứng minh) giúp đảm bảo rằng
các bước suy luận được thực hiện một cách chính xác và có thể kiểm chứng
được.
Có thể hình dung toàn bộ quá trình như sau: Biểu diễn thế giới → Lưu trữ tri thức → Suy luận → Đưa ra quyết định → Hành động.
Mỗi
thành phần đều đóng một vai trò riêng, nhưng chúng kết hợp với nhau để tạo nên
khả năng "suy nghĩ" của một knowledge-based agent.
Nhìn theo một góc độ khác, hành trình từ Logic đến AI hiện đại thực chất cũng chính là hành trình biến dữ liệu thành tri thức, biến tri thức thành khả năng suy luận và cuối cùng biến khả năng suy luận thành những hành động có ý nghĩa. Và có lẽ, đó mới chính là điều khiến một hệ thống trở nên thông minh.
Lưu
ý rằng không phải mọi hệ thống AI hiện đại đều sử dụng First-Order Logic theo
đúng nghĩa truyền thống. Trong thực tế, các hệ thống AI ngày nay còn kết hợp
nhiều phương pháp khác nhau:
- Temporal
Logic (Logic thời gian) dùng cho các hệ thống
phải liên tục phản ứng với môi trường như robot hay hệ điều hành.
- Probabilistic
Models (Mô hình xác suất) giúp AI đưa ra quyết
định khi thông tin không đầy đủ hoặc không chắc chắn.
- Deep
Neural Networks (Mạng nơ-ron sâu) biểu diễn tri thức
dưới dạng hàng triệu tham số số học mà con người không thể đọc trực tiếp
như các câu logic.
Mặc dù cách biểu diễn tri thức có thể rất khác nhau, nhưng ý tưởng nền tảng vẫn không thay đổi: Trước khi một agent có thể suy luận về thế giới, nó phải có một cách nào đó để biểu diễn thế giới ấy.
Nói cách khác, một agent không thể suy nghĩ về những điều mà nó chưa từng được biểu diễn và lưu trữ dưới bất kỳ hình thức nào. Biểu diễn tri thức luôn là bước đầu tiên của suy luận.
Những cách hiểu chưa đúng
AI suy luận giống như con người suy nghĩ
Chúng
ta thường nói rằng AI "hiểu", "suy nghĩ" hay "suy luận",
nhưng điều này rất dễ khiến người mới hình dung rằng AI hoạt động giống như bộ
não con người. Thực tế không hoàn toàn như vậy.
Một
knowledge-based agent không suy nghĩ bằng trực giác hay kinh nghiệm sống như
con người. Nó chỉ đang thực hiện những phép suy luận dựa trên các thông tin và
quy luật mà nó được cung cấp.
Ví
dụ, nếu agent biết rằng:
· Mọi
ô nằm cạnh hố sâu đều có gió.
· Vị
trí hiện tại có gió.
thì
nó có thể suy luận rằng: Gần đây có thể tồn tại một hố sâu.
Agent
không thực sự "nhìn thấy" chiếc hố hay "hiểu" cảm giác nguy
hiểm giống con người. Nó chỉ đang xử lý thông tin theo những
quy tắc suy luận đã được xây dựng từ trước.
Vì
vậy, khả năng suy luận của agent chỉ có ý nghĩa khi tri thức của nó phản ánh
đúng thế giới thực. Nếu thông tin đầu vào bị sai hoặc các quy
luật được xây dựng không chính xác, agent vẫn có thể suy luận rất logic nhưng lại
đưa ra một kết luận hoàn toàn sai trong thực tế.
Nói cách khác: Suy luận đúng không đồng nghĩa với kết luận đúng nếu tri thức ban đầu đã sai.
Càng lưu trữ nhiều tri thức càng tốt
Một
suy nghĩ khác khá phổ biến là: nếu agent biết càng nhiều thứ thì chắc chắn nó sẽ
càng thông minh hơn.
Trên
thực tế, mọi thứ luôn có sự đánh đổi.
Một
cách biểu diễn tri thức đơn giản sẽ giúp việc suy luận diễn ra nhanh hơn, nhưng
lại khó mô tả được những tình huống phức tạp của thế giới thực. Ngược lại, một
cách biểu diễn tri thức càng chi tiết và mạnh mẽ thì agent càng có khả năng mô
tả thế giới tốt hơn, nhưng việc suy luận cũng sẽ trở nên khó khăn và tốn nhiều
tài nguyên tính toán hơn. Ví dụ:
- Liệt kê từng trường hợp cụ thể thì
đơn giản nhưng rất dài dòng.
- Sử dụng các quy luật tổng quát như
First-Order Logic sẽ linh hoạt hơn rất nhiều.
- Tuy nhiên, việc suy luận trên những
quy luật phức tạp này cũng đòi hỏi nhiều phép tính hơn.
Vì vậy, trong AI không tồn tại một cách biểu diễn tri thức nào là "tốt nhất cho mọi trường hợp". Điều quan trọng là phải lựa chọn cách biểu diễn phù hợp với bài toán đang cần giải quyết.
Kết luận
Hành trình xây dựng một hệ thống có khả năng suy luận thực chất bắt đầu từ một câu hỏi rất đơn giản: điều gì khiến một cỗ máy trở nên thông minh?
Câu trả lời hóa ra không nằm ở việc cung cấp cho nó thật nhiều dữ liệu. Một hệ thống thông minh cần biết mình đang hiểu thế giới theo cách nào, biết mình có thể suy ra được điều gì từ những gì đã biết và biết rằng những kết luận mà mình tạo ra thực sự là đúng.
Knowledge Representation giúp máy tính hiểu thế giới, Inference giúp nó khám phá những tri thức mới còn Proof System giúp đảm bảo rằng những bước suy luận của nó được thực hiện một cách chính xác và đáng tin cậy. Khi được kết hợp lại với nhau, chúng tạo nên nền móng của Knowledge-based Agent và nhiều công nghệ quan trọng trong lĩnh vực Automated Reasoning ngày nay.
Có lẽ điều thú vị nhất là mặc dù chúng ta thường nghĩ rằng AI hiện đại bắt đầu từ Machine Learning hay các Large Language Models, nhưng rất nhiều ý tưởng nền tảng của nó lại được hình thành từ những câu hỏi đã tồn tại từ rất lâu:
- Máy tính hiểu thế giới như thế nào?
- Điều gì khiến một lập luận trở nên đúng?
- Và làm thế nào để một cỗ máy có thể tự mình suy luận về thế giới?
Hành trình đi tìm câu trả lời cho những câu hỏi ấy vẫn đang tiếp tục và đang hiện diện trong rất nhiều công nghệ hiện đại như Automated Reasoning, Formal Verification, SAT/SMT Solver, Knowledge Graph, AI Agent và Neuro-symbolic AI. Có lẽ, đó cũng chính là một trong những hành trình thú vị nhất của khoa học máy tính: hành trình biến dữ liệu thành tri thức, biến tri thức thành khả năng suy luận và cuối cùng biến khả năng suy luận thành những quyết định có ý nghĩa.
Recommended Books
· Cambridge University Press. An Introduction toFormal Logic 2e (2020)
· Dover Publications. Logic for ComputerScience_ Foundations of Automatic Theorem -- Dover Books on Computer Science,2, 2015
· Prentice Hall. Artificial Intelligence_ AModern Approach 4th (2020)
· Springer. Introduction to Mathematical Logic 3rd (1987)
· Springer. Mathematical Logic for Computer Science 3e(2012)
Comments
Post a Comment