55
Ứng dụng mạng nơ ron trong điều khiển Trong bài này tôi xin trao đổi một số chủ đề tản mạn về mạng nơ ron và ứng dụng trong điều khiển. Hiện nay có nhiều sách và tài liệu bằng tiếng Anh viết về lý thuyết mạng nơ ron, nhưng có lẽ sách và tài tiếng Việt còn khá ít. Các bạn có thể tìm đọc tóm tắt lý thuyết mạng nơ ron trong mục 10.3 Hệ thống điều khiển mạng nơ ron, Chương 10 Thiết kế hệ thống điều khiển thông minh trong cuốn Công nghệ điều khiển tiên tiến của tác giả Roland S. Burns. Muốn thiết kế được hệ điều khiển dùng mạng nơ ron, trước hết chúng ta cần hiểu được nguyên lý của mạng nơ ron. Chúng ta hãy xét một mạng nơ ron đơn giản gồm ba lớp: lớp vào (input layer) có 2 nơ ron, lớp ẩn (hidden layer) có 3 nơ ron và lớp ra (output layer) có một nơ ron như được minh họa trong hình sau (xem thêm Ví dụ 10.4 trong 10.3 Hệ thống điều khiển mạng nơ ron): Hình 1: Mạng nơ ron có ba lớp Giả thiết rằng mạng nơ ron này được huấn luyện dùng thuật toán lan truyền ngược (BPA). Tín hiệu vào lần lượt có giá trị 0.2 và 0.6 và đầu ra mong muốn = 1. Các trọng lượng ( ) và sai lệch ( ) được cho như sau: Lớp ẩn (l=1): Lớp ra (l=2):

Ứng dụng mạng nơ ron trong điều khiển

Embed Size (px)

Citation preview

Page 1: Ứng dụng mạng nơ ron trong điều khiển

Ứng dụng mạng nơ ron trong điều khiển

Trong bài này tôi xin trao đổi một số chủ đề tản mạn về mạng nơ ron và ứng dụng trong điều khiển. Hiện nay có nhiều sách và tài liệu bằng tiếng Anh viết về lý thuyết mạng nơ ron, nhưng có lẽ sách và tài tiếng Việt còn khá ít. Các bạn có thể tìm đọc tóm tắt lý thuyết mạng nơ ron trong mục 10.3 Hệ thống điều khiển mạng nơ ron, Chương 10 Thiết kế hệ thống điều khiển thông minh trong cuốn Công nghệ điều khiển tiên tiến của tác giả Roland S. Burns.

Muốn thiết kế được hệ điều khiển dùng mạng nơ ron, trước hết chúng ta cần hiểu được nguyên lý của mạng nơ ron. Chúng ta hãy xét một mạng nơ ron đơn giản gồm ba lớp: lớp vào (input layer) có 2 nơ ron, lớp ẩn (hidden layer) có 3 nơ ron và lớp ra (output layer) có một nơ ron như được minh họa trong hình sau (xem thêm Ví dụ 10.4 trong 10.3 Hệ thống điều khiển mạng nơ ron):

Hình 1: Mạng nơ ron có ba lớp

Giả thiết rằng mạng nơ ron này được huấn luyện dùng thuật toán lan truyền ngược (BPA). Tín hiệu vào và

lần lượt có giá trị 0.2 và 0.6 và đầu ra mong muốn = 1. Các trọng lượng ( ) và sai lệch ( ) được cho như sau:

Lớp ẩn (l=1):

Lớp ra (l=2):

Sử dụng MATLAB (không dùng Neural Network Toolbox), hãy tính đầu ra và từ đó tính các giá trị mới cho các trọng lượng và sai lệch. Giả thiết là tốc độ học tập là = 0.5 và hàm kích hoạt sigmoid có dạng sau:

Page 2: Ứng dụng mạng nơ ron trong điều khiển

--Giải--

Lan truyền thẳng

Lớp ẩn (l = 1): Tổng nơ ron đơn:

hoặc:

(1)

Các hàm kích hoạt sigmoid (j = 1 to 3):

(2)

Lớp đầu ra (l = 2):

(3)

(4)

Nhập các giá trị vào các phương trình (1) và (2):

Page 3: Ứng dụng mạng nơ ron trong điều khiển

Nhập các giá trị vào phương trình (3) và (4):

(5)

Lan truyền ngược

Lớp đầu ra (l = 2): Sử dụng phương trình sau:

Vì j = 1 nên:

(6)

Quy tắc đen ta:

Trọng lượng và sai lệch mới cho lớp đầu ra:

(7)

Lớp ẩn (l = 1): Sử dụng phương trình sau:

Để minh họa phương trình này, nếu có hai nơ ron trong lớp (l + 1), nghĩa là lớp đầu ra, thì những giá trị và

cho lớp (l + 1) đã có thể được tính. Vì vậy, đối với lớp l (lớp ẩn), những giá trị là:

j = 1:

j = 2:

j = 3:

Tuy nhiên, vì trong ví dụ này chỉ có một nơ ron đơn trong lớp (l + 1), . Do vậy những giá trị cho lớp l

Page 4: Ứng dụng mạng nơ ron trong điều khiển

là:

j = 1:

j = 2: (8)

j = 3:

Vì vậy, sử dụng quy tắc đen ta, số gia trọng lượng cho lớp ẩn là:

Trọng lượng mới và sai lệch mới cho lớp ẩn bây giờ trở thành:

(9)

Từ các tính toán trên, chúng ta có thể sử dụng các lệnh MATLAB để tính các trọng lượng và sai lệch cho các lớp như sau:

matlab code

1.  2. % Vidu01.m3.  4. x = [0.2;0.6];5. Wi = [1.0 1.5;0.5 2.0;2.5 3.0];6. bhj = [1.0;-0.5;1.5];7. Wj = [3.0 2.0 1.0];8. boj = -4;9. dj = 1;10. eta = 0.5; % learning rate11.  12. % Calculate yj and new values for the weights and bias, assuming that13. % learning rate eta = 0.514. % Forward propagation:15. %L = 1;16.  17. s = Wi*x + bhj18.  

Page 5: Ứng dụng mạng nơ ron trong điều khiển

19. y = 1./(1+exp(-s))20.  21. s1 = Wj*y+boj22.  23. y1 = 1./(1+exp(-s1))24.  25. % Back propagation26.  27. del=y1*(1-y1)*(dj-y1)28.  29. % Delta rule:30. xx = [1;y]31. delw = eta*del*xx32. newWj = Wj+delw(2:4)'33. newboj = boj+delw(1)34.  35. % Hidden layer36. delh = (y.*(1-y)).*(newWj'*del)37.  38. newxx = [1;x]39.  40. % Using the delta rul, the weight increments for hidden layer41. % are calculated by:42.  43. Delhw = eta*delh*newxx'44.  45. % New weights and biases for the hidden layer:46.  47. newWi = Wi+[Delhw(2,:)' Delhw(3,:)']48. newbhj = bhj + Delhw(1,:)'49.  

Kết quả tính trọng lượng và sai lệch cho lớp ẩn là:

matlab code

1.  2. newWi =3. 1.0110 1.50064. 0.5022 2.00015. 2.5066 3.00036.  7. newbhj =8. 1.00759. -0.498510. 1.504511.  

--Chú ý:-- Chương trình MATLAB ở trên chỉ minh họa các bước tính cho mô hình mạng nơ ron cụ thể ở trên. Để lập chương trình cho một mạng nơ ron tổng quát chúng ta cần phải lập các hàm cần thiết cho thuật toán mạng nơ ron. Nếu sử dụng Neural Network Toolbox trong MATLAB chúng ta có các công cụ để lập các

Page 6: Ứng dụng mạng nơ ron trong điều khiển

chương trình mô phỏng mạng nơ ron. Nếu bạn có Neural Network Toolbox hãy dùng lệnh sau xem chi tiết về hộp công cụ này của MATLAB:

matlab code

1.  2. >> help nnet3.  

Qua ví dụ này, chúng ta có thể tóm tắt thuật toán mạng nơ ron sử dụng thuật lan truyền ngược như sau:

--Bước 1-- Tổng nơ ron đơn:

(10)

--Bước 2-- Hàm kích hoạt sigmoid:

(11)

--Bước 3-- Quy tắc đen ta:

(12)

--Bước 4-- Trọng lượng mới:

(13)

--Bước 5-- Lớp đầu ra:

(14)

(15)

--Bước 6-- Các lớp khác:(16)

Quá trình tiếp diễn cho đến khi thỏa mãn một điều kiện nào đó, ví dụ (theo Burns, 2001):

(i) chỉ số đặc tính J đạt tới giá trị thấp chấp nhận được

Page 7: Ứng dụng mạng nơ ron trong điều khiển

(ii) một số đếm lặp cực đại (số các epochs) được vượt quá

(iii) một chu kỳ (khoảng, period) thời gian huấn luyện (rèn luyện) được vượt quá.

Đối với (ii) hoặc (iii) có thể định vị được các điểm cực tiểu cục bộ. Theo những điều kiện này thì BPA có thể sẽ tái bắt đầu, và nếu lại không thành công, có thể cần một tập hợp rèn luyện (training) mới.

Các hàm kích hoạt (activation functions) có thể sử dụng là:

1. Giới hạn cứng (hard limiting) (bậc thang đơn vị, unit step)2. Tuyến tính (linear) (tăng đều, ramp)3. Tang hyperbolic (hyperbolic tangent)4. Sigmoid hoặc log-sigmoid

Ứng mạng nơ ron trong điều khiển

Bây giờ chúng ta hãy thử làm thêm hai bài tập đơn giản sau (trích từ cuốn Công nghệ điều khiển tiên tiến ở trên).

==Bài tập 1==Một mạng nơ ron có cấu trúc như trong sau. Giả thiết rằng tất cả các hàm kích hoạt là sigmoids, tính các giá trị

và khi các đầu vào là:

(a) , (b) ,

Page 8: Ứng dụng mạng nơ ron trong điều khiển

Hình 1: Cấu trúc mạng nơ ron cho Bài tập 1

khi trọng lượng và sai lệch là:

Lớp ẩn,

Lớp ra

,

--Trả lời--

(a) ,

(b) ,

--Giải--Có nhiều cách biểu diễn mạng nơ ron. Để giải bài tập này tôi thử vẽ lại mô hình mạng nơ ron như trong hình sau có thể sẽ thấy dễ hiểu hơn:

Page 9: Ứng dụng mạng nơ ron trong điều khiển

Hình 2: Mạng nơ ron có hai lớp: hai đầu vào, lớp 1 (ẩn) có 3 nơ ron, lớp 2 (ra) có hai nơ ron

Trong hình: là véc tơ đầu vào, là ma trận trọng lượng lớp 1 (ẩn), là véc tơ sai lệch lớp 1 (ẩn), các

hàm kích hoạt lớp 1 (ẩn), là véc tơ đầu ra của lớp 1 (ẩn) và cũng là đầu vào của lớp 2 (ra), ma trận

trọng lượng lớp 2 (ra), véc tơ sai lệch lớp 2 (ra), các hàm kích hoạt lớp 2 (ra) và là véc tơ đầu ra của lớp 2 (ra).

Bài tập này chính là tính giá trị đầu ra cho mạng nơ ron truyền thẳng. Sử dụng công thức ở trên cho hai lớp, chúng ta tính như sau:

matlab code

1.  2. % Baitap01.m3.  4. %x = [0.3;0.5];5. x = [0.9;0.1]6. W1 = [1.0 2;3 3;2 1];7. b1 = [2.0;-2;1];8. W2 = [-3 -2 1;1 2 3];9. b2 = [3;-3];10. % desired outputs and learning rate:11. %d = [0;1];12. %eta = 0.5;13.  14. % Forward propagation:15.  16. s1 = W1*x + b117.  18. y1 = 1./(1+exp(-s1))19.  20. s2 = W2*y1+b221.  22. y2 = 1./(1+exp(-s2))23.  

Page 10: Ứng dụng mạng nơ ron trong điều khiển

kết quả tính được:

a) tín hiệu vào là: matlab code

1.  2. x = [0.3;0.5];3.  

thì

matlab code

1.  2. y2 =3. 0.45024. 0.86235.  

b) tín hiệu vào là:

matlab code

1.  2. x = [0.9;0.1];3.  

thì matlab code

1.  2. y2 =3. 0.40494. 0.90575.  

Chúng ta đã có kết quả giống với đáp số. Đến đây chúng ta hãy nghĩ thêm nếu bây giờ đặt mạng nơ ron này vào làm một phần tử của một hệ thống nào đó và tín hiệu đầu vào liên tục (là một chuỗi) thì chúng ta sẽ cần phải lập chương trình như thế nào?

Bài tập sau sẽ minh họa thuật toán lan truyền ngược cho mạng nơ ron trong Bài tập 1.

Page 11: Ứng dụng mạng nơ ron trong điều khiển

==Bài tập 2==Trong Bài tập 1(b), nếu các giá trị mục tiêu cho đầu ra là , và , tính các giá trị mới cho trọng lượng và sai lệch sử dụng thuật toán lan truyền ngược. Giả thiết rằng tốc độ học tập 0.5 không có số hạng động lượng.

--Trả lời--Lớp ra:

,

,

Lớp ẩn:

, và

,

Các bạn hãy sử dụng máy tính tay (calculator) và giấy nháp để giải hai bài tập trên và sau đó dùng MATLAB cho ra cùng kết quả thì tôi tin rằng các bạn đã hiểu được mạng nơ ron. Và sau khi đã hiểu được mạng nơ ron ở trên, các bạn hãy làm tiếp bài tập sau (Bài tập 3) hơi phức tạp hơn một chút. Làm bài tập sau là trang bị thêm hành trang để tiến tới thiết kế một bộ điều khiển mạng nơ ron đơn giản cho một đối tượng nào đó.

--Giải (BT2)--Để cập nhật các ma trận trọng lượng và sai lệch thuật bằng thuật toán lan truyền ngược người ta có thể sử dụng một phương pháp tối ưu (ví dụ sai số bình phương nhỏ nhất). Thuật lan truyền ngược dùng để huấn luyện mạng nơ ron, nói nôm na là điều chỉnh các ma trận trọng lượng và sai lệch trong các lớp. Thuật toán lan truyền (sử dụng phương pháp sai số bình phương nhỏ nhất, hay theo Burns (2001) là phương pháp tối ưu hóa gradient giảm (gradient-descent optimization method), thông qua Quy tắc Delta với tốc độ học tập và hàm kích hoạt sigmoid) được minh họa trong hình sau:

Page 12: Ứng dụng mạng nơ ron trong điều khiển

Hình 3: Minh họa thuật toán lan truyền ngược cho mạng nơ ron

Sơ đồ khối biểu diễn tương đương như sau:

Hình 4: Minh họa thuật toán lan truyền ngược cho mạng nơ ron

Các bước tính toán như sau:

matlab code

Page 13: Ứng dụng mạng nơ ron trong điều khiển

1.  2. % Baitap02.m3.  4. %x = [0.3;0.5];5. x = [0.9;0.1];6. W1 = [1.0 2;3 3;2 1];7. b1 = [2.0;-2;1];8. W2 = [-3 -2 1;1 2 3];9. b2 = [3;-3];10. % desired outputs and learning rate:11. d = [0;1];12. eta = 0.5;13.  14. % Forward propagation:15.  16. s1 = W1*x + b117.  18. y1 = 1./(1+exp(-s1))19.  20. s2 = W2*y1+b221.  22. y2 = 1./(1+exp(-s2))23.  24. % Back propagation algorithm:25. % Output layer:26. e = y2.*(1-y2).*(d-y2)27. Dw2 = (eta.*e)*y1'28. W2new = W2+Dw229. Db2 = (eta.*e).*[1;1]30. b2new = Db2+b231.  32. % Hidden layer:33. e1 = (y1.*(1-y1)).*(W2new'*e)34. Dw1=(eta.*e1)*x'35. W1new = W1+Dw136. Db1 = (eta.*e1).*[1;1;1]37. b1new = Db1+b138.  

với đầu vào (trường hợp (b) trong Bài tập 1):

matlab code

1.  2. x = [0.9;0.1];3.  

thu được kết quả:

--Lớp ra (2):--Sai số:

Page 14: Ứng dụng mạng nơ ron trong điều khiển

matlab code

1.  2. e =3. -0.09764. 0.00805.  

Ma trận trọng lượng và sai lệch mới của lớp ra: matlab code

1.  2. W2new =3. -3.0467 -2.0357 0.95384. 1.0039 2.0029 3.00385.  6. b2new =7. 2.95128. -2.99609.  

--Lớp ẩn (1):--Sai số: matlab code

1.  2. e1 =3. 0.01264. 0.04225. -0.00346.  

Ma trận trọng lượng và sai lệch mới của lớp ẩn: matlab code

1.  2. W1new =3. 1.0057 2.00064. 3.0190 3.00215. 1.9985 0.99986.  7. b1new =8. 2.00639. -1.978910. 0.998311.  

Page 15: Ứng dụng mạng nơ ron trong điều khiển

Chú ý: Kết quả cho lớp ẩn hơi khác so với đáp số (Burns 2001) một chút, tôi nghĩ có thể do phép làm tròn, nếu do nguyên nhân khác thì chưa tìm ra!

Bây giờ các bạn hãy hình dung mạng nơ ron trong hai bài tập này nhận các tín hiệu vào liên tục chúng ta sẽ có một mạng nơ ron được huấn luyện để nó thực hiện một nhiệm vụ thỏa mãn một yêu cầu nào đó... và cho đến đây, tôi tin chắc các bạn ít nhất đã có chút khái niệm về ý tưởng của mạng nơ ron nhân tạo! Bạn hãy tiếp tục làm thêm Bài tập số 3 hơi phức tạp hơn ở dưới, và sau đó hãy thử ứng dụng thiết kế một bộ điều khiển sử dụng mạng nơ ron xem sao.

Các bạn có Hộp công cụ mạng nơ ron (Neural Networks Toolbox, NNT) trong MATLAB hãy thử dùng và kiểm tra kết quả của hai bài tập trên xem sao. Bạn có thể đọc được Hướng dẫn sử dụng NNT có trong hệ thống trợ giúp trực tuyến (online help) của MATLAB hoặc ở đây.

