đặt vấn đề, lý do chọn đề tài, giới thiệu bố cục bài luận văn. Trình bày các kiến thức cơ sở đã được khảo sát và đóng vai trò nền tảng để phân tích, nghiên cứu và phát triển bài toán. Trình bày về một số nghiên cứu của các nhà khoa học khác nhau đã đạt được những thành tựu nổi bật trong lĩnh vực này, cùng với phương pháp và kết quả được báo cáo của họ. Trình bày thông tin về tập dữ liệu mà tôi đã thu thập, gán nhãn và sử dụng.
Trình bày các phương pháp đã tiếp cận để xử lý bài toán. Trình bày chi tiết cách thức thực hiện phương pháp để xử lý bài toán từ tiền xử lý, huấn luyện mô hình và hậu xử lý để được kết quả tốt nhất. Trình bày phương pháp đánh giá mô hình cũng như kết quả đã được. Trình bày thành quả, tổng kết lại những kinh nghiệm, hạn chế của phương pháp.
Đưa ra hướng phát triển tiếp theo. 3 Chương 2 Cơ sở lý thuyết Chương Cơ sở lý thuyết tóm lược những lý thuyết liên quan đến bài toán nhận diện vật thể, bao gồm những lý thuyết cơ bản về mạng nơ-ron nhân tạo, mạng nơ-ron tích chập. Đồng thời tôi sẽ giới thiệu những nền tảng, thư viện cũng như những sources code tôi đã sử dụng trong quá trình huấn luyện, nghiên cứu mô hình.1 Mạng nơ-ron nhân tạo 2.1 Nơ-ron sinh học Nơ-ron là đơn vị cơ bản cấu tạo nên hệ thống thần kinh, là thành phần quan trọng nhất của bộ não. Não chúng ta có khoảng 86 tỷ nơ-ron1 , mỗi nơ-ron lại liên kết với nhiều nơ-ron khác, tạo thành một mạng lưới, nên thường được gọi là mạng nơ-ron.
Cấu trúc của nơ-ron được cấu tạo như sau: Các sợi nhánh (Dendrites) nhận tín hiệu đầu vào được đưa vào xử lý trong phần thân (Soma), sau đó các tín hiệu đã được xử lý đi qua sợi trục (Axon) kết nối với các nơ-ron khác, và tiếp tục lặp lại quy trình trên. Mỗi nơ-ron nhận xung điện từ các nơ-ron khác từ sợi nhánh. Nếu các xung điện này đủ lớn để kích hoạt nơ-ron, thì sẽ có tín hiệu đi qua sợi trục để đến các nơ-ron khác. Ngược lại, các tín hiệu sẽ bị triệt tiêu, nơ-ron sẽ không truyền tín hiệu đi qua sợi trục.
Mạng nơ-ron nhân tạo (Artificial Neural Network) lấy cảm hứng từ cơ chế này để giải quyết các bài toán. 1 Dựa trên https://www.com/how-many-neurons-are-in-the-brain-2794889 4 Cơ sở lý thuyết 5 Hình 2.1: Một nơ-ron sinh học2 2.2 Nơ-ron nhân tạo Lấy cảm hứng từ nơ-ron trong hệ thần kinh con người, người ta đã xây dựng nên một nơ-ron nhân tạo tương tự như nơ-ron sinh học được biểu diễn tổng quát như hình 2. Đây là nơ-ron nhân tạo đầu tiên do con người tạo ra, nó có tên gọi là perceptron (từ perceptron trong tiếng Việt có nghĩa là tri giác). Giống như nơ-ron sinh học nó cũng có các đầu vào (chính là các biến b, x1 , x2 , ., xn ), các đầu vào này được nhân với các trọng số (weights) và cộng lại với nhau.
Tiếp theo giá trị này được đưa qua một hàm f để cho ra kết quả cuối cùng như trong công thức (2. n ! X output = f b + wi xi = f (b + w1 x1 + w2 x2 + ., wn được gọi là các trọng số, là nhân tố chính tác động lên đầu vào x và tạo ra khả năng biểu diễn tri giác của nơ-ron. 2 Ảnh được lấy từ http://www.org/personal_nn_view.htm 5 Cơ sở lý thuyết 6 2.3 Mạng nơ-ron nhân tạo Giống như mạng nơ-ron sinh học mạng nơ-ron nhân tạo cũng được tạo thành từ các nơ-ron nhân tạo liên kết với nhau. Một mạng được chia thành các lớp (layer), bao gồm ba loại lớp chính: lớp đầu vào (input layer), lớp ẩn (hidden layer), lớp đầu ra (output layer).
Mạng nơ-ron nhân tạo chỉ gồm duy nhất một input layer và một output layer tuy nhiên có thể bao gồm rất nhiều hidden layer. Layer thực chất chỉ là một tập các nơ-ron trong đó, các layer kết nối với nhau thông qua việc các nơ-ron thuộc các layer kết nối với nhau. Input layer chính là dữ liệu mà ta cung cấp cho ANN. Còn hidden layer chính là nơi thực hiện các phép tính toán, kết hợp bên dưới mạng nơ-ron để thực hiện mục tiêu mà chúng ta mong muốn.
Cuối cùng, output layer là nơi chứa các kết quả tính toán của mạng để ta sử dụng.3: Mạng nơ-ron nhân tạo gồm hai hidden layer3 Trong mạng nơ-ron như hình 2.3 ta có thể dễ dàng thấy ngoại trừ input layer thì các layer khác nơ-ron có đầu vào chính là kết quả đầu ra của các nơ-ron ở layer liền trước theo thứ tự từ trái sang phải của mạng. Tại mỗi nơ-ron sẽ thực hiện các phép tính dựa vào các trọng số hiện tại huấn luyện được như đã giới thiệu ở mục 2. Đối với một mạng nơ-ron nhân tạo để học, nó phải học từ những gì nó đã làm sai và đang làm đúng, đây được gọi là “phản hồi”. Chính điều này là nơi ta bắt đầu thấy sự tương đồng với bộ não con người.
Mạng nơ-ron học theo đúng cách giống như não của chúng ta, trong đó một quá trình “phản hồi” gọi là lan truyền ngược (back-propagation hay gọi tắt là backprop). Trong quá trình này ta so sánh đầu ra của mạng với đầu ra mong muốn và sử dụng sự khác biệt giữa các đầu ra để sửa đổi trọng số của các kết nối giữa các nơ-ron trong mạng, ta thực hiện ngược từ các đầu ra thông qua các nơ-ron trong hidden layer đến các nơ-ron đầu vào. Theo thời gian, lan truyền ngược làm cho mạng có thể học được bằng cách làm cho sự chênh lệch giữa đầu vào và đầu ra nhỏ tới điểm mà được xem là đem tới sự chính 3 Ảnh được lấy từ https://jintensivecare.1186/s40560-019 -0393-1#Fig1 6 Cơ sở lý thuyết 7 xác phù hợp, như vậy mạng nơ-ron nhân tạo đã học được đầu ra chính xác. Nếu như ta càng tăng số lượng nơ-ron trong một hidden layer hay tăng số lượng hidden layer lên cao thì có khả năng là sẽ mang lại độ chính xác cao hơn.
Tuy nhiên tương ứng với số lượng hidden layer cao đó chính bộ tham số sẽ càng lớn và thời gian huấn luyện sẽ càng lâu, thậm chí đến một lúc nào đó khi độ chính xác đạt quá cao thì sẽ bị một hiện tượng gọi là quá khớp (overfitting). Overfitting là hiện tượng mô hình sẽ có độ chính xác cao cho tập huấn luyện nhưng lại có kết quả tệ với tập kiểm tra hay trong quá trình sử dụng thực tế. Như vậy việc tránh overfitting là một việc hết sức cần thiết khi xây dựng mô hình học sâu. Chữ “sâu” trong “mô hình học sâu” chính là đề cập đến việc có rất nhiều hidden layer trong mô hình, càng nhiều hidden layer thì mô hình càng “sâu”.4 Hàm kích hoạt (Activation function) Ở mỗi nơ-ron, phép nhân trọng số trên từng tham số xi rồi lấy tổng tất cả là một phép biến đổi tuyến tính.
Đặc điểm của những phép biến đổi này là dù ta có lấy tổ hợp tuyến tính của bao nhiêu phép biến đổi tuyến tính đi nữa thì nó cũng chỉ tương đương với một phép biến đổi tuyến tính khác mà thôi. Cho nên không thể nào biểu diễn một phép biến đổi phi tuyến qua một mạng mà chỉ gồm những phép biến đổi tuyến tính. Nhu cầu biểu diễn tri giác bằng mạng nơ-ron khiến ta không thể bỏ qua việc phải biểu diễn được những hàm phi tuyến. Do đó những mạng nơ-ron bắt buộc phải có thành phần phi tuyến, chúng được gọi là hàm kích hoạt (activation function).
Các hàm kích hoạt đều ra đời để phục vụ cho những nhu cầu nhất định. Hàm kích hoạt đầu tiên được ra đời đương nhiên là hàm kích hoạt của perceptron, nó có tên gọi là Heaviside step function. Công thức và đồ thị của hàm này lần lượt là: ( 1, nếu x ≥ 0, f (x) = (2.4: Heaviside step function. Ta hình dung thông tin truyền đi chính là các tham số, thì hàm Heaviside-step có khả năng chặn thông tin truyền đi khi đầu ra bằng 0.
Còn khi hàm này đứng ở lớp cuối cùng, thì nơ-ron tương ứng có khả năng phân loại kết quả. Tuy nhiên nhược điểm của hàm heaviside-step là đạo hàm của nó tại mọi điểm khả vi đều bằng 0. Đạo hàm bằng 0 khiến 7 Cơ sở lý thuyết 8 ta không thể cập nhật trọng số bằng gradient descent. Vì thế người ta đưa ra những biến thể của hàm số này bằng cách làm mềm đi phần gấp khúc tại gốc tọa độ.
Một biến thể như vậy là hàm sigmoid. Công thức và đồ thị của hàm sigmoid lần lượt là: 1 sigmoid(x) = (2.5: Bên trái là đồ thị của hàm sigmoid, bên phải là đồ thị cho đạo hàm của nó Hàm sigmoid có đặc điểm là đầu ra của nó luôn không âm, hay còn gọi là bị bias (lệch) về phía dương. Trong một số trường hợp ta vẫn cần đến sự truyền đi của những tham số âm trong mạng. Trong những trường hợp đó người ta sử dụng biến thể khác là hàm hyperbolic tangent (tanh).
Hàm tanh có hình dạng tương tự như hàm sigmoid tuy nhiên khác biệt đến từ khoảng giá trị của nó là (−1, 1). Công thức và đồ thị của hàm tanh lần lượt là: ex − e−x tanh(x) = x (2.6: Bên trái là đồ thị của hàm tanh, bên phải là đồ thị cho đạo hàm của nó Các hàm tanh và sigmoid đã giải quyết được phần nào vấn đề đạo hàm bằng 0 của hàm heaviside-step ban đầu. Tuy nhiên khi xu hướng thiết kế mạng những năm gần đây trở thành cố gắng đi sâu hơn, chồng nhiều lớp tính toán lên nhau hơn thì nó bắt đầu bộc lộ nhược điểm. Đạo hàm của những hàm này phần lớn có giá trị rất gần 0, và khi thực hiện lan truyền ngược cho quá trình huấn luyện thì việc áp dụng quy tắc chuỗi khiến ta phải tính tích liên tục những giá trị gần 0 như thế.
Đạo hàm cuối cùng dần bị triệt tiêu, do máy tính chỉ lưu được số thực ở dạng xấp xỉ (bài toán triệt tiêu đạo hàm - vanishing gradient). Vì vậy người ta thiết kế ra một hàm kích hoạt có đạo hàm bằng 1 mà vẫn phi 8 Cơ sở lý thuyết 9 tuyến, và gọi đó là hàm đơn vị tuyến tính chỉnh lưu (Rectified Linear Unit - ReLU ). Công thức và đồ thị của hàm ReLU như sau: ReLU(x) = max(0, x) (2.7: Bên trái là đồ thị của hàm ReLU, bên phải là đồ thị cho đạo hàm của nó, tại x = 0 đồ thị không có đạo hàm 2.2 Mạng nơ-ron tích chập 2.