12.2.2 Hàm Hardlims
Giống như hàm hardlim, hàm hardlims cho ra giá trị +1 với bất kì đầu vào ≥ 0. Và ngược lại sẽ bằng -1 như công thức sau:
𝑎 = ℎ𝑎𝑟𝑑𝑙𝑖𝑚(𝑛) = {+1 𝑘ℎ𝑖 𝑛 ≥ 0
−1 𝑘ℎ𝑖 𝑛 < 0 (12.4)
SVTH: NGUYỄN TRẦN MINH MSSV: 1648020 Trang 123
12.2.3 Hàm Logsig (sigmoid)
Với hàm logsig là một hàm chuyển đổi bão hòa ở hai đầu, nếu giá trị đầu vào lớn (rất dương) hàm số sẽ cho đầu ra gần với 1. Với đầu vào nhỏ (rất âm), hàm số sẽ cho đầu ra gần với 0, tính chất của hàm logsig tuân theo biểu thức sau:
𝑎 = 𝑙𝑜𝑔𝑠𝑖𝑔(𝑛) = 1
1+exp (−𝑛) (12.5)
Hình 12.6 Đồ thị hàm Logsig
12.2.3 Hàm Tansig
Gần giống như Logsig hàm Tansig sẽ bão hòa ở hai đầu với giá trị -1 và 1. Hàm
tansig có cơng thức và đồ thị biểu diễn như dưới đây:
𝑎 = 𝑡𝑎𝑛𝑠𝑖𝑔(𝑛) = 2
(1+exp(−2𝑛))− 1 (12.6)
SVTH: NGUYỄN TRẦN MINH MSSV: 1648020 Trang 124
12.2.4 Hàm Purelin
Hàm Purelin chuyển đổi giá trị đầu ra dạng tuyến tính với biểu thức như sau:
𝑎 = 𝑝𝑢𝑟𝑒𝑙𝑖𝑛(𝑛) = 𝑛 (12.6)
Hình 12.8 Đồ thị hàm Purelin 12.2.5 Hàm Satlin
Hàm satlin là một hàm chuyển đổi tuyến tính bão hịa có đặc tính như biểu thức dưới đây: 𝑎 = 𝑠𝑎𝑡𝑙𝑖𝑛(𝑛) = { 1 𝑘ℎ𝑖 𝑛 > 1 𝑛 𝑘ℎ𝑖 0 ≤ 𝑛 ≤ 1 0 𝑘ℎ𝑖 𝑛 < 0 (12.7) Hình 12. 9 Đồ thị của hàm Satlin.
SVTH: NGUYỄN TRẦN MINH MSSV: 1648020 Trang 125
12.2.6 Hàm Satlins
Tương tự như hàm satlin hàm satlins chuyển đổi giá trị đầu ra tuyến tính bão hịa ở hai giá trị -1 và 1. Hàm satlins có biểu thức như sau:
𝑎 = 𝑠𝑎𝑡𝑙𝑖𝑛(𝑛) = { 1 𝑘ℎ𝑖 𝑛 > 1 𝑛 𝑘ℎ𝑖 − 1 ≤ 𝑛 ≤ 1 −1 𝑘ℎ𝑖 𝑛 < −1 (12.8) 12.2.7 Hàm Poslim
Hàm Poslim sẽ lọc và loại bỏ tất cả các giá trị đầu vào âm và gán vào đó giá trị bằng 0. Hàm
Poslim có đồ thị tuân theo biểu thức dưới đây:
𝑎 = 𝑝𝑜𝑠𝑙𝑖𝑚(𝑛) = {𝑛 𝑘ℎ𝑖 𝑛 ≥ 0
0 𝑘ℎ𝑖 𝑛 < 0 (12.9)
Hình 12. 10 Đồ thị của hàm Satlins
SVTH: NGUYỄN TRẦN MINH MSSV: 1648020 Trang 126
12.2.8 Hàm Radbas
Hàm Radbas có biểu thức và đồ thị thể hiện đặc tính của hàm như sau:
𝑎 = 𝑟𝑎𝑑𝑏𝑎𝑠(𝑛) = exp (−𝑛2) (12.10)
12.2.9 Hàm Tribas
Hàm Tribas có đặc tính chuyển đổi giá trị đầu ra tuyến tính theo trị tuyệt đối của đầu vào, và bão hòa tại hai giá trị -1 và 1. Hàm có tác dụng loại bỏ tất cả các giá trị đầu vào nằm ngoài khoảng -1 ≤ n ≤ 1,và tạo ra giá trị đầu ra luôn dương.
𝑎 = 𝑡𝑟𝑖𝑏𝑎𝑠(𝑛) = {1 − 𝑎𝑏𝑠(𝑛) 𝑘ℎ𝑖 |𝑛| ≤ 1
0 𝑘ℎ𝑖 |𝑛| > 1 (12.11)
Nhìn chung tất cả các hàm kích hoạt đều có mục đích là: chuẩn hóa giá trị đầu ra cho mạng nơ-ron nhân tạo. Tùy vào từng bài toán cụ thể chúng ta sẽ sử dụng hàm kích hoạt cho
Hình 12. 12 Đồ thị của hàm Radbas.
SVTH: NGUYỄN TRẦN MINH MSSV: 1648020 Trang 127 phù hợp. Với các tín hiệu đầu vào chứa nhiều thông tin nhiễu (noise) ta nên sử dụng những làm kích hoạt có giới hạn cứng hoặc có điểm bão hịa cho lớp ẩn đầu tiên.
12.3 Huấn luyện mạng ( Trainning )
Tới đây chúng ta đã có khái niệm về Layer, nodes, Weights, bias và hàm kích hoạt. Nhưng làm thế nào chúng ta có thể tìm được bộ trọng số tối ưu để mạng nơ-ron nhân tạo có thể dự đốn chính xác kết quả như ta mong muốn. Chúng ta cùng xét một mạng nơ-ron nhân tạo đơn giản như sau:
Hình 12. 14 Quá trình truyền thằng (feedforward)
Để dự đoán kết quả y trước hết ta phải dự đoán một ŷ từ các giá trị x1, x2
𝑎1(1) = 𝑓1(𝑥1𝑤11(1)𝑥2𝑤21(1)+ 𝑏1(1)
𝑎2(1) = 𝑓1(𝑥1𝑤12(1)𝑥2𝑤22(1)+ 𝑏2(1) (12.12)
𝑦 = 𝑓2(𝑎1(1)𝑤11(2)+ 𝑎2(1)𝑤21(2)+ 𝑏1(2)
Quá trình này được gọi là truyền thẳng (feedforward) bởi vì q trình tính tốn được thực hiện lần lượt từ đầu vào tới đầu ra của mạng nơ-ron nhân tạo.
Sau khi tìm được ŷ chúng ta cần so sánh kết quả này với giá trị y thực tế để đánh giá kết quả. Có nhiều cách tính và thể hiện sai số khác nhau, ở tài liệu này chúng ta sẽ quan tâm tới cách tính sai số bình phương trung bình: MSE (Mean squared deviation).
𝑀𝑆𝐸 = 1
SVTH: NGUYỄN TRẦN MINH MSSV: 1648020 Trang 128 Trong đó: MSE là sai số bình phương trung bình, Ŷi là kết quả dự đoán thứ i, Yi là kết quả thực tế thứ i.
Sau khi đánh giá sai số nếu chưa có được kết quả như mong muốn ta cần cải thiện sai số này bằng cách điều chỉnh lại bộ trọng số sao cho sai số ở mức cho phép.
Có nhiều phương pháp để thực hiện điều này, và phổ biến nhất là phương pháp lan truyền ngược (Backpropagation) giúp cập nhật các trọng số ngược từ layer cuối cùng đến layer đầu tiên. Các trọng số ở layer cuối cùng được cập nhật trước vì nó gần với kết quả nhất.
Hình 12. 15 Quá trình cập nhật trọng số (Backpropagation)
𝑤𝑖′ = 𝑤𝑖 + ∆𝑤𝑖 𝑏𝑖′ = 𝑏𝑖+ ∆𝑤𝑖
Trong đó: w’ là trọng số sau khi cập nhật, b’ là Bias sau khi cập nhật.
Tồn bộ q trình: dự đốn ŷ và cập nhật bộ trọng số từ đầu ra ngược lại tới đầu vào được gọi là vòng lặp training (epoch).
Tùy thuộc vào các thật toán khác nhau quá trình cập nhật bộ trọng số của mạng nơ-ron nhân tạo sẽ đạt được Error mong muốn với số lượng epoch khác nha
SVTH: NGUYỄN TRẦN MINH MSSV: 1648020 Trang 129
CHƯƠNG 13
KHỞI TẠO MẠNG NƠ-RON NHÂN TẠO TRÊN MATLAB
13.1 Giới thiệu Sử dụng mạng nơ-ron nhân tạo trên Matlab.
Matlab là viết tắt của Matrix Laboratory (phịng thí nghiệm ma trận), là một phần mềm lập trình ngơn ngữ bậc cao, tích hợp khả năng tính tốn, hình ảnh hóa, lập trình trong một mơi trường dễ sử dụng. Matlab thường với mục đích như:
Toán và điện toán Phát triển thuật tốn
Dựng mơ hình, giả lập, tạo ngun mẫu Phân tích, hình ảnh hóa dữ liệu
Đồ họa khoa học và kỹ thuật
Phát triển ứng dụng, giao diện đồ họa người dùng Graphic User Interface Matlab là hệ thống tương tác, trong đó các phần tử dữ liệu xếp dưới dạng mảng, không cần chiều hướng, cho phép giải quyết nhiều vấn đề tính tốn, đặc biệt là với ma trận và véc-tơ, trong thời gian nhanh chóng, chỉ bằng một phần so với các ngôn ngữ không tương tác vô hướng như C hay Fortran.
Qua nhiều năm, Matlab đã phát triển và phục vụ nhiều người dùng. Trong mơi trường đào tạo, nó là cơng cụ hướng dẫn chuẩn mực cho cả các khóa học dẫn nhập và chun sâu trong tốn học, kỹ thuật và khoa học.
Matlab có các giải pháp hướng tới ứng dụng có tên toolbox. Toolbox rất quan trọng với hầu hết người dùng Matlab bởi nó cho phép học và áp dụng cơng nghệ chun mơn hóa dễ dàng hơn. Các lĩnh vực mà toolbox có thể làm việc gồm xử lý tín hiệu, hệ thống kiểm sốt, mạng thần kinh, logic mờ, phép biến đổi wavelet, mô phỏng…
SVTH: NGUYỄN TRẦN MINH MSSV: 1648020 Trang 130 Trong tài liệu này tác giả sử dụng phần mềm Matlab và máy tính có thơng số như trong bảng sau:
Bảng 13.1 thơng số phần mềm và cấu hình máy tính tác giả sử dụng. STT Thiết bị, phần mềm Thông số/Phần mềm STT Thiết bị, phần mềm Thông số/Phần mềm
1 Phần mềm Matlab (R2017b)
2 Máy tính Laptop
3 CPU Core i5-5300U (2.3GHz)
4 RAM 8Gb
5 Ổ cứng SSD 240GB
6 Hệ điều hành Windows 10 Pro 64bit
13.2 Khởi tạo mạng nơ-ron nhân tạo trên Matlab.
Trong Matlab có sẵn những thư viện ứng dụng cho mạng nơ-ron nhân tạo, để khởi tạo một mạng nơ-ron nhân tạo chúng ta sử dụng lệnh sau:
Nhập lệnh:
Net =newff(PR,[S1 S2...SN],[TF1 TF2...TFNl],BTF,PF)
Các tham số trong cú pháp trên có ý nghĩa như sau: Tham số PR
Tham số PR là mảng chứa giá trị Min-Max của ma trận giá trị đầu vào. Tham số Si=[S1,S2…SN]
Si -Là kích thước của lớp ẩn thứ i (Số nodes trên lớp ẩn i). Là một ma trận có 1 hàng
và n cột. Số lượng cột của ma trận Si là số lượng lớp ẩn, giá trị tại mỗi cột của Si tương ứng với số lượng node có tại lớp ẩn đó.
Ví dụ : Si = [12 14 5] Mạng nơ-ron nhân tạo sẽ có 3 lớp ẩn, và lần lượt có 12 node
trên lớp ẩn thứ nhất, 14 node trên lớp ẩn thứ 2 và 5 node trên lớp ẩn thứ 3. Thông thường người ta chọn số node trên các lớp ẩn giống nhau.
SVTH: NGUYỄN TRẦN MINH MSSV: 1648020 Trang 131
Tham số TFi =[TF1, TF2,….TFi,TFN1]
TFi -Là hàm kích hoạt của lớp thứ i (mặc đinh = 'tansig').Tương ứng với ma trận Si có n
lớp ẩn,TFi là một mảng chứa n+1 hàm kích hoạt. Với phần tử TFN1 là hàm kích hoạt tại lớp đầu ra của mạng.
Như ví dụ ở trên sẽ có mảng TFi tương ứng sẽ là: ['tansig', 'tansig', 'tansig', purelin]. Để việc tính tốn đơn giản người ta thường chọn hàm kích hoạt giống nhau trên các lớp ẩn.
Bảng 13. 2 Hàm kích hoạt
STT Transfer
Functions Chú thích
1 compet Competitive transfer function. 2 hardlim Hard limit transfer function.
3 hardlims Symmetric hard limit transfer function 4 logsig Log sigmoid transfer function.
5 poslin Positive linear transfer function 6 purelin Linear transfer function.
7 radbas Radial basis transfer function. 8 satlin Saturating linear transfer function.
9 satlins Symmetric saturating linear transfer function 10 softmax Softmax transfer function.
11 tansig Hyperbolic tangent sigmoid transfer function. 12 tribas Triangular basis transfer function.
Tham số BTF
BTF -Là thuật toán training cho mạng nơ-ron nhân tạo, trong Matlab có các thuật tốn được liệt kê trong bảng dưới đây:
Bảng 13. 3 Thuật toán training
STT Training
Functions Chú thích
1 trainb Batch training with weight and bias learning rules. 2 trainbfg BFGS quasi-Newton backpropagation.
3 traincgb Powell-Beale conjugate gradient backpropagation. 4 traincgf Fletcher-Powell conjugate gradient backpropagation. 5 traincgp Polak-Ribiere conjugate gradient backpropagation. 6 traingd Gradient descent backpropagation.
SVTH: NGUYỄN TRẦN MINH MSSV: 1648020 Trang 132 8 traingdm Gradient descent with momentum backpropagation.
9 traingdx Gradient descent with momentum & adaptive lr backprop. 10 trainlm Levenberg-Marquardt backpropagation.
11 trainoss One step secant backpropagation. 12 trainrp Resilient backpropagation (Rprop).
13 trainscg Scaled conjugate gradient backpropagation
Tham số PF
PF -Là hàm tính sai số (hàm mất mát). Trong ngơn ngữ Matlab mạng nơ-ron nhân tạo có
thể sử dụng các phương pháp tính sai số như bảng sau:
Bảng 13. 4 hàm tính sai số (hàm mất mát).
STT Performance
Functions Chú thích
1 mae Mean absolute error performance function. 2 mse Mean squared error performance function. 3 msereg Mean squared error w/reg performance function. 4 sse Sum squared error performance function.
13.3 Cài đặt tham số cho mạng nơ-ron nhân tạo.
Trước khi huấn luyện chúng ta cần cài đặt các tham số cho mạng nơ-ron nhân tạo: Tham số ShowWindow
Tham số ShowWindow dùng để cài đặt trạng thái cho cửa sổ training. Nhập lệnh:
net.trainParam.showWindow = 0;
Với giá trị bằng 0, Matlab sẽ không hiển thị cửa sổ training (điều này góp phần giúp q trình training nhanh hơn), và ngược lại nếu showWindow =1 Matlab sẽ hiển thị cửa số
training.
Tham số goal.
Giống như tên gọi của nó tham số goal là mức sai số cho phép khi huấn luyện mạng. Nhập lệnh:
SVTH: NGUYỄN TRẦN MINH MSSV: 1648020 Trang 133 Dễ dàng nhận thấy là nếu chúng ta cài đặt giá trị sai số cho phép càng thấp thì kết quả dự báo của mạng sẽ càng tốt, tuy nhiên nó có thể gây cản trở cho quá trình traning và khả năng khái quát hóa của mạng.
Phân chia dữ liệu.
Tham số này dùng để chia dữ liệu huân luyện mạng thành các mảng với mục đích khác nhau.
Nhập lệnh:
net.divideParam.trainRatio = 0.6 ; net.divideParam.valRatio = 0.2 ; net.divideParam.testRatio = 0.2 ;
Mảng trainRatio là mảng dùng để huấn luyện mạng, mảng valRatio dùng để xác nhận, mảng testRatio dùng để kiểm tra mạng. Các mảng này được chia theo tỉ lệ so với tổng số dữ liệu mẫu. Ví dụ: trainRatio = 0.6 tức là mảng trainRatio sẽ chiếm 60% tổng số mẫu dữ liệu.
Tham số epoch
Thông thường khi huấn luyện mạng đạt được sai số mục tiêu quá trình huấn luyện sẽ dừng lại. Trong một số trường lợp (mạng không hội tụ, cài đặt tham số goal quá nhỏ…) mạng sẽ tiếp tục quá trình huấn luyện. Vì vậy cần cài đặt thơng số epoch để dừng q trình huấn luyện khi khơng có kết quả.
Nhập lệnh:
net.trainParam.epochs = 1000;
Nếu cài epochs quá nhỏ có thể làm cho mạng dự báo khơng chính xác vì mạng chưa đạt được sai số mục tiêu. Ở tài liệu này tác giả cài đặt epochs = 1000.
13.4 Huấn luyện mạng.
Để huấn luyện mạng nơ-ron nhân tạo chúng ta sử dụng cú pháp sau:
[net,tr] = train(net,X,T,Xi,Ai,EW)
SVTH: NGUYỄN TRẦN MINH MSSV: 1648020 Trang 134 Net là mạng được huấn luyện
Tham số tr
tr - Là hồ sơ huấn luyện (Ghi lại tốn bộ q trình huấn luyện như thời gian
huấn luyện số lần lặp epoch…)
Tham số X
X - Là mẫu dữ liệu đầu vào của mạng
Tham số T
T - Là mẫu dữ liệu đầu ra của mạng (mặc định = 0).
Tham số Xi,Ai,EW
Xi – Là điều kiện trễ đầu vào ban đầu (mặc định = 0) Ai – Là điều kiện trễ trên lớp ban đầu (mặc định = 0) EW – Là trọng số của lỗi.
Lưu ý: Tham số T là một tùy chọn phù hợp cho mạng sử dụng q trình học có kiểm sốt,
tham số Xi, Ai là những tùy chọn thích hợp với các mạng có độ trễ ở đầu vào hoặc trên các lớp ẩn. EW là một mảng trọng số lỗi, ở giá trị mặc định EW thì tất cả các giá trị đầu ra được xử lý với mức độ quan trọng như nhau, khi thay đổi hoặc đặt nó ở chế độ tự động điều chỉnh mạng nơ-ron nhân tạo sẽ xử lý và thay đổi mức độ quan trọng khác nhau của các giá trị đầu ra.
13.5 Dự báo ( Forecasting )
Sau khi khởi tạo, cài đặt và huấn luyện mạng nơ-ron nhân tạo, để dự báo ta dùng lệnh sau:
Nhập lệnh: y = sim (net, x);
Trong đó:
Net là mạng nơ-ron nhân tạo dùng để dự báo. X là mảng giá trị đầu vào dự báo.
SVTH: NGUYỄN TRẦN MINH MSSV: 1648020 Trang 135
CHƯƠNG 14
ỨNG DỤNG MẠNG NƠ-RON NHÂN TẠO DỰ BÁO TỒN THẤT 14.1 Đối tượng và phạn vi nghiên cứu
Đối tượng: Luận văn tập trung tìm hiểu, nghiên cứu, ứng dụng mạng nơ-ron nhân tạo dự báo tổn thất trên lưới điện 110 kV tỉnh Bến Tre.
Phạm vi: Thực hiện phân tích các số liệu thu nhập được từ:
- Phần mềm Appmeter: Chương trình đọc thơng số vận hành trạm 110 kV. - Các thông số vận hành của đơn vị Điện Lực thuộc Công ty Điện Lực Bến Tre.
14.2 Dữ liệu lưới điện 110 kV tỉnh Bến Tre
Trong tài liệu này, tác giả sử dụng số liệu là dữ liệu trong 24 ngày của lưới điện tỉnh Bến Tre từ ngày 01/06/2020 đến ngày 24/06/2020. Số liệu được trình bày tóm tắt như bảng dưới đây:
Bảng 14. 1 Tóm tắt cơng suất tác dụng đầu nguồn phát của lưới Pp (MW) Ngày 1:00 2:00 … … 23:00 24:00 01/06/2020 203,583 199,512 … … 203,851 212,146 02/06/2020 208,923 190,423 … … 206,564 188,318 03/06/2020 190,475 200,024 … … 223,669 208,020 … … … … … … … … … … … … … … 22/06/2020 207,856 198,167 … … 196,528 201,795 23/06/2020 203,647 209,457 … … 187,891 213,391 24/06/2020 217,572 215,741 212,524 212,109