==Bài tập 3==Cho một mạng nơ ron gồm ba lớp: lớp vào, lớp ẩn và lớp ra. Lớp vào có 5 nơ ron, lớp ẩn có 10 nơ ron và lớp ra có 2 nơ ron như trong hình sau.

Hình 1: Mạng nơ ron có ba lớp cho Bài tập 3

Số nơ ron lớp vào = 5Số nơ ron lớp ẩn = 10Số nơ ron lớp ra = 2Tổng số kiểu mẫu tín hiệu vào = 32Hàm kích hoạt f(s) là hàm sigmoidChỉ số đặc tính (performance index) (tổng bình phương sai số):

Page 16: Ứng dụng mạng nơ ron trong điều khiển

được đánh giá thỏa mãn điều kiện J <= tol = 0.1 trong quá trình huấn luyện.

Các trọng lượng (weights) và sai lệch (biases, cũng có tài liệu gọi là ngưỡng, thresholds):

Lớp ẩn: matlab code

1.  2. W1 =3. 0.5102 0.7140 0.5152 0.6059 0.96674. 0.8221 0.3178 0.5877 0.1302 0.25445. 0.8030 0.6678 0.0136 0.5616 0.45466. 0.9049 0.2822 0.0650 0.4766 0.98377. 0.9223 0.5612 0.6523 0.7727 0.10628. 0.0011 0.5418 0.0069 0.4513 0.19579. 0.7871 0.6186 0.0155 0.8909 0.761710. 0.9070 0.7586 0.3807 0.3311 0.504111. 0.5646 0.7672 0.7799 0.4841 0.802212. 0.4710 0.2028 0.5796 0.6665 0.676813.  

Chú ý: W1 được chọn ngẫu nhiên sử dụng một hàm ngẫu nhiên (eg. rand trong MATLAB): W1=WD*rand (WD là một hệ số tự chọn WD).

matlab code

1.  2. b1 =3. 0.90004. 0.90005. 0.90006. 0.90007. 0.90008. 0.90009. 0.900010. 0.900011. 0.900012. 0.900013.  

Lớp ra:

matlab code

Page 17: Ứng dụng mạng nơ ron trong điều khiển

1.  2. W2 =3. 0.9425 0.7701 0.7374 0.8663 0.9909 0.5039 0.6291 0.7926 0.4486 0.52444. 0.1715 0.1307 0.2188 0.1055 0.1414 0.4570 0.7881 0.2811 0.2248 0.90895.  

Chú ý: cũng giống như trên, W2 được tính bằng một hàm ngẫu nhiên, nghĩa là W2=WD*rand (WD tự chọn).

matlab code

1.  2. b2 =3. 0.90004. 0.90005.  

1. Sử dụng 32 kiểu mẫu khác nhau và thuật toán lan truyền ngược hãy lập chương trình huấn luyện cho mạng nơ ron trên cho đến khi chỉ số đặc tính đạt tới giá trị nhỏ hơn tol = 0.1 thì dừng chương trình (eg. số lần lặp N = 10000). Vẽ đồ thị chỉ số và số lần lặp (có thể dùng semilogy trong MATLAB). Dùng dữ liệu ban đầu sau:

Tín hiệu vào: matlab code

1.  2. x =3. 0.1000 0.1000 0.1000 0.1000 0.10004. 0.1000 0.1000 0.1000 0.1000 0.90005. 0.1000 0.1000 0.1000 0.9000 0.10006. 0.1000 0.1000 0.1000 0.9000 0.90007. 0.1000 0.1000 0.9000 0.1000 0.10008. 0.1000 0.1000 0.9000 0.1000 0.90009. 0.1000 0.1000 0.9000 0.9000 0.100010. 0.1000 0.1000 0.9000 0.9000 0.900011. 0.1000 0.9000 0.1000 0.1000 0.100012. 0.1000 0.9000 0.1000 0.1000 0.900013. 0.1000 0.9000 0.1000 0.9000 0.100014. 0.1000 0.9000 0.1000 0.9000 0.900015. 0.1000 0.9000 0.9000 0.1000 0.100016. 0.1000 0.9000 0.9000 0.1000 0.900017. 0.1000 0.9000 0.9000 0.9000 0.100018. 0.1000 0.9000 0.9000 0.9000 0.900019. 0.9000 0.1000 0.1000 0.1000 0.100020. 0.9000 0.1000 0.1000 0.1000 0.900021. 0.9000 0.1000 0.1000 0.9000 0.100022. 0.9000 0.1000 0.1000 0.9000 0.900023. 0.9000 0.1000 0.9000 0.1000 0.100024. 0.9000 0.1000 0.9000 0.1000 0.900025. 0.9000 0.1000 0.9000 0.9000 0.100026. 0.9000 0.1000 0.9000 0.9000 0.900027. 0.9000 0.9000 0.1000 0.1000 0.1000

Page 18: Ứng dụng mạng nơ ron trong điều khiển

28. 0.9000 0.9000 0.1000 0.1000 0.900029. 0.9000 0.9000 0.1000 0.9000 0.100030. 0.9000 0.9000 0.1000 0.9000 0.900031. 0.9000 0.9000 0.9000 0.1000 0.100032. 0.9000 0.9000 0.9000 0.1000 0.900033. 0.9000 0.9000 0.9000 0.9000 0.100034. 0.9000 0.9000 0.9000 0.9000 0.900035.  

Tín hiệu ra mong muốn: matlab code

1.  2. d = transpose of3. 0.1000 0.90004. 0.1000 0.90005. 0.1000 0.90006. 0.1000 0.90007. 0.1000 0.90008. 0.1000 0.90009. 0.1000 0.900010. 0.9000 0.100011. 0.1000 0.900012. 0.1000 0.900013. 0.1000 0.900014. 0.9000 0.100015. 0.1000 0.900016. 0.9000 0.100017. 0.9000 0.100018. 0.9000 0.100019. 0.1000 0.900020. 0.1000 0.900021. 0.1000 0.900022. 0.9000 0.100023. 0.1000 0.900024. 0.9000 0.100025. 0.9000 0.100026. 0.9000 0.100027. 0.1000 0.900028. 0.9000 0.100029. 0.9000 0.100030. 0.9000 0.100031. 0.9000 0.100032. 0.9000 0.100033. 0.9000 0.100034. 0.9000 0.100035.  

2. Sau khi huấn luyện mạng nơ ron trên xong, cho tín hiệu vào x = [0.15 0.85 0.10 0.95 0.05]', hãy tính các tín hiệu ra y.

Page 19: Ứng dụng mạng nơ ron trong điều khiển

Làm xong bài tập này chúng ta sẽ lập trình tổng quát thuật toán mạng nơ ron thành một hàm số, và từ đó chúng ta có thể sử dụng hàm số này để chạy chương trình cho bất kỳ một mạng nơ ron nào đó cùng cấu trúc.

Các bạn quan tâm hãy cùng với tôi giải bài tập này và sau đó sẽ so sánh kết quả. Bạn có thể sử dụng MATLAB hoặc các ngôn ngữ khác mà bạn sử dụng quen.

--Giải--(Tín hiệu ra sau khi mạng nơ ron được huấn luyện: y = [0.10136 0.89999])Chương trình mẫu bằng MATLABChương trình mẫu bằng C(xin xem phần sau ở trang cuối)

Bài tập nguyên văn bằng tiếng Nhật (rất may anh bạn ở Nhật đã tìm lại được cho, vừa nhận được hôm nay 25.6.2007), ai biết tiếng Nhật có thể tham khảo:

Trang 1:

Page 20: Ứng dụng mạng nơ ron trong điều khiển

Trang 2:

Page 21: Ứng dụng mạng nơ ron trong điều khiển

==Bài tập 4==Thiết kế một bộ điều khiển mạng nơ ron (neural network autopilot) cho tàu thủy sử dụng mô hình Nomoto bậc nhất:

Page 22: Ứng dụng mạng nơ ron trong điều khiển

trong đó T = 7.5 (giây) và K = 0.11, r = tốc độ quay trở (yaw rate, rad/sec), = góc bánh lái (rad) và = góc quay trở (rad). Có thể sử dụng mô hình động học bánh lái như sau:

trong đó là góc bánh lái mệnh lệnh, là hằng số thời gian bánh lái (11.9 giây) và a là hằng số (a = 1) dùng để tránh chia cho không. Quỹ đạo của trọng tâm tàu trong mặt phẳng nằm ngang theo phương trình sau:

trong đó u và v là vận tốc trượt dọc (m/s) và vận tốc trượt ngang (m/s). Vận tốc của tàu được tính bằng knots (hải lý/giờ). Có thể coi gần đúng v = 0 và u = U. Hải lý hàng hải (Nautical mile) = 1852 mét. Chuyển động của tàu (theo hệ tọa độ quán tính trên trái đất) trong mặt phẳng nằm ngang ( trong hình dưới) được cho trong hình sau.

Hình 1: Chuyển động của tàu trong mặt phẳng nằm ngang cho Bài tập 4

Trước khi giải, chúng ta kiểm tra đặc tính điều động tàu (vòng quay trở với góc bánh lái bằng 10 độ) như hình sau:

Page 23: Ứng dụng mạng nơ ron trong điều khiển

Hình 2: Vòng quay trở của tàu có K = 0.11, T = 7.5 giây và góc bánh lánh = 10 độ

Các bạn quan tâm hãy cùng với tôi giải bài tập này, sau đó sẽ so sánh phương pháp và kết quả.

