- HM3: Mô hình PAC.
- HM5: Mô hình giả thuyết không nhất quán và định lý hội tụ đều Vapnik-Chervonenkis.
Trong các bài trước ta đã đề cập đến một số vấn đề không học được trong mô hình PAC và tầm quan trọng của việc biểu diễn lớp giả thuyết như thế nào. Có lẽ bài báo đầu tiên nói về tầm quan trọng của (cách biểu diễn) lớp giả thuyết là bài của Pitt và Valiant (JACM, 1988). Có không ít các bài báo tiếp đó đã chứng minh độ khó của một số vấn đề học máy khác, ví dụ Blum và Rivest chứng minh rằng huấn luyện một mạng neural với 3 nodes là NP-khó (tương đương với phần hội của 3 halfspaces là không học được), Alekhnovich et al. ở FOCS 04 chứng minh một số các lớp hàm Bool và decision trees là không học được, V. Feldman ở STOC 06 chứng minh rằng lớp DNF không học được trong mô hình PAC kể cả khi learner có thể “hỏi” data (chứ không phải lấy ngẫu nhiên, xem thêm bài này nữa), Guruswami và Raghavendra ở FOCS 06 chứng minh rằng học halfspaces (còn gọi là perceptron, một cấu trúc cổ điển) với nhiễu là khó (ta sẽ nói về nhiễu sau), v.v. Duyệt qua STOC, FOCS,và COLT những năm gần đây sẽ thấy một vài kết quả nữa. Ngoài ra, còn có một mối liên kết giữa PAC-learning và property testing, một đề tài khá “hot” trong lý thuyết tính toán.
Chứng minh rằng học một lớp khái niệm dùng một lớp giả thuyết nào đó là bài toán khó (NP-khó chẳng hạn) không đáng ngạc nhiên (dù có thể không dễ). Thế nếu ta không giới hạn cả lớp giả thuyết nữa thì sao? Bài toán sẽ khó hơn hay dễ hơn? Một mặt, ta cho learner thêm flexibility, bài toán có vẻ “dễ” hơn. Mặt khác, không giới hạn lớp giả thuyết thì learner output cái gì bây giờ? Ta sẽ quay lại đề tài này trong một bài sau.
4. Occam’s learning và mối liên hệ giữa mô hình nhất quán và mô hình PAC, trường hợp lớp khái niệm hữu hạn
Tóm tắt lại mô hình PAC: learner muốn học khái niệm trong lớp khái niệm
bằng lớp giả thuyết
, nghĩa là learner phải đưa ra một giả thuyết
bằng cách lấy
mẫu theo phân bố
trên miền
sao cho
rất gần
với xác suất rất cao.
Trong đề mục này, ta chỉ xét các lớp giả thuyết hữu hạn, có thể giống hoặc khác
. Một kết quả cổ điển của Valiant nói rằng: nếu learner đưa ra một giả thuyết nhất quán với “khá nhiều” các mẫu lấy độc lập thì đó chính là PAC learner! (Có thể không phải là efficient PAC learner, nhưng chắc chắn là PAC learner.) Cụ thể hơn:
Theorem 1 (Định lý Valiant) Nếu learner có thể đưa ra một giả thuyết
nhất quán với
mẫu (i.d.d.) thì giả thuyết đó sẽ thỏa điều kiện
, nghĩa là learner là một PAC-learner.
Proof: Gọi một giả thuyết gọi là giả thuyết tồi nếu
Xác suất mà một giả thuyết tồi nhất quán với ở tất cả
mẫu độc lập nhỏ hơn
. Do đó, xác suất mà giả thuyết learner đưa ra là giả thuyết tồi nhỏ hơn hoặc bằng xác suất tồn tại một giả thuyết tồi trong
nhất quán với
. Union bound cho ta chặn xác suất này bằng
. Ép vế cuối cùng nhỏ hơn hoặc bằng
là xong!
Định lý này dẫn đến một kết quả khác, thường được xem như một cách giải thích toán học cho nguyên tắc Occam’s Razor. Đại khái, nguyên tắc này nói rằng khi có một số giả thuyết tốt như nhau cạnh tranh cho việc giải thích cái gì đó thì nên chọn giả thuyết “đơn giản” nhất. Ví dụ: nếu cơ học cổ điển đã đủ để giải thích chuyển động của các hành tinh trong hệ mặt trời thì ta không cần thòng thêm một câu “Thượng đế tạo ra hệ mặt trời” nữa. (Như Laplace nói: “tôi không cần giả thuyết đó“.) Nếu ta chọn “đơn giản” = “ngắn gọn” thì từ định lý Valiant có thể chứng minh được rằng nếu learner đưa ra một giả thuyết “đủ ngắn” và nhất quán với data thì learner đó là PAC-learner. (“Đơn giản” = “ngắn gọn” là cái nhìn của lý thuyết thông tin!)
Từ định lý Valiant, có thể thiết kế một số efficient PAC-learners khá dễ dàng. Ví dụ: ta đã thiết kế một PAC learner để học Boolean conjunctions trong đề mục 3.3. Tổng số giả thuyết dạng Boolean conjuction nhiều nhất là . Dùng định lý Valiant, ta chỉ cần dùng thuật toán trong đề mục 2.1 và tìm một giả thuyết nhất quán với
mẫu là xong. Đây hiển nhiên vẫn là thuật toán thời gian đa thức. Tổng số mẫu ta cần thậm chí còn ít hơn tổng số mẫu cần trong thuật toán đã đưa trong đề mục 3.3.
Nếu ta giữ tổng số mẫu cố định, có thể đảo định lý Valiant lại và viết
Có thể hiểu kết quả này nôm na là: ta càng biết nhiều về lớp giả thuyết thì càng có ít giả thuyết ( giảm) và do đó lỗi của giả thuyết đưa ra càng bé, hoặc càng có nhiều data (
tăng) thì cũng thế.
5. VC-dimension và mối liên hệ giữa mô hình nhất quán và mô hình PAC, trường hợp lớp khái niệm vô hạn
Định lý Valiant xem ra có vẻ hữu dụng. Thế nhưng ta chẳng dùng nó được khi lớn ơn một hàm đa thức, thậm chí vô hạn. Ví dụ 1: nếu ta muốn học lớp DNF dùng lớp DNF thì
. Ví dụ 2: tổng số các axis-parallel rectangles là vô hạn, vậy mà vẫn tồn tại một efficient PAC-learner cho lớp axis-parallel rectangles.
May mà ta vẫn có thể chứng minh được một định lý tương tự định lý Valiant cho trường hợp là vô hạn, nhưng ta sẽ phải giới thiệu một khái niệm mới cực kỳ thú vị, mang tính tổ hợp, gọi là VC-dimension của một lớp các hàm số. VC-dimension, viết tắt của Vapnik-Chervonenkis dimension, được Vapnik và Chervonenkis giới thiệu trong bài báo kinh điển của họ hồi năm 1971:
V. Vapnik and A. Chervonenkis. “On the uniform convergence of relative frequencies of events to their probabilities.” Theory of Probability and its Applications, 16(2):264–280, 1971.
Bài này của Hosking, Petnault và Sudan viết tổng quan về quan hệ giữa thống kê và data mining giới thiệu khá tốt trực quan của VC-dimension. Blumer et al. ở STOC 89 là bài báo đầu tiên giới thiệu VC-dimension vào ngành COLT; các kết quả của họ là nội dung chính của đề mục này của chúng ta.
5.1. Giới thiệu trực quan về VC-dimension
VC-dimension là một số đo “độ phức tạp” hoặc “dung tích” của một lớp các hàm số. Trong ngữ cảnh của chúng ta, lớp các hàm số chính là lớp giả thuyết. VC-dimension của một lớp giả thuyết là số lớn nhất sao cho tồn tại
mẫu mà với bất kỳ cách gán nhãn nào cho các mẫu này ta cũng có thể tìm được một giả thuyết nhất quán với chúng. Dĩ nhiên, nếu không tồn tại số
lớn nhất này thì VC-dimension của lớp giả thuyết là vô hạn. VD-dimension cũng được định nghĩa cho cả các lớp hàm biến thực chứ không chỉ các lớp hàm trị 0, 1 như trong bài toán phân loại mà ta đang xét.
Trong ngữ cảnh của statistical learning theory thì VC-dimension là số đo “dung tích” của một tập hợp bất kỳ các mô hình thống kê. Bài này có một đoạn nói rất tốt nên tôi dịch lại ra đây:
Do khái niệm này được định nghĩa dựa trên tổng số mẫu và tính nhất quán của các models trên các mẫu, nó có thể áp dụng cho hầu như tất cả mọi loại models: tuyến tính, phi tuyến, nonparametric và tổ hợp của chúng, bao gồm mạng neural, classification & regression trees, classification & regression rules, radial basis functions, Bayesian networks, và hầu hết tất cả các họ models có thể tưởng tượng ra được. Thêm nữa, VC-dimension cũng là con số đánh giá rất tốt khả năng “khớp” dữ liệu của một lớp models, tốt hơn số tham số của models. Có các ví dụ models với 1 tham số mà có VC-dimension vô hạn, do đó khớp bất kỳ tập mẫu nào. Cũng có các models với ti tỉ tham số nhưng chỉ có VC-dimension nhỏ … Với một số họ models nhất định thì VC-dimension bằng tổng số tham số, ví dụ như các linear regression/discriminant models.
Vapnik và Chervonenkis dùng VC-dimension trong các bất đẳng thức chặn lỗi cho một lớp models cho trước. Cũng như trong PAC-learning, các chặn của họ không phụ thuộc vào phân bố của dữ liệu, phân bố nào cũng được. Bài báo của Blumer et al. áp dụng ý tưởng và vài kỹ thuật của họ vào PAC-learning.
5.2. Toán học của VC-dimension và vài thuộc tính
Lớp khái niệm là một tập các hàm số
. Mỗi hàm số có thể xem là một tập con của
: tập các phần tử của
được hàm số gán nhãn bằng
. Với một tập mẫu
bất kỳ, định nghĩa
. Như vậy
là tập tất cả các tập con
sao cho tồn tại một giả thuyết
“cắt”
ra thành
(nhãn = 1) và
(nhãn = 0). Ta gọi
là tập các “hành vi” (behaviors) của
trên
(còn gọi là tập các dichotomies).
Tập mẫu bị
băm nát như tương Tàu bởi
nếu
là tập tất cả các tập con của
. Nói cách khác,
bị băm nát như tương Tàu nếu, cho một tập con
bất kỳ ta luôn tìm được một giả thuyết
“cắt”
ra thành
(nhãn = 1) và
(nhãn = 0).
VC-dimension của , ký hiệu là
là kích thước lớn nhất của một tập mẫu bị
băm nát. (Bỏ “như tương Tàu” đi cho đỡ mỏi tay.) Để hiểu rõ, bạn hãy tự giải thích một cách trực quan các khẳng định sau đây:
-
là tập các nửa đường thẳng mở bên trái trên trục thực,
-
là tập các đoạn đóng trên trục thực,
-
là tập các tập nhiều nhất
đoạn đóng trên trục thực,
-
là tập các nửa mặt phẳng,
-
là tập các nửa không gian (half-spaces) của
,
-
là tập các hình cầu của
,
-
là tập các axis-parallel rectangles,
-
là tập các đa giác lồi d đỉnh trên mặt phẳng,
-
là tập các tổ hợp logic của nhiều nhất
khái niệm trong một lớp khái niệm
cho trước, nếu
hữu hạn thì
hữu hạn.
-
là tập các tập các đoạn đóng trên thục thực, hoặc tập các tập mở (theo nghĩa hình topo), hoặc tập các Borel sets, thì
Lemma 2 (Bổ đề Sauer) Định nghĩa
. Nếu
thì
Như vậy, bổ đề này cho ta biết nếu VC-dimension của lớp giả thuyết là hữu hạn thì sẽ bị chặn trên bởi một đa thức khi
đủ lớn. Kết quả này khá phản trực quan. Chú ý rằng, nếu VC-dimension là vô hạn thì ta luôn có
.
Proof: Quy nạp theo . Khi
thì dĩ nhiên bổ đề đúng. Khi
thì lớp hàm số
gán tất cả
cùng một giá trị (0 hoặc 1), do đó
.
Xét trường hợp tổng quát , một tập mẫu
bất kỳ gồm
mẫu, và một phần tử
bất kỳ. Chú ý rằng
chẳng qua là một bộ các tập con của
. Số thành viên trong
có thể tính bằng tổng của hai số hạng: một là tổng số các các tập con
thỏa
, hai là các tổng số các tập con
sao cho
.
Dùng ý tưởng trên, định nghĩa
Ta có . Dễ thấy rằng
vì nếu
băm nát một tập
nào đó thì
sẽ băm nát
. Áp dụng giả thuyết quy nạp, ta kết luận:
(Xem thêm bài này tôi chứng minh bổ đề Sauer bằng cách khác, có lẽ “sạch sẽ” hơn chứng minh trên.)
5.3. Định lý Valiant cho các lớp khái niệm vô hạn (nhưng có VC-dimension hữu hạn)
Theorem 3 Tồn tại một hằng số
sao cho: nếu learner có thể đưa ra một giả thuyết
nhất quán với
mẫu (i.d.d.) thì learner là một PAC-learner.
Proof: Đây là một định lý tuyệt vời về mặt kỹ thuật. Nó khẳng định điều tôi đã biết: cùng một cây Ramirez trong tay John Williams thì khác xa trong tay NQH.
Giống như trong định lý Valiant trường hợp lớp giả thuyết hữu hạn, ta chỉ cần chặn trên xác suất sự kiện “tồi” sau đây xảy ra:
: sự kiện tồn tại một giả thuyết tồi
nhất quán với
(Nhớ rằng giả thuyết tồi là giả thuyết có lỗi
.)
Thay vì chặn xác suất xảy ra, ta sẽ chặn nó bằng xác suất một sự kiện khác dễ “nắm bắt” hơn. Với một tập mẫu
bất kỳ, gọi
là tổng điểm trong
mà
. Bây giờ, gọi
là training set. Giả sử ta lấy thêm
mẫu nữa
(các “mẫu ma” này chỉ là công cụ phân tích, không phải ta lấy thêm mẫu thật sự khi chạy thuật toán). Định nghĩa một sự kiện thứ hai:
: sự kiện tồn tại một giả thuyết
sao cho
(nghĩa là
vẫn nhất quán với
trên
) nhưng
.
Dễ chứng minh rằng, nếu thì
dùng bất đẳng thức Chernoff, do đó
. Giả sử ta thảy
đồng tiền xấp ngửa với xác suất
và tráo
với
nếu đồng tiền thứ
là ngửa. Gọi hai tập mẫu kết quả là
và
. Định nghĩa một sự kiện thứ ba:
: sự kiện tồn tại một giả thuyết
sao cho
(nghĩa là
vẫn nhất quán với
trên
) nhưng
.
Do tính i.i.d. của và
, dễ thấy rằng
và
có xác suất bằng nhau. Cố định
và
và xét một giả thuyết
bất kỳ. Để cho
và
thì phải có ít nhất
chỉ số
sao cho
, và ít nhất
đồng tiền ra xấp/ngửa sao cho phần đúng nhảy vào
và phần sai nhảy vào
. Do đó
Thay bằng
Sau đó, ta có thể thay bằng
và suy ra
bằng với
Áp dụng union bound cho ta
Với sự giúp đỡ của bổ đề Sauer trong mục trước, phần còn lại chỉ là cơ bắp.
6. Một chặn dưới cho độ phức tạp mẫu.
Trong các đề mục 4 và 5, chúng ta đã thấy các điều kiện đủ để learner là PAC-learner: chỉ cần lấy đủ số mẫu và (nếu có thể) đưa ra một giả thuyết nhất quán với các mẫu này. Có hai câu hỏi tự nhiên: (1) nếu không thể đưa ra một giả thiết nhất quán với mẫu thì sao? (Vì nhiều lý do, trên thực tế khả năng này hoàn toàn có thể xảy ra. Chúng ta sẽ quay lại với nó trong bài tới.) và (2) tổng số mẫu cần thiết là bao nhiêu? Định lý dưới đây trả lời câu hỏi số 2 này.
Theorem 4 tồn tại một không gian mẫu
, một phân bố
trên đó, và một lớp giả thuyết
với VC-dimension bằng
thỏa mãn điều kiện sau đây: bất kỳ learner nào — nếu chỉ lấy
mẫu — thì
.
Như vậy, nếu chỉ lấy mẫu thì learner không thể PAC-learn lớp khái niệm trên với tham số lỗi
và tham số độ tin cậy
.
Đại khái, chứng minh định lý trên rất đơn giản: xét một tập con của
bị băm nát bởi
. Gán
là uniform distribution trên tập con này (phần ngoài tập con có density bằng không). Không mất tính tổng quát ta có thể giả sử
chính là tập tất cả các tập con của
. Như vậy, mỗi mẫu trong
thuộc về một nửa số khái niệm và không thuộc về một nửa số khái niệm còn lại. Giả sử ta lấy một khái niệm một cách ngẫu nhiên, và learner chỉ thấy một nửa của
, thì xác suất mà learner đoán sai trong nửa còn lại sẽ ít nhất là
. Do đó, tồn tại ít nhất một khái niệm mà learner đoán sai với xác suất
. Từ đó, dùng bất đẳng thức Markov, kết thúc định lý không khó khăn gì.

