MẠNG NƠ-RON TÍCH CHẬP – CONVOLUTIONAL NEURAL NETWORK

Sự thay đổi về kiến trúc

Mô hình mạng nơ-ron nhân tạo truyền thẳng (feedforward neural network) ra đời đã được áp dụng nhiều trong các bài toán nhận dạng. Tuy nhiên mạng nơ-ron truyền thẳng không thể hiện tốt lắm đối với các dữ liệu như hình ảnh. Chính sự liên kết quá đầy đủ tạo nên những hạn chế cho mô hình. Dữ liệu hình ảnh có kích thước khá lớn, một tấm ảnh xám có kích thước 32×32 (pixels) sẽ cho ra vector đặc trưng có 1024 chiều, còn đối với ảnh màu cùng kích thước sẽ là 3072 chiều. Điều này cũng có nghĩa là cần tới 3072 trọng số $latex \theta$ nối giữa lớp vào và một node ở lớp ẩn kế tiếp. Số lượng trọng số sẽ càng nhân rộng hơn nữa nếu số lượng node trong lớp ẩn tăng lên, số lượng lớp ẩn tăng lên. Như vậy chỉ với một bức ảnh nhỏ (32×32) thì cũng cần đến một mô hình khá đồ sộ. Điều này khiến cho việc thao tác với các ảnh có kích thước lớn hơn trở nên khó khăn.
Một điều nữa là việc liên kết một cách đầy đủ các điểm ảnh vào một node trong mạng có vẻ là dư thừa vì sự phụ thuộc lẫn nhau giữa các điểm ảnh xa nhau là không nhiều mà chủ yếu là sự phụ thuộc giữa các điểm lân cận với nó. Dựa trên tư tưởng này mạng nơ-ron tích chập (Convolutional Neural Network) ra đời với một kiến trúc khác so mới mạng truyền thẳng. Thay vì toàn bộ ảnh nối với một node thì chỉ có một phần cục bộ trong ảnh nối đến một node trong lớp tiếp theo (Local connectivity). Dữ liệu hình ảnh thông qua các lớp của mô hình này sẽ được “học” ra các đặc trưng để tiến hành phân lớp một cách hiệu quả.
Về cơ bản mô hình mạng nơ-ron tích chập bao gồm các lớp sau: lớp Convolutional, lớp RELU, lớp Pooling, lớp Fully connected. Sự sắp xếp về số lượng và thứ tự giữa các lớp này sẽ tạo ra những mô hình khác nhau phù hợp cho các bài toán khác nhau.

Chi tiết các lớp trong mô hình

Lớp Convolutional

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 (filters) 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ộ filter và giá trị điểm ảnh trong vùng cục bộ đó. Bộ filter sẽ lần lượt được dịch chuyển theo một giá trị bước trượt (stride) chạy dọc theo ảnh và quét toàn bộ ảnh.

tính tích chập với filter

Như vậy với một bức ảnh 32×32 và một filter 3×3, ta sẽ có kết quả là một tấm ả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 filter quét ra các biên cạnh) là kết quả tích chập của filter và ảnh. Với bao nhiêu filter 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 filter 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.

Lớp RELU – rectified linear unit

Lớp này thường được cài đặt ngay sau lớp Convolutional. Lớp này sử dụng hàm kích hoạt $latex f(x) = max(0,x)$. Nói một cách đơn giản, lớp này có nhiệm vụ chuyển toàn bộ giá trị âm trong kết quả lấy từ lớp Convolutional thành giá trị 0. Ý nghĩa của cách cài đặt này chính là tạo nên 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ưng hàm $latex f(x) = max(0,x)$ dễ cài đặt, tính toán nhanh mà vẫn hiệu quả.

Lớp Pooling

Lớp này 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 (stride) cho trước. Khác với lớp Convolutional, lớp Pooling không tính tích chập mà tiến hành lấy mẫu (subsampling). 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 thức lấy phổ biến trong lớp Pooling là MaxPooling ( lấy giá trị lớn nhất), MinPooling (lấy giá trị nhỏ nhất) và AveragePooling (lấy giá trị trung bình).
Xét một ảnh có kích thước 32×32 và lớp Pooling sử dụng filter có kích thước 2×2 với bước trượt stride = 2, phương pháp sử dụng là MaxPooling. Filter 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 filter đượ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 16×16 (kích thước mỗi chiều giảm 2 lần).

Tính toán với phương pháp MaxPooling

Lớp Pooling có vai trò giảm kích thước dữ liệu. Với một bức ả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 (overfitting).

Lớp FC – fully connected

