Chuyển tới nội dung chính

Phép tích chập

Kéo cửa sổNhân rồi cộngĐệm và bước nhảyĐo phần nguyên

Phép tích chập

Đừng đọc tích chập như một công thức khó. Đọc nó như một cửa sổ nhỏ trượt trên ảnh: mỗi vị trí để lại đúng một con số, và bạn tính lại được con số đó bằng giấy.

Một nhân 3x3 trượt khắp ảnh. Ở mỗi vị trí, nó nhân từng ô của nhân với ô ảnh nằm dưới rồi cộng chín tích lại, và con số đó rơi vào một ô của bản đồ đặc trưng. Cả phép tích chập chỉ có thế. Cái đáng học không nằm ở câu vừa rồi mà nằm ở bốn hệ quả của nó: có bao nhiêu vị trí đặt được cửa sổ, đệm và bước nhảy đổi những gì, nhân nào dò ra đặc trưng nào, và một tầng như vậy tốn bao nhiêu phép tính.

Bài này ở lại trong một kênh xám và một nhân duy nhất, để mọi con số đều tính tay được. Chuyện bộ lọc dày theo kênh, số tham số và độ giãn thuộc về hai bài kích thước đầu ra và số tham sốkênh và tích chập 1 × 1.

Phép tích chập · trượt nhân, dựng feature map
Ô (0,0) = 27 · đã điền 0/25 · 5×5 · 225 phép nhân cộng
✎ sửa đượcLaplace: tâm nhân 8 trừ tám láng giềng, tổng bằng 0 nên vùng phẳng cho 0.
Ảnh vào 7×7Feature map 5×5Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±10Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±10Nhấp: +1 · cuộn: ±10Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±10Nhấp: +1 · cuộn: ±10Nhấp: +1 · cuộn: ±10Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±10Nhấp: +1 · cuộn: ±10Nhấp: +1 · cuộn: ±10Nhấp: +1 · cuộn: ±10Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±10Nhấp: +1 · cuộn: ±10Nhấp: +1 · cuộn: ±10Nhấp: +1 · cuộn: ±10Nhấp: +1 · cuộn: ±10Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±19Nhấp: +1 · cuộn: ±10Nhấp: +1 · cuộn: ±10Nhấp: +1 · cuộn: ±10Nhấp: +1 · cuộn: ±10Nhấp: +1 · cuộn: ±10Nhấp: +1 · cuộn: ±10Nhấp: +1 · cuộn: ±19Kéo để trượt nhân27
Nhân · Biên mọi hướng
-1-1-1-18-1-1-1-1
Vùng ảnh 3×3
999099009
=
Tích từng ô
-9-9-9072-900-9
Cộng 9 tích → ô (0,0)27

Ở trạng thái mở bài, sim đang nói gì

Ảnh vào là 7x7, đúng 28 ô sáng giá trị 9 ở phía trên đường chéo chính và 21 ô tối giá trị 0 ở dưới, tức một cạnh chéo sạch sẽ. Nhân đang là Biên mọi hướng, đệm 0, bước nhảy 1. Bản đồ đặc trưng vì thế là 5x5, nhỏ hơn ảnh 2 ô mỗi chiều.

Bấm Tự chạy hết và cả 25 ô hiện ra:

27 9 0 0 0
-27 27 9 0 0
-9 -27 27 9 0
0 -9 -27 27 9
0 0 -9 -27 27

Đường chéo toàn 27, tức nhân phản ứng mạnh nhất đúng dọc theo cạnh. Hai góc xa, ô (0,4) và ô (4,0), đều bằng 0: ở đó cửa sổ nằm hoàn toàn trong vùng phẳng, không có gì để dò. Giá trị lớn nhất theo trị tuyệt đối là 27, và đó là con số sim dùng để chuẩn hoá màu, nên ô đậm nhất là ô bằng 27 hoặc -27.

Bảng dưới hình còn một con số nữa: 225 phép nhân cộng. Nó là 5 × 5 × 9, tức mỗi ô đầu ra tốn 9 phép nhân và tầng có 25 ô đầu ra. Mục cuối bài sẽ dùng lại con số này.

