MẠNG NƠ-RON TÍCH CHẬP

Một phần của tài liệu Nhận dạng cảm xúc thông qua khuôn mặt dùng mạng nơ ron tích chập CNN (Trang 26)

Mạng nơ-ron tích chập [13] là một trong những mô hình mạng học sâu phổ biến nhất hiện nay, có khả năng nhận dạng và phân loại hình ảnh với độ chính xác rất cao, thậm chí còn tốt hơn con người trong nhiều trường hợp. Mô hình này đã và đang được phát triển, ứng dụng vào các hệ thống xử lý ảnh lớn của Facebook, Google hay Amazon được dùng cho các mục đích khác nhau như tự động tìm kiếm ảnh hoặc gợi ý sản phẩm cho người tiêu dùng.

Sự ra đời của mạng nơ-ron tích chập là dựa trên ý tưởng cải tiến cách thức các mạng nơ-ron nhân tạo truyền thống học thông tin trong ảnh. Do sử dụng các liên kết đầy đủ giữa các điểm ảnh vào node, các mạng nơ-ron nhân tạo truyền thẳng bị hạn chế rất nhiều bởi kích thước của ảnh, nếu ảnh càng lớn thì số lượng liên kết càng tăng nhanh và kéo theo khối lượng tính toán phức tạp [14]. Ngoài ra sự liên kết đầy đủ này cũng là sự dư thừa khi với mỗi bức ảnh, các thông tin chủ yếu thể hiện qua sự phụ thuộc giữa các điểm ảnh với những điểm xung quanh nó mà không quan tâm nhiều đến các điểm ảnh ở cách xa nhau. Mạng nơ-ron tích chập ra đời với kiến trúc thay đổi, có khả năng xây dựng liên kết chỉ sử dụng một phần cục bộ trong ảnh kết nối đến node trong lớp tiếp theo thay vì toàn bộ ảnh như trong mạng nơ-ron truyền thẳng.

Mạng ANN là một phương pháp mô hình hoá tập trung vào các bài toán phi tuyến mô phỏng dựa trên hoạt động của hệ thống thần kinh của sinh vật, bao gồm số lượng lớn các nơ-ron được gắn kết để xử lý thông tin. ANN giống như bộ não con người, được học bởi kinh nghiệm, có khả năng lưu giữ những kinh nghiệm hiểu biết và sử dụng những tri thức đó trong việc dự đoán các dữ liệu chưa biết. Khả năng học của ANN chủ yếu dựa trên kỹ thuật lan truyền ngược.

Hình 2.5: Cấu trúc tổng quát của mạng nơ-ron ANN

PE: là các nơ-ron, mỗi nơ-ron nhận các dữ liệu, xử lý chúng và cho ra một kết quả duy nhất. Kết quả xử lý của một nơ-ron có thể làm ngõ vào cho các nơ-ron khác. Trong đó, lớp ẩn gồm các nơ ron, nhận dữ liệu đầu vào từ các nơ-ron ở lớp trước đó và chuyển đổi các ngõ vào này cho các lớp xử lý tiếp theo. Trong một ANN có thể có nhiều lớp ẩn.

Ngõ vào: x1, x2...xN tương ứng với 1 thuộc tính ngõ vào của dữ liệu, các tín hiệu này thường được đưa dưới dạng vector N chiều.Trọng số liên kết: Wk1, Wk2…WkN là trọng số liên kết của nơ-ron k, nó thể hiện mức độ quan trọng của dữ liệu đầu vào đối với quá trình xử lý thông tin. Trong quá trình học, trọng số được cập nhật liên tục để có được kết quả mong muốn.

Ngõ ra: yk là tín hiệu ngõ ra của nơ-ron, mỗi nơ-ron tương ứng một ngõ ra.

Hàm tổng: Tính tổng trọng số của tất cả các ngõ vào được đưa vào mỗi nơ-ron và cho biết khả năng kích hoạt của nơ-ron đó hay còn gọi là kích hoạt bên trong. Các nơ-ron này có thể sinh ra một hoặc không ngõ ra trong ANN (nói cách khác ngõ ra của một nơ-ron có thể được chuyển đến lớp tiếp theo trong mạng nơ-ron hoặc không). Hàm tổng nơ-ron đối với n ngõ vào được tính theo công thức:

