Giới thiệu mạng nơron nhân tạo

Một phần của tài liệu nghiên cứu về mạng neural convolutional, áp dụng vào bài toán nhận dạng đối tượng trong lĩnh vực thị giác máy tính (Trang 25)

1.2 Mạng nơron nhân tạo

1.2.1Giới thiệu mạng nơron nhân tạo

Mạng nơ ron nhân tạo (Artificial Neural Network ANN) là một chuỗi các giải thuật lập trình, mơ phỏng dựa trên cách hoạt động của mạng lưới thần kinh trong não bộ các sinh vật sống. Mạng nơ ron nhân tạo được sử dụng để tìm ra mối quan hệ của một tập dữ liệu thông qua một thiết kế kiến trúc chứa nhiều tầng ẩn (hidden layer), mỗi tầng lại chứa nhiều nơ ron. Các nơ ron được kết nối với nhau và độ mạnh yếu của các liên kết được biểu hiện qua trọng số liên kết.

Lập trình thơng thường có thể làm được rất nhiều phần mềm lớn, như tính tốn mơ phỏng các vụ nổ hạt nhân trong siêu máy tính ở các phịng thí nghiệm, hoặc tái hiện các tế bào ở cấp độ phân tử để phân tích các thử nghiệm thuốc. Một siêu máy tính có thể tính tốn được nhiều tỉ phép tính trên giây, tuy nhiên lập trình thơng thường lại gặp khó khăn trong việc nhận ra các mẫu đơn giản, ví dụ như nhận diện mặt người, điều mà một bộ não sinh học xử lý nhanh và chính xác hơn nhiều.

Áp dụng với các kỹ thuật học sâu, mạng nơ ron nhân tạo hiện nay đang được áp dụng để giải quyết những vấn đề mà lập trình theo logic thơng thường khó có thể giải quyết được. Do đó, mạng nơ ron nhân tạo đang nhanh chóng trở nên phổ biến, và là xu thế trên nhiều lĩnh vực.

1.2.2 Một số kiểu mạng nơ ron

Có hai kiểu mạng nơ ron chính: mạng nơ ron truyền thằng (feedforward neural network) và mạng nơ ron hồi quy (recurrent neural network).

Mạng truyền thẳng và hồi quy được minh họa như sau:

Dễ thấy, ở mạng nơ ron truyền thẳng, các nơ ron trong tầng ẩn đều được kết nối với các nơ ron trong tầng n. Do có nhiều tầng ẩn nên chúng ta có thể thấy rằng mạng truyền thẳng kéo dài trong khơng gian, và là khơng có bất kỳ đường tuần hồn (cyclic path) nào nằm trong mạng. Mạng nơ ron truyền thẳng rất phổ biến hiện nay.

Hình 1.14: Mạng nơ ron hồi quy

Một loại khác là mạng nơ ron hồi quy. Không giống như mạng nơ ron truyền thẳng, mạng nơ ron hồi quy có ít nhất một đường dẫn tuần hồn. Chúng ta có thể thấy nó ở hình minh họa phía trên. Vì có một đường dẫn tuần hồn, nên mạng nơ ron hồi quy có thể gây ra vịng lặp vơ cực. Tuy nhiên, mạng nơ ron tuần hồn có một ứng dụng quan trọng là chúng có thể nhận diện cho các giai đoạn thời gian khác nhau, như hình minh họa sau:

Hình 1.15: Cách huấn luyện cho một mạng nơ ron hồi quy

Như ví dụ trên, có một nút A kết nối với nút B và một chu kỳ đến chính nút A. Mạng nơ ron hồi quy không xử lý đường dẫn tuần hoàn và các kết nối cùng một lúc. Mạng nơ ron hồi quy giả sử rằng đầu ra của nút A trong thời gian n là đầu vào của nút B và nút A trong thời gian n + 1. Vì vậy, ngồi tính chất kéo dài trong khơng gian khi kết nối với các tầng nơ ron tiếp theo, mạng nơ ron hồi quy cũng nằm sâu trong thời gian. Vì vậy, các mạng nơ ron hồi quy có thể mơ hình hóa các hệ thống thay đổi theo bối cảnh. Ví dụ: mạng nơ ron hồi quy thường được sử dụng trong xử lý ngôn ngữ theo ngữ cảnh. Mạng