Chú ý bảng này không đối xứng: ô (0,1)9 còn ô (1,0)-27. Nếu một cài đặt lỡ hoán hàng với cột thì bản đồ vẫn trông có lý, vẫn có một đường chéo sáng, mà mọi ô ngoài đường chéo đều sai dấu. Đó là loại lỗi chỉ lộ ra khi bạn đối chiếu từng ô, không phải khi bạn nhìn hình.

Tự tính lại một ô bằng tay

Đây là việc nên làm đúng một lần, sau đó cả phần còn lại của CNN dễ hơn hẳn.

Cửa sổ đang ở ô (0,0), tức nó phủ góc trên trái của ảnh. Vùng ảnh dưới nó là

9 9 9
0 9 9
0 0 9

Nhân Biên mọi hướng

-1 -1 -1
-1 8 -1
-1 -1 -1

Nhân từng cặp một, đọc theo hàng: -9, -9, -9, rồi 0, 72, -9, rồi 0, 0, -9. Cộng chín số đó lại được 27, và đó đúng là con số sim in ra ở ô (0,0). Đọc lại cho có nghĩa: ô tâm một mình góp 72, bằng 8 × 9, còn tám láng giềng góp -45, nên phần dư 27 chính là mức chênh giữa tâm và láng giềng. Ở giữa một vùng phẳng thì hai phần đó triệt tiêu nhau hoàn toàn.

Giờ bấm Bước một lần để sang ô (0,1). Cửa sổ dịch một cột sang phải, vùng ảnh thành 9 9 9 / 9 9 9 / 0 9 9, tức chỉ còn một ô tối thay vì ba, và đầu ra tụt từ 27 xuống 9. Không có gì trong ảnh thay đổi, chỉ vị trí cửa sổ thay đổi, và đó là toàn bộ nghĩa của chữ "trượt".

Bảng ba khối dưới hình luôn hiện đúng chín cặp của cửa sổ hiện tại, nên bạn kiểm lại được ở bất kỳ vị trí nào chứ không riêng ô đầu.

Công thức cỡ đầu ra, và chỗ phần nguyên làm mất thông tin

Với một chiều, gọi n là cỡ vào, k là cỡ nhân, s là bước nhảy, p là số ô đệm mỗi bên:

ra = ⌊(n + 2p - k) / s⌋ + 1

Đừng học nó như một công thức. Nó là một phép đếm: điểm bắt đầu của cửa sổ chạy 0, s, 2s và cứ thế trên trục đã đệm dài n + 2p, và nó còn được phép đặt khi vẫn đủ chỗ cho k ô. Cộng 1 vì vị trí đầu tiên cũng là một vị trí. Ở trạng thái mở bài, ⌊(7 + 0 - 3) / 1⌋ + 1 = 5, khớp đúng bản đồ 5x5 trên hình.

Cổng kiểm của bài này dựng lại phép đếm đó bằng một vòng lặp không có phép chia và không có phần nguyên, rồi đối chiếu với công thức đóng trên toàn bộ 315 cấu hình của n, k, s, p mà sim cho phép. Hai đường khớp nhau ở cả 315 cấu hình. Đó là cách duy nhất để biết phép đại số không sai, vì một công thức sai vẫn cho ra số nguyên trông hợp lý.

Và đây là chỗ dễ sai nhất. Phần nguyên chỉ làm mất thông tin khi s không chia hết n + 2p - k, nên phải thử đúng tại mốc chia hết và cả hai bên nó. Với nhân 3, bước 2, không đệm:

nn + 2p - krasố ô bị bỏ rơi ở mép
6321
7430
8531

Đi từ n = 7 lên n = 8, ảnh to thêm một ô mà đầu ra không đổi: ô thêm vào đó không bao giờ nằm dưới một cửa sổ nào. Đi từ 7 xuống 6 thì đầu ra tụt ngay. Nghĩa là quan hệ giữa cỡ vào và cỡ ra không phải một-một, và nếu bạn thử một cài đặt chỉ tại n = 7 thì một lỗi dùng ⌈⌉ thay ⌊⌋ sẽ đi qua mà không ai thấy: đúng tại mốc chia hết, hai hàm cho cùng kết quả. Ở n = 8 chúng khác nhau. Bước 3 cũng vậy, mốc chia hết là n = 6 và hai bên là 5 với 7.

