Chương 2 CƠ SỞ LÝ THUYẾT
2.2. Mạng nơ-ron tích chập
Mạng nơ-ron tích chập là một kiến trúc dựa trên các phép toán tích chập giữa các lớp. Tích chập được sử dụng đầu tiên trong xử lý tín hiệu số [13]. 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 số [14]. Giả sử với một ảnh được biểu thị dưới dạng ma trận là dữ liệu ban đầu cho CNN thì các nơ-ron ở tầng chập thứ nhất sẽ được tạo thành nhờ các phép chập trên ma trận đó. Kết quả thu được sẽ được đi qua các hàm kích hoạt. Tầng chập thứ hai sẽ được tạo thành bằng phép chập dựa trên kết quả bên trên và cứ thế tiếp diễn.
Như vậy ta có thể hiểu ban đầu CNN sẽ phân tích ảnh ra trên nhiều khu vực và sau đó sẽ kết hợp lại. Do kích thước cửa sổ chập ở mỗi tầng có thể khác nên trong quá trình huấn luyện CNN sẽ tự động học các đặc trưng của các dữ liệu. Việc sử dụng nhiều tầng tức thực hiện phép chập nhiều lần sẽ cho ta biết cụ thể hơn về các tính chất có trong ảnh nên CNN tỏ ra hiệu quả trong việc nhận dạng ảnh. Tuy nhiên vì sử dụng các phép tính chập cộng với việc cần một lượng dữ liệu đầu vào phải nhiều nên chi phí tính toán của CNN sẽ rất lớn dẫn
tới thời gian huấn luyện sẽ khá lâu. Ngoài ra CNN chỉ hoạt động dựa trên dữ liệu đã được phân loại trước.
CNN gồm nhiều tầng, mỗi tầng sẽ bao gồm các lớp: lớp tích chập, lớp hàm kích hoạt, lớp Pooling hay còn gọi là lớp subsampling, lớp kết nối đầy đủ. Trong các tầng của CNN, người thiết kế có thể sử dụng đủ 3 lớp hay không tùy thuộc vào dữ liệu và mục tiêu.
Trong mô hình CNN, các lớp được liên kết với nhau thông qua cơ chế tích chập, hình 2.5. Lớp tiếp theo là kết quả của tích chập của lớp trước đó, nhờ vậy mà ta có được các kết nối cục bộ. Nghĩa là mỗi nơ-ron ở lớp tiếp theo được sinh ra từ các bộ lọc áp đặt lên một vùng ảnh cục bộ của nơ-ron ở lớp trước đó.
Hình 2.5. Mô hình CNN 2.2.1. Tích chập 2.2.1. Tích chập
Khi có một hình ảnh mới, CNN không biết chính xác nơi chứa các đặc trưng này sẽ khớp hay không nên nó sẽ thử chúng khắp mọi nơi, ở mọi vị trí có thể. Khi tính toán sự khớp của một đặc trưng trên toàn bộ ảnh và làm thành một bộ lọc. Phần toán ta sử dụng để làm điều này được gọi là tích chập, hình 2.6.
Lớp này chính là nơi thể hiện tư tưởng ban đầu của mạng nơ-ron tích chập. Thay vì kết nối toàn bộ điểm ảnh, lớp này sẽ sử dụng một bộ các bộ lọc có kích thước nhỏ so với ảnh (thường là 3×3 hoặc 5×5) áp vào một vùng trong ảnh và tiến hành tính tích chập giữa bộ lọc và giá trị điểm ảnh trong vùng cục bộ đó.
Bộ lọc sẽ lần lượt được dịch chuyển theo một giá trị bước trượt duyệt dọc theo ảnh và quét toàn bộ ảnh.
Hình 2.6. Phương pháp tích chập
Để tính toán sự khớp của một đặc trưng đối với một mảnh của hình ảnh, ta chỉ cần nhân mỗi điểm ảnh trong phần đặc trưng với giá trị của điểm ảnh tương ứng trong mảnh hình ảnh. Sau đó cộng tổng lại và chia cho số lượng điểm ảnh trong đặc trưng.
Như vậy, với một ảnh 32×32 và một bộ lọc 3×3, ta sẽ có kết quả là một ảnh mới có kích thước 32×32 (với điều kiện đã thêm padding vào ảnh gốc để tính tích chập cho các trường hợp bộ lọc quét ra các biên cạnh) là kết quả tích chập của bộ lọc và ảnh. Với bao nhiêu bộ lọc trong lớp này thì ta sẽ có bấy nhiêu ảnh tương ứng mà lớp này trả ra và được truyền vào lớp tiếp theo. Các trọng số của bộ lọc ban đầu sẽ được khởi tạo ngẫu nhiên và sẽ được học dần trong quá trình huấn luyện mô hình.
2.2.2. Lớp hàm kích hoạt
Lớp hàm kích hoạt (Rectified Linear Unit - ReLU) thường được cài đặt ngay sau lớp tích chập. Lớp này sử dụng hàm kích hoạt f(x) = max(0,x) và có nhiệm vụ chuyển toàn bộ giá trị âm trong kết quả lấy từ lớp tích chập thành giá trị 0. Ý nghĩa của cách cài đặt này chính là làm tăng các thuộc tính phi tuyến cho mô hình. Tương tự như trong mạng truyền thẳng, việc xây dựng dựa trên
các phép biến đổi tuyến tính sẽ khiến việc xây dựng đa tầng đa lớp trở nên vô nghĩa. Có rất nhiều cách để khiến mô hình trở nên phi tuyến như sử dụng các hàm kích hoạt sigmoid, tanh như đã trình bày trong phần 2.1.1 ở trên, nhưng hàm f(x) = max(0,x) dễ cài đặt, tính toán nhanh mà vẫn hiệu quả.
2.2.3. Lớp tổng hợp
Lớp tổng hợp (Pooling) sử dụng một cửa sổ trượt quét qua toàn bộ ảnh dữ liệu, mỗi lần trượt theo một bước trượt cho trước. Khác với lớp tích chập, lớp tổng hợp không tính tích chập mà tiến hành lấy mẫu. Khi cửa sổ trượt trên ảnh, chỉ có một giá trị được xem là giá trị đại diện cho thông tin ảnh tại vùng đó (giá trị mẫu) được giữ lại. Các phương pháp tính toán phổ biến trong lớp Pooling là: lấy giá trị lớn nhất, lấy giá trị nhỏ nhất, lấy giá trị trung bình.
Xét một ảnh có kích thước 4×4 và lớp Pooling sử dụng bộ lọc có kích thước 2×2 với bước trượt stride = 2, phương pháp sử dụng là MaxPooling, hình 2.7. Bộ lọc sẽ lần lượt duyệt qua ảnh, với mỗi lần duyệt chỉ có giá trị lớn nhất trong 4 giá trị nằm trong vùng cửa sổ 2×2 của bộ lọc được giữ lại và đưa ra đầu ra. Như vậy sau khi qua lớp Pooling, ảnh sẽ giảm kích thước xuống còn 2×2 (kích thước mỗi chiều giảm 2 lần).
Lớp Pooling có vai trò giảm kích thước dữ liệu. Với một ảnh kích thước lớn qua nhiều lớp Pooling sẽ được thu nhỏ lại tuy nhiên vẫn giữ được những đặc trưng cần cho việc nhận dạng (thông qua cách lấy mẫu). Việc giảm kích thước dữ liệu sẽ làm giảm lượng tham số, tăng hiệu quả tính toán và góp phần kiểm soát hiện tượng quá khớp.
Hình 2.7. Tính toán với phương pháp MaxPooling 2.2.4. Lớp kết nối đầy đủ 2.2.4. Lớp kết nối đầy đủ
Lớp kết nối đầy đủ tương tự với lớp trong mạng nơ-ron truyền thẳng, các giá trị ảnh được liên kết đầy đủ vào phần tử 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 ảnh sẽ không còn quá lớn so với mô hình truyền thẳng nên ta có thể sử dụng mô hình truyền thẳng để tiến hành nhận dạng. Tóm lại, lớp kết nối đầy đủ đóng vai trò như một mô hình phân lớp và tiến hành dựa trên dữ liệu đã được xử lý ở các lớp trước đó.
2.2.5. Nguyên lý hoạt động của mạng nơ-ron tích chập
Mạng nơ-ron tích chập là một tập hợp các lớp tích chập 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 phần tử. Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin cho các lớp tiếp theo. Trong mô hình mạng truyền ngược thì mỗi nơ-ron đầu vào cho mỗi nơ-ron đầu ra trong các lớp tiếp theo. Mô hình này gọi là mạng kết nối đầy đủ hay mạng toàn vẹn. Còn trong mô hình CNN thì ngược lại; Các tầng liên kết được với nhau thông qua cơ chế tích chập. Tầng tiếp theo là kết quả tích chập từ tầng trước đó, nhờ vậy mà ta có được các kết nối cục bộ. Như vậy mỗi nơ-ron ở lớp kế tiếp sinh ra từ kết quả của bộ lọc áp đặt lên một vùng ảnh cục bộ của nơ-ron trước đó, hình 2.8.
một số lớp khác như lớp Pooling, lớp subsampling 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).
Hình 2.8. Nguyên lý hoạt động của mạng nơ-ron tích chập
Trong quá trình huấn luyện mạng CNN tự động học các giá trị qua các bộ lọc 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, CNN sẽ cố gắng tìm ra thông số tối ưu cho các bộ lọc tương ứng theo thứ tự raw pixel > edges > shapes > facial > high-level features. Lớp cuối cùng được dùng để phân lớp ảnh.