Tải bản đầy đủ (.docx) (18 trang)

Backpropagation

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (129.8 KB, 18 trang )

CHƯƠNG 5
Backpropagation
Backpropagation thực hiện dựa trên quy luật học Widrow–Hoff tổng quát hóa cho mạng đa lớp
và các hàm truyền phi tuyến khác nhau. Mạng có ngưỡng, một lớp sigmoid và một lớp tuyến
tính ngõ ra có thể mô phỏng bất kì hàm nào với số mẫu rời rạc hữu hạn.
Thuật toán Backpropagation chuẩn là gradient descent, chính là quy luật học Widrow–Hoff.
Khái niệm Backpropagation mô tả cách tính gradient trong mạng đa lớp phi tuyến. Thuật toán
cơ bản có một số thay đổi dựa trên các kỹ thuật tối ưu hóa chuẩn như là các phương pháp
“conjugate gradient” và “Newton”.
Mạng Backpropagation được huấn luyện chính xác sẽ cho đáp ứng hợp lý khi đưa ngõ vào chưa
từng được huấn luyện. Thông thường tín hiệu mới vào có ngõ ra tương tự với ngõ ra chính xác
của tín hiệu vào đã được huấn luyện giống với ngõ vào mới này. Do tính chất tổng quát hóa
này, ta có thể huấn luyện mạng dựa trên các cặp vào/ra đại diện mà vẫn cho kết quả tốt đối với
các tín hiệu chưa được huấn luyện.
1. TỔNG QUÁT
1.1 Cấu trúc
Phần này sẽ trình bày cách thiết kế mạng thường sử dụng với thuật toán Backpropagation _
mạng feedforward đa lớp.
1.1.1 Mô hình neuron ( tansig, logsig, purelin )
Neuron cơ bản có R ngõ vào, mỗi ngõ vào có trọng số tương ứng là W. Tổng của các ngõ vào
có trọng số và ngưỡng tạo nên tín hiệu vào của hàm truyền f. Neuron có thể sử dụng nhiều loại
hàm truyền khác nhau để tạo ra tín hiệu ngõ ra.
Mạng đa lớp thường sử dụng hàm truyền log_sigmoid.
Hàm truyền logsig tạo giá trò ngõ ra giữa 0 và 1 khi ngõ vào biến thiên từ -  đến +. Hơn nữa,
mạng đa lớp cũng có thể sử dụng hàm truyền tansig.
Đôi khi mạng Backpropagation cũng sử dụng hàm tuyến tính purelin.
Nếu lớp cuối cùng của mạng đa lớp có các neuron sigmoid thì ngõ ra của mạng giới hạn trong
một vùng nhỏ. Nếu sử dụng neuron tuyến tính thì ngõ ra của mạng có thể lấy bất kỳ giá trò
nào.
1.1.2 Mạng feedforward
Mạng một lớp gồm các neuron logsig có hai ngõ vào như sau :


Mạng này thường có một hay nhiều lớp ẩn gồm các neuron sigmoid, lớp ngõ ra thường gồm các
neuron tuyến tính. Các neuron trong các lớp ẩn có hàm truyền phi tuyến cho phép mạng học
các mối quan hệ tuyến tính và phi tuyến giữa vector ngõ vào và ngõ ra. Lớp ngõ ra tuyến tính
cho phép mạng tạo giá trò ra khoảng (-1,1).
Mặt khác nếu muốn ép buộc ngõ ra của mạng (ví dụ giữa 0 và 1) thì lớp ngõ ra nên sử dụng
hàm truyền sigmoid (ví dụ logsig).
a. Hàm tạo mạng (newff)
Bước đầu tiên huấn luyện mạng feedfoward là tạo đối tượng mạng. Hàm newff tạo mạng
feedforward.
Ví dụ :
Net= newff ( [-1 2; 0 5],[3 1],{‘tarsig’,’purelin’},’traingd’) ;
Hàm trên tạo mạng hai ngõ vào, hai lớp có hàm truyền là tansig và purelin, dùng thuật toán
gradient descent.
b. Hàm khởi động các trọng số :
Trước khi huấn luyện mạng feedforward, trọng số và ngưỡng phải được khởi tạo. Dùng lệnh
init để tạo giá trò đầu cho trọng số và ngưỡng.
Ví du ï: net = init (net)

Kỹ thuật cụ thể sử dụng khởi tạo giá trò mạng phụ thuộc vào các thông số mạng như
net.initFcn và net.Layer{I}.initFcn. Thông số net.initFcn sử dụng xác đònh hàm khởi động
trên toàn mạng. Hàm mặc đònh cho mạng feedforward là initlay, cho phép mỗi lớp sử dụng
hàm khởi động riêng của nó. Với cách cài đặt này, thông số net.layers{i}.initFcn xác đònh
phương pháp khởi động cho mỗi lớp.
Đối với mạng feedforward có 2 phương pháp khởi động lớp khác nhau, thường được 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ố và ngưỡng. Đối với mạng feedforward giá trò khởi động của trọng số thường dùng
hàm rand cho giá trò ngẫu nhiên giữa (-1,1). Cách này thường sử dụng khi hàm truyền lớp là
tuyến tính. Hàm initnw thường sử dụng với mạng feedforward có hàm truyền sigmoid.
Phương pháp này dựa trên kỹ thuật Nguyễn và Widrow, tạo giá trò trọng số và ngưỡng ban đầu
cho một lớp trong vùng họat động của neuron lớp đó với mọi không gian ngõ vào. Phương