Còn một ca biên nữa. Nếu n + 2p - k âm thì không có cửa sổ nào đặt được, và cài đặt trong sim trả về 0 chứ không trả một chiều dài âm. Ảnh 3x3 với nhân 5x5 không đệm là một ví dụ: 3 + 0 - 5 bằng -2, bản đồ rỗng. Đệm 1 thì 3 + 2 - 5 bằng 0, tức vừa đúng một cửa sổ duy nhất. Đo trên lưới cấu hình thì 9 trong 315 cấu hình cho bản đồ rỗng, và cả 9 đều có nhân từ 4 ô trở lên cùng đệm 0. Bạn không bấm ra được ca này trong sim, vì mọi nhân ở đây đều là 3x3 nên n + 2p - 3 không bao giờ âm với n từ 3 trở lên. Nhưng khi tự viết mã thì đây là chỗ nên nghĩ tới, chứ đừng để một mảng rỗng đi tiếp xuống tầng sau.

Đệm: nó đổi cỡ, và nó cũng đổi con số

Đặt Đệm mỗi bên lên 1. Hình mọc thêm một viền ô nét đứt ghi 0, bản đồ thành 7x7, đúng bằng cỡ ảnh. Đó là cấu hình giữ nguyên cỡ, và điều kiện của nó rất gọn: bước 1 với p = (k - 1) / 2. Nhân 3 cần đệm 1, nhân 5 cần đệm 2, và cổng kiểm xác nhận quy tắc đó đúng cho mọi cỡ ảnh từ 3 tới 9, còn nhân 5 với đệm 1 thì hụt đúng 2 ô, tức quy tắc là chính xác chứ không phải xấp xỉ.

Nhưng cái mà một bảng kích thước không nói cho bạn là đệm bằng 0 làm đổi giá trị ở rìa, và đây là chỗ sim này nhìn được. Kéo cửa sổ về ô (0,0) sau khi bật đệm 1. Dòng dưới bảng tính ghi rõ: 5 trong 9 tích rơi vào ô đệm nên bằng 0, chỉ 4 tích là dữ liệu thật, và tổng của chúng là 54. Ô góc vừa đọc 27 ở đệm 0 giờ đọc 54, gấp đôi.

Tệ hơn thế, hãy xem ô (1,6), tức ô ở cột cuối. Nó đọc 27. Nhưng vùng ảnh thật dưới cửa sổ đó phẳng toàn 9: sáu ô sáng cạnh nhau, không có cạnh nào cả. Con số 27 sinh ra hoàn toàn từ cột đệm bằng 0 bên phải. Cũng chỗ phẳng đó, khi không đệm, bản đồ đọc 0. Nói cách khác đệm bằng 0 tự tạo ra một cạnh giả quanh mép ảnh, và một nhân dò biên sẽ báo cạnh ở nơi không có cạnh. Bấm sang Làm mờ để thấy phiên bản khác của cùng chuyện: ô góc tụt từ 6 xuống 3, tức ảnh bị tối lại ở rìa, vì trung bình bị pha với những số 0 không phải dữ liệu.

Đây không phải lỗi của cài đặt, đây là cái giá của đệm. Thư viện thật cũng làm đúng như vậy và cũng không nói gì. Muốn tránh thì phải chọn cách đệm khác, ví dụ lặp lại ô ngoài cùng thay vì điền 0, và đó là một quyết định chứ không phải chân lý.

Bước nhảy: bỏ vị trí, không bỏ ô trong cửa sổ

Đặt Bước nhảy về 2, đệm về 0. Bản đồ thành 3x3 và đọc

27 0 0
-9 27 0
0 -9 27