6 Comments
Hi bác Hưng, very nice presentation, again. Tôi có một số comments về Định lý 5.3.
1. Khái niệm VC-dimension đúng là rất độc đáo, original, đặc biệt là tính chất tổ hợp của chúng và liên hệ trực tiếp đến statistical efficiency (theo Định lý 5.3). Tuy vậy VC dimensions có một số hạn chế fundamental, ở chỗ phần nhiều các function classes hữu ích trên thực tế lại có infinite VC dimensions. Khái niệm tốt hơn để đo độ phức tạp của function classes là khái niệm entropy của Kolmogorov (liên quan đến packing và covering numbers). Không biết bác Hưng có dự định nói về khái niệm này không.
2. Một kết quả rất thú vị là covering number của VC function class thì được chặn trên bởi một đa thức (đối với 1/delta, ở đây delta là kich cở của quả bóng con dùng để cover theo định nghĩa của covering number). Như vậy nếu VC dimension hữu hạn thì entropy cũng vậy, nhưng ngược lại không đúng.
3. Trong một số comments trước tôi nói rằng bên thống kê họ đã phái triển rất sâu rộng khái niệm PAC, và có thể minh họa chính bằng khái niệm entropy này. Cuối thập niên 70 có nhiều kết quả quan trọng để (nói theo ngôn ngữ PAC) để chứng minh PAC-learnability cho các lớp hàm số dựa theo khái niệm entropy (e.g., ví dụ, sử dụng Dudley’s entropy integral). Các kết quả tương tự như Định lý 5.1 ở trên: Ta có thể chặn trên \epsilon theo sample size m (từ Định lý 5.1) .Điều thú vị nhất là các chặn trên này cũng trùng với chặn dưới luôn (minimax bound: với một function class đây là chặn worse-case tốt nhất có thể được với mọi thuật toán learning).
4. Khái niệm entropy (khác với Shannon’s entropy) xuất hiện đầu tiên bên approximation theory của Russian school (xem vi’ du.:
http://www.procul.org/blog/2006/05/24/cac-bai-bao-kinh-oi%e1%bb%83n-khmt-9-birman-and-solomjaks-1967-paper/
)
và có liên hệ mật thiết với information theory.
5. Khái niệm Shannon’s entropy và approximation entropy thực ra có liên hệ với nhau cực kỳ hay, nếu ta sử dụng generalized Bayesian viewpoint. (Tong Zhang gần đây có một bài báo rất thú vị về cái này trên Annals of Statistics, 2006). Hy vọng một dịp nào đó tôi sẽ nói thêm về cái này.
6. Vapnik thường được gắn liền với statistical learning theory như một cha đẻ. Điều này đúng.
Nhưng sách của Vapnik thường không cân bằng và không ghi nhận xứng đáng các khái niệm khác trong empirical process theory mà tôi nghĩ Vapnik biết rõ là sẽ rất hữu ích và powerful hơn cho learning theory. Có cảm tưởng ông này là một người egoistic. Một quyển sách cân bằng hơn về khái niệm VC theo tôi là của van der Vaart và Wellner (Weak convergence and empirical processes). Quyển này nói kỹ về VC theory, and much much more. Và ứng dụng không chỉ trong classification như PAC’s setting mà trong estimation nói chung.
Không chỉ trong learning theory, đóng góp của VC theory có thể coi là original trong theoretical statistics, góp phần tạo ra subfield gọi là empirical process theory trong statistics. Nếu Valiant đuợc Turing award, thì tôi nghĩ Vapnik cũng nên được một cái
7. Tôi cảm tưởng dân FOCS/STOC làm về learning theory chưa có exposure nhiều về empirical process theory (ngoài lý thuyết VC ra). Tuy vậy dân COLT với background statistics những năm gần đây có sự dịch chuyển đáng kể từ khái niệm VC sang sủ dụng khái niệm entropy.
8. Qua proof cu?a Định lý 5.3 có thể suy ra là NQH cũng có một cây Ramirez với xác suất cao.
Hi bác Long,
Vụ Kolmogorov entropy chắc phải chờ bác viết thôi. Đọc Vapnik review “history of learning theory” thấy rất … tếu
. BTW, tôi đọc sách Intro to COLT của Kearns và Vazirani cũng thấy cite Dudley (quyển “A Course on Empirical Processes”).
Valiant sẽ được Turing vì nhiều đóng góp khác chứ không chỉ có PAC (#P, superconcentrator, algebraic complexity, mind circuit, evolvability, hollographic algorithms, v.v.) Hầu như cứ vài năm là Valiant lại có một ý tưởng original mở ra một field mới.
Cảm ơn bác giới thiệu quyển Empirical processes. Các bài báo về PAC trên FOCS/STOCS thật ra has little to do with learning, they’re all about hardness of approximation. Tôi không ngạc nhiên nếu họ không biết statistics nhiều. COLT mới là về learning (from a TCS viewpoint) thật, vì thế COLT community mới rẽ nhánh ra khỏi STOC/FOCS.
Thưa chú !
Cháu là một người làm bên Công Nghệ Thông Tin, cụ thế là hướng theo Software Engineering, Information System, Business Management và Báo Chí Truyền Thông
Tình cờ đi qua WebBlog này, tuy mới chỉ đọc lướt nhanh các bài viết này, cháu nhận thấy rằng : Các bài viết trên, quả là chứa đứng nhiều lý thuyết về toán học, trí tuệ nhân tạo, thuật toán, thi quốc tế, các kiểu… Ấy thế mà, cái chứng minh cần thiết, mà nhiều người mong chờ, nó ko làm được là : nó phải chứng tỏ được nó tham ra quá quá trình thế nào, giúp ích ra sao cho cuộc sống con người đây ?? – Quá trình đó, phải chăng là mờ nhạt,
Rất mong chú có câu trả lời, dù chỉ đôi dòng ý nghĩa
@Chính Minh: để trả lời câu hỏi của bạn, tôi cần hiểu câu hỏi đã.
Thế nào là “giúp ích cho cuộc sống con người”?
1. Hồi Cardano giải phương trình bậc 3 có “giúp ích cho cuộc sống con người” không?
2. Google có giúp ích cho cuộc sống con người không?
Nếu câu trả lời của bạn cho 1 hoặc 2 là “có” thì câu trả lời của tôi (cho câu hỏi của bạn) là “có”, “nó” có giúp ích. (Tại sao liên quan đến Google, tại vì các thuật toán ML ít nhiều phải dùng boosting và support vector machines, những thứ đến từ lý thuyết học máy như đã và sẽ trình bày.)
Nếu câu trả lời của bạn cho cả hai câu 1 và 2 ở trên là “không”, thì câu trả lời của tôi (cho câu hỏi của bạn) là “không”, “nó” không giúp ích gì cho cuộc sống của bạn cả.
Tôi không biết nó có giúp ích cho bạn không; Tôi biết rằng “nó” giúp ích cho cuộc sống của tôi.
Bác Long,
Tôi đang (định) đọc bài này của Bartlett và Mendelson về Rademacher và Gaussian complexities. Bác có nhận xét gì về R/G complexities và tương quan với VC dimension không? (Để tôi tiết kiệm thời gian
) Sau bài của Bartlett-Mendelson thì có phát triển gì tiếp theo về R/G complexities không?
Bác Hưng,
Classification error được chặn bởi Rademacher/Gaussian complexity, cái này lại được chặn tiếp bởi covering number.
Câu trả lời nằm ở 1. và 2. của comment đầu tiên
Sau cái này thì theo tôi hiểu có một số phát triển về local complexity, thay vì global complexity, qua đó có thể tìm được faster error rate nếu hypothesis class đủ nhỏ.
Lúc nào rỗi bác đọc mấy cái lower bound papers nhé. Dân statistics nói chung không quen với combinatorial thinking nhiều nên rất cần fresh look từ những chuyên gia combinatorics.