Hình 2.7: Hàm tổng của một và nhiều nơ-ron đối với n input.

Ngưỡng (còn gọi là một độ lệch – bias): Ngưỡng bk thường được đưa vào như một thành phần của hàm truyền.

Hàm truyền: Hàm này được dùng để giới hạn phạm vi đầu ra của mỗi nơ-ron. Nó nhận đầu vào kích hoạt bên trong của hàm tổng và ngưỡng đã cho.

2.3.2 Mạng nơ-ron tích chập 2.3.2.1 Mô hình tổng quan

Hình 2.8: Sự khác nhau giữa cấu trúc ANN và CNN.

Mô hình ANN ra đời đã được áp dụng nhiều trong các bài toán nhận dạng. Tuy nhiên, ANN vẫn chưa thể hiện tốt đối với các dữ liệu có kích thước lớn như hình ảnh. Dữ liệu hình ảnh có kích thước khá lớn khi số hoá có dạng width x height x depth (trong đó: width là số lượng điểm ảnh trên chiều rộng, height là số lượng điểm ảnh trên chiều cao, depth là số lượng kênh, chẳng hạn như RGB có 3 kênh đại diện cho mức độ của 3 màu Đỏ, Lục, Lam) nên đầu vào của mạng CNN là 1 tensor 3 chiều. Cụ thể, một tấm ảnh xám có kích thước 48x48 (pixels) sẽ cho ra vector đặc trưng có 2304 chiều, còn đối với ảnh màu cùng kích thước sẽ là 2304x3=6912 chiều. Điều này cũng có nghĩa là cần tới 6912 trọng số Wk nối giữa lớp vào và một nút ở 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 nút trong lớp ẩn tăng lên. Như vậy chỉ với một bức ảnh nhỏ (48x48) 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 nút trong mạng dường như 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 vấn đề này mạng nơ-ron tích chập CNN ra đời với một kiến trúc khác hơn so mới mạng truyền thẳng. Thay vì toàn bộ ảnh nối với một nút thì chỉ có một phần cục bộ trong ảnh nối đến một nút trong lớp tiếp theo. 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 chập (Convolutional), lớp RELU, lớp gộp