So với bảng 5x5 ở đầu bài: đây đúng là những ô có cả hai chỉ số chẵn, tức ô (i,j) mới bằng ô (2i,2j) cũ. Bước nhảy không đổi cách tính một ô nào, nó chỉ bỏ bớt vị trí đặt cửa sổ. Mỗi cửa sổ còn lại vẫn dùng đủ 9 ô như trước.

Ở bước 3 trên ảnh 7 ô, có đúng 1 hàng và 1 cột ở mép không bao giờ nằm dưới một cửa sổ nào, và cổng kiểm đo con số đó chứ không đoán. Phần dữ liệu ấy bị vứt lặng lẽ, và không có gì trên màn hình của một thư viện thật báo cho bạn.

Còn chuyện giữ nguyên cỡ ở bước lớn hơn 1 thì cần nói chính xác. Với cách đệm p = (k - 1) / 2, bước 2 cho ra ⌈n/2⌉ và bước 3 cho ra ⌈n/3⌉, tức không giữ được cỡ. Nhưng nếu được đệm tự do thì câu "bước lớn hơn 1 thì không có số đệm nào giữ được cỡ" là sai: trên lưới cấu hình của sim có đúng 7 cấu hình bước lớn hơn 1 mà đầu ra vẫn rộng bằng đầu vào, và cả 7 đều là ảnh nhỏ, n nhiều nhất là 5, với viền đệm dày so với ảnh. Tổng cộng 28 trong 315 cấu hình giữ nguyên cỡ. Ở cỡ ảnh 7 với nhân 3 thì không có đệm nào trong dải cho phép giữ được cỡ khi bước bằng 2, và bạn kiểm được điều đó bằng ba lần bấm.

Nhân mang ý nghĩa: dọc khác ngang, mờ khác nét

Sáu nhân trong thanh công cụ không phải sáu lựa chọn trang trí. Tổng trọng số của nhân đã nói trước nó làm gì: nhân Đồng nhấtLàm nét có tổng bằng 1 nên vùng phẳng đi qua chúng không đổi giá trị, còn ba nhân dò biên có tổng bằng 0 nên vùng phẳng đi qua chúng thành 0. Kiểm bằng cách bấm một ô ảnh nhiều lần cho một vùng thành đồng màu, hoặc tin cổng kiểm: trên ảnh phẳng ở bốn mức xám 0, 3, 7, 9, cả ba nhân biên đều cho ra 0 ở mọi ô, còn Làm nét trả lại đúng giá trị phẳng đó.

Dò biên dọc khác dò biên ngang, và đây là điểm hay bị nói lấp lửng. Nhân Biên dọc lấy hiệu theo chiều ngang, cột phải trừ cột trái, nên nó bật lên ở chỗ độ sáng đổi khi ta đi ngang, tức ở một cạnh dọc. Nhân Biên ngang thì ngược lại. Trên một ảnh có cạnh dọc rõ, nhân Biên dọc cho phản ứng mạnh nhất 36 còn nhân Biên ngang cho đúng 0 ở mọi ô, và trên ảnh có cạnh ngang thì hai vai đổi chỗ hoàn toàn. Nhân Biên mọi hướng thì bật lên ở cả hai, vì nó không có hướng.

Trên chính ảnh chéo mở bài thì có một chuyện đáng nói thẳng. Ảnh đó đối xứng qua đường chéo, nên hai nhân Biên dọc và Biên ngang cho cùng độ lớn nhưng trái dấu ở cả 25 ô: hàng đầu của cái thứ nhất là 27 9 0 0 0, hàng đầu của cái thứ hai là -27 -9 0 0 0. Nhìn hình thì hai bản đồ khác màu, vì sim tô vàng cho số dương và đỏ cho số âm, và có in cả con số nên bạn không phải phân biệt bằng màu. Muốn thấy hai nhân đó thật sự khác nhau về độ lớn thì phải sửa ảnh cho có một cạnh dọc, và đó là việc của con chuột chứ không phải của bài viết.

Nhân Làm mờ là trung bình hộp: chín trọng số bằng nhau. Đưa cửa sổ về vùng phẳng toàn 9 ở góc trên phải, đầu ra là 9, không phải 9 xấp xỉ mà là 9 không sai một bit. Ở vùng tối thì ra 0. Đó là nghĩa của "làm mờ giữ nguyên vùng phẳng, chỉ san phẳng chỗ có cạnh".

