Đặt vấn đề
Giả sử có hai đứa trẻ đứng trên đỉnh một ngọn đồi, mỗi đứa thả xuống một viên bi.
Hai viên bi giống nhau.
Ngọn đồi giống nhau.
Thời điểm thả gần như giống nhau.
Một viên được đặt lệch sang trái 0,000001 mm.
Nhỏ tới mức nếu mắt người nhìn vào thì sẽ nói:
Có khác gì nhau đâu.
Nhưng viên thứ nhất lăn xuống, đập vào một viên đá, bật sang trái.
Viên thứ hai chỉ lệch một chút nên không đập viên đá đó, tiếp tục đi thẳng, va vào một cành cây, đổi hướng, lăn xuống khe khác.
Mười giây sau, hai viên bi nằm cách nhau vài mét.
Nếu ngọn đồi đủ phức tạp, vài phút sau chúng có thể nằm ở hai nơi hoàn toàn khác nhau.
Và chuyện kỳ quặc nhất là:
không có gì ngẫu nhiên xảy ra cả.
Không có con xúc xắc vô hình nào được tung.
Không có ông thần nào giữa đường nổi hứng đá viên bi.
Mỗi va chạm đều tuân theo định luật vật lý. Nếu biết chính xác vị trí, vận tốc, hình dạng viên đá, ma sát, sức cản không khí và vài tỷ thứ linh tinh khác, về nguyên tắc ta có thể tính được bước tiếp theo.
Đây chính là cánh cửa dẫn vào một vùng toán học có cái tên nghe như một căn phòng trẻ con vừa chơi xong:
Chaos – hỗn độn.
Nhưng Chaos Theory không nghiên cứu một thế giới vô luật lệ.
Nó nghiên cứu một thứ đáng sợ hơn:
Một thế giới có luật rất rõ ràng, nhưng tương lai vẫn gần như không thể dự đoán lâu dài.
Đó là deterministic chaos – hỗn độn tất định.
Hỗn độn không có nghĩa là ngẫu nhiên
Hai khái niệm này rất dễ bị trộn vào nhau:
- Randomness: ngẫu nhiên.
- Chaos: hỗn độn.
Ví dụ ta tung một đồng xu.
Nếu mô hình hóa đơn giản, kết quả có thể xem là ngẫu nhiên:
1ngửa
2sấp
3ngửa
4ngửa
5sấp
6...
Nhưng một hệ chaotic có thể hoàn toàn khác.
Giả sử ta có một cái máy.
Ta đưa trạng thái hiện tại x vào.
Nó áp dụng đúng một công thức:
$$ x_{n+1} = f(x_n) $$
Không random.
Không Math.random().
Không xúc xắc.
Cùng một x_0, máy luôn tạo ra cùng một tương lai.
Nghe thì có vẻ quá dễ.
Biết công thức rồi thì tính thôi.
Xong thuật toán, quá dễ.
Nhưng vấn đề bắt đầu xuất hiện khi x_0 của chúng ta không hoàn toàn chính xác.
Ví dụ:
1Hệ A bắt đầu tại: 0.500000
2Hệ B bắt đầu tại: 0.500001
Sai khác:
10.000001
Ban đầu hai hệ gần như ôm nhau.
Sau một lúc:
1A: 0.712
2B: 0.713
Vẫn ổn.
Sau nữa:
1A: 0.381
2B: 0.427
Ơ?
Một lúc sau:
1A: 0.823
2B: 0.194
Hai thằng bỏ nhà đi hai hướng.
Đây là một đặc điểm nổi tiếng của các hệ chaotic:
Sensitive dependence on initial conditions
Hay:
độ nhạy với điều kiện ban đầu.
Edward Lorenz đã chỉ ra hiện tượng này khi nghiên cứu các hệ phương trình phi tuyến liên quan đến khí quyển. Trong bài báo năm 1963, ông cho thấy những trạng thái ban đầu chỉ khác nhau rất nhỏ có thể tiến hóa thành những trạng thái rất khác nhau. (American Meteorological Society Journals)
Sau này ý tưởng đó thường được kể bằng một cái tên đẹp hơn:
Butterfly Effect – hiệu ứng cánh bướm.
Một con bướm đập cánh ở nơi nào đó không có nghĩa là nó dùng tuyệt chiêu triệu hồi bão.
Ý nghĩa sâu hơn là:
Trong một hệ đủ nhạy, một sai khác cực nhỏ ở trạng thái ban đầu có thể bị khuếch đại dần cho tới khi tạo ra khác biệt lớn.
Một chiếc máy không biết tung xúc xắc nhưng hành xử như bị ma nhập
Có một ví dụ cực kỳ đơn giản gọi là Logistic Map:
$$ x_{n+1} = r x_n(1-x_n) $$
Chỉ có:
- một biến $x$,
- một tham số $r$,
- vài phép nhân trừ.
Không neural network.
Không GPU.
Không hàng tỷ tham số.
Thậm chí một cái máy tính bỏ túi cũng tính được.
Giả sử:
$$ r = 4 $$
Ta có:
$$ x_{n+1}=4x_n(1-x_n) $$
Bây giờ chạy hai hệ.
Hệ A:
$$ x_0=0.500000 $$
Hệ B:
$$ x_0=0.500001 $$
Ta chỉ thay đổi một phần triệu.
Có thể thử bằng Python:
1def logistic(x, r=4.0):
2 return r * x * (1 - x)
3
4a = 0.500000
5b = 0.500001
6
7for i in range(30):
8 a = logistic(a)
9 b = logistic(b)
10 print(i, a, b, abs(a - b))
Không có random trong đoạn code.
Chạy lại bao nhiêu lần cũng ra cùng kết quả.
Nhưng với những điều kiện thích hợp, sai khác rất nhỏ có thể tăng lên nhanh chóng.
Đó là một trong những điều khiến Chaos Theory thú vị:
Unpredictable không đồng nghĩa với random.
Một thứ có thể hoàn toàn tất định nhưng vẫn gần như không dự đoán được trong dài hạn.
Lorenz và con bướm sinh ra từ ba phương trình
Một trong những hình ảnh nổi tiếng nhất của Chaos Theory là Lorenz Attractor.
Nó xuất phát từ ba phương trình:
$$ \frac{dx}{dt}=\sigma(y-x) $$
$$ \frac{dy}{dt}=x(\rho-z)-y $$
$$ \frac{dz}{dt}=xy-\beta z $$
Nhìn hơi đáng sợ.
Nhưng với người mới, ta chưa cần giải chúng.
Chỉ cần hiểu thế này.
Có ba con số:
1x
2y
3z
Ba con số liên tục kéo nhau thay đổi.
x ảnh hưởng y.
y ảnh hưởng x.
z lại chen vào.
Rồi x và y cùng tác động đến z.
Ba đứa kéo tay nhau chạy vòng vòng như ba đứa trẻ uống nhầm ba lon nước tăng lực.
Máy tính bắt đầu tại một điểm:
1(x, y, z)
sau đó từng bước tính vị trí tiếp theo.
Nếu vẽ đường đi của hệ trong không gian ba chiều, một cấu trúc kỳ lạ xuất hiện.
Nó trông giống hai cánh bướm.
Quỹ đạo chạy vòng quanh một bên.
Rồi bất ngờ đổi sang bên kia.
Rồi quay lại.
Nó không đơn giản lặp lại một vòng cố định.
Nhưng cũng không bay lung tung ra vô cực.
Nó bị nhốt trong một cấu trúc gọi là strange attractor – bộ hút kỳ lạ.
Đó là một trong những nghịch lý đẹp nhất của Chaos:
Hỗn loạn nhưng có hình dạng.
Không lặp lại nhưng không vô tổ chức.
Không đoán được đường đi dài hạn, nhưng vẫn thấy được cấu trúc mà nó bị buộc phải sống bên trong.
Về mặt hình học, có thể hình dung chaotic attractor là kết quả của những quá trình kéo giãn và nén/lấp lại liên tục; chính quá trình kéo giãn liên quan tới việc khuếch đại sai khác ban đầu.
Tại sao một sai số tí hon lại trở thành con quái vật?
Giả sử hai trạng thái ban đầu cách nhau:
$$ \delta_0 $$
Trong nhiều hệ chaotic, khoảng cách giữa chúng trong một khoảng thời gian có thể tăng xấp xỉ:
$$ \delta(t) \approx \delta_0 e^{\lambda t} $$
Trong đó $\lambda$ được gọi là Lyapunov exponent – số mũ Lyapunov.
Nếu:
$$ \lambda > 0 $$
thì sai số có xu hướng tăng theo hàm mũ.
Đây mới là con quái vật.
Giả sử ban đầu sai số chỉ là:
$$ 0.000000001 $$
Nghe nhỏ xíu.
Nhưng nếu mỗi khoảng thời gian nó tăng gấp đôi:
10.000000001
20.000000002
30.000000004
40.000000008
5...
Sau 10 lần:
1x 1.024
Sau 20 lần:
1x 1.048.576
Sau 30 lần:
1x hơn 1 tỷ
Sai số không cần lớn ngay từ đầu.
Nó chỉ cần được khuếch đại đủ lâu.
Và đây chính là lý do dự báo một hệ chaotic không chỉ phụ thuộc vào việc:
Máy tính của tôi mạnh bao nhiêu?
Mà còn phụ thuộc vào:
Tôi biết trạng thái hiện tại chính xác đến mức nào?
Nhưng đo chính xác hơn là được mà?
Nghe hợp lý.
Nhiệt độ là:
130°C
Chưa đủ thì đo:
130.1°C
Chưa đủ nữa:
130.12345°C
Mua cảm biến xịn hơn:
130.123456789°C
Xong.
Nhưng tự nhiên không cho chúng ta một file JSON hoàn hảo:
1{
2 "temperature_everywhere": "exact",
3 "air_pressure_everywhere": "exact",
4 "wind_velocity_everywhere": "exact"
5}
Muốn dự đoán khí quyển, ta phải biết trạng thái của một lượng vật chất khổng lồ.
Không khí gồm vô số phân tử đang chuyển động.
Nhiệt độ khác nhau theo vị trí.
Áp suất khác nhau.
Độ ẩm khác nhau.
Mây đang hình thành.
Năng lượng Mặt Trời tiếp tục đi vào hệ thống.
Đại dương trao đổi nhiệt với khí quyển.
Đất liền nóng lên.
Nước bốc hơi.
Gió dịch chuyển.
Trong thế giới thật, mọi phép đo đều có sai số hữu hạn.
Nếu hệ khuếch đại sai số đó đủ nhanh thì đến một lúc nào đó, sai số lớn tới mức dự báo chi tiết không còn đáng tin nữa.
Lorenz đã đặt vấn đề về khả năng dự báo thời tiết rất dài hạn chính từ đặc tính này. (American Meteorological Society Journals)
Prediction horizon – chân trời dự báo
Đây là chỗ Chaos Theory đập một cái khá mạnh vào trực giác của chúng ta.
Ta thường nghĩ:
Nếu có máy tính mạnh hơn 1.000 lần, ta sẽ dự báo tương lai xa hơn 1.000 lần.
Không nhất thiết.
Giả sử sai số tăng:
$$ \delta(t)=\delta_0e^{\lambda t} $$
Ta chỉ chấp nhận dự báo cho tới khi sai số đạt $\delta_{max}$.
Khi đó:
$$ \delta_{max}=\delta_0e^{\lambda T} $$
Suy ra:
$$ T=\frac{1}{\lambda}\ln\left(\frac{\delta_{max}}{\delta_0}\right) $$
Điểm đáng chú ý nằm ở chữ:
$$ \ln $$
Muốn tăng thời gian dự báo, ta phải giảm sai số ban đầu theo cấp số nhân.
Ví dụ muốn kéo chân trời dự báo thêm một khoảng nữa, đôi khi không phải cảm biến chính xác hơn 2 lần.
Mà có thể phải:
110 lần
2100 lần
31.000 lần
4...
tùy hệ thống.
Máy tính có thể tính rất nhanh.
Nhưng nó không thể tính ra thông tin mà chúng ta chưa bao giờ đo được.
Đây là giới hạn thuộc về thông tin của trạng thái ban đầu, chứ không đơn thuần là giới hạn CPU.
Vậy Chaos có phá hủy giấc mơ của Laplace?
Năm 1814, Pierre-Simon Laplace từng mô tả một thực thể tưởng tượng, sau này được gọi là Laplace’s Demon.
Nếu một trí tuệ biết chính xác:
- vị trí mọi hạt,
- vận tốc mọi hạt,
- mọi lực trong tự nhiên,
thì theo cơ học cổ điển, nó có thể tính cả quá khứ lẫn tương lai.
Vũ trụ giống một cỗ máy khổng lồ.
Biết trạng thái hiện tại.
Biết luật.
Bấm nút.
Ra tương lai.
Chaos Theory không nhất thiết phá bỏ determinism đó.
Nó làm một chuyện tinh tế hơn.
Nó hỏi:
Ai bảo anh biết được trạng thái hiện tại với độ chính xác vô hạn?
Đây là khoảng cách rất lớn giữa:
tất định về mặt toán học
và
dự đoán được trong thực tế.
Một phương trình có thể xác định duy nhất tương lai.
Nhưng nếu ta chỉ biết điều kiện ban đầu đến 10 chữ số, trong khi dự báo 100 năm cần 100 chữ số, thì tương lai ấy vẫn nằm ngoài tầm tay.
Không phải vì tương lai không tồn tại trong phương trình.
Mà vì chúng ta không có đủ thông tin để lần theo nó.
Một con lắc đôi và cơn điên của vật lý
Một ví dụ khác rất trực quan là double pendulum – con lắc đôi.
Ta lấy một con lắc.
Rồi gắn thêm một con lắc nữa vào đầu nó.
Nhìn cực kỳ vô hại.
Hai thanh sắt.
Hai khớp quay.
Trọng lực.
Hết.
Nhưng khi thả nó xuống từ một số vị trí nhất định, chuyển động có thể trở nên cực kỳ phức tạp.
Hai con lắc ban đầu chỉ lệch nhau một chút có thể:
10 giây gần giống nhau
21 giây gần giống nhau
32 giây hơi lệch
44 giây khác rõ
58 giây mỗi thằng quăng tay một kiểu
Không có AI.
Không có random.
Không có Internet.
Chỉ có Newton.
Nhưng Newton cộng với phi tuyến đã đủ tạo ra một thứ nhìn như đang bị ma nhập.
Đây cũng là lý do Chaos thường xuất hiện trong những hệ có nonlinearity – tính phi tuyến.
Trong hệ tuyến tính, tác động nhỏ thường tạo thay đổi tương ứng nhỏ.
Trong hệ phi tuyến, các thành phần tương tác với nhau, feedback quay trở lại chính hệ thống, và một thay đổi nhỏ có thể bị phóng đại theo thời gian.
Chaos không có nghĩa là mọi thứ đều không thể dự đoán
Đây là một hiểu nhầm quan trọng.
Nếu một hệ chaotic không dự đoán được trạng thái chính xác dài hạn, không có nghĩa chúng ta chẳng biết gì.
Ví dụ thời tiết cụ thể sau rất lâu có thể khó đoán:
114:03 ngày X
2ở đúng vị trí Y
3có mưa hay không?
Nhưng ta vẫn có thể nghiên cứu:
- phân bố xác suất,
- trung bình dài hạn,
- cấu trúc attractor,
- vùng trạng thái có thể xảy ra,
- các đặc tính thống kê.
Nó giống như một con chó chạy lung tung trong sân.
Ta không biết 15 phút nữa nó đứng chính xác tại viên gạch nào.
Nhưng ta biết:
Nó vẫn ở trong sân.
Lorenz attractor cũng tương tự.
Ta khó dự đoán quỹ đạo cụ thể lâu dài.
Nhưng quỹ đạo vẫn bị giới hạn trong attractor.
Đây là sự khác nhau giữa:
dự đoán quỹ đạo
và
hiểu cấu trúc của hệ thống.
Một thất bại không đồng nghĩa với thất bại còn lại.
Chaos trong máy tính còn có thêm một trò vui: floating point
Có một chi tiết đặc biệt thú vị với dân IT.
Máy tính không lưu số thực với độ chính xác vô hạn.
Nó dùng floating-point.
Giả sử một simulator tính:
10.123456789123456789...
Máy có thể chỉ giữ được một phần:
10.123456789123456
Sai số cực nhỏ xuất hiện.
Ở nhiều bài toán, chuyện đó chẳng đáng quan tâm.
Nhưng với hệ chaotic, mỗi vòng simulation lại lấy kết quả vòng trước làm input vòng sau.
Sai số:
1ε
trở thành input.
Rồi biến thành:
12ε
rồi:
14ε
rồi:
18ε
Và vài nghìn hay vài triệu bước sau, hai simulation tưởng như giống hệt nhau có thể tạo trajectory khác nhau đáng kể.
Điều này không có nghĩa simulation sai.
Nó cho ta biết một điều quan trọng:
Khi mô phỏng hệ chaotic, đừng chỉ hỏi “kết quả cuối cùng là bao nhiêu?”, mà phải hỏi “kết quả này đáng tin trong khoảng thời gian nào và đại lượng thống kê nào còn ổn định?”
Đây là câu hỏi rất khác.
Chaos xuất hiện ở đâu?
Chaos Theory không chỉ là vài hình con bướm đẹp để làm wallpaper.
Các hệ động lực phi tuyến và hành vi chaotic xuất hiện trong nhiều lĩnh vực:
- khí tượng học,
- động lực học chất lưu,
- chuyển động cơ học,
- mạch điện phi tuyến,
- laser,
- sinh thái học,
- động lực quần thể,
- hóa học,
- thiên văn học,
- một số mô hình kinh tế và xã hội.
Tất nhiên không phải thứ gì phức tạp cũng là chaos.
Thị trường chứng khoán khó dự đoán không đồng nghĩa ta có thể hét:
Butterfly Effect!
rồi chạy về nhà.
Muốn gọi một hệ là chaotic theo nghĩa toán học cần nghiên cứu cấu trúc động lực của nó, chẳng hạn độ nhạy điều kiện đầu, Lyapunov exponent, tính trộn, attractor hoặc những tiêu chuẩn chaos tương ứng với định nghĩa đang sử dụng. Trong toán học tồn tại nhiều định nghĩa và biến thể của chaos chứ không có duy nhất một câu thần chú áp dụng cho mọi hệ. (Encyclopedia of Mathematics)
Điều đáng sợ nhất của Chaos
Chaos Theory cho chúng ta một bài học khá triết học.
Con người thường chia thế giới thành hai loại:
1Có luật → dự đoán được
2Không có luật → ngẫu nhiên
Nhưng tự nhiên nói:
Không. Còn một cửa nữa.
Có những hệ:
1Có luật.
2Luật rất rõ.
3Phương trình rất ngắn.
4Tương lai được xác định bởi hiện tại.
nhưng khả năng dự đoán của một sinh vật hữu hạn vẫn có chân trời.
Đó là một phát hiện khá kỳ lạ.
Bởi nó có nghĩa rằng không biết tương lai không nhất thiết đồng nghĩa với tương lai không có luật.
Đôi khi luật đã nằm ngay trên bảng.
Ta đọc được nó.
Ta lập trình được nó.
Ta chạy được nó.
Nhưng chỉ cần trạng thái ban đầu lệch một hạt bụi nhỏ, sau đủ thời gian, hai tương lai đã đứng ở hai bờ khác nhau.
Một cách hình dung đơn giản
Nếu cần nhớ Chaos Theory bằng một hình ảnh duy nhất, hãy tưởng tượng hai người đứng cạnh nhau trên một dòng sông.
Ban đầu họ chỉ cách nhau một centimet.
Dòng nước chảy qua một tảng đá.
Một người đi bên trái.
Một người đi bên phải.
Hai nhánh lại gặp nhiều tảng đá khác.
Mỗi lần như vậy, khoảng cách lại tăng.
Mười kilomet phía dưới, một người trôi ra nhánh sông phía đông.
Người kia đã sang nhánh phía tây.
Không có khoảnh khắc nào nước vi phạm định luật vật lý.
Không có khoảnh khắc nào vũ trụ tung xúc xắc.
Nhưng một centimet ở đầu nguồn đã trở thành nhiều kilomet ở cuối dòng.
Chaos chính là câu chuyện về quá trình khuếch đại sự khác biệt.
Tổng kết
Chaos không phải là sự vô trật tự tuyệt đối.
Ngược lại, thứ thú vị nhất của Chaos Theory chính là:
Hỗn độn có thể sinh ra từ những quy luật hoàn toàn xác định.
Một hệ chaotic có thể:
- tuân theo phương trình rõ ràng,
- không chứa yếu tố random,
- cùng điều kiện đầu luôn cho cùng kết quả,
- nhưng cực kỳ nhạy với sai lệch nhỏ của điều kiện ban đầu.
Vì mọi phép đo thực tế đều có độ chính xác hữu hạn, sai số nhỏ ấy có thể bị khuếch đại cho đến khi ta mất khả năng dự đoán trạng thái chi tiết của hệ.
Vậy nên đôi khi câu hỏi không phải:
“Tương lai có được quyết định hay không?”
Mà là:
“Một sinh vật với cảm biến hữu hạn, bộ nhớ hữu hạn và máy tính hữu hạn có thể biết tương lai ấy xa tới đâu?”
Vũ trụ có thể đang chạy một phương trình rất nghiêm túc.
Chỉ là sau vài vòng lặp, nhìn từ chỗ chúng ta, nó bắt đầu giống như đang ngáo.
Tham khảo
- Edward N. Lorenz, Deterministic Nonperiodic Flow, Journal of the Atmospheric Sciences, 1963. Bài báo gốc của Edward Lorenz
- Encyclopedia of Mathematics, Chaos. Chaos – Encyclopedia of Mathematics
Bình luận