pháp này có nhiều ưu điểm như : ít neuron bò thừa và công việc huấn luyện nhanh.
Hàm khởi động init thường được hàm newff gọi, do đó mạng tự động khởi tạo các giá trò mặc
đònh. Tuy nhiên người sử dụng nếu muốn có thể khởi tạo lại trọng số và ngưỡng.
Ví dụ :net.layer{1}.initFcn = ‘initwb’;
net.inputWeights {1,1}.initFcn = ‘rands’;
net.biases{1,1}.initFcn = ‘rands’;
net.biases{2,1}.initFcn = ‘rands’;
net.init(net);
1.2 Huấn luyện mạng
Khi trọng số và ngưỡng của mạng đã được khởi tạo, mạng đã sẵn sàng huấn luyện. Cách thức
huấn luyện yêu cầu một tập các mẫu chỉ cách thức hoạt động của mạng gồm các cặp ngõ vào
và ngõ ra. Hàm hiệu suất mặc đònh của mạng feedforward là trung bình bình phương sai số.
Thuật toán Backpropagation
Có nhiều thuật toán Backpropagation khác nhau. Cách thực hiện đơn giản nhất là cập nhật
trọng số và ngưỡng trực tiếp sao cho hàm hiệu suất giảm nhanh nhất _ gradient có giá trò âm.
Mỗi vòng lặp thuật toán được viết lại như sau :
x
k+1
= x
k
- α
k
g
k
Với x
k
: vector trọng số và ngưỡng hiện tại.
g
k
: gradient hiện tại.

k : tốc độ học.
Có hai cách thực hiện gradient descent là chế độ incremental và chế độ batch. Trong chế độ
incremental, gradient được tính và cập nhật trọng số sau mỗi ngõ vào đưa vào mạng. Trong
chế độ batch, tất cả các ngõ vào đưa vào mạng trước khi cập nhật trọng số.
a. Huấn luyện incremental (ADAPT)
Trong chế độ incremental, việc huấn luyện mạng sử dụng hàm adapt. Có nhiều thông số phải
được thiết lập để hướng dẫn huấn luyện ở chế độ incremental. Đầu tiên, hàm net.adaptFcn
xác đònh sử dụng loại hàm huấn luyện. Giá trò mặc đònh là hàm adaptwb. Thông số xác đònh
hàm học là net.biases{i,j}.learnFcn, net.inputWeight{I,j}.learnFcn và
net.layerweights{i,j}.learnFcn. Cuối cùng là thông số xác đònh số lần huấn luyện
net.adaptParam.passes.
b. Hàm gradient descent (LEARNGD)

Đối với thuật toán giảm gradient nhanh nhất, trọng số và ngưỡng di chuyển theo hướng gradient
âm của hàm hiệu suất. Với thuật toán này, hàm học là learngd. Hàm learngd có một thông
số học là tốc độ học lr. Tốc độ học càng lớn, thì bước nhảy càng lớn. Nếu tốc độ học quá lớn,
thuật toán sẽ không ổn đònh. Nếu tốc độ học quá nhỏ, thuật toán sẽ hội tụ lâu.
c. Hàm gradient descent có quán tính (LEARNGD)

Bổ sung cho hàm learngd hội tụ nhanh hơn, mạng feedforward có thể sử dụng thuật toán
learndm _ giảm dốc nhất có quán tính. Quán tính cho phép mạng đáp ứng không chỉ với
gradient cục bộ, mà còn theo hướng mới của mặt phẳng sai số. Hoạt động giống bộ lọc thông
thấp, moment cho phép mạng bỏ qua các biểu hiện nhỏ trên mặt phẳng sai số.
Moment thay đổi trọng số bằng tổng một phần sự thay đổi trọng số cuối cùng và sự thay đổi
mới nhất theo quy luật học backpropagation. Biên độ ảnh hưởng của độ thay đổi trọng số cuối
cùng cho phép có là trung bình bằng một hằng số moment, là số giữa (0,1). Khi moment bằng
0, trọng số thay đổi theo gradient. Khi moment bằng 1, trọng số thay đổi dựa trên sự thay đổi
trọng số cũ và bỏ qua giá trò gradient.
d. Huấn luyện batch (TRAIN)
Ở chế độ này sử dụng hàm train, các trọng số và ngưỡng được cập nhật chỉ sau khi toàn bộ tập

