Mơ hình mạng truyền thẳng nhiều lớp ẩn

Một phần của tài liệu Dự báo phụ tải cho tỉnh kiên giang sử dụng neural network (Trang 46 - 55)

Trong đĩ: P: vector đầu vào (vector cột); Wi: Ma trận trọng số của các nơron lớp thứ i; (Si

xRi: S hàng (nơron) - R cột (số đầu vào)); bi: Vector độ lệch (bias) của lớp thứ i (Six1: cho S nơron); ni: net input (Six1); fi: Hàm chuyển (hàm kích hoạt); ai: net output (Six1); : Hàm tổng thơng thường.

Mỗi liên kết gắn với một trọng số, trọng số này được thêm vào trong q trình tín hiệu đi qua liên kết đĩ. Các trọng số cĩ thể dương, thể hiện trạng thái kích thích, hay âm, thể hiện trạng thái kiềm chế. Mỗi nơron tính tốn mức kích hoạt của chúng bằng cách cộng tổng các đầu vào và đưa ra hàm chuyển. Một khi đầu ra của tất cả các nơron trong một lớp mạng cụ thể đã thực hiện xong tính tốn thì lớp kế tiếp cĩ thể bắt đầu thực hiện tính tốn của mình bởi vì đầu ra của lớp hiện tại tạo ra đầu vào của lớp kế tiếp. Khi tất cả các nơron đã thực hiện tính tốn thì kết quả được trả lại bởi các noron đầu ra. Tuy nhiên, cĩ thể là chưa đúng yêu cầu, khi đĩ một thuật tốn huấn luyện cần được áp dụng để điều chỉnh các tham số của mạng.

Trong hình trên, số nơron ở lớp thứ nhất và lớp thứ hai tương ứng là S1 và S2, ma trận trọng số đối với các lớp tương ứng là W1 và W2; cĩ thể thấy sự liên kết giữa các lớp mạng thể hiện trong hình vẽ: ở lớp thứ 2, vector đầu vào chính là net output của lớp thứ nhất.

Tương tự, nếu thêm vào các lớp khác nữa vào trong cấu trúc này thì lớp mạng cuối cùng thường là lớp cho ra kết quả của tồn bộ mạng, lớp đĩ gọi là lớp ra (Output Layer). Mạng cĩ nhiều lớp cĩ khả năng tốt hơn là các mạng chỉ cĩ một lớp, chẳng hạn như mạng hai lớp với lớp thứ nhất sử dụng hàm sigmoid và lớp thứ hai

HVTH: Trịnh Tiến Uy - 1620632 36

dùng hàm đồng nhất cĩ thể áp dụng để xấp xỉ các hàm tốn học khá tốt, trong khi các mạng chỉ cĩ một lớp thì khơng cĩ khả năng này.

Xét trường hợp mạng cĩ hai lớp như hình: 3.10, cơng thức tính tốn cho đầu ra như sau: a2

= f2(W2(f1(W1P + b1)) + b2) (3.43)

2. Khởi tạo mạng

Bước đầu tiên trong huấn luyện mạng tiến lũy là tạo đối tượng mạng. Hàm newff cho phép tạo mạng một mạng feedforward. Nĩ yêu cầu 4 ng vào và trả ra đối tượng mạng. Ng vào thứ nhất là là R với 2 ma trận các giá trị max min của mỗi biến thành phần vector ng vào. Ng vào thứ hai là một mảng chứa kích thước của mỗi lớp. Ng vào thứ 3 là một mảng cell chứa tên của hàm truyền được dùng trong mỗi lớp, ng vào cuối cùng chứa tên của phương pháp huấn luyện mạng được sử dụng.

Hàm trên tạo mạng 2 ng vào với ng vào đầu tiên của mạng [-1,2], ng vào thứ hai của mạng [0,5] và cĩ hai lớp ẩn. Trong đĩ, lớp ẩn thứ nhất cĩ 3 nơron cĩ hàm truyền tansig, lớp ẩn cịn lại cĩ 1 nơron cĩ hàm truyền tuyến tính purelin. Thuật tốn huấn luyện mạng này là gradient descent(traingd).

3. Khởi tạo các trọng số

