CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.3 GIỚI THIỆU MẠNG NEURON
Mạng Neuron nhân tạo (Artificial Neural Network- ANN) là mô hình xử lý thông tin được 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 Neuron đượ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 (thông qua huấn luyện), có khả năng lưu giữ những kinh nghiệm hiểu biết (tri thức) và sử dụng những tri thức đó trong việc dự đoán các dữ liệu chưa biết (unseen data).
Kết hợp chặt chẽ với logic mờ, mạng neuron nhân tạo đã tạo nên cuộc cách mạng thực sự trong việc thông minh hóa và vạn năng hóa các bộ điều khiển kỹ thuật cao cho cả hiện nay và trong tương lai. Ví dụ như ứng dụng tự động điều khiển hệ thống lái tàu, hệ thống dự báo sự cố,…
Mạng neuron dựa trên việc mô phỏng cấp thấp hệ thống neuron sinh học. Trong tương lai với sự phát triển mô phỏng neuron sinh học, chúng ta có thể có loại máy
Các ứng dụng của mạng Neuron được sử dụng trong rất nhiều lĩnh vực như điện, điện tử, kinh tế, quân sự,… để giải quyết các bài toán có độ phức tạp và đòi hỏi có độ chính xác cao như điều khiển tự động, khai phá dữ liệu, nhận dạng,…
Kiến trúc chung của một mạng neuron nhân tạo gồm 3 thành phần đó là: Input Layer, Hidden Layer và Output Layer (Xem Hình).
Hình 2.3 Kiến trúc tổng quát của một ANN
Trong đó, lớp ẩn (Hidden Layer) gồm các Neuron nhận dữ liệu input từ các Neuron ở lớp (Layer) trước đó và chuyển đổi các input này cho các lớp xử lý tiếp theo. Trong một ANN có thể có nhiều lớp ẩn.
Trong đó các Processing Elements (PE) của ANN gọi là Neuron, mỗi Neuron nhận các dữ liệu vào (Inputs) xử lý chúng và cho ra một kết quả (Output) duy nhất. Kết quả xử lý của một Neuron có thể làm Input cho các Neuron khác.
2.4 Mạng Neuron tích chập
Để máy tính xử lí được các dạng dữ liệu tự nhiên (âm thanh, hình ảnh, cảm giác...) cần phải có một kiến trúc đặc biệt giống như cấu trúc của hệ thần kinh. Với khả năng xử lí tuần tự của máy PC hiện nay cho dù có tốc độ rất cao cũng không thể xử lí kịp thời và không đáp ứng được trong các tác vụ điều khiển. Do vậy, muốn có một hệ xử
lí nhanh, đa luồng cần có một hệ xử lí song song đồng thời của nhiều chíp xử lí như hệ thần kinh của cơ thể sống.
Công nghệ mạng neuron tế bào CNN (Cenllular Neural Networks) đã được các nhà khoa học Mỹ và Hungary phát minh ra vào năm 1988 có tốc độ xử lí của một tế bào là 1012 phép tính/giây, cả hệ có khoảng 16 000 CPU xử lí đồng thời. Đây là bước đột phá về cấu trúc của CNN là các CPU song song được kết nối thành mạng tích hợp trong một chip.
2.4.1 Định nghĩa mạng Neuron tích chập
Những năm gần đây, ta đã chứng kiến được nhiều thành tựu vượt bậc trong ngành Thị giác máy tính (Computer Vision). Các hệ thống xử lý ảnh lớn nhỏ Facebook, Google hay Amazon đã đưa vào sản phẩm của mình những chức năng thông minh như nhận diện khuôn mặt người dùng, phát triển xe hơi tự lái hay drone giao hàng tự động.
Convolutional Neural Network (CNNs – Mạng neuron tích chập) là một trong những mô hình Deep Learning tiên tiến giúp cho chúng ta xây dựng được những hệ thống thông minh với độ chính xác cao như hiện nay. Trong luận văn này, sẽ trình bày về Convolution (tích chập) cũng như ý tưởng của mô hình CNNs trong phân lớp đối tượng để phát hiện và nhận dạng trái cây trong ảnh màu.
2.4.2 Convolution (tích chập)
Tích chập được sử dụng đầu tiên trong xử lý tín hiệu số ( Signal processing). Nhờ vào nguyên lý biến đổi thông tin, các nhà khoa học đã áp dụng kĩ thuật này vào xử lý ảnh và video số.
Để dễ hình dung, có thể xem tích chập như một cửa sổ trượt (sliding window) áp đặt lên một ma trận. Có thể theo dõi cơ chế của tích chập qua hình minh hoạ bên dưới
Hình 2.4 Mô hình tích chập
https://leonardoaraujosantos.gitbooks.io/artificial-inteligence/content/convolution.html
Ma trận bên trái là một bức ảnh đen trắng. Mỗi giá trị của ma trận tương đương với một điểm ảnh (pixel), 0 là màu đen, 1 là màu trắng (nếu là ảnh grayscale thì giá trị biến thiên từ 0 đến 255).
Sliding window còn có tên gọi là kernel, filter hay feature detector. Ở đây, dùng một ma trận filter 3×3 nhân từng thành phần tương ứng (element-wise) với ma trận ảnh bên trái. Giá trị đầu ra do tích của các thành phần này cộng lại. Kết quả của tích chập là một ma trận (convoled feature) sinh ra từ việc trượt ma trận filter và thực hiện tích chập cùng lúc lên toàn bộ ma trận ảnh bên trái.
2.4.3 Mô hình mạng nơ-ron tích chập
Bây giờ, đã biết thế nào là convolution. Vậy CNNs là gì? CNNs chỉ đơn giản gồm một vài layer của convolution kết hợp với các hàm kích hoạt phi tuyến (nonlinear
activation function) như ReLU hay tanh để tạo ra thông tin trừu tượng hơn (abstract/higher-level) cho các leyer tiếp theo.
Trong mô hình Feedforward Neural Network ( mạng nơ-ron truyền thẳng), các layer kết nối trực tiếp với nhau thông qua một trọng số w (weighted vector). Các leyer này còn được gọi là kết nối đầy đủ (fully connected layer) hay affine layer.
Trong mô hình CNNs thì ngược lại. Các layer liên kết được với nhau thông qua cơ chế convolution. Layer tiếp theo là kết quả convolution từ layer trước đó, nhờ vậy mà có được các kết nối cục bộ. Nghĩa là mỗi neuron ở layer tiếp theo sinh ra từ Filter áp đặt tên lên một vùng ảnh cục bộ của neuron layer trước đó.
Mỗi layer như vậy được áp đặt các Filter khác nhau, thông thường có vào trăm đến vài nghìn filter như vậy. Một số layer khác như pooling/subsampling layer dùng để chắt lọc lại các thông tin hữu ích hơn (loại bỏ các thông tin nhiễu). Tuy nhiên, sẽ không đi sâu vào khái niệm của các layer này.
Trong suốt quá trình huấn luyện, CNNs sẽ tự động học được các thông số cho các filter. Ví dụ trong tác vụ phân lớp ảnh, CNNs sẽ cố gắng tìm ra thông số tối ưu cho các filter tương ứng theo thứ tự raw pixel > edges > shapes > facial > high-level features. Layer cuối cùng được dùng để phân lớp ảnh.
Hình 2.5 Mô hình mạng neuron tích chập
https://www.kdnuggets.com/2016/11/intuitive-explanation-convolutional-neural- networks.html/3
CNNs có tính bất biến và tính kết hợp cục bộ (Location Invariance and Compositionality). Với cùng một đối tượng, nếu đối tượng này được chiếu theo các gốc độ khác nhau (translation, rotation, scaling) thì độ chính xác của thuật toán sẽ bị ảnh hưởng đáng kể. Pooling layer sẽ cho bạn tính bất biến đối với phép dịch chuyển (translation), phép quay (rotation) và phép co giãn (scaling).
Tính kết hợp cục bộ cho ta các cấp độ biểu diễn thông tin từ mức độ thấp đến mức độ cao và trừu tượng hơn thông qua convolution từ các filter. Đó là lý do tại sao CNNs cho ra mô hình với độ chính xác rất cao. Cũng giống như cách con người nhận biết các vật thể trong tự nhiên. Phân biệt được một con chó với một con mèo nhờ vào các đặc trưng từ mức độ thấp (có 4 chân, có đuôi) đến mức độ cao (dáng đi, hình thể, màu lông).
2.4.4 Xây dựng mạng Nơ-ron tích chập
Phần này sẽ giới thiệu một trong những mạng sâu được sử dụng rộng rãi đó là mạng tích chập sâu (deep convolutional networks). Bài toán sẽ làm việc cụ thể với
mạng tích chập để giải quyết bài toán phân loại trái cây trên ảnh màu. Sẽ bắt đầu mạng tích chập với việc sử dụng mạng truyền thống để giải quyết bài toán này trong phần trước. Mặc dù nhiều phép toán lặp nhưng sẽ xây dựng mạng hiệu quả hơn. Luận văn này sẽ khám phá ra rất nhiều kĩ thuật hiệu quả: Tích chập (convolution), giảm số chiều (pooling), sử dụng GPUs để huấn luyện được nhiều dữ liệu hơn đã thực hiện trên mạng cũ, mở rộng giải thuật huấn luyện dữ liệu (để giảm quá khớp – overfitting), sử dụng kĩ thuật dropout để giảm overfitting, việc sử dụng tổng hợp các mạng và các kĩ thuật khác. Kết quả là hệ thống làm việc gần như con người. Trong số 10.000 bức ảnh huấn luyện, hệ thống sẽ phân loại đúng 9.967 bức ảnh.
Phần còn lại của chương sẽ thảo luận về học sâu dưới góc độ tổng quan và chi tiết. Bài toán sẽ tìm hiểu làm thế nào để các mô hình mạng neuron tích chập có thể ứng dụng để giải quyết các kỹ thuật phân loại trái cây trên ảnh màu, luận văn sẽ nghiên cứu về mạng neuron trong tương lai và học sâu (deep learning), từ các ý tưởng như giao diện người sử dụng hướng đích đến vai trò của học sâu trong trí tuệ nhân tạo.
Phần này xây dựng dựa trên các phần trước sử dụng các ý tưởng như: lan truyền ngược (backpropagation), regularization, hàm softmax....
Hình 2.6 Mô hình mạng perceptron đa tầng
http://neuralnetworksanddeeplearning.com/chap5.html
Đặc biệt, đối với mỗi điểm ảnh trong ảnh đầu vào, sẽ được mã hóa cường độ của
điểm ảnh là giá trị của neuron tương ứng trong tầng đầu vào. Đối với bức ảnh kích thước 28x28 điểm ảnh đang sử dụng, mạng có 784 (28x28) neuron đầu vào. Sau đó huấn luyện trọng số (weight) và độ lệch (bias) để đầu ra của mạng như mong đợi là
xác định chính xác ảnh các chữ số „0‟, „1‟, „2‟,....,‟8‟ hay „9‟.
Mạng neuron trước đây làm việc khá tốt: đã đạt được độ chính xác trên 98%, sử
dụng tập dữ liệu huấn luyện và kiểm thử từ tập dữ liệu ≈ lợi thế của các cấu trúc không gian? Trong phần này, luận văn mô tả mạng neuron tích chập.
Những mạng này sử dụng một kiến trúc đặc biệt phù hợp cho bài toán phân loại
ảnh. Sử dụng kiến trúc này làm cho mạng tích chập huấn luyện nhanh hơn. Kết quả là giúp huấn luyện sâu, mạng nhiều tầng, rất phù hợp cho phân loại ảnh. Ngày nay,
mạng tích chập sâu hoặc một số biến thể của nó được sử dụng trong các mạng neuron
Mạng tích chập sử dụng 3 ý tưởng cơ bản: các trường tiếp nhận cục bộ (local receptive
field), trọng số chia sẻ (shared weights) và tổng hợp (pooling).
Trường tiếp nhận cục bộ (Local receptive fields): Trong các tầng kết nối đầy đủ được chỉ ra trước đây, đầu vào đã được mô tả là một đường thẳng đứng chứa các neuron. Trong mạng tích chập, sẽ thay thế các đầu vào là 28 × 28 neuron, giá trị tương ứng với 28 x28 cường độ điểm ảnh mà bài toán sử dụng:
Hình 2.7 Mô tả các neuron đầu vào
Như thường lệ mô hình sẽ kết nối các điểm ảnh đầu vào cho các neuron ở tầng
ẩn. Nhưng sẽ không kết nối mỗi điểm ảnh đầu vào cho mỗi neuron ẩn. Thay vào đó, chỉ kết nối trong phạm vi nhỏ, các vùng cục bộ của bức ảnh.
Để được chính xác hơn, mỗi neuron trong lớp ẩn đầu tiên sẽ được kết nối với
một vùng nhỏ của các neuron đầu vào, ví dụ, một vùng 5 × 5, tương ứng với 25 điểm
Hình 2.8 Mô hình neuron cục bộ
Vùng đó trong bức ảnh đầu vào được gọi là vùng tiếp nhận cục bộ cho neuron ẩn. Đó là một cửa sổ nhỏ trên các điểm ảnh đầu vào. Mỗi kết nối sẽ học một trọng số. Và neuron ẩn cũng sẽ học một độ lệch (overall bias), có thể hiểu rằng neuron lớp ẩn cụ thể là học để phân tích trường tiếp nhận cục bộ cụ thể của nó.
Sau đó trượt trường tiếp nhận cục bộ trên toàn bộ bức ảnh. Đối với mỗi trường
tiếp nhận cục bộ, có một neuron ẩn khác trong tầng ẩn đầu tiên . Để minh họa điều
này một cách cụ thể, hãy bắt đầu với một trường tiếp nhận cục bộ ở góc trên bên trái:
Hình 2.9 Mô hình neuron cục bộ
Sau đó, trượt trường tiếp nhận cục bộ trên bởi một điểm ảnh bên phải (tức là bằng một neuron), để kết nối với một neuron ẩn thứ hai:
Hình 2.10 Mô hình neuron cục bộ
Và như vậy, việc xây dựng các lớp ẩn đầu tiên. Lưu ý rằng nếu có một ảnh đầu vào 28 × 28 và 5 × 5 trường tiếp nhận cục bộ thì ta sẽ có 24 × 24 neuron trong lớp ẩn. Có được điều này là do chỉ có thể di chuyển các trường tiếp nhận cục bộ ngang qua 23 neuron (hoặc xuống dưới 23 neuron), trước khi chạm với phía bên phải (hoặc dưới) của ảnh đầu vào.
Như vậy, việc xây dựng các lớp ẩn đầu tiên. Lưu ý rằng nếu có một ảnh đầu vào 28 × 28 và 5 × 5 trường tiếp nhận cục bộ, sau đó sẽ có 24 × 24 neuron trong lớp ẩn. Điều này là bởi vì chỉ có thể di chuyển các trường tiếp nhận cục bộ 23 neuron ngang qua (hoặc 23 neuron xuống), trước khi chạm với phía bên phải (hoặc dưới) của ảnh đầu vào.
Trọng số và độ lệch (Shared weights and biases) : Mỗi một neuron ẩn có một độ lệch (bias) và 5 × 5 trọng số liên kết với trường tiếp nhận cục bộ. Những gì chưa đề cập đến là sẽ sử dụng các trọng số và độ lệch tương tự cho mỗi neuron ẩn 24 × 24. Nói cách khác, đối với những neuron ẩn thứ j, k, đầu ra là:
Hình 2.11 Công thức xây dựng lớp tính Neuron
Ở đây, là hàm kích hoạt neuron, có lẽ là hàm sigmoid ta sử dụng trong các chương trước, b là giá trị chung cho độ lệch. M(wl), m là một mảng 5x5 của trọng số chia sẻ, cuối cùng, sử dụng axy biểu thị giá trị kích hoạt vào tại vị trí x,y.
Do đó, chưa xác định chính xác khái niệm về đặc trưng, có thể nghĩ rằng của đặc trưng là loại mẫu đầu vào mà làm cho neuron hoạt động: ví dụ, nó có thể là biên của ảnh hoặc có thể là một dạng hình khối khác, ngay tại các vị trí khác nhau của ảnh đầu vào. Tại sao điều này lại có lí, giả sử rằng các trọng số và độ lệch mà các neuron ẩn chọn ra, một biên thẳng đứng (vertical edge) trong trường tiếp nhận cục bộ. Khả năng đó rất hữu ích ở các vị trí khác nhau trong bức ảnh. Do đó, nó là hữu ích để áp dụng phát hiện các đặc trưng giống nhau trong ảnh. Để đặt nó trong thuật ngữ trừu tượng hơn một chút, mạng chập được thích nghi với bất biến dịch (translation invariance) của các ảnh: di chuyển ảnh của một con mèo một ít, và nó vẫn là một hình ảnh của một con mèo.
Đôi khi gọi các bản đồ từ các lớp đầu vào cho lớp ẩn là bản đồ đặc trưng (feature map), gọi các trọng số xác định các bản đồ đặc trưng là trọng số chia sẻ (shared weights), gọi độ lệch xác định bản đồ đặc trưng là độ lệch chia sẻ (shared bias). Các trọng số được chia sẻ và độ lệch thường được gọi là hạt nhân (kernel) hay bộ lọc (filter).
Cấu trúc mạng đã vừa mô tả có thể phát hiện một bản đồ đặc trưng . Để phát hiện và nhận dạng ảnh thì cần nhiều hơn một bản đồ đặc trưng và một lớp tích chập hoàn chỉnh bao gồm vài bản đồ đặc trưng:
Hình 2.12 Minh hoạ đặc trưng cấu trúc neuron
Trong ví dụ, có 3 bản đồ đặc trưng. Mỗi bản đồ đặc trưng được xác định bởi một tập 5 × 5 trọng số chia sẻ, và một độ lệch chia sẻ duy nhất. Kết quả là các mạng có thể phát hiện 3 loại đặc trưng khác nhau, với mỗi đặc trưng được phát hiện trên toàn bộ ảnh, đã chỉ ra 3 bản đồ đặc trưng, để làm cho cho sơ đồ ở trên đơn giản. Tuy nhiên, trong thực tế mạng chập có thể sử dụng nhiều bản đồ đặc trưng hơn. Một trong những mạng chập đầu tiên là LeNet-5, sử dụng 6 bản đồ đặc trưng, mỗi bản đồ được liên kết đến một trường tiếp nhận cục bộ 5 × 5. Vì vậy, các ví dụ minh họa ở trên là thực sự khá gần LeNet-5. Trong ví dụ phát triển sau này của chương này sẽ sử dụng lớp tích chập với 20 và 40 bản đồ đặc trưng. hãy xem qua một số bản đồ đặc trưng đã được học.
Hình 2.13 Bản đồ đặc trưng
Trên đây là 20 ảnh tương ứng với 20 bản đồ đặc trưng khác nhau (hay còn gọi là bộ
lọc, hay là nhân). Mỗi bản đồ được thể hiện là một hình khối kích thước 5 × 5,
tương ứng với 5 × 5 trọng số trong trường tiếp nhận cục bộ. Khối trắng có nghĩa là một trọng số nhỏ hơn, vì vậy các bản đồ đặc trưng đáp ứng ít hơn để tương ứng với