Mạng Neural nhân tạo

Một phần của tài liệu NGHIÊN CỨU GIẢI PHÁP NHẬN DẠNG BIỂN SỐ XE TRÊN CƠ SỞ CÔNG NGHỆ XỬ LÝ ẢNH (Trang 61 - 101)

3.3.1 Giới thiệu

Mạng neuron nhân tạo mô phỏng hoạt động của não người để giải quyết các bài toán kỹ thuật. Bộ não người có khoảng 10 neuron. Các neuron này được kết nối với nhau thành mạng. Việc xử lý thông tin được thực hiện nhờ vào sự lan truyền của tín hiệu từ neuron này sang neuron khác thông qua các sợi trục thần kinh (axon). Mạng neuron nhân tạo được đặc trưng bởi ba yếu tố.

Hình 3.4 Mạng neuron Phần tử xử lý (neuron)

Cấu trúc và ghép nối của các phần tử xử lý Phương pháp huấn luyện mạng

Hình 3.5: Mô hình toán học tổng quát của mạng Neural

Tín hiệu ngõ vào sau khi qua mạng Neural sẽ được tính toán và ngõ ra của mạng sẽ được so sánh với tín hiệu đích mong muốn. Mạng sẽ tiếp tục cập nhật và điều chỉnh trọng số và ngưỡng đến khi thỏa mãn ngõ ra yêu cầu.

Điều kiện quan trọng trong việc sử dụng Neural Networks là phải biết mối liên hệ giữa ngõ vào và ngõ ra biết trước. Mối quan hệ này có thể kéo theo nhiều thứ nhưng nó nhất định phải tồn tại.

Tổng quát, nếu ta sử dụng một mạng neural ta sẽ không biết chính xác trạng thái tự nhiên của mối liên hệ giữa ngõ vào và ngõ ra, nếu ta biết mối liên hệ ta sẽ làm mô hình đó trực tiếp. Một tính năng khác của Neural Networks là nó có thể học mối liên hệ giữa ngõ vào và ngõ ra thông qua việc huấn luyện. Có hai loại huấn luyện sử dụng trong Neural Networks là huấn luyện có giám sát và không giám sát. Với những loại mạng khác nhau thì sử dụng các loại huấn luyện khác nhau. Huấn luyện có giám sát sử dụng thông dụng nhất.

Trong việc học có giám sát, người sử dụng mạng phải có một tập hợp dữ liệu cần huấn luyện. Tập hợp này chứa những ngõ vào mẫu với ngõ ra tương ứng và mạng sẽ huấn luyện để đưa ra mối liên hệ giữa ngõ ra và ngõ vào. Tập hợp dữ liệu thường được lấy từ những bản ghi chép trước đó.

Neural Networks sau đó được huấn luyện bằng một trong các thuật toán học có giám sát sử dụng các dữ liệu để điều chỉnh trọng số và ngưỡng của mạng sao cho cực tiểu hóa sai số trong việc dự báo của mạng trên tập huấn luyện. Nếu mạng được huấn luyện chính xác, nghĩa là nó đã học mô phỏng một hàm chưa biết với mối liên hệ giữa ngõ ra và ngõ vào, do đó với các tín hiệu vào đến sau, mạng sẽ dự báo tín hiệu ra tương ứng.

3.3.2 Ứng dụng của Neural Network:

Những mạng Neural đã được sử dụng trong một sự đa dạng của những ngành nghề khác nhau giải quyết những vấn đề trong một phạm vi rộng. Những kiểu vấn đề được giải quyết mạng bao gồm :

 Nhận dạng tiếng nói

 Nhận dạng hình ảnh

 Dự đoán thị trường chứng khoán: nếu biết giá cả chứng khoán của tuần trước và chỉ số FTSE, ta sẽ dự đoán được giá cả chứng khoán ngày mai.

 Dẫn đường robot điều khiển : ta muốn biết có hay không một robot biết quẹo phải, trái hay chuyển động về một phía để đạt được mục tiêu, ta sẽ biết được những gì robot đang quan sát.

 Nhận dạng đặc tính

 Dự đoán ngựa đua

 Điều khiển các thành phần pha chế thuốc tối ưu trong Dược khoa

 Dò vết nứt các mối hàn

 Điều khiển các quá trình gia công Cơ Khí