--Giải--Chương trình mẫu bằng MATLAB (to be updated!)Chương trình mẫu bằng C (to be updated!)

==Kết luận==(to be updated)

Hải Âu

==Tài liệu tham khảo==

1. Burns, R.S. (2007). Công nghệ điều khiển tiên tiến (bản tiếng Việt). Ứng dụng Điều khiển.

2. Hagan, M.T., Demuth, H.B. and de Jesús, O. (2002). An Introduction to the Use of Neural Networks in Control Systems. International Journal of Robust and Nonlinear Control, Vol. 12, No. 11, pp. 959-985.

Xem thêm thông tin ở trang web của Martin T. Hagan

Page 24: Ứng dụng mạng nơ ron trong điều khiển

3. Trang web Wikipedia

4. Trang web của Kevin Passino

==Bài tập 5 (additional exercise)==

Bạn hãy thiết kế máy lái tự động (autopilot) dùng mạng nơ ron đa lớp để điều khiển một tàu dầu được mô tả bằng mô hình Nomoto bậc hai sau:

(1)

trong đó là hướng tàu (góc quay trở, yaw, rad) và là góc bánh lái (rad). Với điều kiện ban đầu bằng 0, chúng ta có hàm truyền:

(2)

trong đó và là các tham số hệ thống của tàu, và là hàm số của vận tốc chạy tới của tàu (coi là không đổi) và chiều dài tàu :

(3)

(4)

Phương trình (1) có thể viết lại thành:

(5)

Chú ý: Theo Passino (2005), mô hình 5 thu được bằng cách tuyến tính hóa phương trình chuyển động xung quanh góc bánh lái bằng không ( ). Do vậy, góc bánh lái không vượt quá 5 độ, nếu không có giới hạn này thì mô hình không còn chính xác nữa. Với mục đích thiết kế hệ thống máy lái tự động với góc bánh lái lớn hơn 5 độ, do vậy chúng ta cần sử dụng mô hình thích hợp hơn. Mô hình trên được mở rộng thành mô hình sau:

(6)

trong đó là hàm phi tuyến của . Hàm có thể được xác định bằng mối quan hệ giữa và trong

trạng thái ổn định sao cho . Bằng thí nghiệm xoắn ốc (spiral test) người ta có thể tính

gần đúng hàm như sau:

(7)

Page 25: Ứng dụng mạng nơ ron trong điều khiển

trong đó và là các hằng số thực và luôn dương. Chúng ta có thể chọn . Chúng ta cũng giả thiết

rằng góc bánh lái lớn nhất là (hoặc radians).

Các tham số của tàu như sau:

(tàu chạy với vận tốc tới không đổi)

Giả thiết tàu chạy trong hai điều kiện:

Chạy ba lát:

Chạy đầy tải:

Bạn có thể sử dụng phương pháp tích phân số phương pháp Euler hoặc Runge-Kutta. Với góc bánh lái độ, sử dụng phương pháp Runge-Kutta bậc 4 (với thời gian tích phân 1000 giây, bước tích phân (integration step size) h = 1 giây) thu được kết quả (tàu quay trở xoắn ốc) như sau:

Page 26: Ứng dụng mạng nơ ron trong điều khiển

Hình 1: Vòng quay trở (xoắn ốc) của tàu dầu với góc bẻ lái bằng 10 độ

Đây là tàu dầu có chiều dài L = 350 m và trọng tải tịnh (dwt) 389100 tấn thuộc loại tàu dàu lớn. Từ kết quả mô phỏng với các thông số đã cho chúng ta thấy để thử nghiệm xác định chỉ số điều động chúng ta cần khu vực thử đủ lớn và đủ độ sâu cần thiết để có kết quả chính xác.

Các bạn quan tâm hãy tiếp tục thiết kế máy lái tự động dùng mạng nơ ron cho chiếc tàu dàu này. Hi vọng các bạn sẽ lái được con tàu đi vòng quanh trái đất:-)) (j/k).

Hải Âu

Ai muốn đọc thêm tài liệu về mô hình tàu dầu này có thể tìm thấy ở một trong các cuốn sách sau:

==Tài liệu tham khảo==

Astrom, K.J. and Wittenmark, B. (1995). Adaptive Control (2nd Ed.). Addison Wesley. (pp.402-406)

Fossen, T.I. (1994). Guidance and Control of Ocean Vehicles. John Wiley and Sons Inc., London.

Fossen, T.I. (2002). Marine Control Systems - Guidance, Navigation and Guidance of Ships, Rigs and Underwater Vehicles. Marine Cybernetics. Trondheim, Norway.

Page 27: Ứng dụng mạng nơ ron trong điều khiển

Passino, K.M. (2005). Biomimicry for Optimization, Control, and Automation. Springer-Verlag London.

Tôi đang gắng diễn giải về mạng nơ ron theo cách thức dễ hiểu nhất. Các bạn xem ở hình sau, mạng nơ ron cho Bài tập 3.

Hình 1: Mạng nơ ron cho Bài tập 3

Trong các sách viết về mạng nơ ron có lẽ cuốn Neural Network Design và tài liệu hướng dẫn sử dụng Neural Network Toolbox User's Guide là dễ hiểu nhất. Tôi đã tham khảo hai cuốn này để vẽ hình diễn giải cho Bài tập 3. Nguyên lý như sau:

1. Ban đầu phải chạy một chương trình để khởi động mạng nơ ron, tức là đặt các giá trị ban đầu cho mạng bao gồm các giá trị đầu vào (x(0), các ma trận trọng lượng (W(0)) và sai lệch (b(0)) cho các lớp, và tín hiệu mong muốn (d(0)), giá trị chỉ số đặc tính mục tiêu (Tol).

2. So sánh đầu ra với tín hiệu mong muốn (cũng được gọi là 'tín hiệu thầy đồ" hoặc mục tiêu (target)), chạy chương trình huấn luyện mạng nơ ron cho đến khi thỏa mãn điều kiện trị số đặc tính nhỏ hơn giá trị mục tiêu, các giá trị trọng lượng và sai lệch cho các lớp được cập nhật W1(k), b1(k), W2(k), b2(k) thì mạng nơ ron bắt đầu làm việc ổn định.

3. Khi có các giá trị trọng lượng và sai lệch mới thì tín hiệu vào mới sẽ được tính toán để có đầu ra có giá trị bằng giá trị mong muốn. Trong trường hợp giá trị đầu ra không bằng giá trị mong muốn thì thuật toán huấn luyện tiếp tục làm việc để duy trì giá trị đầu ra bằng với giá trị mong muốn.

4. Khi giá trị mong muốn thay đổi thì toàn bộ mạng sẽ lại được huấn luyện để đầu ra đạt được giá trị mới.

Khi áp dụng mạng nơ ron trong các thuật toán khác nhau ví dụ như ước lượng (estimation) và nhận dạng hệ thống (system identification), nhận biết kiểu mẫu (pattern recognition) hoặc điều khiển vấn đề quan trọng nhất là cách lựa chọn mạng, lựa chọn các lớp và lựa chọn các giá trị của các ma trận trọng lượng và sai lệch sao cho phù hợp. Do vậy khi tìm hiểu thuật toán sử dụng mạng nơ ron chúng ta sẽ thấy có rất nhiều kiểu áp dụng khác nhau. Mạng nơ ron cũng có thể đựơc kết hợp với những thuật toán khác để có một thuật toán tốt hơn.

Page 28: Ứng dụng mạng nơ ron trong điều khiển

Các bạn có kinh nghiệm về mạng nơ ron xin cùng trao đổi.

==Bài tập 6==

Cho tàu container có các thông số sau: T = 18.3443 (giây), K = 0.1524, vận tốc U0 = 7.7 m. Hãy thiết kế máy lái tự động sử dụng mạng nơ ron cho tàu container này, sử dụng các ngôn ngữ lập trình mà bạn thành thạo nhất.

Hình 1: Vòng quay trở tàu Container (góc bánh lái 10 độ)

Em viết lại cái code này chạy thử thì thấy nó thà chạy hết 10000 lần chứ không chịu thoát khỏi vòng lặp bởi điều kiện J<0.001.Em thử ví dụ 1 thì nó vẫn còn đúng, có sai khác tí chút nhưng cơ bản vẫn cũng bậc.Em cũng thử dùng mạng nơ tron để xấp xỉ hàm rồi, nhưng không biết vì sao nó không bám hàm được, lúc đầu em không thay đổi hàm kích hoạt, vẫn để là hàm sigmoid nên nó bị chặn, sau đó em thay bằng hàm tuyến tính nó có uống éo theo một tí nhưng vẫn không bám tốt được, em tăng số vòng lặp lên tình hình vẫn không khác mấy.Nếu được thì anh cho em một ví dụ anh nhé!Còn đây là cái code ở trên:

matlab code

1.  2. %===3. clc4. clear5. xmau = [0.1000 0.1000 0.1000 0.1000

0.1000;6. 0.1000 0.1000 0.1000 0.1000 0.9000;

Page 29: Ứng dụng mạng nơ ron trong điều khiển

7. 0.1000 0.1000 0.1000 0.9000 0.1000;8. 0.1000 0.1000 0.1000 0.9000 0.9000;9. 0.1000 0.1000 0.9000 0.1000 0.1000;10. 0.1000 0.1000 0.9000 0.1000 0.9000;11. 0.1000 0.1000 0.9000 0.9000 0.1000;12. 0.1000 0.1000 0.9000 0.9000 0.9000;13. 0.1000 0.9000 0.1000 0.1000 0.1000;14. 0.1000 0.9000 0.1000 0.1000 0.9000;15. 0.1000 0.9000 0.1000 0.9000 0.1000;16. 0.1000 0.9000 0.1000 0.9000 0.9000;17. 0.1000 0.9000 0.9000 0.1000 0.1000;18. 0.1000 0.9000 0.9000 0.1000 0.9000;19. 0.1000 0.9000 0.9000 0.9000 0.1000;20. 0.1000 0.9000 0.9000 0.9000 0.9000;21. 0.9000 0.1000 0.1000 0.1000 0.1000;22. 0.9000 0.1000 0.1000 0.1000 0.9000;23. 0.9000 0.1000 0.1000 0.9000 0.1000;24. 0.9000 0.1000 0.1000 0.9000 0.9000;25. 0.9000 0.1000 0.9000 0.1000 0.9000;26. 0.9000 0.1000 0.9000 0.9000 0.1000;27. 0.9000 0.1000 0.9000 0.9000 0.9000;28. 0.9000 0.9000 0.1000 0.1000 0.1000;29. 0.9000 0.9000 0.1000 0.1000 0.9000;30. 0.9000 0.9000 0.1000 0.9000 0.1000;31. 0.9000 0.9000 0.1000 0.9000 0.9000;32. 0.9000 0.9000 0.9000 0.1000 0.1000;33. 0.9000 0.9000 0.9000 0.1000 0.9000;34. 0.9000 0.9000 0.9000 0.9000 0.1000;35. 0.9000 0.9000 0.9000 0.9000

0.9000]';36. d = [ 0.1000 0.9000;37. 0.1000 0.9000;38. 0.1000 0.9000;39. 0.1000 0.9000;40. 0.1000 0.9000;41. 0.1000 0.9000;42. 0.1000 0.9000;43. 0.9000 0.1000;44. 0.1000 0.9000;45. 0.1000 0.9000;46. 0.1000 0.9000;47. 0.9000 0.1000;48. 0.1000 0.9000;49. 0.9000 0.1000;50. 0.9000 0.1000;51. 0.9000 0.1000;52. 0.1000 0.9000;53. 0.1000 0.9000;54. 0.1000 0.9000;55. 0.9000 0.1000;56. 0.1000 0.9000;57. 0.9000 0.1000;58. 0.9000 0.1000;59. 0.9000 0.1000;60. 0.1000 0.9000;61. 0.9000 0.1000;

Page 30: Ứng dụng mạng nơ ron trong điều khiển

62. 0.9000 0.1000;63. 0.9000 0.1000;64. 0.9000 0.1000;65. 0.9000 0.1000;66. 0.9000 0.1000;67. 0.9000 0.1000]' ;68. L=3;69. g=inline('1./(1+exp(-x))');70. sodv=[5 10 2];71. eta=0.5;72. J=1;73. dem=0;74. for i=1:L-175. for n=1:sodv(i)76. for m=1:sodv(i+1)77. w{i}(m,n)=1*rand;78. end79. end80. for m=1:sodv(i+1)81. b{i}(m,1)=1*rand;82. end83. end84. w{L}=ones(sodv(L));85. w{1:2}86. b{1:2}87. while (J>0.001)& dem<1088. dem=dem+1;89. J=0;90. for k=1:length(xmau)91. x{1}=xmau(:,k);92. for i=1:L-193. s{i}=w{i}*x{i}+b{i};94. s{i}95. x{i+1}=g(s{i});96. x{i+1}97. end98. e=d(:,k)-x{3}99. J=J+sum(e.^2);100. for i=L-1:-1:1101. e=(x{i+1}.*(1-x{i+1})).*(w{i+1}'*e)102. deltw{i}=(eta.*e)*x{i}';103. w{i}=w{i}+deltw{i};104. deltb{i}=(eta.*e).*ones(sodv(i+1),1);105. b{i}=b{i}+deltb{i};106. end107. end108. J=J/2;109. end

Để có được cái nhìn bao quát về ứng dụng mạng nơ ron trong điều khiển chúng ta tạm đổi vị trí hai bài tập 4 và 5 cho nhau. Chúng ta hãy giải Bài tập 5 trước. Để giải bài tập này trước hết các bạn hãy tham khảo ví dụ trong mục 4.3 Design Example: Multilayer Perceptron for Tanker Ship Steering (Passino, 2005).

Page 31: Ứng dụng mạng nơ ron trong điều khiển

--Giải Bài tập 5--

Trước khi giải bài tập này với một thuật toán điều khiển sử dụng mạng nơ ron, chúng ta hãy xem xét phương pháp thiết kế của tác giả Passino (1996) sử dụng mạng nơ ron cảm giác đa lớp như thế nào đã. Để có thể hiểu được quá trình thiết kế và mô phỏng máy lái tự động dùng mạng nơ ron tôi xin tóm lược lại kết quả mà Passion đã làm, và sau đó sẽ phát triển thêm một máy lái tự động dùng mạng nơ ron kiểu khác (có thể nói sẽ phức tạp hơn). Tôi trình bày tóm tắt lại ví dụ này từ khâu khảo sát đối tượng được điều khiển là tầu dầu có chiều dài 350 mét cho đến các khâu thiết kế máy lái tự động.

--Mô hình tàu--

