Tổng quan về Mạng Neuron (Neural Network)



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).

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 tổng quát của một ANN như sau



Processing Elements (PE): Các PE của ANN gọi là Neuron, mỗi Nueron 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


Kiến trúc chung của một ANN gồm 3 thành phần đó là Input Layer, Hidden Layer vàOutput Layer (Xem hình trên)


Trong đó, lớp ẩn (Hidden Layer) gồm các Neuron, nhận dữ liệu input từ các Nueron ở 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 Hidden Layer.


Quá trình xử lý thông tin của một ANN



Inputs: Mỗi Input tương ứng với 1 thuộc tính (attribute) của dữ liệu (patterns). Ví dụ như trong ứng dụng của ngân hàng xem xét có chấp nhận cho khách hàng vay tiền hay không thì mỗi Input là một thuộc tính của khách hàng như thu nhập, nghề nghiệp, tuổi, số con,…


Output: Kết quả của một ANN là một giải pháp cho một vấn đề, ví dụ như với bài toán xem xét chấp nhận cho khách hàng vay tiền hay không thì output là yes (cho vay) hoặc no (không cho vay).


Connection Weights (Trọng số liên kết) : Đây là thành phần rất quan trọng của một ANN, nó thể hiện mức độ quan trọng (độ mạnh) của dữ liệu đầu vào đối với quá trình xử lý thông tin (quá trình chuyển đổi dữ liệu từ Layer này sang layer khác). Quá trình học (Learning Processing) của ANN thực ra là quá trình điều chỉnh các trọng số (Weight) của các input data để có được kết quả mong muốn.


Summation Function (Hàm tổng): Tính tổng trọng số của tất cả các input được đưa vào mỗi Neuron (phần tử xử lý PE). Hàm tổng của một Neuron đối với n input được tính theo công thức sau:



Hàm tổng đối với nhiều Neurons trong cùng một Layer (Xem hình b):






Transformation (Transfer) Function (Hàm chuyển đổi)


Hàm tổng (Summation Function) của một Neuron cho biết khả năng kích hoạt (Activation) của neuron đó còn gọi là kích hoạt bên trong (internal activation). Các Nueron này có thể sinh ra một output hoặc không trong ANN (nói cách khác rằng có thể output của 1 Neuron có thể được chuyển đến layer tiếp trong mạng Neuron theo hoặc không). Mối quan hệ giữa Internal Activation và kết quả (output) được thể hiện bằng hàm chuyển đổi (Transfer Function).



Việc lựa chọn Transfer Function có tác động lớn đến kết quả của ANN. Hàm chuyển đổi phi tuyến được sử dụng phổ biến trong ANN là sigmoid (logical activation) function.



Trong đó :

YT: Hàm chuyển đổi

Y: Hàm tổng


Kết quả của Sigmoid Function thuộc khoảng [0,1] nên còn gọi là hàm chuẩn hóa (Normalized Function).


Kết quả xử lý tại các Neuron (Output) đôi khi rất lớn, vì vậy transfer function được sử dụng để xử lý output này trước khi chuyển đến layer tiếp theo. Đôi khi thay vì sử dụng Transfer Function người ta sử dụng giá trị ngưỡng (Threshold value) để kiểm soát các output của các neuron tại một layer nào đó trước khi chuyển các output này đến các Layer tiếp theo. Nếu output của một neuron nào đó nhỏ hơn Threshold thì nó sẻ không được chuyển đến Layer tiếp theo.

Một số kiến trúc của ANN












Quá trình học (Learning Processing) của ANN

ANN được huấn luyện (Training) hay được học (Learning) theo 2 kỹ thuật cơ bản đó là học có giám sát (Supervised Learning) và học không giám sát (Unsupervised Learning).

Supervised learning: Quá trình Training được lặp lại cho đến kết quả (output) của ANN đạt được giá trị mong muốn (Desired value) đã biết. Điển hình cho kỹ thuật này là mạng Neuron lan truyền ngược (Backpropagation).

Unsupervised learning: Không sử dụng tri thức bên ngoài trong quá trình học (Learning), nên còn gọi là tự tổ chức (Self – Organizing). Mạng Neuron điển hình được huấn luyện theo kiểu Unsupervised là Sefl – Organizing Map (SOM).


Sau đây là phân loại các thuật toán Learning và kiến trúc của ANN




Nguyên tắc huấn luyện (Training protocols)