huấn luyện đã đi qua mạng. Gradient của mỗi mẫu huấn luyện được cộng dồn để xác đònh độ
thay đổi của trọng số và ngưỡng.
e. Batch gradient descent (TRAINGD)
Tương đương với hàm learngd trong chế độ này là traingd, thực hiện hàm huấn luyện giảm
dốc nhất chuẩn. Trọng số và ngưỡng được cập nhật theo chiều hướng gradient âm của hàm
hiệu suất.
Có bảy thông số huấn luyện đối với hàm traingd là epochs, show, goal, time, min_grad,
max_fail và lr.

f. Batch gradient descent với momentum (TRAINGDM)

Thuật toán này tương đương với learngdm nhưng có hai điểm khác biệt. Thứ nhất, gradient
được tính bằng cách lấy tổng các gradient trong mỗi mẫu huấn luyện, trọng số và ngưỡng chỉ
được cập nhật sau khi tất cả các mẫu huấn luyện đi qua mạng.
Thứ hai, nếu hàm hiệu suất mới với số vòng lặp cho trước vượt quá hàm hiệu suất của vòng lặp
trước đó hơn max-perf-inc thì trọng số và ngưỡng mới sẽ bò hủy bỏ, hệ số moment cho bằng 0.
2. HUẤN LUYỆN NHANH
Phần trên chúng ta đã trình bày hai thuật toán huấn luyện backpropagation : gradient descent
và gradient descent có quán tính. Hai phương pháp này ứng dụng trong thực tế khá chậm.
Chúng ta sẽ khảo sát nhiều thuật toán có hiệu suất cao hội tụ nhanh từ 10 đến 100 lần so với
các thuật toán đã khảo sát ở trên.
Các giải thuật nhanh chia làm 2 loại chính :
• Loại thứ nhất sử dụng kỹ thuật thử là kỹ thuật được mở rộng từ việc phân tích hiệu
suất của thuật toán giảm dốc nhất chuẩn. Kỹ thuật này gồm giải thuật backpropagation
tốc độ học thay đổi có hàm huấn luyện traingda; và giải thuật phục hồi mạng
backpropagation với hàm huấn luyện trainrp.
• Loại thứ hai sử dụng kỹ thuật tối ưu hóa số chuẩn. Loại này có ba kỹ thuật tối ưu hóa
số dùng để huấn luyện mạng Neural Networks : conjugate gradient (traincgf, traincgb,
traincgp, trainscg), quasi _ Newton (trainbfg, trainoss) và Levenberg _ Marquardt
(trainlm).

2.1 Giải thuật tốc độ học thay đổi (TRAINDA,TRAINDX)
Trong giải thuật giảm dốc nhất chuẩn, tốc độ học được giữ cố đònh trong suốt thời gian huấn
luyện. Hiệu suất giải thuật này rất nhạy với sự thay đổi của tốc độ học. Nếu tốc độ học quá
lớn giải thuật sẽ bò dao động và không ổn đònh. Nếu tốc độ học quá nhỏ giải thuật sẽ tốn nhiều
thời gian để hội tụ. Trong thực tế khó xác đònh tốc độ học tối ưu và tốc độ học tối ưu thay đổi
trong suốt quá trình xử lý huấn luyện, khi giải thuật di chuyển trên mặt phẳng hiệu suất.
Hiệu suất của giải thuật giảm dốc nhất sẽ tăng nếu chúng ta cho phép tốc độ học thay đổi trong
suốt quá trình xử lý huấn luyện. Tốc độ học thích ứng sẽ cố gắng giữ bước nhảy càng lớn càng
tốt mà vẫn giữ việc học ổn đònh. Tốc độ học sẽ tương ứng với độ phức tạp của mặt phẳng sai
số cục bộ. Tốc độ học thích ứng yêu cầu có một vài thay đổi trong xử lý huấn luyện khi gọi
hàm traingd. Đầu tiên ngõ ra của mạng và sai số sẽ được tính. Ở mỗi epoch trọng số và
ngưỡng mới được tính dựa trên tốc độ học hiện tại. Ngõ ra và sai số mới sau đó mới được tính.
Khi có quán tính, nếu tỉ số sai số mới và sai số cũ lớn hơn max-perf-inc (thường bàng 1,04) thì
trọng số và ngưỡng mới sẽ bò hủy. Lúc này tốc độ học sẽ giảm (thường nhân với tỉ lệ lr_dec =
0,7 ). Ngược lại trọng số, ngưỡng mới v.v.. sẽ được giữ. Nếu sai số mới nhỏ hơn sai số cũ thì
tốc độ học tăng (thường nhân với tỉ lệ lr_inc = 1,05).
Thủ tục này làm tăng tốc độ học, nhưng chỉ mở rộng đối với mạng học không làm tăng sai số
lớn. Vì thế, tốc độ học gần tối ưu sẽ đạt được trong một vùng cục bộ. Khi tốc độ học lớn hơn
có thể làm cho việc học ổn đònh thì tốc độ học sẽ tăng.

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×