Nhằm hiểu được động học tàu thủy, chúng ta áp dụng các định luật cơ học Newton cho chuyển động của tàu. Đối với tàu mặt nước như tầu dầu, chúng ta có thể bỏ qua các chuyển động theo trục thẳng (trượt đứng, heave), chuyển động quay quanh trục x (lắc ngang, roll), và chuyển động quay quanh trục y (lắc dọc, pitch). Chúng ta chỉ xét tới ba chuyển động trong mặt phẳng nằm ngang (trên bề mặt trái đất) là chuyển động trượt thẳng (surge), trượt ngang (sway) và quay trở (yaw). Máy lái tự động là một hệ thống điều khiển hướng tàu hay góc quay trở (yaw angle). Hướng tàu được điều khiển bằng bánh lái. Do đó mô hình tàu dầu được sử dụng cho việc thiết kế máy lái tự động là mô hình toán biểu diễn mối quan hệ giữa góc bánh lái ( và góc quay trở .

Trong hệ tọa độ bắc đông (north-earth, có trục tung hướng về phía bắc - trùng theo hướng tính vĩ độ, và trục hoành hướng về phía đông - trùng theo hướng tính kinh độ), mô hình đơn giản biểu diễn chuyển động quay trở của tàu như sau:

(1)

trong đó là hướng tàu (góc quay trở, rad), là góc bánh lái (rad). Giả thiết rằng các điều kiện ban đầu bằng không, chúng ta có hàm truyền như sau:

(2)

trong đó , , và là các tham số hệ thống và là hàm số của vận tốc trượt dọc của tàu (giả thiết tàu chuyển động theo trục x với vận tốc không đổi) và chiều dài tàu và được tính như sau:

trong đó các giá trị có thể chọn cho tàu dầu từ Astrom và Wittenmark (1995):

Tàu dầu chạy ba lát (ballast, không có hàng): , , , và (Chú ý: Passino dùng từ 'a very heavy ship' chỉ tàu ở trạng thái ballast có lẽ không đúng chuyên

môn, HA).

Tàu chở đầy hàng (full-loaded): , , , và (Passino dùng từ 'a lighter ship' chỉ tàu chở đầy hàng có lẽ không đúng chuyên môn, từ này phù hợp với tàu

Page 32: Ứng dụng mạng nơ ron trong điều khiển

chạy ballast ở trên và ngược lại - HA). Vận tốc tàu là (m/s).

--Notes:-- Sử dụng các giá trị số ở trên chúng ta có thể khảo sát được tính ổn định của tầu (sử dụng các phương pháp kinh điển như quỹ đạo nghiệm, Nyquist diagram hoặc Bode diagram). Bạn đọc hãy tự tìm hiểu, thay số vào phương trình trên. Bạn đọc cũng có thể viết được mô hình không gian trạng thái để khảo sát khả năng điều khiển (controllability) và khả năng quan sát (obserability).

***(xem phần sau cách rút ra mô hình không gian trạng thái)

Theo Passio (1996), mô hình (1) hoặc (2) ở trên là phương trình rút ra từ việc tuyến tính hóa các phương trình chuyển động xung quanh góc bánh lái bằng không ( ). Do vậy chỉ đúng cho các góc bánh lái nhỏ không quá 5 độ, nếu không mô hình này không còn chính xác nữa. Để thiết kế máy lái tự động sử dụng mạng nơ ron cảm giác đa lớp Passino (1996) đã sử dụng mô hình phi tuyến mở rộng thích hợp hơn với những góc bánh lái lớn hơn 5 độ. Mô hình phi tuyến mở rộng được mô tả như sau:

(3)

trong đó là một hàm phi tuyến của . Hàm có thể được xác định từ mối quan hệ giữa và ở

trạng thái ổn định sao cho . Một thí nghiệm đưộc gọi là 'thử nghiệm xoắn ốc' (spiral test)

đã chứng minh rằng có thể được tính gần đúng bằng:

(4)

trong đó và là các hằng số có giá trị thực và luôn luôn dương. Chúng ta có thể lựa chọn .

Chúng ta cũng giả thiết rằng góc bẻ lái của tàu là độ (hoặc radians). (Chú ý thêm rằng giới hạn góc bánh lái ở đây được tác giả Passino giả định để làm mô phỏng, trong thực tế góc bánh lái của tàu theo tiêu chuẩn của IMO (International Maritime Organization) là độ, HA).

Tìm mô hình không gian trạng thái của mô hình tuyến tính:

Để thiết kế và mô phỏng tàu dầu này, chúng ta cần biến đổi phương trình (tuyến tính) cho ở phần trước thành nhiều dạng khác nhau. Chúng ta hãy tìm mô hình không gian trạng thái của mô hình tàu bằng cách viết lại phương trình trên như sau:

(1)

trong đó

Page 33: Ứng dụng mạng nơ ron trong điều khiển

Theo Ogata (2002, 4th Ed.) (hoặc bản 3rd ở trang pp.76-80), mô hình không gian trạng thái của hệ này được tính như sau (lược qua các bước biến đổi):

; và

Nếu chúng ta thử xét khả năng điều khiển và khả năng quan sát của hệ này chúng thấy rằng hệ được biểu diễn bằng mô hình không gian trạng thái này không có khả năng điều khiển (rank(M) = 2 < 3, số biến trạng thái).

Khi làm mô phỏng bằng Simulink chúng ta có thể tách ra thành hai thành phần như sau:

*** Phần mã MATLAB ****

Xem ở đây: TankerPassino.m (211 views).

Trong phần trên chúng ta đã có hàm truyền của tàu dầu, chúng ta có thể khảo sát đặc tính & tính ổn định của tàu (dựa vào hàm truyền hệ mở mô tả mối quan hệ giữa hướng tàu vào góc bánh lái) sử dụng các phương pháp khảo sát như biểu đồ Bode, biểu đồ Nyquist, phương pháp quỹ đạo nghiệm số. Tôi chỉ trú trọng về phương diện thực hành, nên xin bỏ qua phần lý thuyết "nhức đầu" này! Bằng MATLAB và Simulink các bạn có thể dễ dàng khảo sát được tính ổn định của tàu

*** Hết phần mã *****

Bạn đọc có thể tự lập chương trình mô phỏng cho tàu dàu sử dụng mô hình tuyến tính. Trong phần sau tôi trình bày tóm tắt chương trình mô phỏng của Passino (1996) sử dung mô hình phi tuyến.

Sử dụng mô hình phi tuyến, chúng ta sẽ biến đổi lại. Giả thiết rằng hệ phi tuyến có dạng sau:

trong đó là véc tơ trạng thái và là véc tơ hàm phi tuyến, g

là hàm phi tuyến ánh xạ trạng thái và đầu vào lên đầu ra của hệ thống, và là trạng thái ban đầu. Chú ý rằng f và g là các hàm biến thiên theo thời gian do phụ thuộc rõ ràng vào biến thời gian t. Để mô phỏng (giải phương trình) hệ phi tuyến, chúng ta có thể sử dụng các phương pháp số như Phương pháp Euler, Phương pháp Runge-Kutta (xin xem thêm tài liệu tham khảo Toán ứng dụng(*)).

Để thuận tiện cho việc lập trình mô phỏng, chúng ta hãy đặt:

Page 34: Ứng dụng mạng nơ ron trong điều khiển

Chúng ta sẽ viết phương trình theo dạng:

trong đó và . Chúng ta cần lựa chọn sao cho chỉ phụ thuộc vào và với i = 1, 2, 3. Chúng ta có:

Chọn:

(2)

sao cho không phụ thuộc vào và

Lực chọn sao cho . Cuối cùng lựa chọn . Sự lựa chọn này cho chúng ta phương trình có dạng như sau:

Nhưng vì và nên:

Page 35: Ứng dụng mạng nơ ron trong điều khiển

Chúng ta có . Biểu thức này cung cấp các phương trình đúng cho mô phỏng. Tiếp theo

chúng ta giả thiết rằng các điều kiện ban đầu là . Điều này có nghĩa rằng

và hoặc .

Đối với bài toán lái tàu, chúng ta chọn bước tích phân h = 1 giây, và giây sao cho giây (nghĩa là bộ điều khiển được thực hiện trên máy tính số với thời gian lấy mẫu giây sao cho đầu vào của đối tượng được điều khiển được sau trong mỗi khoảng thời gian 10 giây và đưa tín hiệu điều khiển vào bánh lái).

Để mô phỏng quỹ đạo chuyển động của tàu trong mặt phẳng nằm ngang (với trục x theo hướng bắc, trục y theo hướng đông) chúng ta sử dụng phương trình sau:

Để đơn giản chúng ta có thể giả định u = U0 (tàu chạy tới với vận tốc không đổi) và v = 0 (rất nhỏ có thể bỏ qua).

Chương trình mô phỏng cho mô hình tàu dầu tuyến tính (Passino 1996) được cho ở đây (sau khi đã sửa chữa và bổ sung một số chỗ từ chương trình gốc): tanker_model.m (163 views). Kết quả mô phỏng cho bánh lái 20 độ cho trong hai hình sau:

Page 36: Ứng dụng mạng nơ ron trong điều khiển

Hình 1: Hướng tàu, tốc độ quay trở và bánh lái

Hình 2: Vòng quay trở với góc bánh lái 20 độ

Chú ý: Trong mô hình tàu dầu này với góc bánh lái dương thì chúng ta có góc quay trở âm. Lý do: hệ tọa độ (trong mặt phẳng nằm ngang) dùng trong mô hình này được dùng trong tài liệu có trục x hướng theo hướng đông, còn trục y có chiều hướng theo hướng nam. Để nhìn cho thuận mắt, trong chương trình có chỉnh sửa quỹ đạo thành hệ tọa độ có trục x hướng theo hướng bắc, và trục y hướng theo hướng đông.

Nhìn vào quỹ đạo chuyển động của tàu chúng ta thấy với một góc bánh lái không đổi, tàu quay trở theo quỹ đạo hình xoắn ốc (spiral).

Cho đến đây, để củng cố kiến thức bạn đọc có thể lập chương trình mô phỏng cho tàu dầu này sử dụng điều khiển PID. Bạn cũng có thể sử dụng kết quả mô phỏng hệ máy lái tự động PID để so sánh với kết quả mô phỏng của máy lái tự động sử dụng mạng nơ ron (trong phần sau) để xem phương pháp nào có đáp ứng tốt hơn!

Giải Bài tập 5 (tiếp)

Mạng nơ ron nhân tạo được tạo ra từ ý tưởng áp dụng mạng nơ ron sinh học. Vậy thì bản chất của một mạng nơ ron nhân tạo hoạt động như thế nào khi được áp dụng vào hệ thống điều khiển?

Page 37: Ứng dụng mạng nơ ron trong điều khiển

Để có thể hiểu nguyên lý ứng dụng mạng nơ ron cho hệ điều khiển tự động chúng ta hảy thử điểm qua cơ chế hoạt động của hệ thần kinh sinh học. Điểm cơ bản của mạng nơ ron sinh học (ví dụ của con người) là khi mới sinh ra hệ thống thần kinh của em bé đã được hình thành nhưng ở dạng đơn giản nhất, có thể tạm nói là chưa biết làm được gì cả. Hệ thống thần kinh của một con người phát triển trong quá trình sinh trưởng và được rèn luyện qua trường học (giáo dục), qua sinh hoạt xã hội và qua mối quan hệ của con người trong môi trường sống. Như vậy có thể nói, "đầu ra" của một con người (sự ứng xử, thao tác chuyên môn...) phụ thuộc rất nhiều yếu tố: "đầu vào", môi trường sống... đặc biệt là môi trường học tập và được huấn luyện (từ các thày cô giáo).

Ý tưởng tạo ra mạng nơ ron nhân tạo là từ nguyên lý hoạt động của hệ thống nơ ron sinh học, tất nhiên mạng nơ ron nhân tạo đơn giản hơn rất nhiều so với mạng nơ ron sinh học, nhưng nó được "thừa hưởng" hai yếu tố quan trọng nhất là "học tập" và "huấn luyện" để "trưởng thành" và có thể làm được việc mà con người ta mong muốn! Nghĩa là muốn áp dụng được mạng nơ ron nhân tạo vào trong một lĩnh vực nào đó nói chung, và trong hệ điều khiển tự động nói riêng thì điều quan trọng quyết định cho sự thành công là "khả năng học tập" của mạng (phụ thuộc vào cấu trúc mạng và các biến số lựa chọn cho đầu vào) và "chương trình và phương pháp giảng dạy" (thuật toán huấn luyện).

Trong quá trình phát triển mạng nơ ron nhân tạo, cho tới thập niên 80s tưởng chừng đã bế tắc nhưng do có một số tác giả đã khai thác được ý tưởng "huấn luyện" (training hoặc adaptation - làm thích ứng) một mạng nơ ron nhân tạo bằng thuật toán "lan truyền ngược" (back propagation) và từ đó các tác giả đi sau đã phát triển mạng nơ ron theo các hướng tìm tòi và phát triển "chương trình huấn luyện" cho mạng nơ ron đồng thời với sự hỗ trợ của máy tính đã làm cho lĩnh vực mạng nơ ron hồi sinh.

Từ ý tưởng trên, chúng ta sẽ thấy rằng khi ứng dụng mạng nơ ron vào hệ thống điều khiển tự động, có rất nhiều phương pháp khác nhau. Khi mạng nơ ron được kết nối với đối tượng được điều khiển (plant) thì lại có các cách kết nối khác nhau. Do vậy chúng ta có thể hình dung được rằng hệ điều khiển sử dụng mạng nơ ron sẽ phong phú và đa dạng đến nhường nào. Như vậy từ khi mạng nơ ron được hồi sinh, đã có rất nhiều người người thử ứng dụng mạng nơ ron vào việc thiết kế hệ thống điều khiển tự động cũng như trong các lĩnh vực khác nhau, để ngày nay chúng ta có thể thấy có rất nhiều các công trình nghiên cứu cũng như các sách khác nhau về mạng nơ ron.

Để tiếp cận tới ứng dụng mạng nơ ron trong hệ điều khiển chúng ta hãy theo hướng tiếp cận từ đơn giản tới phức tạp. Chúng ta hãy xem xét một hệ điều khiển mạng nơ ron đơn giản sử dụng mạng nơ ron cảm giác đa lớp và sau đó sẽ xem xét một số hệ điều khiển mạng nơ ron phức tạp hơn.

Thiết kế bộ điều khiển dùng mạng nơ ron cảm giác đa lớp đơn giản (Passino (1996)

Trong ví dụ này tác giả Passino (1996) đã sử dụng mạng nơ ron cảm giác đa lớp (multilayer perceptron neural network) cho bộ điều khiển hướng tàu. Sơ đồ nguyên lý máy lái tự động được minh họa trong hình sau:

Page 38: Ứng dụng mạng nơ ron trong điều khiển

Hình 1: Sơ đồ minh họa máy lái tự động dùng mạng nơ ron cảm giác đa lớp (Passino 1996)

Lớp vào của mạng nơ ron có hai tín hiệu: hướng tàu mong muốn và hướng tầu thực . Mạng có ba lớp ẩn và một lớp ra như được minh họa trong hình sau. Chúng ta có thể biểu diễn mạng như sau:

2-1-2-2-1 (2 tín hiệu vào, 1 nơ ron trong lớp ẩn 1, 2 nơ ron trong lớp ẩn 2, 2 nơ ron trong lớp ẩn 3 và 1 nơ ron trong lớp ra).

Hình 2: Sơ đồ mạng nơ ron cảm giác đa lớp cho máy lái tự động (Passino 1996)

Chú thích: 1. hidden layer = lớp ẩn (có 3 lớp), 2. output layer (lớp ra); 3. linear activation function = hàm kích hoạt tuyến tính; 4. logistic sigmoidal activation function = hàm kích hoạt sigmoid.

Lựa chọn cấu trúc và lớp ẩn đầu tiên

Từ Hình trên, chúng ta thấy rằng mạng nơ ron cảm giác đa lớp là ánh xạ của và lên , đầu

vào của tàu. Chúng ta gọi đầu ra mạng nơ ron cảm giác đa lớp là (để thuận tiện chúng ta

Page 39: Ứng dụng mạng nơ ron trong điều khiển

bỏ qua các arguments biểu diễn mối quan hệ với các tham số của mạng). Mục tiêu là xác định

ánh xạ bằng cách lựa chọn số lớp nơ ron, số nơ ron trong mỗi lớp và các trọng lượng (weights), sai lệch (biases) và hàm kích hoạt (activation functions) cho tất cả các nơ ron (từ quan điểm nghiên cứu chức năng hệ thần kinh đó chính là sự tiến hóa xác định ánh xạ này). Để thực hiện được việc này, đơn giản chúng ta chỉ ra một lựa chọn có thể được cho mạng nơ ron cảm giác đa lớp và giải thích một số lý do hợp lý từ cấu trúc của mạng. Hãy xét Hình 4.10. Chúng ta sử dụng một mạng nơ ron cảm giác bốn lớp với cả các hàm kích hoạt tuyến tính và sigmoid.

Trước hết, hãy xét lớp ẩn đầu tiên. Đối với lớp này, chúng ta lựa chọn , và

. Do vậy, chúng ta thấy rằng đầu ra của lớp ẩn đầu tiên sẽ là sai số hướng tàu:

Điều thú vị ở đây là một nơ ron có thể tạo ra được phương pháp so sánh hai tín hiệu làm cơ sở cho việc ra quyết định điều khiển truy theo (tracking) và điều chỉnh (regulation).

(xem thêm trong Passino)

Lựa chọn trọng lượng và sai lệch (biases) (ngưỡng, thresholds): xây dựng các đặc tính phi tuyến bằng các hàm bậc thang trơn

Tiếp theo, chúng ta giải thích cách lựa chọn trọng lượng và sai lệch cho các lớp còn lại. Để làm được việc này, hãy xem mạng nơ ron trong Hình trên có hai “đường truyền” (2 paths) quá trình xử lý tín hiệu e của lớp ẩn đầu tiên tới đầu ra . Tưởng tượng rằng bạn tách đường truyền phía dưới và xét kỹ cấu trúc của đường truyền phía trên. Chúng ta sẽ suy nghĩ về đường truyền phía trên được dùng để điều chỉnh hướng tàu khi:

Trong trường hợp này, chúng ta muốn có một tín hiệu bánh lái âm (negative). Hãy xét Hình 4.8 (Passino 1996) mà bạn sẽ thấy rằng góc bánh lái dương (positive) sẽ làm giảm hướng tàu và bánh lái âm sẽ làm tăng hướng tàu . Do vậy nếu thì chúng ta co do vậy chúng ta cần tăng hướng tàu lên. Chúng ta sẽ dùng góc bánh lái âm. Tiếp theo, hãy chú ý rằng đối với các giá trị lớn hơn của

chúng ta cần các giá trị lớn hơn để làm giảm hướng tàu nhanh. Vậy chúng ta sẽ chọn các trọng lượng và sai lệch trong đường truyền phía trên như thế nào để thực hiện kiểu hành động điều khiển này?

Page 40: Ứng dụng mạng nơ ron trong điều khiển

Để xác định các giá trị cho trọng lượng và sai lệch, chúng ta hãy nghĩ rằng mỗi nơ ron làm nhiệm vụ cung cấp một kiểu “đảo mạch trơn” (smooth switching) (một hàm bậc thang trơn được cho trong Hình 4.6, ví dụ, hàm sigmoid) và điều chỉnh các trọng lượng và sai lệch để xây dựng các ánh xạc điều khiển phi tuyến. Chú ý rằng khi chỉ xét tới đường truyền phía trên chúng ta có:

trong đó

Các tham số trong phương trình này ảnh hưởng tới hình dáng phi tuyến từ sai số e tới theo cách sau:

, : di chuyển ánh xạ lên và xuống.

, : cân chỉnh trục thẳng đứng

: di chuyển bậc thang trơn (hàm logistic) theo chiều ngang, với di chuyển sang bên trái.[[math:w_{11}^{(2)}: cân chỉnh trục hoành (bạn có thể nghĩ về điều này giống như kiểu khuếch đại cho một hàm số, ít nhất là cục bộ).

Sử dụng những ý tưởng này, hãy lựa chọn:

Với những lựa chọn này chúng ta có ánh xạ phi tuyến được cho trong đồ thị phía trên cùng ở Hình 1.11. Hình dáng tổng quát của hàm thích hợp để dùng làm bộ điều khiển cho vì nó

tạo ra dạng tỷ lệ giữa độ lớn của e và độ lớn của . Chú ý rằng sự lựa chọn cho kết quả trong

Page 41: Ứng dụng mạng nơ ron trong điều khiển

mạng nơ ron cảm giác là tạo ra được góc bánh lái độ. Sự lựa chọn đơn giản di chuyển hàm sang bên phải, sao cho giá trị của hàm số gần với e = 0 tạo nên góc bánh lá . Giá trị

của ảnh hưởng tới độ nghiêng của hàm khi làm tăng độ lớn, nên nếu được lựa chọn lớn hơn, thì nó sẽ đạt được gác trị âm lớn nhất độ nhanh hơn khi độ lớn của e tăng. Sự lựa chọn này hoàn thành cấu trúc mạng nơ ron cảm giác cho đường truyền phía trên được dùng để điều khiển trong trường ợp mà .

Tiếp theo hãy xét đường truyền phía dưới trong Hình 4.10 (tưởng tượng tác ra khỏi đường truyền phía trên) được dùng cho trường hợp . Sử dụng những ý tưởng tương tự để lựa chọn các tham số trên, chúng ta hãy chọn:

Tính phi tuyến thu được được thực hiện trong đường truyền bên dưới được trình diễn trong đồ thị ở giữa của Hình 4.11. Trước hết, chú ý rằng hình dáng tổng quát của đồ thị phù hợp dùng làm bộ điều khiển cho trường hợp mà ; khi độ lớn của e tăng theo hướng âm, các giá trị dương tăng liên tục của góc bánh lái được tạo ra để gắng làm giảm giá trị của tới giá trị đã cho của

. Các giá trị của , và được lựa chọn theo cùng cách lựa chọn các giá trị tương ứng

cho đường truyền phía trên. Giá trị của được lựa chọn để di chuyển tính phi tuyến tới khoảng 80 độ.

Page 42: Ứng dụng mạng nơ ron trong điều khiển

Hình 3: Hình 4.11 Ánh xạ mạng nơ ron cảm giác đa lớp, đồ thị phía trên cùn cho đường truyền phía trên của mạng nơ ron từ e tới , đồ thị ở giữa cho đường truyền phía dưới của mạng nơ ron

từ e tới , đồ thị cuối cùng cho cả mạng nơ ron từ e tới

Lựa chọn cho hoàn thành việc xác định lớp ra, đơn giản là tính tổng các hàm được tạo ra bởi đường truyền trên và dưới, cho kết quả ánh xạ toàn bộ từ e tới như được biểu diễn trong Hình 4.11 (nghĩa là khi cả đường truyền trên và dưới trong Hình 4.10 được dùng). Chú ý rằng do sự đối xứng trong các lựa chọn của chúng ta, e = 0 có ý rằng sao cho tàu chạy theo hướng đúng (thẳng), bánh lái không phải điều chỉnh hướng. Sự lựa chọn này hoàn thành cấu trúc của mạng nơ ron cảm giá đa lớp để điều chỉnh hướng tàu.

(xem thêm trong Passino)

Chương trình mô phỏng (Passino 1996)

Dựa trên những phân tích trên, Passino (1996) đã lập chươn trình mô phỏng có kết quả như sau.

Xem ở đây: tanker_mlpautopilot.m (184 views)

Kết quả mô phỏng

Kết quả mô phỏng cho máy lái tự động điều khiển tàu dầu trong khảong thời gian 1-4000 giây được cho trong hình sau. Từ 1-100 giây, hướng mong muốn độ, từ 100-2000 giây,

độ và từ độ.

Page 43: Ứng dụng mạng nơ ron trong điều khiển

Hình 4: Đáp ứng hướng tàu (độ), tốc độ quay trở (độ/giây), sai số (độ) và góc bánh lái (độ)

Quỹ đạo chuyển động của tàu được cho trong hình sau:

Page 44: Ứng dụng mạng nơ ron trong điều khiển

Hình 5: Quỹ đạo chuyển động của trọng tâm tầu

(xem thêm các phần đánh giá và phân tích hệ điều khiển mạng nơ ron cảm giác đa lớp trong Passino (1996)).

Nhận xét

Từ bài toán thiết kế mô phỏng hệ điều khiển dùng mạng nơ ron và kết quả mô phỏng ở trên chúng ta thấy:

1. Bài toán đã minh họa được ý tưởng của việc ứng dụng mạng nơ ron trong cho hệ điều khiển. Phương pháp này là kết nối trực tiếp mạng nơ ron với đối tượng điều khiển.

2. Mạng nơ ron mới chỉ hoạt động trên đường truyền thẳng.

3. Mạng nơ ron chưa có thuật toán huấn luyện, các trọng lượng và sai lệch chưa được làm mới.

4. Đáp ứng (hướng tàu) chưa tốt lắm.

Qua mô phỏng thấy mô hình phi tuyến của tàu dàu có đặc tính quan hệ giữa góc bánh lái và hướng tàu khá đặc biệt, với một góc bánh lái cố định góc quay trở mang giá trị âm và quỹ đạo (vòng quay trở) của tàu có dạng xoắn ốc. Khi các bạn thiết kế máy lái tự động dùng luật PID cho mô hình tàu này không phải dễ dàng.

Hệ tọa độ dùng cho tàu được cho như trong hình sau:

Page 45: Ứng dụng mạng nơ ron trong điều khiển

Hình 1: Hệ tọa độ tàu dầu trong mặt phẳng nằm ngang

Chú ý: Đây là tầu dầu cỡ lớn, nếu thực hiện thí nghiệm trên trường thử dựa trên kết quả mô phỏng ở trên, với thời gian lấy mẫu 10 giây và tàu chạy với tốc độ 5 m/s (tức khoảng 9.3 knots (hải ly/giờ) và toàn bộ thí nghiệm như trên thì mất chừng 2 giờ 30 phút, với khoảng cách trong khu vực chừng khoảng 16 km theo hướng tàu chạy và khoảng cách ngang gần 7 km (theo quỹ đạo khi không ảnh hưởng của sóng gió và dòng chảy). Cho nên trong thực tế làm nghiên cứu làm thử nghiệm toàn tỷ lệ xích (full-scale experiments) trên tàu thực vô cùng tốn kém. Nên người ta làm thí nghiệm trong bể thử với tàu mô hình, từ tầu mô hình suy ra các tính năng của tàu thực theo các định luật đồng dạng (similarity laws) thì sẽ tốn kém ít tiền hơn. Tuy nhiên nếu làm thí nghiệm trong bể thử dùng tàu mô hình thì cũng phải trang bị những thiết bị đo lường và điều khiển cũng không phải là rẻ.

Trong công nghiệp đóng tàu, sau khi hạ thủy, hai bên giao nhận cũng phải thực hiện một số thử nghiệm trước khi giao tàu. Những ai quan tâm đến lĩnh vực điều khiển tàu tự động này, tôi nghĩ chắc chắn sẽ có cơ hội kiếm được việc làm tốt trong những thập niên tới khi mà ngành đóng tàu VN đang phát triển.

(Hết Bài tập 5)

Mở rộng: Các bạn quan tâm có thể sử dụng bộ điều khiển mạng nơ ron cảm giác đa lớp ở trên để tiếp tục thiết kế một bộ điều khiển mạng nơ ron có thuật toán huấn luyện nhằm tối ưu hóa các giá trị của trọng lượng và sai lệch.

(còn tiếp)

Trong các phần tiếp theo, chúng ta hãy thử thiết kế các hệ máy lái sử dụng mạng nơ ron phức tạp hơn và có sử dụng các thuật toán huấn luyện (thuật toán làm thích nghi, adaptation algorithms).

Giải Bài tập 4

Máy lái tự động mạng nơ ron cảm giác đa lớp cho tàu huấn luyện Shioji Maru

Ứng dụng hệ điều khiển mạng nơ ron cảm giác đa lớp ở Bài tập 5 cho tàu huấn luyện Shioji Maru dùng mô hình tuyến tính bậc nhật Nomoto cho kết quả như hình sau.

Page 46: Ứng dụng mạng nơ ron trong điều khiển

Hình 1: So sánh đáp ứng điều khiển bằng PID và NN

Đỏ: tín hiệu tham chiếu (mong muốn)Xanh liền: đáp ứng bằng NN-based autopilotĐen đứt đoạn: đáp ứng bằng PID autopilot

[[file >> sẽ cập nhật sau >>

Các trọng lượng và sai lệch của mạng nơ ron trong bài tập này được chọn ngược dấu và có giá trị nhỏ hơn giá trị trong Bài tập 5. Trong chương trình mô phỏng này có so sánh đáp ứng điều khiển bằng mạng nơ ron với đáp ứng điều khiển bằng PID. Kết quả mô phỏng cho thấy hệ điều khiển NN cho đáp ứng tốt hơn hệ điều khiển PID. Qua mô phỏng nhiều lần thì quan sát thấy rằng:

1. Khi cả hai bộ điều khiển được chọn các tham số (weights và biases cho mạng nơ ron, khuếch đại Kp, Ki và Kd cho bộ điều khiển) tốt nhất thì đáp đáp ứng bằng NN luôn đạt giá trị mong muốn trước (như thấy trong đồ thị).

2. Khi cả chọn các tham số lớn thì đáp ứng bằng NN có overshoot nhỏ hơn overshoot của đáp ứng bằng PID.

Trong các phần sau, tôi sẽ thử thiết kế thêm một số bộ điều khiển dùng mạng nơ ron phức tạp hơn. Nếu có kết quả tốt tôi sẽ cập nhật. Các thuật toán dự kiến sử dụng:

Page 47: Ứng dụng mạng nơ ron trong điều khiển

Hệ điều khiển mạng nơ ron thích nghi với tương tác thích nghi (adaptive interaction) with a constant learning rate

Hệ điều khiển mạng nơ ron sử dụng thuật toán lan truyền ngược

Hệ điều khiển mạng nơ ron sử dụng thuật toán tương tác thích nghi biến đổi tham số (with a time-varying learning rate)mạng neural về hàm newff

minh đang lam vê mang neural huân luy n nhưng không ro vê ham nay,vi v y nên xin moi huynh đ giai ệ ậ ệthich dùm vai điêu cho nhưng câu l nh dưới đâu:ệP=[-1 -1 2 2;0 5 0 5]T=[-1 -1 1 1]alphabet = P;targets = T;

[R,Q] = size(alphabet);[S2,Q] = size(targets);S1 = 10;net = newff(minmax(alphabet),[S1 S2],{'logsig' 'logsig'},'traingdx');net.LW{2,1} = net.LW{2,1}*0.01;net.b{2} = net.b{2}*0.01;net.performFcn = 'mse'; net.trainParam.goal = 0.1; net.trainParam.show = 20; net.trainParam.epochs = 5000; net.trainParam.mc = 0.95; P = alphabet;T = targets;[net,tr] = train(net,P,T);y=sim(net,P)