1.4. Mạng nơron tích chập
1.4.2. Cấu trúc tổng quát của mạng nơron tích chập
Mạng CNN là một tập hợp các lớp Convolution chồng lên nhau và sử dụng các hàm nonlinear activation như ReLU và tanh để kích hoạt các trọng số trong các node. [5]
Mỗi một lớp được sử dụng các filter khác nhau thơng thường cĩ hàng trăm hàng nghìn filter như vậy và kết hợp kết quả của chúng lại. Ngồi ra cĩ một số layer khác như pooling/subsampling layer dùng để chắt lọc lại các thơng tin hữu ích hơn (loại bỏ các thơng tin nhiễu). Trong quá trình huấn luyện mạng, CNN tự động học các giá trị qua các lớp filter dựa vào cách thức mà bạn thực hiện. Ví dụ trong tác vụ phân lớp ảnh, CNNs sẽ cố gắng tìm ra thơng số tối ưu cho các filter tương ứng theo thứ tự raw pixel > edges > shapes > facial > high-level features. Layer cuối cùng được dùng để phân lớp ảnh.
30
Hình 1.15. Cấu trúc tổng qt của mạng nơron tích chập Cấu trúc tổng quát của mạng nơron tích chập gồm các lớp sau Cấu trúc tổng quát của mạng nơron tích chập gồm các lớp sau
Lớp tích chập
Tích chập (Convolution) là phép tốn thực hiện với hai hàm số, kí hiệu là “*” . Phép tích chập được ứng dụng trong thống kê, thị giác máy tính, xử lý ảnh và xử lý tín hiệu.
Tích chập của hàm số f và g được viết là f *g, là một phép biến đổi tích phân đặc biệt
(f *g t)( ) + f( ) ( g t )d + f t( ) ( )g d
− −
= − = −
Một cách tổng quát, các hàm f g, là hàm số phức trong khơng gian ℝd, tích chập được định nghĩa là
( * )( ) ( ) ( ) ( ) ( )
d d
f g x = f y g x−y dy= f x−y g y dy
¡ ¡
Đối với Tích chập rời rạc, với hàm số phức f g, xác định trên tập số ngun ℤ, thì tích chập được định nghĩa ( * )( ) ( ) ( ) m n f m g n m dm f g =− = − ( ) ( ) m f n m g m dm =− = −
31
Tích chập trong xử lý ảnh: Tích chập lần đầu tiên được sử dụng trong xử lý tín hiệu số. nhờ vào nguyên lý biến đổi thơng tin, các nhà khoa học đã áp dụng kỹ thuật này vào xử lý ảnh và video.
Để dễ hình dung, ta cĩ thể xem tích chập như một cửa sổ trượt áp lên một ma trận. Cửa sổ trượt cịn được gọi là nhân (kernel).
Hình 1.16 minh họa cách tính tích chập trên ma trận ảnh đen trắng. Ma trận
ảnh đen trắng cĩ mỗi ơ giá trị là một điểm ảnh, 0 là màu đen, 1 là màu trắng. Ta dùng một ma trận nhân 3 x 3, nhân từng thành phần tương ứng với ma trận ảnh. Giá trị đầu ra do tích các thành phần này cộng lại. Kết quả của tích chập là một ma trận sinh ra từ việc trượt ma trận nhân và thực hiện tích chập cùng lúc lên tồn bộ ma trận ảnh gốc.
Hình 1.16. Minh hoạ tích chập trên ma trận ảnh
Với đầu vào là một ảnh 3 chiều W x H x 3, cĩ độ sâu là 3, hay cịn được gọi là 3 kênh màu, ta cĩ tích chập 3 chiều bằng cách tính riêng tích chập cho 3 kênh này với một bộ lọc, sau đĩ lấy trung bình cộng của ba kết quả đầu ra, ta được tích chập 3 chiều.
32
Hình 1. 17. Minh hoạ tích chập 3 chiều
Hình 1.17 là một ví dụ minh họa cho việc tính tích chập 3 chiều. Đầu vào là
một ma trận cĩ ba kênh biễu diễn cho một ảnh 3 chiều. Ta sử dụng hai bộ lọc W0 và W1. Cho mỗi kênh của ma trận tính tích chập với hai bộ lọc sau đĩ lấy trung bình cộng của ba kênh, ta được đầu ra là một ma trận cĩ hai kênh tương ứng với hai bộ lọc.
Ảnh đầu vào được cho qua một bộ lọc chạy dọc bức ảnh. Bộ lọc cĩ kích thước là (3x3 hoặc 5x5) và áp dụng phép tích vơ hướng để tính tốn, cho ra một giá trị duy nhất. Đầu ra của phép tích chập là một tập các giá trị ảnh được gọi là mạng đặc trưng (features map).
33
Thực chất, ở các layer đầu tiên, phép tích chập đơn giản là phép tìm biên ảnh, nếu các bạn cĩ kiến thức cơ bản về xử lý ảnh. Cịn nếu khơng thì bạn chỉ cần hiểu sau khi cho qua bộ lọc nĩ sẽ làm hiện lên các đặc trưng của đối tượng trong ảnh như đường vẽ xung quanh đối tượng, các gĩc cạnh, v.v.., và các layer tiếp theo sẽ lại trích xuất tiếp các đặc trưng của đặc trưng của các đối tượng đĩ, việc cĩ nhiều layer như vậy cho phép chúng ta chia nhỏ đặc trưng của ảnh tới mức nhỏ nhất cĩ thể. Vì thế mới gọi là mạng đặc trưng.
Dưới đây là một số các khái niệm cơ bản của phần này:
Filter, Kernel hay Feature Detector đều là cách gọi của ma trận lọc (như
mình đã đề cập ở trên). Thơng thường, ở các lớp đầu tiên của Conv Layer sẽ cĩ kích thước là [5x5x3]
Convolved Feature, Activation Map hay Feature Map là đầu ra của ảnh khi
cho bộ lọc chạy hết bức ảnh với phép tích vơ hướng.
Receptive field là vùng ảnh được chọn để tính tích chập, hay bằng đúng cái
kích thước của bộ lọc.
Depth là số lượng bộ lọc. Lưu ý: ở đây là số lượng bộ lọc (filter) chứ khơng
phải số lượng kênh màu RBG như ở trên.
Stride được hiểu là khoảng cách dịch chuyển của bộ lọc sau mỗi lần tính. Ví
dụ khi stride=2. Tức sau khi tính xong tại 1 vùng ảnh, nĩ sẽ dịch sang phải 2 pixel. Tương tự với việc dịch xuống dưới
Zero-Padding là việc thêm các giá trị 0 ở xung quanh biên ảnh, để đảm bảo
phép tích chập được thực hiện đủ trên tồn ảnh.
Vậy kích thước đầu ra của ảnh với mỗi layer được tính như thế nào?
Giả sử ảnh đầu ra là [W2 x H2 x D2] thì
W2 = (W1 – F + 2P) / S + 1
34 D2 = K
Trong đĩ:
[W1xH1xD1]: Kích thước đầu vào F: Kích thước bộ lọc Kernel
S: giá trị Stride
P: số lượng zero-padding thêm vào viền ảnh
K: Số lượng bộ lọc (Depth)
Ví dụ:
Kích thước đầu ra của lớp đầu tiên trong kiến trúc mạng học sâu nơ-ron tích chập (Deep Convolutional Neural Networks) đã từng chiến thắng ImageNet Chanllenge 2012 là:
Đầu vào: [227x227x3], W=227, F=11, S=4, P=0, and K=96. Đầu ra: (227 - 11) / 4 + 1 = 55
Vậy kích thước đầu ra của layer đầu tiên là [55x55x96].
Lớp hàm kích hoạt – RELU (Rectified Linear Unit)
Hàm kích hoạt ReLu (Rectified Linear Unit), sau mỗi lớp tích chập thường
được đặt một lớp hàm kích hoạt phi tuyến để tạo ra thơng tin trừu tượng hơn cho các lớp sau. Hàm kích hoạt thường được sử dụng là hàm ReLU hoặc hàm tanh, như tơi đã trình bày. Nĩi một cách đơn giản, lớp này cĩ nhiệm vụ chuyển tồn bộ giá trị âm trong kết quả cĩ được từ lớp tích chập thành giá trị khơng âm.
Lớp pooling
Lớp pooling sử dụng một cửa sổ trượt quét qua tồn bộ ảnh, mỗi lần trượt theo
các bước trượt cho trước. Lớp pooling khơng tính tích chập mà tiến hành lấy mẫu con. Khi cửa sổ trượt trên ảnh, chỉ cĩ một giá trị được xem là giá trị đại diện cho
35
thơng tin ảnh tại vùng đĩ được giữ lại, giá trị này gọi là giá trị mẫu. Ta cũng cĩ thể chia ảnh thành các ơ hình chữ nhật khơng chồng lấp nhau để lấy mẫu.
Lớp pooling sẽ cho tính bất biến đối với phép dịch chuyển, phép quay và phép co giãn. Lớp này thường được sử dụng ngay sau lớp hàm kích hoạt, để đơn giản hĩa thơng tin đầu ra, giảm bớt số lượng neural, giảm bớt lượng tính tốn, và do đĩ cũng giảm bớt hiện tượng quá khớp.
Các phương thức lấy phổ biến trong lớp pooling là max pooling (lấy giá trị lớn nhất, Hình 2.14), min pooling (lấy giá trị nhỏ nhất) và average pooling (lấy giá trị trung bình), trong đĩ max pooling là phổ biến nhất.
Hình 1.18. Max pooling với lọc 2x2
Lớp kết nối đầy đủ - FC (Fully Connected – FC)
Lớp Kết nối đầy đủ (Fully Connected - FC) tương tự với lớp trong mạng neural truyền thẳng, các giá trị ảnh được liên kết đầy đủ vào các node trong lớp tiếp theo. Sau khi ảnh được xử lý và rút trích đặc trưng từ các lớp trước đĩ, dữ liệu sẽ khơng cịn quá lớn so với mơ hình truyền thẳng để tiến hành nhận dạng. Lớp kết nối đầy đủ đĩng vai trị phân lớp dữ liệu dựa trên dữ liệu đã được xử lý trước đĩ.
Ở lớp này ta thường dùng hàm softmax để phân loại dữ liệu tương tự như trong mạng neural truyền thẳng.
Hàm softmax là một hàm kích hoạt, thường được sử dụng ở lớp cuối cùng để
36
x, ai thể hiện xác suất để dữ liệu đầu vào đĩ rơi vào lớp thứ i. Điều kiện cần là các ai phải dương và tổng của chúng phải bằng 1. Để cĩ thể thỏa mãn điều kiện này ta phải nhìn vào các zj và dựa trên quan hệ giữa zj để tính tốn các giá trị ai. Giá trị zj
càng lớn thì xác suất dữ liệu rơi vào lớp thứ i càng cao, điều này chỉ ra rằng chúng ta cần một hàm đồng biến ở đây.
Hàm softmax được định nghĩa như sau:
1 1,..., i j z i C z j e a i C e = = =
Giá trị zj cĩ thể nhận giá trị âm hoặc dương. Vì vậy hàm trơn đơn giản zi
e cĩ
thể chắc chắn biến zj thành một giá trị dương, và hơn nữa cịn là hàm đồng biến. Để
đảm bảo tổng các ai luơn bằng một, ta đem chia zi
e cho 1 j C z j e = . Từ đĩ, ta cĩ được định nghĩa về hàm softmax.
Hàm softmax, tính tất cả các ai dựa vào tất cả các zi thỏa mãn tất cả các điều kiện đã xét là dương, tổng bằng 1, và giữ được thứ tự của zi. Với định nghĩa này, khơng cĩ xác suất zi nào hồn tồn bằng 0, hoặc hồn tồn bằng 1, mặc dù chúng cĩ thể rất gần 0 hoặc 1 khi zi rất nhỏ hoặc rất lớn.
Lúc này, ta cĩ thể giả sử rằng
P(yk = i/xk ; W) = ai
Trong đĩ, P(y = i/x; W) được hiểu là xác suất để điểm dữ liệu x rơi vào lớp thứ i nếu biết tham số mơ hình W.
37
Hình 1.19. Mơ hình hàm softmax cho mạng Neural
Vấn đề quá khớp
Quá khớp (overfitting) là hiện tượng mơ hình tìm được quá khớp với dữ liệu
huấn luyện, do đĩ quá khớp cĩ thể dẫn đến việc dự đốn nhầm nhiễu, và chất lượng mơ hình khơng cịn tốt trên dữ liệu kiểm tra nữa. Dữ liệu kiểm tra được giả sử là khơng được biết trước và khơng được sử dụng để xây dựng mơ hình.
Về cơ bản, quá khớp xảy ra khi mơ hình quá phức tạp để mơ phỏng dữ liệu huấn luyện. Điều này đặc biệt xảy ra khi lượng dữ liệu huấn luyện quá nhỏ trong khi độ phức tạp mơ hình quá cao. Trong perceptron đa lớp, độ phức tạp của mơ hình cĩ thể được coi là số lượng các lớp ẩn và số lượng các node trong các lớp ẩn.
Ở Hình 1.20, ta cĩ 50 điểm dữ liệu được tạo bởi một đa thức bậc ba cộng thêm nhiễu. Tập dữ liệu được chia làm hai. 30 điểm dữ liệu màu đỏ cho huấn luyện dữ liệu, 20 điểm dữ liệu màu vàng cho việc kiểm tra mơ hình. Đồ thị của đa thức bậc ba này được biểu diễn bởi đường màu xanh lá cây, cịn đường màu xanh dương biểu diễn cho mơ hình dự đốn đa thức. Ta nhận thấy, với mơ hình dự đốn cĩ bậc hai, mơ hình dự đốn chưa khớp với mơ hình thực tế. Mơ hình dự đốn cĩ bậc bằng ba và bốn khớp với dữ liệu huấn luyện và khớp với cả mơ hình thực tế. Mơ hình dự đốn cĩ bậc bằng tám quá khớp với dữ liệu huấn luyện, dẫn tới khơng khớp với mơ hình thực tế.
38
Hình 1.20. Quá khớp
Một bài tốn trên thực tế thường rất phức tạp và sẽ cĩ nhiều nhiễu, việc mơ hình quá khớp với dữ liệu huấn luyện sẽ dẫn đến dự đốn sai nhiễu, dẫn đến kết quả tính tốn thấp. Vì vậy, khi xây dựng một mơ hình, quá khớp là điều ta luơn cần tránh. Sau đây là hai đại lượng đơn giản để đánh giá chất lượng của mơ hình trên dữ liệu huấn luyện và dữ liệu kiểm tra. Giả sử, y là nhãn của dữ liệu và ŷ là đầu ra dự đốn của mơ hình, khi đĩ:
Sai số huấn luyện (train error) thường là hàm lỗi áp dụng lên dữ liệu huấn luyện. Hàm lỗi này tính tổn thất trung bình trên mỗi điểm dữ liệu huấn luyện. Với học cĩ giám sát hồi quy, đại lượng này thường được định nghĩa
39
Sai số kiểm tra (test error) tương tự như sai số huấn luyện, nhưng việc tính tốn được áp dụng trên dữ liệu kiểm tra. Lưu ý, dữ liệu kiểm tra chỉ để đánh giá mơ hình đã được xây dựng bằng dữ liệu huấn luyện, khơng được dùng trong quá trình xây dựng mơ hình.
Vì lượng dữ liệu trong hai tập huấn luyện và kiểm tra cĩ sự chênh lệch rất lớn, nên việc lấy trung bình là rất quan trọng.
Một mơ hình được coi là tốt hay khớp nếu cả hai đại lượng sai số huấn luyện và sai số kiểm tra đều thấp. Nếu sai số huấn luyện thấp nhưng sai số kiểm tra cao, ta nĩi mơ hình bị quá khớp. Nếu sai số huấn luyện cao và sai số kiểm tra cao, ta nĩi mơ hình bị dưới khớp (underfitting).
Cĩ rất nhiều kỹ thuật được sử dụng để tránh quá khớp, điển hình là duyệt chéo (Cross-Validation) và điều chỉnh (Regularization).