Trước khi huấn luyện mạng tiến lũy, các trọng số W và ngưỡng b phải được khởi tạo. Hàm newff sẽ tự động khởi tạo các trọng số này nhưng chúng ta vẫn phải khởi tạo lại chúng. Dùng lệnh init để khởi tạo các trọng số W và ngưỡng b.

Phương pháp cụ thể khởi tạo giá trị mạng phụ thuộc vào thơng số mạng như net.initFcn và net>Lay{I .initFcn. Thơng số net.initFcn sử dụng xác định hàm khởi tạo trên tồn mạng. Hàm mặc định cho mạng tiến lũy là inilay cho phép mỗi lớp sử dụng hàm khởi tạo riêng của nĩ. Với cách cài đặt này, thơng số net.Lay{I .initFcn xác định phương pháp khởi tạo cho mỗi lớp.

Đối với mạng tiến lũy cĩ 2 phương pháp khởi tạo lớp khác nhau, thường sử dụng là initwb và initnw. Hàm initwb tạo giá trị khởi động trở về giá trị cũ đã khởi động của từng trọng số W và ngưỡng b. Với mạng tiến lũy, giá trị khởi tạo của trọng số thường dùng hàm rands cho giá trị ngẫu nhiên nằm trong khoảng [-1,1].

HVTH: Trịnh Tiến Uy - 1620632 37

Hàm initnw thường sử dụng với hàm truyền sigmoid. Phương pháp này dựa trên Widrow tạo giá trị trọng số và ngưỡng ban đầu cho một lớp trong vủng hoạt động của lớp nơron lớp đĩ với mọi giá trị ng vào. Ưu điểm của phương pháp này là ít nơron bị thừa và thời gian huấn luyện nhanh hơn.

Hàm khởi tạo init thường được hàm newff gọi, do đĩ mạng tự động khởi tạo lại các giá trị mặc định. Tuy nhiên, người huấn luyện cĩ thể khởi tạo lại các thơng số này.

3.2.4. Thuật tốn huấn luyện mạng theo giải thuật lan truyền ngƣợc cho dự báo sử dụng mạng nơron nhân tạo

Huấn luyện mạng học các dữ liệu bằng cách lần lượt đưa các mẫu vào cùng với những giá trị mong muốn. Mục tiêu của việc huấn luyện mạng đĩ là tìm ra tập các trọng số cho ta giá trị nhỏ nhất tồn cục của hàm lỗi.

Sự lan truyền ngược (back propagation) cĩ thể huấn luyện mạng feedforward với nhiều hàm truyền khác nhau. Khái niệm back propagation dựa trên quá trình xử lý bằng cách lấy đạo hàm của sai số mạng, quá trình xử lý này sử dụng nhiều cách để tối ưu hĩa khác nhau. Cĩ nhiều thuật tốn huấn luyện back propagation khác nhau, chúng khác nhau về cách tính tốn, dung lượng bộ nhớ và khơng cĩ thuật tốn nào là tốt nhất đối với mọi trường hợp. Cĩ 4 thuật tốn huấn luyện, Matlab khuyến dùng trong mơ hình dự báo: Lenvenberg-Marquardt (trainlm), Bayesian (trainbr), Scaled Conjugatem Gradient (trainscg) và Resillient Backpropagation (trainrp).

1. Thuật tốn huấn luyện Lenvenberg – Marquardt (trainlm)

Giống như phương pháp Quasi-Newton, giải thuật Levenberg – Marquardt được thiết kế để đạt đặc tính hội tụ bậc 2 mà khơng phải tính ma trận Hessian. Khi hàm hiệu suất cĩ dạng là tổng bình phương thì ma trận Hessian được tính là: H=JT

J và gradient được tính là: g = JTe.

Và J là ma trận Jacobian là đạo hàm bậc nhất sai số mạng tại điểm trọng số và ngưỡng hiện tại, và e là vector sai số mạng. Ma trận Jacobian được tính bằng kỹ thuật back propagation chuẩn nên ít phức tạp hơn tính ma trận Hessian.

HVTH: Trịnh Tiến Uy - 1620632 38

Giải thuật Levenberg_Marquardt sử dụng phép gần đúng này với ma trận Hessian trong phương pháp Newton:

J J IJ e

x

xk1  kT  1 T (3.44)

Khi  = 0, đây là phương pháp Newton. Khi  lớn, phương pháp này trở thành gradient descent với kích thước nấc nhỏ. Phương pháp Newton nhanh hơn và chính xác hơn. Thuật tốn này khá nhanh để huấn luyện mạng feedforward kích thước nhỏ (cĩ thể lên đến vài trăm trọng số).

Trở ngại chính của thuật tốn Levenberg_Marquardt là yêu cầu lưu trữ nhiều ma trận kích thước khá lớn. Kích thước của ma trận Jacobian là Q x n với Q là số mẫu huấn luyện và n là số trọng số và ngưỡng của mạng. Ví dụ, nếu ta chia ma trận Jacobian thành hai ma trận con, chúng ta cĩ thể tính ma trận Hessian tương ứng như sau:  1 2 1 1 2 2 2 1 J J J J J J J J J J H T T T T T           (3.45)

Do đĩ, ma trận đầy đủ khơng phải tính một lần. net.trainFcn = 'trainlm'

[net,tr] = train(net,...)

Trainlm là một hàm huấn luyện mạng mà cập nhật giá trị trọng số và ngưỡng theo giải thuật tối ưu Levenberg-Marquardt.

net.trainFcn = 'trainlm' thiết lập mạng đặc tính trainFcn [net,tr] = train(net,...) huấn luyện mạng với trainlm.

Các thơng số mặc định

net.trainParam.epochs 1000 Số chu kỳ huấn luyện tối đa

net.trainParam.goal 0 Giá trị mục tiêu cài đặt

net.trainParam.max_fail 6 Các lỗi xác nhận tối đa net.trainParam.min_grad 1e-7 Độ dốc kết quả sai số

net.trainParam.mu 0.001 Tốc độ

net.trainParam.mu_dec 0.1 Giảm trọng số

HVTH: Trịnh Tiến Uy - 1620632 39

net.trainParam.mu_max 1e10 Thay đổi trọng số tối đa

net.trainParam.show 25 Hiển thị thơng số

net.trainParam.showCommandLine false Tạo ra dịng lệnh suất net.trainParam.showWindow true Hiện giao diện huấn luyện net.trainParam.time inf Thời gian tối đa để huấn luyện

2. Thuật tốn huấn luyện Bayesian (trainbr)

Thuật tốn Bayes dựa trên định lý Bayes được phát biểu như sau:

(3.46)

Theo tính chất độc lập điều kiện:

(3.47)

Trong đĩ: P(CiX)là xác suất thuộc phân lớp i khi biết trước mẫu X; P(Ci) xác suất là phân lớp i; P(xkCi) xác suất thuộc tính thứ k mang giá trị xk khi đã biết X thuộc phân lớp i.

Các bước thực hiện thuật tốn Bayes:

 Bước 1: Huấn luyện Bayes (dựa vào tập dữ liệu), tính P(Ci) và P(xkCi).  Bước 2: Phân lớp Xnew = (x1,x2,.....xn), tính xác suất thuộc từng phân lớp khi đã biết trước Xnew. Xnew được gán vào lớp cĩ xác suất lớn nhất theo cơng thức:

(3.48)

Trainbr là một hàm huấn luyện mạng, cho phép cập nhật các giá trị trọng số và ngưỡng. Giảm thiểu sự kết hợp của các lỗi bình phương và trọng số và sau đĩ xác định sự kết hợp chính xác để tạo ra một mạng nơron cĩ tính khái qt tốt. Q trình này được gọi là quy tắc Bayes.

net.trainFcn = 'trainbr' : Thiết lập mạng

HVTH: Trịnh Tiến Uy - 1620632 40

Các thơng số mặc định

net.trainParam.epochs 1000 Số chu kỳ huấn luyện tối đa net.trainParam.goal 0 Giá trị mục tiêu cài đặt

net.trainParam.mu 0.005 Tốc độ

net.trainParam.mu_dec 0.1 Giảm trọng số

net.trainParam.mu_inc 10 Độ tăng trọng số

net.trainParam.mu_max 1e10 Thay đổi trọng số tối đa net.trainParam.max_fail 0 Các lỗi xác nhận tối đa net.trainParam.min_grad 1e-7 Độ dốc kết quả sai số

net.trainParam.show 25 Hiển thị thơng số

net.trainParam.showCommandLine false Tạo ra dịng lệnh suất net.trainParam.showWindow true Hiện giao diện huấn luyện net.trainParam.time inf Thời gian tối đa để đào tạo

3. Thuật tốn huấn luyện Scaled Conjugate Gradient (trainscg)

Trong mỗi thuật tốn conjugate gradient đều yêu cầu hướng tìm ở mỗi vịng lặp. Hướng tìm này tính tốn rất phức tạp vì u cầu mạng nơron phải đáp ứng với tất cả ng vào huấn luyện, được tính tốn nhiều lần ở mỗi bước tìm kiếm. Thuật tốn Scaled Conjugate Gradient được phát triển bởi Moller và được thiết kế để giảm thời gian tính tốn ở mỗi bước tìm kiếm. Thuật tốn này rất phức tạp để diễn tả trong một vài dịng, tuy nhiên ý tưởng cơ bản là kết hợp phương pháp tiếp cận khu vực độc quyền (The model-trust region approach) bằng cách sử dụng thuật tốn Levenberg-Marquardt kết hợp với thuật tốn Conjugate Gradient.

Trainscg là hàm huấn luyện mạng, hàm này cập nhật giá trị trọng số và ngưỡng các giá trị theo phương pháp liên hiệp.

net.trainFcn = 'trainscg' : thiết lập mạng. [net,tr] = train(net,...) : huấn luyện mạng.

HVTH: Trịnh Tiến Uy - 1620632 41

Các thơng số mặc định

net.trainParam.epochs 1000 Số chu kỳ huấn luyện tối đa

net.trainParam.show 25 Hiển thị thơng số

net.trainParam.showCommandLine false Tạo ra dịng lệnh

net.trainParam.showWindow true Hiện giao diện huấn luyện net.trainParam.goal 0 Giá trị mục tiêu cài đặt

net.trainParam.time inf Thời gian tối đa để huấn luyện net.trainParam.min_grad 1e-5 Độ dốc kết quả sai số

net.trainParam.max_fail 6 các lỗi xác nhận tối đa

net.trainParam.sigma 5.0e-5 Xác định sự thay đổi trong trọng số cho xấp xỉ hàm bậc hai

net.trainParam.lambda 5.0e-7 Thơng số để điều chỉnh các tính khơng r ràng của ma trận Hess

4. Thuật tốn huấn luyện Resilient backpropagation (trainrp)

Hàm trainrp là hàm huấn luyện mạng cho phép cập nhật trọng số và trọng ngưỡng theo giải thuật resilient backpropagation algorithm (Rprop). Hàm trainrp cĩ thuật tốn huấn luyện chế độ batch đơn giản, cĩ độ hội tụ nhanh hơn nhiều so với hàm trainlm, ít tốn bộ nhớ và được lựa chọn nhiều.

Các mạng đa lớp thường sử dụng hàm truyền sigmoid trong các lớp ẩn. C hàm này gọi là hàm nén (squashing functions), vì chúng nén số liệu ng vào vơ hạn thành số liệu ng ra hữu hạn. Các hàm sigmoid cĩ đặc tính là độ dốc của hàm đạt zero khi ng vào cĩ giá trị lớn. Đây chính là vấn đề được đề cập khi sử dụng giải thuật độ dốc lớn nhất để huấn luyện mạng đa lớp dùng hàm sigmoid, vì độ dốc (gradient) cĩ thể cĩ biên độ rất nhỏ và do đĩ trọng số và ngưỡng chỉ thay đổi nhỏ, cho dù trọng số và ngưỡng ở rất xa giá trị tối ưu.

Mục đích của thuật tốn huấn luyện phục hồi mạng Resident Backpropagation (Rprop) là loại bỏ các nhược điểm này về biên độ của các đạo hàm riêng phần. Chỉ sử dụng dấu của đạo hàm để xác định hướng cập nhật trọng số; biên độ của đạo hàm khơng ảnh hưởng đến việc cập nhật trọng số. Độ thay đổi

HVTH: Trịnh Tiến Uy - 1620632 42

trọng số dựa trên giá trị cập nhật riêng lẻ. Giá trị cập nhật của mỗi trọng số và ngưỡng tăng bởi hệ số delta_inc khi đạo hàm của hàm hiệu suất tại những trong số tức thời cùng dấu với 2 lần lặp tiếp theo. Giá trị cập nhật sẽ giảm bởi hệ số delta_dec khi đạo hàm ứng với trọng số hiện tại đổi dấu so với lần lặp trước đĩ. Nếu đạo hàm bằng khơng thì giá trị cập nhật giữ nguyên. Khi trọng số dao động thì sự thay đổi trọng số sẽ giảm, nếu trọng số tiếp tục thay đổi trên cùng một hướng sau nhiều vịng lặp thì biên độ thay đổi trọng số sẽ giảm.

Phương pháp này thường nhanh hơn giải thuật giảm độ dốc nhất chuẩn (Rprop algorithm).

Trainrp là một hàm huấn luyện mạng, hàm này cập nhật giá trị trọng số và ngưỡng theo thuật tốn lan truyền ngược.

net.trainFcn = 'trainrp' : ( thiết lập mạng)

[net,tr] = train(net,...) : (huấn luyện mạng với trainrp)

Các thơng số mặc định:

net.trainParam.epochs 1000 Số chu kỳ huấn luyện tối đa

net.trainParam.show 25 Hiển thị thơng số

net.trainParam.showCommandLine Sai Tạo ra dịng lệnh suất net.trainParam.showWindow đúng Hiện giao diện huấn luyện net.trainParam.goal 0 Giá trị mục tiêu cài đặt

net.trainParam.time inf Thời gian tối đa để huấn luyện net.trainParam.min_grad 1e-5 Độ dốc hiệu suất tối thiểu net.trainParam.max_fail 6 Các lỗi xác nhận tối đa

net.trainParam.lr 0.01 Tốc độ học

net.trainParam.delt_inc 1.2 Độ tăng trọng số net.trainParam.delt_dec 0.5 Giảm đổi trọng số

net.trainParam.delta0 0.07 Thay đổi trọng số ban đầu net.trainParam.deltamax 50.0 Thay đổi trọng số tối đa

HVTH: Trịnh Tiến Uy - 1620632 43

CHƢƠNG 4

GIẢI THUẬT DỰ BÁO PHỤ TẢI ĐỀ XUẤT 4.1. Huấn luyện mạng nơron cho mơ hình dự báo phụ tải điện

Để tiến hành huấn luyện mạng nơron, cần xác định cấu trúc và các thơng số mạng cần thiết như: số lớp ẩn, số nơron lớp ẩn, dạng hàm truyền, số vịng lặp,... và chọn mạng nuơi tiến (feedforward net) nhiều lớp kết hợp với giải thuật lan truyền ngược (back propagation) để huấn luyện, với các thơng số như sau:

 Hàm truyền (Tranformer Function): cĩ bốn lựa chọn hàm truyền cho mạng là hàm tansig-tansig, hàm tansig-logsig, hàm logsig-tansig và hàm logsig-logsig. Lớp ng ra mặc định là hàm purelin.

 Số nơron lớp ẩn (NumNeural): là một hằng số phụ thuộc vào người huấn luyện mạng.

 Số vịng lặp (NumEpochs): là một hằng số phụ thuộc vào người huấn luyện mạng.

 MSE (Mean Squared Errors): sai số trung bình bình phương mà người huấn luyện mong muốn.

 Dữ liệu đầu vào (Input Data): Dữ liệu được nạp vào mạng bằng chương Excel cĩ dạng ma trận mx168 (24 giờ nhân với 7 ngày trong 1 tuần). Sau khi nhập đầy đủ các thơng số mạng, chương trình Matlab sẽ tính tốn các hệ số W, b sao cho sai số MSE đạt được gần nhất với yêu cầu đề ra. Kết quả, cĩ được mạng nơron hồn chỉnh cĩ thể dự báo cho 1 tuần tiếp theo ngay sau đĩ.

HVTH: Trịnh Tiến Uy - 1620632 44

4.2. Giải thuật chƣơng trình huấn luyện

Một phần của tài liệu Dự báo phụ tải cho tỉnh kiên giang sử dụng neural network (Trang 46 - 55)