Mô hình Deep Learning

Một phần của tài liệu ĐỒ ÁN Nghiên cứu, thiết kế hệ thống nhận dạng chữ viết tay ứng dụng xử lý ảnh và trí tuệ nhân tạo (Trang 46)

2.4.1.Deep Learning[1][4]

Trí tuệ nhân tạo (A.I) bao gồm quá trình mô phỏng trí thông minh của con người bằng máy móc và các hệ thống máy tính đặc biệt. Các ví dụ về trí tuệ nhân tạo bao gồm học tập, suy luận và tự sửa chữa. Các ứng dụng của AI bao gồm nhận dạng giọng nói, hệ thống chuyên gia, nhận dạng hình ảnh và thị giác máy.

Hình 2.29: Biểu đồ Ven tổng quan về Ai

Học máy (Machine Learning) là nghệ thuật khoa học giúp máy tính hoạt động theo các thuật toán được thiết kế và lập trình. Nhiều nhà nghiên cứu cho rằng học máy là cách tốt nhất để đạt được tiến bộ đối với AI ở cấp độ con người.

Học sâu (Deep Learning) là một lĩnh vực con của học máy trong đó các thuật toán liên quan được lấy cảm hứng từ cấu trúc và chức năng của não được gọi là mạng thần kinh nhân tạo.

Các bước để thành lập quy trình học sâu (Deep Learning):[13]

- Xác định các tập dữ liệu có liên quan và chuẩn bị chúng để phân tích. - Lựa chọn loại thuật toán để sử dụng.

43 - Huấn luyện mô hình trên các tập dữ liệu thử nghiệm, sửa đổi nó khi cần thiết. - Chạy mô hình để tạo điểm kiểm tra.

Ứng dụng:

- Thị giác máy tính được sử dụng để nhận dạng khuôn mặt và điểm danh qua dấu vân tay hoặc nhận dạng phương tiện qua biển số.

- Xử lý ngôn ngữ tự nhiên cho các ứng dụng như gắn thẻ ảnh.

2.4.2.Mạng Neural Network nhân tạo

Sơ lược về neural sinh học[14]:

Qua quá trình nghiên cứu về bộ não, người ta thấy rằng: Bộ não con người bao gồm khoảng 1011 neuron tham gia vào khoảng 1015 kết nối trên các đường truyền. Mỗi đường truyền này dài khoảng hơn một mét. Các neuron có nhiều đặc điểm chung với các tế bào khác trong cơ thể, ngoài ra chúng còn có những khả năng mà các tế bào khác không có được, đó là khả năng nhận, xử lý và truyền các tín hiệu điện hóa trên các đường mòn neuron, các con đường này tạo nên hệ thống giao tiếp của bộ não.

Những thành phần chính trong cấu trúc của một neural trong bộ não con người[2].

44 Trong đó:

- Các Soma là thân của neural.

- Các dendrites là các dây mảnh, dài, gắn liền với soma, chúng truyền dữ liệu (dưới dạng xung điện thế) đến cho soma xử lý. Bên trong soma các dữ liệu đó được tổng hợp lại. Có thể xem gần đúng sự tổng hợp ấy như là một phép lấy tổng tất cả các dữ liệu mà neural nhận được. Input Xi tổng so sánh với ngưỡng Weight Wi Output.

Một loại dây dẫn tín hiệu khác cũng gắn với soma là các axon. Khác với dendrites, axons có khả năng phát các xung điện thế, chúng là các dây dẫn tín hiệu từ neural đi các nơi khác. Chỉ khi nào điện thế trong soma vượt quá một giá trị ngưỡng nào đó (threshold) thì axon mới phát một xung điện thế, còn nếu không thì nó ở trạng thái nghỉ.

Axon nối với các dendrites của các neural khác thông qua những mối nối đặc biệt gọi là synapse. Khi điện thế của synapse tăng lên do các xung phát ra từ axon thì synapse sẽ nhả ra một số chất hoá học (neurotransmitters) các chất này mở "cửa" trên dendrites để cho các ions truyền qua. Chính dòng ions này làm thay đổi điện thế trên dendrites, tạo ra các xung dữ liệu lan truyền tới các Neural khác.

Có thể tóm tắt hoạt động của một Neural như sau: Neural lấy tổng tất cả các điện thế vào mà nó nhận được và phát ra một xung điện thế nếu tổng ấy lớn hơn một ngưỡng nào đó. Các Neural nối với nhau ở các synapses. Synapse được gọi là mạnh khi nó cho phép truyền dẫn dễ dàng tín hiệu qua các Neural khác. Ngược lại, một synapse yếu sẽ truyền dẫn tín hiệu rất khó khăn.

Các synapses đóng vai trò rất quan trọng trong sự học tập. Khi học tập thì hoạt động của các synapses được tăng cường, tạo nên nhiều liên kết mạnh giữa các Neural. Có thể nói rằng người nào học càng giỏi thì càng có nhiều synapses và các synapses ấy càng mạnh mẽ, hay nói cách khác, thì liên kết giữa các Neural càng nhiều, càng nhạy bén.

45

Mạng Neural nhân tạo:

Mạng neural nhân tạo được thiết kế để mô hình một số tính chất của mạng neural sinh học. Để mô phỏng các tế bào thần kinh và các khớp nối thần kinh của bộ não con người, trong mạng neural nhân tạo cũng có các thành phần có vai trò tương tự các thành phần trong neural thần kinh. Hai thành phần chính cấu tạo nên mạng neural nhân tạo là các neural và các synapse (mô phỏng các khớp nối thần kinh). Neural nhân tạo là một đơn vị tính toán có nhiều đầu vào và một đầu ra.

Hình 2.31: Mô hình Neural nhân tạo ở mực đơn giản

Hoạt động của Neural:

Giả sử có N inputs, Neural sẽ có N Weights (trọng số) tương ứng với N đường truyền inputs. Neural sẽ lấy tổng có trọng số của tất cả các inputs. Nói như thế có nghĩa là Neural sẽ lấy input thứ nhất, nhân với weight trên đường input thứ nhất, lấy input thứ hai nhân với weight của đường input thứ hai v.v..., rồi lấy tổng của tất cả các kết quả thu được. Đường truyền nào có weight càng lớn thì tín hiệu truyền qua đó càng lớn, như vậy có thể xem weight là đại lượng tương đương với synapse trong Neural sinh học.

2.4.3.Kiến trúc mạng[3]

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.

Một phần của tài liệu ĐỒ ÁN Nghiên cứu, thiết kế hệ thống nhận dạng chữ viết tay ứng dụng xử lý ảnh và trí tuệ nhân tạo (Trang 46)

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

(140 trang)