nơ ron hồi quy có thể xử lý các phụ thuộc xa (long-term dependencies) theo mốc thời gian, ví dụ như mạng bộ nhớ dài-ngắn (Long Short Term Memory networks).

1.2.3 Mạng nơ ron lan truyền ngược

1.2.3.1 Tổng quan về mạng nơ ron lan truyền ngược

Giải thuật lan truyền ngược được mô tả ngắn gọn như sau:

1. Bước 1: Lan truyền. Giai đoạn lan truyền có hai bước, lan truyền tiến và lan truyền ngược. Bước lan truyền tiến là nhập dữ liệu huấn luyện vào các mạng nơ ron và tính tốn đầu ra. Sau đó, dựa vào kết quả đầu ra, so sánh với dữ liệu huấn luyện. Chúng ta có thể sử dụng lan truyền ngược để cập nhật ngược lại trọng số lại cho các nơron trong các tầng trước đó.

2. Bước 2: Cập nhật trọng số. Mạng cập nhật các giá trị của trọng số của nơ ron theo lỗi của kết quả đầu ra.

3. Bước 3: Lặp hai bước trên. Lặp lại bước một và hai cho đến khi sai số tối thiểu. Sau đó kết thúc khóa huấn luyện.

1.2.3.2 Cách thức lan truyền ngược

1. Sử dụng để biểu diễn đầu vào cho nút của lớp .

2. Sử dụng cho trọng số từ nút của lớp đến nút của lớp 3. Sử dụng được biểu diễn cho độ lệch của nút của lớp .

4. Sử dụng đại diện cho đầu ra của nút của lớp .

5. Sử dụng đại diện cho đầu ra mong muốn, dựa trên tập huấn luyện được sử dụng.

6. Sử dụng là hàm kích hoạt, sử dụng Sigmoid cho hàm kích hoạt. Để có được lỗi tối thiểu, hàm chi phí được tính tốn với cơng thức như sau:

j

lớp và

Trong đó x là đầu vào dữ liệu huấn luyện và là đầu ra mong muốn. L là tổng số

y L

là đầu ra của mạng nơ ron tương ứng với đầu vào x. Để đạo hàm dễ dàng, ta nhân tổng của (4) với một hằng số 1/2.

Để tìm ra mức tối thiểu. Trước tiên, ta tính tốn các đạo hàm riêng của hàm chi phí đối với bất kỳ trọng số nào, với cơng thức sau:

Có hai trường hợp: Nút là một nút đầu ra hoặc trong một tầng ẩn. Trong trường hợp ở tầng đầu ra, trước tiên chúng ta tính đạo hàm chênh lệch: (adsbygoogle = window.adsbygoogle || []).push({});

Phương trình cuối cùng dựa trên quy tắc chuỗi. Nút là nút duy nhất có trọng số

nên các giá trị khác sẽ bằng 0. Và là đầu ra của hàm kích hoạt (hàm Sigmoid). Do

đó, phương trình mới thu được là:

Trong đó

L

k sự kết hợp tuyến tính của tất cả các đầu vào của nút j trong tầng L với các trọng số. Hàm sigmoid là đạo hàm có dạng sau:

x ik Do đó, hàm trên trở thành: Lk   WL yL1 . Vì vậy, (9) trở thành: iL1 (10)

Vì liên quan đến và không liên quan khi khác . Do đó, có mối quan hệ giữa nút của tầng và nút của tầng . Ta có cơng thức:

để biểu diễn nút của tầng . Do vậy, phương trình mới thu được là:

Ta xem xét các nút của tầng ẩn . Ở lớp ngay trước lớp đầu ra. Áp dụng đạo hàm riêng một phần trên trọng số cho hàm chi phí. Các trọng số cho các nút của tầng ẩn này:

Vì có một tổng trên tầng. Do thay đổi của các trọng số cho các nút của các tầng ẩn sẽ ảnh hưởng đến đầu ra mạng nơ ron. Do đó, áp dụng quy tắc chuỗi (chain rule):

Sau đó, đạo hàm theo quy tắc chuỗi:

Dòng thứ 2 của (14) dựa vào đầu vào của là sự kết hợp tuyến tính giữa các đầu ra của nút của lớp trước với trọng số. Vì đạo hàm khơng liên quan đến nút của lớp L. Do đó, ta đơn giản hóa đạo hàm dựa trên quy tắc chuỗi:

Chuyển thành . Do đó phương trình trở thành:

Đối với tầng đầu ra nút k: , trong đó:

Đối với tầng ẩn nút j: , trong đó:

Áp dụng quy trình tương tự. Ví dụ, Tính đạo hàm riêng cho độ lệch của nút k trong lớp cuối cùng và thu được:

Bởi vì nên . Phương trình có thể được cập nhật

thành:

Công thức trên áp dụng với bất kể đầu ra nào. Vì vậy, độ dốc của hàm chi phí so với độ lệch là:

Rút ra từ cơng thức trên, giải thuật loan truyền ngược sẽ được mô tả như sau: Bước 1: Chạy mạng tính tốn với dữ liệu đầu vào để có được đầu ra mạng Bước 2: Đối với mỗi nút đầu ra, ta thực hiện phép tính:

Bước 4: Cập nhật các trọng số và thiên lệch như sau: Giả thiết:

Áp dụng:

Tham số trong thuật toán được gọi là tốc độ học tập. Thuật toán này lặp lại cho đến khi đạt sai số tối thiểu hoặc dưới ngưỡng chấp nhận được để hồn thành q trình huấn luyện.

1.3 Mạng nơ ron tích chập

1.3.1 Khái niệm về mạng nơ ron tích chập

Mạng nơ ron tích chập là một trong những mạng truyền thẳng đặc biệt. Mạng nơ ron tích chập là một mơ hình học sâu phổ biến và tiên tiến nhất hiện nay. Hầu hết các hệ thống nhận diện và xử lý ảnh hiện nay đều sử dụng mạng nơ ron tích chập vì tốc độ xử lý nhanh và độ chính xác cao. Trong mạng nơ ron truyền thống, các tầng được coi là một chiều, thì trong mạng nơ ron tích chập, các tầng được coi là 3 chiều, gồm: chiều cao, chiều rộng và chiều sâu (Hình 1.11). Mạng nơ ron tích chập có hai khái niệm quan trọng: kết nối cục bộ và chia sẻ tham số. Những khái niệm này góp phần giảm số lượng trọng số cần được huấn luyện, do đó tăng nhanh được tốc độ tính tốn.

Hình 1.17: Hình minh họa một ví dụ sử dụng CNN để phân lớp đồ vật [20]

1.3.2 Mơ hình mạng nơ ron tích chập

Có ba tầng chính để xây dựng kiến trúc cho một mạng nơ ron tích chập: 1. Tầng tích chập; (adsbygoogle = window.adsbygoogle || []).push({});

2. Tầng gộp (pooling layer);

3. Tầng được kết nối đầy đủ (fully-connected).

Tầng kết nối đầy đủ giống như các mạng nơ ron thông thường, và tầng chập thực hiện tích chập nhiều lần trên tầng trước. Tầng gộp có thể làm giảm kích thước mẫu trên từng khối 2x2 của tầng trước đó. Ở các mạng nơ ron tích chập, kiến trúc mạng thường chồng ba tầng này để xây dựng kiến trúc đầy đủ. Ví dụ minh họa về một kiến trúc mạng nơ ron tích chập đầy đủ:

1.3.2 Xây dựng mạng nơ ron tích chập

1.3.2.1 Mạng được kết nối cục bộ

Trong xử lý hình ảnh, thơng tin của hình ảnh là các điểm ảnh (pixel). Nếu sử dụng mạng được kết nối đầy đủ, chúng ta sẽ có rất nhiều tham số. Ví dụ, một hình ảnh RGB có kích thước 512x512 pixel sẽ có 786432 (= 512 x 512 x 3) tham số đầu vào. Vì vậy, nếu chúng ta sử dụng kiến trúc mạng nơ ron trong hình sau:

Hình 1.19: Hình ảnh một mạng nơ ron được kết nối đầy đủ

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 vng 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 hồ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 (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu nghiên cứu về mạng neural convolutional, áp dụng vào bài toán nhận dạng đối tượng trong lĩnh vực thị giác máy tính (Trang 25)