Hình trên cho thấy nếu áp dụng mạng nơ ron được kết nối đầy đủ, toàn bộ kiến trúc mạng sẽ cần tính tốn hơn 3 triệu nơ ron. Số lượng lớn các nơ ron làm cho tồn bộ q trình học rất chậm và dẫn đến q tải so với khả năng tính tốn của máy tính hiện tại.
Qua một vài nghiên cứu về xử lý ảnh, các nhà nghiên cứu nhận thấy rằng các tính năng trong một hình ảnh thường là cục bộ, và các nhà nghiên cứu chú ý đến các tính năng cấp thấp đầu tiên khi xử lý ảnh. Vì vậy, kiến trúc mạng có thể chuyển mạng được kết nối đầy đủ sang mạng được kết nối cục bộ, nhằm làm giảm độ phức tạp của tính tốn. Đây là một trong những ý tưởng chính trong CNN. Chúng ta có thể thấy rõ hơn qua hình sau:
Hình 1.20: Tích chập một ma trận nhỏ để tạo ra dữ liệu đầu vào cho một nơ ron tầng ẩn
Giống như xử lý hình ảnh thơng thường, chúng ta có thể kết nối cục bộ một khối vuông ma trận với nơ ron. Kích thước khối thơng thường là 3x3, 5x5, hoặc 7x7. Ý nghĩa
xử lý ảnh). Bằng cách đó, số lượng tham số có thể giảm xuống rất nhỏ nhưng khơng gây ra giảm hoặc mất thơng tin, vì hình ảnh thơng thường thường có tính lặp trong khơng gian. Để trích xuất nhiều thông tin hơn, các mạng nơ ron kết nối khối cùng với một nơ ron khác. Độ sâu trong các tầng là số lần chúng ta kết nối một khu vực với các nơ ron khác nhau. Ví dụ, mạng kết nối cùng một khu vực với 5 nơ ron khác nhau. Vì vậy, độ sâu là năm trong tầng mới. Chúng ta có thể thấy rõ hơn qua hình sau:
Hình 1.21: Ví dụ về lớp tích chập
Trong thực tế, có thể kết nối tất cả thơng tin độ sâu (ví dụ: kênh 3 RGB) với nơ ron tiếp theo vì kết nối là cục bộ trong khơng gian và có chiều sâu đầy đủ. Tuy nhiên ở ví dụ này chỉ kết nối thông tin cục bộ về chiều cao và chiều rộng. Vì vậy, có thể có
các tham số trong hình trên cho nơ ron sau lớp màu xanh nếu chúng ta sử dụng cửa sổ . Biến thứ nhất và thứ hai là chiều cao và chiều rộng của kích thước cửa sổ và biến thứ ba là độ sâu của lớp.
Ví dụ này di chuyển cửa sổ bên trong hình ảnh và làm cho tầng tiếp theo cũng có chiều cao và chiều rộng, và là một hai chiều. Ví dụ: nếu chúng ta di chuyển cửa sổ 1 pixel mỗi lần, gọi là bước nhảy là 1, trong một hình ảnh và kích thước cửa sổ là sẽ có các nơ ron ở tầng tiếp theo. Có thể thấy rằng, kích thước đã giảm từ 32 xuống 28. Vì vậy, để bảo tồn kích thước, chúng ta thêm phần trống vào đường viền. Quay lại ví dụ trên, nếu chúng ta đệm với 2 pixel, có
các nơ ron ở lớp tiếp theo để giữ kích thước chiều cao và chiều
rộng. Như ví dụ trên, nếu chúng ta sử dụng kích thước cửa sổ w, chúng ta sẽ có 1 vùng được tích chập với kích cỡ của cửa sổ mới là pixel. Thông tin đường viền sẽ không ảnh hưởng nhiều vì những giá trị đó chỉ được sử dụng một lần.
Phần kế tiếp sẽ chi tiết hơn về bước nhảy của cửa sổ trượt, tức khoảng cách thay đổi của cửa sổ mỗi lần. Ví dụ: giả sử bước nhảy là 2 và cửa sổ trượt bao phủ vùng
Sau đó, cửa sổ thứ hai bao phủ vùng và cửa sổ thứ 3 bao phủ vùng
Ví dụ, nếu chúng ta sử dụng bước nhảy 1 và kích thước cửa sổ trong hình ảnh và không sử dụng bù viền (pad-zero), thì chúng ta sẽ có các nơ ron ở lớp tiếp theo. Nếu chúng ta thay đổi bước nhảy 1 thành bước nhảy 2 và những tham số khác vẫn giữ nguyên, thì chúng ta sẽ có có
những nơ ron ở lớp tiếp theo. Chúng ta có thể kết luận rằng nếu chúng
ta sử dụng bước nhảy s, kích thước cửa sổ trong ảnh , thì sẽ có các nơ ron ở lớp tiếp theo. Khi chúng ta sử dụng bước nhảy 3 và những tham số khác vẫn giữ nguyên thì chúng ta sẽ nhận được Vì kết quả khơng phải là số ngun, nên bước nhảy 3 không thể dùng vì chúng ta khơng thể có được một khối hoàn chỉnh trong một mạng nơ ron.
1.3.2.2 Chia sẻ tham số
Trong ví dụ minh họa của mục 1.3.2.1, ta sẽ có số lượng là nơ ron ở tầng tiếp theo có bước nhảy 1, kích thước cửa sổ 5 x 5 và khơng có đệm, với độ sâu là 5. Mỗi nơ ron sẽ có tham số. Vì vậy, trong tầng tiếp theo sẽ có tham số. Ở đây, chúng ta có thể chia sẻ các tham số theo từng độ sâu, do đó nơ ron ở mỗi tầng ẩn sẽ sử dụng tham số giống nhau là , và tổng tham số sử dụng cho mỗi tầng là . Điều này làm số lượng tham số giảm một cách đáng kể. Tương tự, các nơ ron ở mỗi độ sâu trong tầng tiếp theo sẽ áp dụng tích chập cho tầng trước đó. Và q trình học tập giống như học lõi (core) tích chập. Đây là lý do mà các mạng nơ ron này được gọi là mạng nơ ron tích chập.
1.3.2.3 Hàm kích hoạt
Trong mơ hình nơ ron truyền thống, các mạng thường sử dụng hàm sigmoid cho hàm kích hoạt. Tuy nhiên Krizhevsky [21] đã thử với hàm kích hoạt RELU. Sau khi so
sánh hiệu quả của hàm kích hoạt RELU và hàm kích hoạt sigmoid trong CNNs. Họ thấy rằng mơ hình với RELU cần ít thời gian lặp hơn trong khi đạt tỷ lệ lỗi khi huấn luyện tương đương. Chúng ta có thể thấy kết quả trong hình sau:
Hình 1.22: So sánh giữa ReLU và Sigmoid.
Như hình trên, đường liền nét là mơ hình sử dụng RELU và đường đứt nét là sử dụng hàm Sigmoid. Có thể dễ dàng thấy rằng, RELU cần ít vịng lặp hơn để đạt tỉ lệ lỗi chấp nhận được. Do đó, ngày nay đa số các mơ hình CNN gần đây sử dụng RELU để làm hàm kích hoạt.
1.3.2.4. Tầng gộp
Tầng gộp sẽ giảm kích cỡ của hình ảnh ngay sau khi thực hiện tích chập, giúp giữ lại các đặc điểm, tính chất nổi bật nhất của ảnh. Điều này cho phép giảm mức độ tính tốn khi hình ảnh có kích thước q lớn, đồng thời khơng làm mất đi các đặc điểm quan trọng của ảnh.
Tuy đã sử dụng các mạng được kết nối cục bộ và chia sẻ tham số, tuy nhiên số lượng tham số trong mang nơ ron vẫn là quá lớn. So với một tập dữ liệu tương đối nhỏ, nó có thể gây ra tình trạng quá khớp (overfitting). Vì vậy, mạng nơ ron nhân tạo thường chèn các tầng gộp vào mạng. Tầng gộp xử lý để giảm dần số lượng tham số nhằm cải thiện thời gian tính tốn trong mạng nơ ron. Tầng gộp áp dụng lấy mẫu xuống cho tầng trước bằng cách sử dụng hàm max. Tầng gộp hoạt động độc lập trên mỗi tầng trước đó. Ngồi ra, có
thể đặt lượng pixel khi chúng ta di chuyển cửa sổ trượt hoặc bước nhảy, như làm với tầng tích chập. Ví dụ, trong hình sau:
Hình 1.23: Ví dụ minh họa đơn giản về tầng gộp
Ở ví dụ trên, kích thước cửa sổ trượt là và bước nhảy mỗi lần trượt là 2. Tại mỗi cửa sổ, hàm max sẽ lấy giá trị tối đa để đại diện cho giá trị của tầng tiếp theo. Có hai loại tầng gộp: Nếu kích thước cửa sổ trượt bằng bước nhảy, đó là gộp chung (traditional pooling). Nếu kích thước cửa sổ trượt lớn hơn bước nhảy, đó là gộp nhóm (overlapping pooling). Trong thực tế, các mạng nơ ron thường sử dụng kích thước cửa sổ cùng kích thước bước nhảy là 2 trong gộp chung và sử dụng kích thước cửa sổ cùng kích thước bước nhảy là 2 trong gộp nhóm, vì nếu tăng kích cỡ cửa sổ sẽ rất dễ làm mất các đặc tính của dữ liệu.
Ngồi việc gộp sử dụng hàm max, người ta có thể sử dụng các hàm khác. Ví dụ người ta có thể sử dụng hàm tính trung bình của cửa sổ trượt để tính tốn giá trị cho tầng tiếp theo, được gọi là gộp trung bình.
1.3.2.5. Tầng được kết nối đầy đủ
Tầng thứ ba là tầng được kết nối đầy đủ. Tầng này giống như mạng nơ ron truyền thống: các nơ ron ở tầng trước sẽ kết nối với một nơ ron ở tầng tiếp theo và tầng cuối cùng là đầu ra. Để có thể đưa hình ảnh từ những tầng trước vào, ta phải dàn phẳng dữ liệu ra thành một véc tơ nhiều chiều. Cuối cùng là sử dụng hàm softmax để thực hiện phân loại đối tượng
Hình 1.24: Một ví dụ của lớp được kết nối đầy đủ
1.3.2.6 Mơ hình q khớp
Cấu trúc của một mạng CNN rất lớn, trong mạng có rất nhiều nơ ron, kết nối, cũng như có rất nhiều trọng số cần thiết để huấn luyện. Nhưng lượng dữ liệu huấn luyện thường không đủ để huấn luyện hồn thiện cho một mạng nơ ron lớn. Nó có thể gây ra một số vấn đề về quá khớp, khiến cho khi huấn luyện có kết quả rất cao, nhưng áp dụng thực tế gây ra sai số lớn. Có một số kỹ thuật để cải thiện điều này.
Hình 1.25: Ví dụ về trường hợp q khớp (bên trái) và trường hợp chuẩn (bên phải)
Một trong những phương pháp đó là là giảm trọng số trong lúc huấn luyện. Dropout là một trong những kỹ thuật nổi tiếng và khá phổ biển để khắc phục vấn đề này. Dropout đặt đầu ra của mỗi nơ ron ẩn thành 0 với xác suất 0,5. Vì vậy, các nơ ron này sẽ khơng đóng góp vào lan truyền tiến, do đó và sẽ khơng tham gia vào lan truyền ngược. Thông thường, đối với các đầu vào khác nhau, mạng nơ ron xử lý dropout theo một cấu trúc khác nhau.
Một cách khác để cải thiện việc việc quá khớp là tăng lượng dữ liệu. Chúng ta có thể phản chiếu hình ảnh, lộn ngược hình ảnh, lấy mẫu hình ảnh, v.v. Những cách này sẽ tăng số lượng dữ liệu huấn luyện. Vì vậy, nó có khả năng ngăn chặn quá khớp. Với ví dụ
bước xoay, với mỗi lần từ 15 đến 20 độ cũng như áp dụng thêm phương pháp phản chiếu bức ảnh. Kết quả, hệ thống AI đã phát hiện cải thiện đáng kể việc nhận diện.
1.3.2.7. Một số mạng tích chập nổi tiếng
Có một số kiến trúc mạng nơ ron tích chập nổi tiếng. Một số thử nghiệm cho thấy chúng có hiệu suất tốt hơn. Vì vậy, đơi khi nhiều người sử dụng mạng được thiết kế sẵn thay vì tự thiết kế mạng. Ở các phần sau luận văn sẽ giới thiệu một vài mạng tích chập nổi tiếng và thơng dụng hiện nay.
AlexNet
Hình 1.26: Cấu trúc của AlexNet
Alex đã phát triển mạng này vào năm 2012. Cho tới thời điểm hiện tại, AlexNet vẫn còn đang được sử dụng phổ biến và rộng rãi. Mạng AlexNet có năm lớp chập và ba lớp kết nối đầy đủ. Cấu trúc trong AlexNet được chia thành hai khối. Nguyên nhân vì tác giả đã sử dụng hai GPU để huấn luyện dữ liệu song song. Mạng này được sử dụng trong phân loại đối tượng quy mơ lớn. Lớp đầu ra có một nghìn nơ ron. Đó là bởi vì kiến trúc ban đầu được thiết kế để phân loại một nghìn nhãn. Thơng thường, những người áp dụng kiến trúc mạng nơ ron AlexNet sẽ thay thế lớp cuối cùng, phụ thuộc vào mục đích của họ. Tác giả của mạng này đã làm nhiều thử nghiệm để có thể ra được mơ hình này có kết quả tốt nhất. Vì vậy, hiệu suất của cấu trúc này rất ổn định và mạng này được sử dụng rộng rãi trong nhiều ứng dụng.
VGGNet
VGGNet [10] được phát triển vào năm 2014 và đã giành chiến thắng trong cuộc thi ILSVRC-2014. Mạng này mạnh hơn mạng AlexNet nhưng rất sâu. Mạng này có 16 đến 19 tầng (Hình 1.21). Mạng này đã được thiết kế với 5 cấu trúc. Sau một số thí nghiệm, D và E là cấu trúc tốt nhất. Hiệu suất của E tốt hơn một chút so với B. Nhưng các tham số trong E lớn hơn D. Vì vậy, người sử dụng có thể chọn một trong số cấu trúc mạng dựa trên những gì họ cần. Đặc điểm của VGGNet là việc áp dụng nhiều lớp chập với kích
thước cửa sổ nhỏ thay vì lớp chập với kích thước cửa sổ lớn, sau đó là lớp gộp. Nó làm cho mạng linh hoạt hơn.
1.4 Kết luận
Mạng nơ ron nhân tạo là một chuỗi các thuật toán được sử dụng để tìm ra mối quan hệ của một tập dữ liệu thông qua cơ chế vận hành của bộ não sinh học. Mạng nơ ron nhân tạo thường được huấn luyện qua một tập dữ liệu chuẩn cho trước, từ đó có thể đúc rút được kiến thức từ tập dữ liệu huấn luyện, và áp dụng với các tập dữ liệu khác với độ chính xác cao.
Các phương pháp sử dụng để huấn luyện mạng nơ ron nhân tạo ngày càng tối ưu hơn về mặt tính tốn và phục vụ cho nhiều mục đích khác nhau. Hiện nay, kiến trúc mạng nơ ron ngày càng được hoàn thiện cho nhiều nhiệm vụ, trong đó mạng nơ ron tích chập được chú ý rất nhiều vì tính hiệu quả trong thị giác máy tính. Mạng nơ ron tích chập với các cải tiến góp phần giảm thời gian tính tốn và tăng độ chính xác hứa hẹn sẽ là một trong những phương pháp được áp dụng rất nhiều vào thực tế trong tương lai.
CHƯƠNG 2.
BÀI TỐN NHẬN DẠNG BẰNG MẠNG NƠ RON TÍCH CHẬP 2.1 Khái niệm về nhận dạng
Nhận dạng là một ngành thuộc lĩnh vực trí tuệ nhân tạo. Nhận dạng mẫu là khả năng phát hiện sự sắp xếp các đặc tính hoặc dữ liệu mang lại thơng tin về một hệ thống hoặc tập dữ liệu nhất định. Nhận dạng mẫu chia thành nhiều lĩnh vực trong công nghệ thơng tin, bao gồm phân tích dữ liệu lớn, nhận dạng sinh trắc học, bảo mật và trí tuệ nhân tạo. Nhận dạng đối tượng trong hình ảnh là một nhánh của nhận dạng mẫu. Nhận dạng đối tượng trong hình ảnh thể hiện qua các cơng nghệ máy tính có thể nhận ra người, động vật, vật thể hoặc các đối tượng mục tiêu khác thông qua việc sử dụng các thuật toán và khái niệm học máy.
2.1.1 Nhận dạng đối tượng
Một số khái niệm liên quan:
Nhận dạng đối tượng (object recognition) là một thuật ngữ chung để mô tả
một tập hợp các cách xử lý trong thị giác máy tính có liên quan đến việc xác định các đối tượng trong ảnh kỹ thuật số.
Phân loại hình ảnh (image classification) liên quan đến việc dự đốn, phân
loại các lớp thơng tin của một đối tượng trong một hình ảnh.
Khoanh vùng đối tượng (object localization) là việc xác định vị trí của một
hoặc nhiều đối tượng trong một hình ảnh bằng hình chữ nhật xung quanh phạm vi của đối tượng bằng hộp chứa (bounding box).
Phát hiện đối tượng (object detection) kết hợp cả hai nhiệm vụ nhận dạng
đối tượng và khoanh vùng đối tượng. Phát hiện đối tượng là việc khoanh vùng và phân loại một hoặc nhiều đối tượng khác nhau trong một hình ảnh. Nhận dạng đối tượng khác với phát hiện đối tượng ở chỗ nhận dạng đối tượng mang ý nghĩa rộng hơn, bao gồm cả việc phân loại hình ảnh (địi hỏi thuật tốn xác định các lớp của đối tượng xuất hiện trong hình ảnh), cũng như phát hiện đối tượng (địi hỏi thuật toán khoanh vùng, định vị được tất cả các đối tượng có trong hình ảnh)
Hình 2.1: Sự khác biệt giữa nhận dạng đối tượng và phát hiện đối tượng
2.1.2 Nhận dạng khuôn mặt
Nhận dạng khuôn mặt là khả năng nhận diện, lưu trữ,so sánh và phân tích các mẫu dựa trên đường nét khn mặt để nhận dạng người từ hình ảnh hoặc video. Hệ thống thường sử dụng các công nghệ để thực hiện nhận dạng khuôn mặt như sử dụng sinh trắc học để ánh xạ các đặc điểm khuôn mặt từ ảnh hoặc video. Hệ thống so sánh thông tin này với một cơ sở dữ liệu đã lưu trữ về các khn mặt để tìm ra một kết quả khớp chính xác
Nhận dạng khn mặt ngày càng được quan tâm trong nhiều lĩnh vực, như Trung Quốc có hệ thống Skynet để chấm điểm công dân, hay nhiều chuỗi cửa hàng lớn cũng sử