Nhưng ô nhân trên hình đang nói dối một chút, và chỗ này đáng biết. Chín ô đó hiện 0.1, trong khi giá trị thật là 1/9. Nếu bạn cộng chín số 0.1 trên hình thì được 0.8999999999999999 chứ không phải 1. Còn cộng chín giá trị thật thì được 1.0000000000000002, tức cũng không đúng bằng 1. Vậy câu "trọng số của nhân làm mờ cộng lại bằng 1" chỉ đúng tới mức số thực 64 bit cho phép. Điều làm vùng phẳng giữ nguyên giá trị không phải là tổng đó mà là chuyện 9 × (1/9) làm tròn về đúng 1 trong một phép nhân. Với giá trị 7 thì nó không tròn nữa: cửa sổ phẳng toàn 7 cho ra 6.999999999999999, và trên toàn lưới cấu hình khe lệch lớn nhất mà cổng kiểm đo được là 4.440892098500626e-15, ở nhân hộp 5x5. Bài này vì thế nói bất biến đó giữ tới mức làm tròn, và nói rõ nó đúng tuyệt đối với hai giá trị 09 mà sim tạo ra được.

Một tầng như vậy tốn bao nhiêu

Đếm rất trực tiếp: mỗi ô đầu ra tốn k × k phép nhân cộng, nên cả tầng tốn số ô ra × k × k. Ở trạng thái mở bài là 5 × 5 × 9 = 225. Ô đọc kết quả hiện đúng con số đó và nó đổi theo mọi núm:

bước nhảyđệmbản đồ raphép nhân cộng
105x5225
117x7441
129x9729
203x381
214x4144
302x236

Hai điều đọc ra được từ bảng. Thứ nhất, giữ nguyên cỡ không miễn phí: đệm 1 mua lại 2 ô mỗi chiều bằng cách nâng chi phí từ 225 lên 441, gần gấp đôi. Thứ hai, bước nhảy rẻ hơn mức người ta tưởng: bước 2 chỉ còn 81 trên 225, tức 0.36, vì số ô đầu ra giảm theo cả hai chiều cùng lúc.

Con số ở đây là chi phí của một kênh và một nhân, đúng bằng những gì bạn thấy trên hình. Một tầng thật có nhiều kênh vào và nhiều bộ lọc, nên phải nhân thêm hai thừa số nữa, và phần kế toán đó cùng với số tham số nằm ở bài kích thước đầu ra và số tham số.

Thứ này thực ra là tương quan chéo

Trong xử lý tín hiệu, tích chập lật nhân 180 độ trước khi trượt. Mọi thư viện học sâu thì không lật, tức chúng tính tương quan chéo và vẫn gọi nó là tích chập. Cài đặt trong sim cũng không lật.

Chuyện đó gần như không quan trọng, và lý do rất cụ thể: khi nhân là tham số học được, mạng chỉ đơn giản học ra bộ trọng số đã lật, nên hai quy ước cho cùng một họ hàm. Nó chỉ quan trọng khi bạn tự viết nhân bằng tay và muốn khớp với một công thức trong sách.

Đo trên sáu nhân của sim thì thậm chí còn ít quan trọng hơn: 4 trong 6 nhân không đổi gì cả khi lật, vì chúng đối xứng qua tâm, còn hai nhân Sobel thì lật đúng bằng đổi dấu toàn bộ bản đồ, 16 trong 25 ô đổi giá trị và 9 ô còn lại vốn đã bằng 0. Với một nhân bất đối xứng thì bản đồ đổi thật, không chỉ đổi dấu, và cổng kiểm dựng một nhân như thế để chứng minh phân biệt này không rỗng. Điều lật nhân không bao giờ đổi là kích thước đầu ra: nó chuyển chỗ trọng số, không chuyển chiều.

Những con số trong bài được kiểm bằng gì

Mọi con số bạn vừa đọc bị một cổng kiểm khoá lại, hiện là 309 khẳng định, và cổng không tin phép tính của engine. Nó dựng lại kết quả bằng ba đường độc lập.

