xấp xỉ bất kì một hàm nào với một số điểm gián đoạn tương đối tốt khi có đủ số neural trong lớp ẩn
6.2. Huấn luyện cho mạng lan truyền ngược:
Mạng được huấn luyện để xấp xỉ một hàm phi tuyến, một mô hình liên kết hay phân lớp. Trong suốt quá trình huấn luyện, các trọng số và các giá trị ngưỡng sẽ được điều chỉnh một cách hợp lí để làm tối thiểu giá trị hàm lỗi của mạng. Hàm lỗi mặc định cho mạng lan truyền ngược là trung bình bình phương lỗi (mean square error hay mse) – lỗi trung bình bình phương giữa ngõ ra thực tế và ngõ ra tính toán được. Sau đây là một vài thuật toán huấn luyện cho mạng lan truyền ngược . Tất cả các thuật toán này đều dùng độ dốc (gradient) của hàm lỗi để điều chỉnh các trọng số sao cho tối thiểu hàm lỗi. Độ dốc được tính toán dựavào một kĩ thuật gọi là lan truyền ngược.
Nguyên lý chung:
Nếu gọi ξ( )w là hàm lỗi (hay hàm chi phí) và w* là trọng số tối ưu
cần tìm thì:
*
( )w ( )w
ξ ≥ξ
Để tìm được giá trị nhỏ nhất của hàm ξ( )w hay trọng số tối ưu w*, ta
tiến hành lấy đạo hàm hàm lỗi thông qua phép gradient. Và ta sẽ có
* ( ) 0w ξ ∇ = Đặt 1 2 , ,..., T N w w w ∂ ∂ ∂ ∇ = ∂ ∂ ∂ là toán tử gradient ( )w ξ
⇒ ∇ là vector gradient của hàm lỗi.
Nguyên lý chung của việc tìm ra trọng số tối ưu là: − Khởi tạo trọng ban đầu w(0).
− Lặp tìm trọng số thứ n, w(n) sao cho ξ( ( ))w n <ξ( (w n−1))
Sơ lược về một số giải thuật cơ bản thường được dùng trong huấn luyện mạng lan truyền ngược:
Giảm dốc nhất ( steepest decent gradient ):
Trong thuật toán lan truyền ngược, vector gradient của mặt phẳng sai số sẽ được tính toán. Vector này chỉ ra đường giảm dốc nhất và vị trí hiện tại, vì thế chúng ta biết rằng nếu chúng ta di chuyển dọc theo nó một “khoảng ngắn”, cuối cùng chúng ta sẽ đạt được giá trị nhỏ nhất.
Tuy nhiên, khó khăn ở đây là quyết định độ lớn của từng bước di chuyển. Bước lớn có thể hội tụ nhanh hơn, nhưng có thể vượt quá điểm cần đến hay đi ra khỏi vùng có cực tiểu (nếu mặt phẳng sai số bị lệch tâm). Ngược lại, bước quá nhỏ có thể đi đến đúng hướng nhưng chúng ta cần phải thực hiện phép lặp nhiều lần. Trong thực tế, kích thước bước tỷ lệ với độ dốc và hằng số đặc biệt: tốc độ học. Giá trị chính xác của tốc độ học phụ thuộc vào từng ứng dụng cụ thể, và thường được chọn qua thực tiễn.
Lưu ý: Thuật toán thường có thêm khái niệm momentum.
Momentum sẽ thúc đẩy di chuyển đi theo một hướng xác định. Nếu sau khi qua nhiều bước đi cùng một hướng, thuật toán sẽ di chuyển nhanh hơn, đưa đến khả năng thoát khỏi vùng giá trị cực tiểu cục bộ và cũng có thể di chuyển nhanh chóng qua vùng bằng phẳng.
Ưu nhược điểm :
Những neural ẩn thuộc các lớp giữa có khả năng làm cho mạng học được những phần việc phức tạp bằng cách trích dần dần nhiều hơn những nét có ý nghĩa từ những mẫu vector nhập. Ngoài ra, ta có thể nhận thấy là mạng có mức độ liên thông cao.
Như đã đề cập trong nguyên tắc hoạt động, thuật toán này có thể xảy ra vấn đề cực tiểu cục bộ. Bên cạnh đó, trong không gian mô phỏng, MLP dàn trải nên ngoại suy ra xa dữ liệu huấn luyện thì thường nguy hiểm và không đúng.
Qui tắc học thích nghi:
Phương pháp này thực ra rất đơn giản .Mỗi trọng số sẽ có một hệ số học e khác nhau. Và khi cập nhật trọng số, nếu hướng lỗi hiện hành cùng bước với hướng trước thì cho e lớn, còn nếu ngược với hướng ở bước trước thì e sẽ nhỏ.
Hướng lỗi được xác định là dấu của dm , là đạo hàm riêng của hàm lỗi theo trọng số ở bước m. Nếu dm dương, lỗi giảm khi trọng số giảm, nếu dm âm, lỗi giảm khi trọng số tăng. Phương pháp học thích nghi vận dụng khái niệm hướng lỗi “vừa mới “ giảm. Ta có thể định nghĩa hướng này như một hàm theo d như sau:
fm+1= θ fm + (1-θ ) dm ,
Trong đó 0 < k < 1 là tham số cho biết “khoảng thời gian mới đây” là bao lâu.
Nếu θ= 0 thì fm+1=0.5 dm + 0.5 fm . Nhưng vì fm được xác định từ những giá trị quá khứ của d, nên thực sự có thể nói rằng :
fm+1=0.5 dm + 0.25 dm + 0.125 dm-2 +....
và cứ thế, trở về đến bước 1. Khi θ tiến về 1, giá trị dm hiện tại giảm và giá trị quá khứ của d được tính bới fm lại tăng.
Nếu ta cho f là trung bình trọng số của các đạo hàm hiện tại và quá khứ , θ là trọng số cho biết đạo hàm đã qua và (1- θ ) là trọng số cho biết đạo hàm hiện tại. Nếu f dương, thì có thể biết mới đây là lỗi “giảm khi trọng giảm” và ngược lại, cũng như đối với chính đạo hàm.
Dựa vào dấu của dm và fm , ta có thể đo chính xác của cả hướng mà lỗi hiện đang giảm, lẫn hướng mà lỗi vừa mới giảm. Nếu chúng cùng dấu, việc giảm lỗi xảy ra theo cùng hướng cũ, nếu khác dấu, hướng sẽ ngược với hướng cũ.
Hệ số học thích nghi được tính theo công thức: em = em -1 + κ , dm fm > 0
em = em x φ , dm fm < 0
Trong đó κ và φ là các tham số. Nếu “sắp” đi theo cùng một hướng , e sẽ tăng một lượng bằng hằng số κ. Nếu đổi hướng , e được nhân với một lượng bằng φ.
Khi đã xác định được e, biến thiên trọng số sẽ được xác định theo φ với
0 < φ <1
Khi đã xác định được e, biến thiên trọng số sẽ được xác định theo công thức :
cm = - em dm
Hay nếu dùng moment, cm = µcm-1 – (1- µ) em dm
Ưu nhược điểm:
Trong thực hành, hệ thống không nhạy cảm lắm đối với việc chọn lựa các giá trị của mạng. Thường các giá trị sau được các nhà thiết kế mạng kinh nghiệm sử dụng.
κ = 0.1; φ = 0.5;
θ = 0.7;
Phương pháp sử dụng hệ số học thích nghi cho mỗi trọng số sẽ làm tăng tốc độ học. Để đạt được sai số như phương pháp thông thường thì chỉ cần khoảng 1/10 số bước luyện so với phương pháp thông thường
Phương pháp này cho kết quả hội tụ nhanh hơn phương pháp truyền thống, được sử dụng phổ biến vì sử dụng ít bộ nhớ và tính toán cũng không phức tạp
Kết hợp độ dốc gradient (Conjugate gradient descent ):
Đây là thuật toán định hướng đường, bằng cách lấy ra một hướng nhạy để di chuyển theo chiều ngang đa chiều, rồi chiếu đường thẳng theo hướng đó để xác định điểm nhỏ nhất và lặp lại. Hướng nhạy là hướng có độ dốc lớn nhất (giống như hướng được chọn trong backpropagation). Ý tưởng ở đây là khi thuật toán đã cực tiểu hóa dọc theo một hướng cụ thể nào đó, thì đạo hàm bậc hai dọc theo hướng đó phải giữ ở zero. Các hướng liên hợp được chọn để giữ đạo hàm bậc hai zero này với giả thiết mặt phẳng này là parabol. Nếu điều kiện này được giữ, N epoch sẽ đủ đạt được giá trị cực tiểu.
Lưu ý: Thực tế, trên mặt phẳng phức, lấy liên hợp sẽ làm xấu tình
hình hơn, nhưng thuật toán cần ít epoch hơn backpropagation, và cũng hội tụ cực tiểu tốt hơn (định vị hoàn toàn, backpropagation phải chạy với tốc độï học cực chậm).
Ưu nhược điểm:
Giải thuật này hội tụ nhanh hơn giải thuật Back Propagation nhưng nó lại phức tạp hơn Back Propagation về mặt toán học.
Là kỹ thuật vùng mô phỏng tin cậy: thay vì theo một định hướng cố định, ta giả sử mặt phẳng có hình dạng đơn giản sao cho cực tiểu có thể định vị (và nhảy tới) trực tiếp, nếu giả thiết là đúng. Thử mô hình và xem xét mức độ tốt của điểm được chọn. Mô hình được giả sử rằng mặt phẳng có hình dạng tốt (ví dụ như parabol) sẽ đúng nếu gần đạt được cực tiểu. Ngoài điểm đó, giả thiết có thể bị vi phạm, và mô hình có thể chọn những điểm sai để di chuyển. Mô hình chỉ có thể được tin cậy trong một vùng của điểm hiện tại, và kích thước của vùng này thì chưa biết. Do đó, chọn các điểm mới để kiểm tra giữa điểm được chọn bởi mô hình và điểm được chọn bằng bước nhảy độ dốc gradient chuẩn. Nếu điểm mới tốt, di chuyển đến điểm đó và tăng cường vai trò của mô hình trong việc chọn lựa một điểm mới; nếu xấu, không di chuyển, và tăng cường vai trò của bước dốc gradient trong việc chọn điểm mới (và làm cho bước nhỏ hơn). Levenberg – Marquardt sử dụng một mô hình có giả thiết rằng hàm cơ sở là tuyến tính (và do đó có mặt phẳng sai số parabol).
Ưu nhược điểm:
Giải thuật này có tốc độ huấn luyện nhanh nhất, nhưng chỉ sử dụng ở mạng có một ngõ ra. Hơn nữa, nó chỉ có thể sử dụng hàm sai số tổng bình phương và yêu cầu bộ nhớ tỷ lệ với W2 (với W là số trọng số trong mạng, điều này làm cho thuật toán không thực tế đối với mạng lớn), nghĩa là đòi hỏi nhiều bộ nhớ. Ngoài ra, dữ liệu thừa có thể làm chậm đáng kể mỗi epoch, nhưng không cải thiện hiệu suất cần thiết trên epoch đó (không cải thiện hiệu suất nếu dữ liệu là thừa, tuy nhiên, nếu dữ liệu ít thì việc thêm dữ liệu sẽ làm cho mỗi epoch tốt hơn).
6.3. Vấn đề quá khớp và năng lực của mạng:
Một trong những vấn đề thường xảy ra trong suốt quá trình huấn luyện mạng là quá khớp. Sai số trong tập huấn luyện được kéo xuống rất bé, nhưng khi đưa dữ
liệu mới vào thì mạng lại tạo sai số lớn. Mạng có nhớ được các mẫu huấn luyện, nhưng mạng không học được tính tổng quát hóa trường hợp mới.
Đa thức là phương trình có các hệ số và lũy thừa hằng số. Ví dụ : y = 2x + 3
y= 3x2 + 4x + 1
Các đa thức khác nhau có đồ thị khác nhau, với bậc lớn hơn (và do đó có nhiều số hạng hơn) sẽ có đồ thị phức tạp hơn. Với một tập dữ liệu cho trước, chúng ta muốn tìm ra đa thức biểu diễn dữ liệu này. Dữ liệu có thể có nhiễu, vì thế chúng ta không cần thiết tìm ra phương trình đúng nhất cho tất cả các điểm. Đa thức bậc thấp hơn sẽ không thể đủ chính xác với tất cả các điểm, trong khi đó đa thức bậc cao hơn chính xác tất cả các dữ liệu sẽ rất phức tạp, đa thức này sẽ có đồ thị không đúng với hàm cơ sở.
Neural Networks cũng có vấn đề như vậy. Mạng có càng nhiều trọng số thì hàm càng phức tạp và do đó sẽ rơi vào tình trạng khớp quá mức. Mạng có ít trọng số hơn sẽ không đủ khả năng để mô phỏng hàm cơ sở. Ví dụ như mạng không có các lớp ẩn chỉ mô phỏng hàm truyền tuyến tính đơn giản.
Hình dưới cho thấy đáp ứng của mạng được huấn luyện 50000 lần. Rõ ràng mạng này quá khớp với dữ liệu và không tổng quát hóa tốt.Mạng bị quá khớp với số lần luyện quá nhiều