(Pooling), lớp kết nối đầy đủ (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.

Hình 2.9: Quá trình thực hiện của mạng CNN

2.3.2.2 Các lớp trong mô hình

Đặc trưng (feature): CNN so sánh hình ảnh theo từng mảnh. Các mảnh mà nó tìm được gọi là các đặc điểm. Bằng cách tìm ở mức thô các đặc điểm khớp nhau ở cùng vị trí trong hai hình ảnh, CNN nhìn ra sự tương đồng tốt hơn nhiều so với việc khớp toàn bộ bức ảnh.

Hình 2.10: CNN tìm những điểm tương đồng trên bức ảnh

Mỗi đặc điểm giống như một hình ảnh mini - một mảng hai chiều nhỏ. Các đặc điểm khớp với các khía cạnh chung của các bức ảnh. Trong trường hợp hình ảnh X, các đặc điểm bao gồm các đường chéo và hình chữ thập, CNN sẽ nắm bắt tất cả những đặc điểm quan trọng của hầu hết các hình ảnh X. Những đặc điểm này có lẽ sẽ khớp với phần cánh

 Lớp chập (Convolutional)

Lớp chập bao gồm “Convolutional 2D” tích chập 2 chiều sẽ cho phép bộ lọc (filters) di chuyển theo 2 chiều (theo cả chiều ngang và chiều dọc) và “Convolutional 3D” tích chập 3 chiều là khi bộ lọc có thể di chuyển thêm cả chiều sâu của ảnh. Khi xem một hình ảnh mới, CNN không biết chính xác nơi các đặc điểm này sẽ khớp 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ự ăn khớp của một đặc điểm trên toàn bộ ảnh, lớp này sẽ sử dụng một bộ gồm 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 chạy dọc theo ảnh và quét toàn bộ ảnh [8].

Hình 2.11: Chập ma trận ảnh với bộ lọc 3x3

Nguyên tố trọng tâm của nhân chập được đặt chồng lên điểm ảnh cần xét, nó sẽ thay thế điểm ảnh đó với tổng trọng số liên kết của chính nó và các điểm ảnh gần kề. Như vậy nếu một bức ảnh 48x48 và một bộ lọc 3x3, ta sẽ có kết quả là một tấm ảnh mới có kích thước 48x48 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. Để hoàn tất tích chập, chúng ta lặp lại quá trình này, lấy kết quả từ mỗi tích chập và tạo một mảng hai chiều mới. Từ đó, dựa vào vị trí của mỗi mảnh nằm trong hình ảnh. Bản đồ các phần khớp nhau này cũng là một phiên bản đã được lọc từ hình ảnh gốc. Nó là một bản đồ

thể hiện nơi tìm thấy đặc điểm trong hình ảnh. Các giá trị gần 1 cho thấy sự khớp mạnh, các giá trị gần -1 cho thấy sự khớp mạnh với âm bản của đặc điểm và các giá trị gần bằng

1 cho thấy không khớp với bất kỳ loại nào.

 Lớp RELU

Lớp này thường được cài đặt ngay sau lớp chập. Lớp này sử dụng hàm kích hoạt f

(x) = max (0, x) nhằm chuyển toàn bộ giá trị âm trong kết quả lấy từ lớp chập 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 f (x) = max (0, x)

hàm dễ cài đặt, tính toán nhanh mà vẫn hiệu quả [7].

Hình 2.12: Ví dụ về lớp RELU

 Lớp gộp (Pooling)

Lớp gộp là cách làm co các hình ảnh lớn lại nhưng vẫn giữ các thông tin quan trọng nhất trong đó. Lớp này sử dụng một ô vuông cửa sổ nhỏ 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 chập, lớp gộ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 thức phổ biến trong

AveragePooling (lấy giá trị trung bình). Xét một ảnh có kích thước 32×32 và lớp gộp 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. 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 gộp, ả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 [8].

Hình 2.13: Maxpooling với bộ lọc 2x2, bước trượt bằng 2

 Lớp kết nối đầy đủ (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 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 đó [8].

Hình 2.14: Phân lớp dữ liệu trong lớp kết nối đầy đủ

2.3.3 Những vấn đề xảy ra với mô hình CNN2.3.3.1 Quá khớp (Overfitting) 2.3.3.1 Quá khớp (Overfitting)

Quá khớp là hiện tượng mô hình tìm được quá khớp với dữ liệu huấn luyện. Việc quá khớp này có thể dẫn đến việc dự đoán nhầm và chất lượng mô hình không còn tốt trên dữ liệu kiểm tra nữa. Trong ứng dụng thực tế, ta thường sử dụng mạng nơ-ron để mô phỏng những hàm số mà cấu trúc của chúng vẫn chưa được xác định. Khi đó, ta chỉ có thể thu nhập được các bộ mẫu dữ liệu ra (vào) được sinh ra từ hàm số, nhưng lại không thể đặc tả quá trình sinh ra các bộ mẫu đó. Một ví dụ kinh điển đó là quá trình bộ não con người thu nhận thông tin từ hình ảnh của chữ viết tay, rồi suy luận ra chữ viết. Cơ chế bộ não biểu diễn hình ảnh và suy luận ra thông tin từ đó là một ẩn số đối với khoa học. Tuy nhiên, ta có thể dùng các bức ảnh cùng với nhãn đúng của chúng để huấn luyện mạng nơ- ron mô phỏng xấp xỉ được quá trình xử lý hình ảnh của bộ não. Cho dù cấu trúc giữa bộ não và mạng nơ-ron có thể khác nhau, với một thuật toán huấn luyện tốt, chúng sẽ đưa ra kết luận giống nhau với cùng một điểm dữ liệu vào [8].

Hình 2.15: Ví dụ minh họa lỗi quá khớp trong CNN

Ví dụ hình 2.12, đa thức có bậc cao hơn (xanh dương) vì quá chú trọng vào việc phải đi qua tất cả các điểm trong tập huấn luyện (đen) nên có hình dạng phức tạp, không “bình thường”. Đa thức bậc thấp hơn (đỏ) cho giá trị hàm mất mát cao hơn trên tập huấn luyện nhưng lại phù hợp hơn với phân bố dữ liệu trong thực tế. Điều này thể hiện bằng việc đa thức bậc thấp ước lượng một điểm không có trong tập huấn luyện (xanh) chính xác hơn đa thức bậc cao. Đối với bài toán dự đoán, vì mục tiêu cuối cùng của ta là mô phỏng một hàm số ẩn, ta không nên cực tiểu hóa hàm mất mát trên tập huấn luyện. Nếu ta làm như vậy sẽ dẫn đến hiện tượng quá khớp, tức là mạng nơ-ron sẽ học được một hàm phức tạp để mô phỏng hoàn hảo nhất tập huấn luyện. Tuy nhiên, cũng do cấu trúc phức tạp, hàm này không có tính tổng quát hóa cao, tức là nó rất dễ sai khi gặp một điểm dữ liệu không có trong tập huấn luyện (hình 2.12). Khi ấy, mạng nơ-ron giống như một con người chỉ biết học tủ mà không biết cách vận dụng kiến thức để giải quyết những thứ chưa từng gặp phải. Quá khớp là một vấn đề nghiêm trọng đối với mạng nơ-ron vì khả năng mô hình hóa của chúng quá cao, dễ dàng học được các hàm phức tạp. Ta sẽ tìm hiểu một số phương pháp thông dụng để chẩn đoán và ngăn ngừa quá khớp cho mạng nơ-ron [8].

2.3.3.2 Drop out

Quá khớp là một vấn đề lớn đối với máy học, đặc biệt là trong mạng nơ-ron. Khi muốn cho mô hình trở nên phức tạp hơn, ta thường tăng số lượng lớp và số lượng đơn vị của mỗi lớp. Nhưng khi mô hình phức tạp hơn, quá khớp bắt đầu xuất hiện, vì số lượng tham số trong mạng nơ-ron nhiều và có “độ sâu” khác nhau vì vậy khi áp dụng chung λ cho

tất cả các tham số sẽ yêu cầu số lần đào tạo lớn để tìm được λ phù hợp. Có một kĩ thuật dành riêng cho mạng nơ-ron và khá đơn giản, đó là Drop-out.

Drop-out là một kĩ thuật bình thường hóa tham số (Regularization) để chống lại vấn đề “quá khớp”. Cách Drop-out thực hiện là xoá bỏ một số đơn vị trong các bước đào tạo ứng với một giá trị xác suất p cho trước [12].

Hình 2.16: Kỹ thuật Drop-out giải quyết vấn đề overfitting

Drop-out được áp dụng trên một lớp của mạng nơ-ron với một xác suất p cho trước (ta có thể sử dụng nhiều Drop-out khác nhau cho những lớp khác nhau, nhưng trên 1 lớp sẽ chỉ có 1 Drop-out). Tại mỗi bước trong quá trình huấn luyện, khi thực hiện lan truyền thẳng đến lớp sử dụng Drop-out, thay vì tính toán tất cả đơn vị có trên lớp, tại mỗi đơn vị ta tính xác suất xem đơn vị đó có được tính hay không dựa trên xác suất p . Với những đơn vị được tính, ta tính toán bình thường còn với những đơn vị không được tính giá trị tại đơn vị đó bằng 0. Khi thực hiện tính toán trên mạng nơ-ron trong quá trình kiểm tra

Một phần của tài liệu Nhận dạng cảm xúc thông qua khuôn mặt dùng mạng nơ ron tích chập CNN (Trang 26)

Tải bản đầy đủ (DOCX)

(86 trang)
w