Đường thứ nhất đếm vị trí cửa sổ trong một vòng lặp, không dùng phép chia và không dùng phần nguyên, nên nó không thể thừa hưởng lỗi của công thức đóng. Đường thứ hai dựng thật một mảng đã đệm rồi trượt trên đó, trong khi engine không bao giờ dựng mảng đó mà đọc qua một phép thử biên: hai cách nghĩ khác nhau về chuyện gì nằm ngoài ảnh. Đối chiếu từng ô trên 38700 ô đầu ra, gồm sáu nhân, năm dạng ảnh, bảy cỡ, ba bước nhảy và ba mức đệm, không lệch một bit nào. Đường thứ ba là ba bất biến không cần cài đặt tham chiếu nào: nhân toàn 0 phải cho đầu ra toàn 0, nhân có đúng một số 1 ở giữa phải trả lại chính ô ảnh dưới tâm cửa sổ, kiểm trên 4099 ô, và nhân hộp phải để vùng phẳng nguyên vẹn, kiểm trên 3204 cửa sổ.

Cổng cũng tự kiểm chính nó. Nó cố tình phá engine rồi đòi mình phải báo đỏ: đổi ⌊⌋ thành ⌈⌉, hoán hàng với cột trong phép nhân cộng, cho ô đệm lặp lại giá trị mép thay vì bằng 0, bỏ bước nhảy trong bảng chín tích. Cả bốn đều làm cổng đỏ, và hoàn nguyên thì cổng xanh lại. Một phép kiểm không bao giờ đỏ được thì nó không chứng minh điều gì.

Cũng nên nói những gì bài này không chỉ ra. Sáu nhân ở đây do người viết đặt tay, không có huấn luyện nào cả, nên không câu nào ở đây nói được rằng một mạng thật sẽ học ra nhân dò biên. Thực tế các tầng đầu của mạng đã huấn luyện thường học ra thứ giống nhân dò biên, nhưng đó là một quan sát thực nghiệm của người khác, không phải điều sim này đo được. Bài cũng không nói nhân nào tốt hơn nhân nào: câu đó chỉ có nghĩa khi đã có một nhiệm vụ và một tập dữ liệu.

Điều rút ra

Tích chập là cửa sổ trượt nhân rồi cộng: ô (0,0) của trạng thái mở bài bằng 2772 từ ô tâm cộng -45 từ tám láng giềng, và bạn tính lại được bằng giấy. Số vị trí đặt được cửa sổ là ⌊(n + 2p - k)/s⌋ + 1, một phép đếm chứ không phải một công thức để thuộc, và phần nguyên làm mất thông tin ngoài mốc chia hết: ảnh 7 và ảnh 8 cùng cho 3 ở nhân 3 bước 2. Đệm giữ được cỡ khi p = (k-1)/2 ở bước 1, nhưng nó tự tạo cạnh giả ở rìa, đo được ở ô đọc 27 trong khi vùng ảnh dưới đó phẳng toàn 9. Bước nhảy chỉ bỏ vị trí chứ không bỏ ô trong cửa sổ, và nó rẻ theo hai chiều: 225 phép nhân cộng tụt còn 81. Tổng trọng số của nhân nói trước nó làm gì với vùng phẳng, và cả sáu nhân đều là nhân đặt tay, không phải nhân học được.

Câu hỏi tự kiểm0/3 đúngchưa trả lời
  1. 1Ảnh vào rộng 7 ô, nhân 3, bước nhảy 2, không đệm thì đầu ra rộng 3. Bây giờ ảnh rộng 8 ô, các thứ khác giữ nguyên. Đầu ra rộng bao nhiêu?
  2. 2Bật đệm 1 rồi đưa cửa sổ tới ô cột cuối của bản đồ, nơi vùng ảnh thật dưới nó phẳng toàn 9. Nhân Biên mọi hướng cho ra con số gì, và vì sao?
  3. 3Chín ô của nhân Làm mờ hiện 0.1 trên hình. Kết luận nào đúng?