Mạng Neuron có 3 cách huấn luyện chính đó là batch training, stochastic training vàon-line training. Đối với on-line training thì các trọng số của mạng (weights) được cập nhật ngay lập tức sau khi một input pattern được đưa vào mạng. Stohastic trainingcũng giống như on-line training nhưng việc chọn các input patterns để đưa vào mạng từ training set được thực hiện ngẫu nhiên (random). Batch training thì tất cả các input patterns được đưa vào mạng cùng lúc và sau đó cập nhật các trọng số mạng đồng thời. Ưu điểm của on-line training là tiết kiệm bộ nhớ vì không cần lưu lại số lượng lớn các input patterns trong bộ nhớ.


Trong quá trình huấn luyện mạng, thuật ngữ “epoch” được dùng để mô tả quá trình khi tất cả các input patterns của training set được đưa để huấn luyện mạng. Nói cách khách 1 epoch được hoàn thành khi tất cả các dữ liệu trong training set được đưa vào huấn luyện mạng. Vì vậy số lượng “epoch” xác định số lần mạng được huấn luyện (hay số lần đưa tất cả các dữ liệu trong training set vào mạng).

Bài viết này chủ yếu giới thiệu về quá trình huấn luyện ANN theo kỹ thuật Supervised learning.

Quá trình học của Supervised ANN được mô tả như sau:

1.Tính giá trị output .
2. So sánh output với giá trị mong muốn (desired value).
3. Nếu chưa đạt được giá trị mong muốn thì hiệu chỉnh trọng số (weights) và tính lại output




Giả sử sau khi tính toán từ các input value đã cho, ta có output là Y. Giá trị mong muốn (Desired) là Z đã biết trước. Sự chênh lệch giữa Y và kết quả mong muốn Z được biểu diễn bởi tham số delta (gọi là lỗi) = Z-Y. Mục đích của việc Learning là làm sao cho delta càng nhỏ càng tốt (Nếu delta =0 là hoàn hảo nhất) bằng cách điều chỉnh trọng số (weights) của các dữ liệu vào.



Để dễ hình dung, sau đây minh họa việc huấn luyện một ANN đơn giản gồm 1 Neuron học để thực hiện phép toán Logic OR giữa 2 input là 2 toán hạng X1 và X2. Nếu một trong 2 input là positive (1) thì kết quả là Positive. Kiến trúc ANN như sau :






Các Input patterns và Desired value như sau:


Neuron phải được huấn luyện để nhận biết các dữ liệu vào (input pattern) ở đây là một bộ gồm 2 giá trị X1 và X2 (trong ví dụ trên có 4 bộ dữ liệu ) và phân loại chúng vào các kết quả đã biết (Desired Results)


Quá trình học được diễn ra như sau:


4 Input patterns được lần lượt đưa vào Neuron, các trọng số ban đầu được khởi tạo ngẫu nhiên và được điều chỉnh sau mỗi vòng lặp. Bước này lặp lại cho đến khi các trọng số hội tụ đến tập các giá trị cho phép ANN phân loại chính xác 4 input patterns. Kết quả của quá trình Training ANN được minh họa bằng Excel như dưới đây (Download File Excel tại đây):




Trong ví dụ này giá trị ngưỡng (Threshold) để đánh giá hàm tổng của các input là 0.5. Sau khi tính toán các output (Y), và sử dụng Desired Result (Z) để tính toán lỗi delta và delta được sử dụng để cập nhật trọng số của các input: delta = Zj-Yj 


Hiệu chỉnh trọng số: Wi(final) = Wi(initial) + alpha*delta*Xi

Trong đó alpha là tham số kiểm soát tốc độ học của ANN gọi là Learning rate. Việc chọn tham số Learning rate phù hợp (làm tăng độ chính xác) là vấn đề rất quan trọng khi triển khai ANN.

Các công thức thực hiện trong Excel:

Tính giá trị Output (Y) =IF((B3*E3+C3*F3)>0.5,1,0)

Tính lỗi (delta) =D3-G3

Cập nhật trọng số W1 =E3+0.2*H3*B3

Cập nhật trọng số W2 =F3+0.2*C3*H3

Trong ví dụ này, quá trình huấn luyện ANN lặp lại 4 lần thì các trọng số hội tụ và ANN phân loại chính xác các input patterns tương ứng với phép toán Logic OR.

Tác giả: Nguyễn Văn Chức – chucnv@ud.edu.vn