Về lý thuyết, những mạng Neural có thể tính toán bất kỳ hàm nào miễn là cung cấp cho nó đủ số neural lớp ẩn và bộ nhớ máy tính có thể. Trong thực hành, những mạng Neural hữu ích cho những vấn đề với một mức độ lỗi cao, mà có nhiều ví dụ, và không tồn tại giải thuật tối ưu giải quyết vấn đề.

3.3.3Mô hình một Neural nhân tạo

Neural nhân tạo nhận một số các ngõ vào từ dữ liệu gốc, hay từ ngõ ra các Neural khác trong mạng. Mỗi kết nối đến ngõ vào có một cường độ hay trọng số. Ngõ vào của Neural có thể là vô hướng hay hữu hướng. Mỗi Neural cũng có một giá trị ngưỡng. Tín hiệu được truyền qua hàm kích hoạt hay còn gọi là hàm truyền tạo giá trị ngõ ra Neural.

f

f

Hình 3.7: Neural có nhiều ngõ vào

Trong đó (1) (2) ( ) p p p p R               là ngõ vào. W = [w(1,1) w(1,2) … w(1,R)]: trọng số (1,1) (1) (1, 2) (2) ... (1, ) ( ) nw pw p  w R p R : tổng trọng số và ngưỡng f : hàm truyền a = f(W.P + b) : ngõ ra mạng

R : số ngõ vào của Neuron

Hàm truyền f có thể là các hàm: tansig, logsig, purelin, hardlim,… hay các hàm khác do người dùng định nghĩa.

Việc sử dụng hàm truyền f tuyến tính (hay phi tuyến) tùy thuộc vào quan hệ giữa ngõ vào và ngõ ra là tuyến tính (hay phi tuyến) .

Trong thực tế các Neural được kết nối với nhau. Khi mạng hoạt động, chúng phải có ngõ vào và ngõ ra. Ngõ vào và ngõ ra tương ứng với các Neural giác quan và vận động, như tín hiệu đưa vào mắt và điều khiển cánh tay. Tuy nhiên chúng còn có các Neural ẩn đóng vai trò ẩn trong mạng. Ngõ vào, Neural ẩn và ngõ ra cần được kết nối với nhau.

3.3.4Thiết lập mạng Neural

Để có thể tạo ra một mạng Neural ta phải biết trước mối liên hệ giữa ngõ vào và ngõ ra. Điều này có thể thực hiện bằng 2 cách :

Trực tiếp : bằng cách nào đó, nếu ta biết trước mối liên hệ này, thì ta sẽ làm mô hình đó trực tiếp.

Học (huấn luyện) có thể dùng 2 cách: học giám sát và không giám sát. Với cách học không giám sát, mạng không cần biết trước ngõ ra yêu cầu. Trong qua trình huấn luyện, chỉ những mẫu nhập được đưa vào mạng, thuật toán tự động điều chỉnh các trọng số kết nối với các Neural để phân chia các mẫu nhập có các đặc điểm tương tự vào chung một nhóm.

Ngược lại, việc học có giám sát đòi hỏi người giám sát phải cho biết ngõ ra yêu cầu. Trong cách học này, người sử dụng mạng phải có một tập hợp dữ liệu cần huấn luyện. Tập hợp này chứa những ngõ vào mẫu với ngõ ra tương ứng và mạng sẽ huấn luyện để đưa ra mối liên hệ giữa ngõ ra và ngõ vào. Cách huấn luyện mạng thông thường là: dùng một trong các thuật toán học có giám sát, sử dụng các dữ liệu để điều chỉnh trọng số và ngưỡng của mạng sao cho cực tiểu hóa sai số trong việc dự báo của mạng. Nếu mạng được huấn luyện chính xác, nghĩa là nó đã học mô phỏng một hàm chưa biết với mối liên hệ giữa ngõ ra và ngõ vào, thì với các tín hiệu vào đến sau, mạng sẽ dự báo tín hiệu ra tương ứng.

3.3.5Các bước chuẩn bị thiết lập mạng

Trước hết ta phải xác định được tập dữ liệu – là tập bao gồm một số các trường hợp, mỗi trường hợp chứa những giá trị của tầm ngõ vào và ngõ ra khác nhau. Sau đó xác định những biến nào sẽ sử dụng, bao nhiêu trường hợp cần thu thập.

Việc lựa chọn những biến sẽ được sử dụng thường do trực giác quyết định và phụ thuộc vào công việc chuyên môn cũng như lĩnh vực của nó. Trong Neural Networks, ta có thể chọn và loại bỏ nhiều biến hoặc xác định bằng thực nghiệm những biến hữu ích. Bước đầu, ta nên tính đến bất kì biến nào mà ta nghĩ có ảnh hưởng đến quá trình thiết kế.

Trong khi đó, số trường hợp mẫu dùng để huấn luyện mạng rất khó xác định. Đã có một vài hướng dẫn về mối liên hệ giữa số trường hợp mẫu với kích thước mạng (cách đơn giản nhất là số trường hợp mẫu gấp 10 lần số kết nối trong mạng). Thực ra số trường hợp mẫu cũng liên quan đến độ phức tạp của hàm mà mạng phải học. Khi số biến tăng lên, số trường hợp mẫu cần để huấn luyện cũng tăng phi tuyến, vì thế với một số nhỏ các biến (50 hoặc nhỏ hơn) thì lại cần một số lớn các trường hợp mẫu. Trong hầu hết các vấn đề trong thực tế, số trường hợp mẫu là khoảng hàng trăm hay hàng ngàn mẫu. Đối với những vấn đề rất phức tạp thì cần nhiều hơn, nhưng trường hợp này rất ít. Nếu dữ liệu huấn luyện ít hơn, thì sẽ không đủ thông tin để huấn luyện mạng, và cách tốt nhất là dùng mạng tuyến tính.

Sau khi thu thập xong tất cả những dữ liệu cần thiết thì ta sẽ xử lý chúng. Có 2 loại dữ liệu :

3.3.5.2 Dữ liệu số

Được chia nhỏ thành những khoảng thích hợp cho mạng và những giá trị thiếu có thể được thay thế bằng giá trị trung bình hay giá trị thống kê của biến đó thông qua những biến khác đã được huấn luyện.

Xử lý khó hơn. Loại dữ liệu không phải là số thông thường nhất là những biến có giá trị danh định như giới tính (nam, nữ). Biến có giá trị danh định có thể biểu diễn bằng số học và Neural Networks có chức năng hỗ trợ điều này. Tuy nhiên Neural Networks làm việc tốt với những trường hợp biến danh định là một tập nhiều giá trị.

3.3.5.4 Huấn luyện

Khi số các lớp, số Neuron mỗi lớp đã được chọn, trọng số và ngưỡng của mạng phải được cài đặt sao cho có được cực tiểu sai số trong việc dự đoán của mạng.

3.3.5.5 Các bước thiết kế mạng

Chọn cấu hình ban đầu : Lớp nhập, lớp ẩn và lớp xuất

Thực hiện lặp đi lặp lại số thử nghiệm của mỗi cấu hình, giữ lại mạng tốt nhất. Thử nghiệm nhiều lần trên mỗi cấu hình mạng để tránh rơi vào sai số cục bộ.

Trong mỗi lần thử nghiệm, nếu xảy ra việc học chưa đủ mạng không đạt được mức hiệu suất chấp nhận thì thử tăng số Neural trong lớp ẩn. Nếu không hiệu quả, thì thêm một lớp ẩn.

Nếu xảy ra học quá mức sai số xác minh bắt đầu tăng lên thử bỏ bớt một vài neural ẩn.

3.4 Phân loại cấu trúc mạng 3.4.1Mạng có cấu trúc tiến 3.4.1Mạng có cấu trúc tiến

Tín hiệu đi vào ở ngõ vào, qua các Neural ẩn và cuối cùng đến các Neuron ngõ ra. Cấu trúc như thế chạy ổn định.

3.4.2 Mạng có cấu trúc lan truyền ngược

3.4.2.1 Các Loại Neural (Tansig , Logsig , Purelin):

Một loại neural có R ngõ vào thể hiện như sau

Hình 3.10: Cấu tạo một Neural

Mỗi ngõ vào tương ứng với một trọng số thích hợp lí w. Tổng của các ngõ vào sau khi nhân với các trọng số tương ứng và giá trị ngưỡng sẽ trở thành ngõ vào đối với hàm truyền f. Neural dùng nhiều hàm truyền khác nhau để tính toán giá trị ngõ ra. Mạng nhiều lớp thường dùng hàm truyền log – signoid (logsig)

Hình 3.11: Hàm truyền logsig

Hàm logsig tính toán ngõ ra nằm trong khoảng 0 và 1 trong khi giá trị đầu vào là từ âm vô cực cho đến dương vô cực. Neural dùng hàm truyền logsig gọi là neural logsig

Tiếp đến, mạng nhiều lớp có thể dùng hàm truyền tan – signoid (tansig)

Neural dùng hàm truyền tansig gọi là neural tansig

Hiếm khi hàm truyền tuyến tính dùng trong mạng lan truyền ngược (thường chỉ sử dụng phổ biến trong mạng tuyến tính)

Hình 3.13: Hàm truyền pureline (tuyến tính) Neural dùng hàm truyền tuyến tính gọi là neural pureline

Nếu lớp cuối cùng dùng hàm truyền signoid ( neural logsig và tansig thì ngõ ra chỉ giới hạn trong một khoảng nhỏ . Còn nếu neural tuyến tính được dùng thì ngõ ra chỉ lấy một vài giá trị )

3.4.2.2 Cấu trúc các lớp trong mạng lan truyền ngược:

Mạng một lớp với S neural logsig có R ngõ vào được thể hiện theo hình bên trái, còn bên phải là sơ đồ khối các lớp

Hình 3.14: Cấu trúc mạng một lớp S : số neural trong một lớp

R : số ngõ vào

Mạng lan truyền ngược với các neural có hàm truyền đạt phi tuyến cho phép nơron học được những mối liên quan tuyến tính và phi tuyến

giữa ngõ vào và ngõ ra. Nếu giới hạn ngõ ra trong khoảng 0 đến 1 thì nên dùng hàm sigmoid.

Mô hình một mạng hai lớp như sau:

Hình 3.15: Mạng 2 lớp dùng Neural tagsig và pureline

Mạng này nói chung có thể xấp xỉ một hàm bất kì nào . Mạng có thể xấp xỉ bất kì một hàm nào với một số điểm gián đoạn tương đối tốt khi có đủ số neural trong lớp ẩn

3.4.2.3 Huấn luyện cho mạng lan truyền ngược:

Mạng được huấn luyện để xấp xỉ một hàm phi tuyến, một mô hình liên kết hay phân lớp. Trong suốt quá trình huấn luyện, các trọng số và các giá trị ngưỡng sẽ được điều chỉnh một cách hợp lí để làm tối thiểu giá trị hàm lỗi của mạng. Hàm lỗi mặc định cho mạng lan truyền ngược là trung bình bình phương lỗi (mean square error hay mse) – lỗi trung bình bình phương giữa ngõ ra thực tế và ngõ ra tính toán được. Sau đây là một vài thuật toán huấn luyện cho mạng lan truyền ngược . Tất cả các thuật toán này đều dùng độ dốc (gradient) của hàm lỗi để điều chỉnh các trọng số sao cho tối thiểu hàm lỗi. Độ dốc được tính toán dựavào một kĩ thuật gọi là lan truyền ngược.

3.4.2.4 Nguyên lý chung:

Nếu gọi ( )w là hàm lỗi và w* là trọng số tối ưu cần tìm thì: *

( )w ( )w

Để tìm được giá trị nhỏ nhất của hàm ( )w hay trọng số tối ưu w*, ta tiến hành lấy đạo hàm hàm lỗi thông qua phép gradient. Và ta sẽ có

* ( ) 0w   Đặt 1 2 , ,..., T N w w w               là toán tử gradient ( )w

  là vector gradient của hàm lỗi. Nguyên lý chung của việc tìm ra trọng số tối ưu là:

 Khởi tạo trọng ban đầu w(0).

 Lặp tìm trọng số thứ n, w(n) sao cho ( ( ))w n( (w n1))

3.4.2.5 Vấn đề quá khớp và năng lực của mạng:

Một trong những vấn đề thường xảy ra trong suốt quá trình huấn luyện mạng là quá khớp. Sai số trong tập huấn luyện được kéo xuống rất bé, nhưng khi đưa dữ liệu mới vào thì mạng lại tạo sai số lớn. Mạng có nhớ được các mẫu huấn luyện, nhưng mạng không học được tính tổng quát hóa trường hợp mới.

Mạng Neural có càng nhiều trọng số thì hàm càng phức tạp và do đó sẽ rơi vào tình trạng khớp quá mức. Mạng có ít trọng số hơn sẽ không đủ khả năng để mô phỏng hàm cơ sở. Ví dụ như mạng không có các lớp ẩn chỉ mô phỏng hàm truyền tuyến tính đơn giản.

Vậy chúng ta sẽ chọn lựa độ phức tạp của mạng đúng như thế nào? Mạng lớn hơn sẽ hầu như luôn luôn có được sai số nhỏ hơn, nhưng điều này có thể là khớp quá mức hơn là một mô hình tốt.

Câu trả lời là sử dụng xác nhận mức giao. Vài mẫu huấn luyện được lưu lại và không thực sự dùng cho huấn luyện trong thuật toán backpropagation. Để thay thế, những mẫu này được sử dụng để kiểm tra độc lập trong quá trình của thuật toán. Như vậy hiệu suất ban đầu của mạng luôn luôn bằng nhau ở những tập huấn luyện và xác minh lại. Trong quá trình huấn luyện, sai số huấn luyện tự nhiên giảm xuống, và

cho phép huấn luyện cực tiểu hóa hàm sai số thực, sai số xác minh cũng giảm xuống. Tuy nhiên, nếu sai số xác minh không giảm, hay bắt đầu tăng lên, điều này có nghĩa là mạng bắt đầu khớp quá mức dữ liệu, và huấn luyện nên dừng lại. Trường hợp khớp quá mức xảy ra trong quá trình xử lý huấn luyện gọi là học quá mức. Trong trường hợp này, chúng ta nên giảm số neural ẩn hay lớp ẩn vì mạng quá mạnh đối với vấn đề này. Ngược lại, nếu mạng không đủ mạnh để mô phỏng hàm cơ sở, học quá mức không có khả năng xảy ra, cũng như sai số huấn luyện hay xác minh lại không rơi vào mức bão hòa.

Những vấn đề liên quan đến cực tiểu cục bộ, và những quyết định

Một phần của tài liệu NGHIÊN CỨU GIẢI PHÁP NHẬN DẠNG BIỂN SỐ XE TRÊN CƠ SỞ CÔNG NGHỆ XỬ LÝ ẢNH (Trang 61 - 101)