Lớp nà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 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 ả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 fully-connected đó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 đó.

Mô hình hoạt động như thế nào

Một mạng nơ-ron tích chập được hình thành bằng cách ghép các lớp nêu trên lại với nhau. Mô hình bắt đầu với lớp Convolutional. Lớp RELU thường luôn được cài đặc ngay sau lớp Convolutional hoặc thậm chí kết hợp cả hai lớp này thành một lớp. Các lớp tiếp theo có thể là Convolutional hay Pooling tùy theo kiến trúc mà ta muốn xây dựng. Cuối cùng sẽ là lớp fully-connected để tiến hành phân lớp.
Để xem mô hình này hoạt động như thế nào ta có thể xét một kiến trúc sau đây:

Conv1 (with RELU) – Pooling – Conv2 (with RELU) – Pooling – FC – FC
Lấy một hình ảnh cần nhận dạng có kích thước 32×32 như sau (lấy từ bộ dữ liệu cifar-10):

Hình ảnh sẽ được đưa vào lớp Conv1 (Convolutional kết hợp RELU) gồm 32 filter có kích thước 3×3, mỗi filter sẽ được dùng để tính tích chập với ảnh và cho ra một ảnh kết quả tương ứng. Với 32 filter ta sẽ có 32 ảnh kết quả như sau:

Mỗi ảnh trên đều có kích thước tương ứng là 32×32. Sau đó, cả 32 ảnh này đều được cho qua lớp Pooling và kết quả trả ra sẽ là 32 ảnh có kích thước 16×16.
Tiếp tục dữ liệu sẽ đi vào lớp Conv2. Tương tự như Conv1, ảnh sẽ được tính tích chập với filter và trả ra kết quả. Lớp Pooling tiếp theo sẽ tiếp tục giảm kích thước của ảnh xuống còn 8×8. Với kích thước đủ nhỏ như vậy, lớp Fully-connected tiếp theo sẽ xử lý và đưa ra kết quả phân lớp hay kết quả nhận dạng.
Tương tự như mạng nơ-ron truyền thẳng, mạng nơ-ron tích chập cũng là một mô hình học cho nên khởi tạo ban đầu cho các trọng số trong mạng là ngẫu nhiên và sẽ được điều chỉnh thông qua quá trình học. Thuật toán học cho mạng nơ-ron tích chập cũng tương tự như mạng nơ-ron truyền thẳng là thuật toán lan truyền ngược sử dụng gradient descent; chỉ khác nhau ở chỗ mạng tích chập không liên kết đầy đủ nên độ lỗi ở mỗi lớp chỉ tính dựa vào một phần các node trong lớp tiếp theo chứ không phải toàn bộ.

Ứng dụng của mô hình

Mạng nơ-ron tích chập được áp dụng khá nhiều trong các bài toán nhận dạng như nhận dạng vật thể trong ảnh, nhận dạng chữ viết tay (chuyển đổi chữ viết trong hình ảnh thành văn bản thô trong máy tính), nhận dạng vật thể 3D, xử lý tiếng nói, xử lý ngôn ngữ tự nhiên, …. với độ chính xác trên 90%.
Đã có rất nhiều bài báo khoa học đề xuất ra nhiều kiến trúc mạng nơ-ron tích chập khác nhau cho các bài toán khác nhau như: LeNet, AlexNet, VGGNet, GoogleNet, ….
Tuy nhiên, sự phát triển của mạng nơ-ron tích chập đến một ngưỡng nào đó bị chậm dần do những hạn chế của mô hình. Kích thước và độ sâu của mạng nơ-ron khiến mạng nơ-ron trở nên không linh hoạt. Giả sử ta đã huấn luyện thành công mô hình nhận diện 10 đối tượng khác nhau, một nhu cầu cần nhận diện đối tượng thứ 11 nảy sinh và để có thể nhận diện đối tượng thứ 1 này ta phải xây dựng một kiến trúc khác và huấn luyện lại từ đầu.
Dù vậy, trong thực tế, ta có thể chọn giải quyết các bài toán cụ thể mà nhu cầu mở rộng không quá lơn và không quá đòi hỏi độ linh hoạt cao (vd nhận diên các nhân viên cấp cao có quyền truy cập các hồ sơ quan trọng trong công ti, số lượng nhân viên cấp cao không quá nhiều và cụng không phải là thường xuyên thay đổi). Với những bài toán như vậy thì mạng nơ-ron tích chập vẫn là một mô hình hiệu quả.

Nguồn: nhiethuyettre.me

Trả lời

Thư điện tử của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *