Là một hệ thống bao gồm nhiều phần tử xử lý đơn giản (hay còn gọi là Neural) tựa như Neural thần kinh của não người, hoạt động song song và được nối với nhau bởi các
46 liên kết Neural. Mỗi liên kết kèm theo một trọng số nào đó, đặc trưng cho tính kích hoạt hoặc ức chế giữa các Neural. Có thể xem các trọng số là phương tiện để lưu trữ thông tin dài hạn trong mạng Neural và nhiệm vụ của quá trình huấn luyện của mạng là cập nhật các trọng số khi có thêm thông tin về mẫu học. Hay nói một cách khác, các trọng số đều được điều chỉnh sao cho dáng điệu vào ra của mạng sẽ mô phỏng hoàn toàn phù hợp với môi trường đang xem xét.
Mạng một tầng
Mạng một tầng với S Neural[3] được minh họa. Chú ý rằng với mỗi một đầu vào trong số R đầu vào sẽ được nối với từng Neural và ma trận trọng số bây giờ sẽ có S hàng.
Một tầng bao gồm ma trận trọng số, các bộ cộng, vector ngưỡng b, hàm chuyển và vector đầu ra a.
Mỗi phần tử của vector đầu vào p được nối với từng Neural thông qua ma trận trọng số W. Mỗi Neural có một ngưỡng bi, một bộ cộng, một hàm chuyển và một đầu ra ai cùng với nhau, các đầu ra tạo thành một vector đầu ra.
Thông thường thì số lượng đầu vào của tầng khác với số lượng Neural
Các Neural trong cùng một tầng có hàm chuyển là không giống nhau, có thể định nghĩa các Neural trong một tầng có hàm chuyển khác nhau bằng cách kết hợp song song hai mạng Neural giống ở trên. Cả hai sẽ có đầu vào giống nhau và mỗi mạng sản xuất ra vài đầu ra.
Ma trận trọng số cho các phần tử trong vector đầu vào W:
47
Hình 2.33: Mô hình mạng 1 tầng
Các chỉ số hàng của các phần tử trong ma trận W chỉ ra Neural đích đã kết hợp với trọng số đó, trong khi chỉ số cột cho biết đầu vào cho trọng số đó. Vì vậy, các chỉ số trong W3,2 nói rằng đây là trọng số của đầu vào thứ 2 nối với Neural thứ 3.
Mạng đa tầng
Mô hình mạng Neural ở trên gồm 3 lớp: lớp nhập (input), lớp ẩn(hidden) và lớp xuất (output). Mỗi nút trong lớp nhập nhận giá trị của một biến độc lập và chuyển vào mạng.
Dữ liệu từ tất cả các nút trong lớp nhập được tích hợp, ta gọi là tổng trọng số và chuyển kết quả cho các nút trong lớp ẩn. Gọi là “ẩn” vì các nút trong lớp này chỉ liên 21 lạc với các nút trong lớp nhập và lớp xuất.
Các nút trong lớp xuất nhận các tín hiệu tổng trọng hóa từ các nút trong lớp ẩn. Mỗi nút trong lớp xuất tương ứng với một biến phụ thuộc.
48
Hình 2.34: Mô hình mang đa tầng
Huấn luyện mạng neural
Mạng Neural nhân tạo phỏng theo việc xử lý thông tin của bộ não người, do vậy đặc trưng cơ bản của mạng là có khả năng học, khả năng tái tạo các hình ảnh và dữ liệu khi đã học.
Trong trạng thái học thông tin được lan truyền theo hai chiều nhiều lần để học các trọng số. Có 3 kiểu học chính, mỗi kiểu học tương ứng với một nhiệm vụ học trừu tượng. Đó là học có giám sát (có mẫu), học không giám sát và học tăng cường. Thông thường loại kiến trúc mạng nào cũng có thể dùng được cho các nhiệm vụ.
Phương pháp học: gồm hai phương pháp chủ yếu là học có giám sát và học không
giám sát.
Học có giám sát: Một thành phần không thể thiếu của phương pháp này là sự có mặt của một “người thầy” (ở bên ngoài hệ thống). “Người thầy” này có kiến thức về môi trường thể hiện qua một tập hợp các cặp đầu vào - đầu ra đã được biết trước.
Hệ thống học (ở đây là mạng Neural) sẽ phải tìm cách thay đổi các tham số bên trong của mình (các trọng số và các ngưỡng) để tạo nên một ánh xạ có khả năng ánh xạ
49 các đầu vào thành các đầu ra mong muốn. Sự thay đổi này được tiến hành nhờ việc so sánh giữa đầu ra thực sự và đầu ra mong muốn.
Hình 2.35: Mô hình học có giám sát
Học không giám sát: Trong học không có giám sát, cho trước một số dữ liệu x và hàm chi phí cần được cực tiểu hóa có thể là một hàm bất kỳ của dữ liệu x và đầu ra của mạng, f – hàm chi phí được quyết định bởi phát biểu của bài toán. Phần lớn các ứng dụng nằm trong vùng của các bài toán ước lượng như mô hình hóa thống kê, nén, lọc, phân cụm.
50
2.4.4.Mạng CNN
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, ta 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 họa bên duới.
Hình 2.37: Minh họa ma trận tích chập
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. Dưới đây là một vài ví dụ của phép toán tích chập.
51 Làm mờ bức ảnh ban đầu bằng cách lấy giá trị trung bình của các điểm ảnh xung quanh cho vị trí điểm ảnh trung tâm.
Hình 2.38: Ảnh mờ sau khi tích chập
Ngoài ra, có thể phát hiện cạnh biên bằng cách tính vi phân (độ dị biệt) giữa các điểm ảnh lân cận.
52
Kernel:
Trong thao tác tích chập thường sử dụng mặt nạ tích chập (convolution mask) là ma trận vuông 2 chiều có kích thước thường là số lẻ (thường là 3x3 hoặc 5x5) tác động tích chập vào tất cả điểm ảnh của ảnh gốc. Điểm được chọn làm tâm của kernel được xác định bằng điểm giữa của ma trận, ví dụ nếu kernel là ma trận 3x3 thì tâm là điểm có tọa độ 1:1, nếu kernel là ma trận 4x4 thì tâm cũng là điểm 1:1 (index đi từ 0 theo chuẩn C++, C#). Giá trị sau khi tính convolution sẽ được gán cho vị trí (trên result Matrix) trùng với vị trí tâm của Kernel. Trong matlab sự khác nhau của các phương pháp tính convolution cơ bản dựa vào tham số shape với 3 trạng thái same, full, valid. Dưới đây xin tiếp cận vấn đề theo logic này.
Khái niệm CNN
- 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 layer tiếp theo. - Trong mô hình Feedforward Neural Network (mạng Neural 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 layer này còn được gọi là có 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à ta có được các kết nối cục bộ. Nghĩa là mỗi Neural ở layer tiếp theo sinh ra từ filter áp đặt lên một vùng ảnh cục bộ của Neural layer trước đó. - Mỗi layer như vậy được áp đặt các filter khác nhau, thông thường có vài 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, ta sẽ không đi sâu vào khái niệm của các layer này.
53 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.40: Mô hình mạng neural truyền thống
Hình 2.41: Mô hình mạng tích chập cơ bản
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
54 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 ta 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 CNN 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. Ta 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). Cấu trúc mạng CNN
Mạng neural tích chập là một dạng của mạng neural đa tầng, mỗi tầng thuộc một trong 3 dạng: tích chập (convolution), lớp gộp (Pooling layer), kết nối đầy đủ (full connection) như hình sau.
Hình 2.42: Minh họa mô hình CNN với số 5
CNNs xem ảnh đầu vào là tầng input, mỗi pixel là một neural, về cơ bản CNN gồm các tầng chính sau:
55
Tầng tích chập (C - convolution): Hoạt động như bộ trích chọn đặc trưng, nghĩa là một hay nhiều kết xuất của tầng trước được tích chập với một hay nhiều kernel để sinh ra một hay nhiều kết xuất (feature map).
Các lớp chuyển đổi hoạt động giống như một cửa sổ công cụ tìm tính năng trượt trên pixel hình ảnh hình ảnh sửa đổi, một bản đồ tính năng. theo pixel để trích xuất các đặc điểm có ý nghĩa xác định các đối tượng trong ảnh.
Hình 2.43: Bộ lọc tích chập 3x3 trượt trên ảnh đầu vào
Cách hoạt động: Nhân mỗi pixel trong trường tiếp nhận với pixel tương ứng tương ứng trong bộ lọc tích chập và tổng tất cả chúng lại với nhau để nhận được giá trị pixel trung tâm trong hình ảnh mới. Tóm lại bộ lọc trượt trên toàn bộ hình ảnh. Mỗi lần, nhân mỗi phần tử pixel tương ứng tương ứng và sau đó cộng tất cả chúng lại với nhau để tạo ra một hình ảnh mới.
56
Hình 2.44: Kernal trượt trên ảnh gốc
Mục tiêu khi sử dụng lớp tích chập là một trong hai điều: giữ tất cả các chi tiết quan trọng của hình ảnh và chuyển chúng sang lớp tiếp theo (khi giá trị bước đệm là 1 và giá trị phần đệm bằng nhau) hoặc bỏ qua một số thông tin không gian của hình ảnh để làm cho việc xử lý tính toán hợp lý hơn.
Tầng lớp gộp (L – Pooling layer): Việc thêm nhiều lớp chập sẽ làm tăng độ sâu của lớp đầu ra, dẫn đến tăng số lượng các tham số mà mạng cần để tối ưu hóa (học).
Có thể thấy rằng việc thêm một số lớp chập (thường là hàng chục hoặc thậm chí hàng trăm) sẽ tạo ra một số lượng lớn các tham số (trọng số). Sự gia tăng tính đa dạng của mạng này làm tăng độ phức tạp về thời gian và không gian của các phép toán diễn ra trong quá trình học tập. Đây là lúc việc gộp các lớp trở nên hữu ích, pooling giúp giảm kích thước của mạng bằng cách giảm số lượng các tham số được truyền cho lớp tiếp theo. Không gian pooling còn được gọi là lấy mẫu con hoặc lấy mẫu xuống làm giảm kích thước của mỗi map nhưng vẫn giữ lại thông tin quan trọng. Các pooling có thể có nhiều loại khác nhau:
- Max Pooling - Average Pooling - Sum Pooling
57 Max pooling lấy phần tử lớn nhất từ ma trận đối tượng, hoặc lấy tổng trung bình.
Hình 2.45: Minh họa Max Pooling
Tầng kết nối đầy đủ (F – Full connection): thực hiện công việc phân lớp như trong mạng neural đa lớp thông thường, … Các tầng sau, mỗi tầng có một số feature map, mỗi feature map có một số kernel duy nhất, số lượng kernel bằng số lượng feature map ở tầng trước. Các kernel trong cùng một feature map có kích thước bằng nhau, kích thước kernel là một tham số của bài toán thiết kế mạng. Các giá trị điểm ảnh trong một feature map được tính toán bằng tổng các tích chập của các kernel tương ứng với các feature map trong tầng trước. Số lượng feature map trong tầng cuối cùng (tầng output) bằng số lượng kết xuất đầu ra của bài toán.
58
Tóm lại: CNN thực sự tỏa sáng trong xử lý hình ảnh vì nó lấy ma trận hình ảnh thô làm đầu vào mà không cần phải làm phẳng hình ảnh. Chúng bao gồm các lớp liên kết cục bộ được gọi là bộ lọc chập, trái ngược với các lớp dày đặc của MLP.
CNNs bao gồm ba lớp chính: lớp tích hợp để trích xuất đối tượng đặc trưng, lớp tổng hợp để giảm kích thước mạng và lớp được kết nối đầy đủ để phân loại.
Nguyên nhân chính của hiệu suất dự đoán kém trong học máy là trang bị quá mức hoặc trang bị không đủ dữ liệu.
2.4.5.Mạng Lenet
Từ CNN đã xây dựng lên một CNN tiên phong có tên là LeNet. Một kiến trúc lưu trữ LeNet rất đơn giản và các thành phần tương tự như CNN về các lớp phức hợp, tổng hợp và được kết nối đầy đủ. Kiến trúc bao gồm năm lớp trọng lượng, do đó có tên là LeNet ba lớp chập và hai lớp được kết nối đầy đủ.
Chúng tôi gọi các lớp phức hợp và được kết nối đầy đủ là weight layers vì chúng chứa các weight có thể huấn luyện thay vì gộp các lớp không chứa bất kỳ trọng lượng nào. Quy ước chung là sử dụng số lượng các lớp trọng số để mô tả độ sâu của mạng.
Cấu tạo mạng Lennet
INPUT IMAGE ⇒ Convolution layer ⇒ TANH ⇒ pooling layer ⇒ Convolution ⇒ TANH ⇒ pooling layer ⇒ Convolution layer⇒ TANH ⇒ fully connected layer ⇒ SOFTMAX
Trong đó:
- INPUT IMAGE: ảnh đầu vào - Convolution layer: Lớp tích chập - pooling layer: Lớp gộp
- Fully connected layer: Lớp phân loại
59 Do lúc này ReLU chưa được sử dụng trong ngữ cảnh của Deep Learning và phổ biến hơn là sử dụng tanh hoặc sigmoid làm chức năng kích hoạt trong các lớp ẩn
Hình 2.47: Cấu trúc của mạng LeNet
- Convolutional layer: cơ bản là giống với CNN chỉ khác là sử dụng số lượng Convolutional layer khác đi
- Pooling layer: Một lớp lấy mẫu con (Poopling) được thêm vào sau mỗi lớp tích chập. Lưu ý rằng những người tạo LeNet đã sử dụng tính năng AVG Pooling, tính giá trị trung bình của các đầu vào, thay vì lớp MAX Pooling mà họ đã sử dụng trong CNN, lớp này sẽ chuyển giá trị tối đa của các đầu vào.
- Fully connected layer: LeNet sử dụng hàm tanh cho các lớp ẩn vì các chức năng đối xứng được cho là mang lại sự hội tụ nhanh hơn so với các chức năng của hàm sigmoid
60 Hình 2.48: Sơ đồ mạng LeNet
Tóm lại: Mạng LeNet là một mạng nơ-ron nhỏ theo tiêu chuẩn có cấu trúc tương tự như CNN bao gồm 4 lớp convolution, trong đó bao gồm: 2 convolutional layer, 2 fully connected layer và 1 fully connected layer output và sử dụng AVG pooling thay cho MAX pooling.
Khi bạn đào tạo LeNet trên tập dữ liệu MNIST, bạn sẽ đạt được độ chính xác trên 99%.
2.4.6.Mạng AlexNet
LeNet hoạt động rất tốt trên tập dữ liệu MNIST. Nhưng hóa ra tập dữ liệu MNIST rất đơn giản vì nó chứa các hình ảnh thang độ xám (1 kênh) và phân loại thành chỉ có 10 lớp, điều này làm cho nó trở thành một thử thách dễ dàng hơn. Động lực chính đằng sau Alex Net là xây dựng một mạng sâu hơn có thể học các chức năng phức tạp hơn.
AlexNet đã là hiện đại vào thời điểm đó vì nó là công trình mạng “sâu” thực sự