Báo cáo Mạng neural và ứng dụng - Bùi Hoàng Khánh

MỤC LỤC

DANH MỤC HÌNH VẼ iii

DANH MỤC BẢNG BIỂU iv

CHƯƠNG 1: TỔNG QUAN VỀ MÔ HÌNH MẠNG NƠRON 1

I. Giới thiệu về mạng nơron nhân tạo 1

I.1. Mạng nơron nhân tạo là gì? 1

I.2. Lịch sử phát triển mạng nơron 1

I.3. So sánh mạng nơron với máy tính truyền thống 3

II. Nơron sinh học và nơron nhân tạo 3

II.1. Nơron sinh học 4

II.2. Nơron nhân tạo 5

III.3. Mô hình mạng nơron 7

III.3.1. Các kiểu mô hình mạng nơron 7

III.3.2. Perceptron 9

III.3.3. Mạng nhiều tầng truyền thẳng (MLP) 10

CHƯƠNG 2: HUẤN LUYỆN VÀ XÂY DỰNG MẠNG NƠRON 12

I. Huấn luyện mạng Nơron 12

I.1. Các phương pháp học 12

I.2. Học có giám sát trong các mạng nơron 13

I.3. Thuật toán lan truyền ngược 13

II. Các vấn đề trong xây dựng mạng MLP 15

II.1. Chuẩn bị dữ liệu 15

II.2. Xác định các tham số cho mạng 17

II.3. Vấn đề lãng quên (catastrophic forgetting) 19

II.4 Vấn đề quá khớp 20

CHƯƠNG 3: ỨNG DỤNG CỦA MẠNG NƠRON 22

CHƯƠNG 4: THỰC NGHIỆM 23

I. Giới thiệu bài toán 23

I.1. Phát biểu bài toán 23

I.2. Mô hình mạng nơron của bài toán 23

II. Cài đặt chương trình 24

II.1. Mô hình chương trình 24

II.2. Kết quả thử nghiệm 25

CHƯƠNG 5: KẾT LUẬN 28

TÀI LIỆU THAM KHẢO a

 

doc34 trang | Chuyên mục: Mạng Truyền Tải Quang | Chia sẻ: yen2110 | Lượt xem: 536 | Lượt tải: 0download
Tóm tắt nội dung Báo cáo Mạng neural và ứng dụng - Bùi Hoàng Khánh, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
h các nhóm với các đặc tính tương tự nhau thì số lượng các nhóm này có thể được sử dụng để chọn số lượng nơron ẩn. Trong trường hợp dữ liệu huấn luyện nằm rải rác và không chứa các đặc tính chung, số lượng kết nối có thể gần bằng với số lượng các mẫu huấn luyện để mạng có thể hội tụ. Có nhiều đề nghị cho việc chọn số lượng nơron tầng ẩn h trong một mạng MLP. Chẳng hạn h phải thỏa mãn h>(p-1)/(n+2), trong đó p là số lượng mẫu huấn luyện và n là số lượng đầu vào của mạng. Càng nhiều nút ẩn trong mạng, thì càng nhiều đặc tính của dữ liệu huấn luyện sẽ được mạng nắm bắt, nhưng thời gian học sẽ càng tăng. 
Một kinh nghiệm khác cho việc chọn số lượng nút ẩn là số lượng nút ẩn bằng với số tối ưu các cụm mờ (fuzzy clusters)[8]. Phát biểu này đã được chứng minh bằng thực nghiệm. Việc chọn số tầng ẩn cũng là một nhiệm vụ khó. Rất nhiều bài toán đòi hỏi nhiều hơn một tầng ẩn để có thể giải quyết tốt. 
Để tìm ra mô hình mạng nơron tốt nhất, Ishikawa and Moriyama (1995) sử dụng học cấu trúc có quên (structural leanrning with forgetting), tức là trong thời gian học cắt bỏ đi các liên kết có trọng số nhỏ. Sau khi huấn luyện, chỉ các noron có đóng góp vào giải quyết bài toán mới được giữ lại, chúng sẽ tạo nên bộ xương cho mô hình mạng nơron. 
c. Khởi tạo trọng 
Trọng thường được khởi tạo bằng phương pháp thử sai, nó mang tính chất kinh nghiệm và phụ thuộc vào từng bài toán. Việc định nghĩ thế nào là một bộ trọng tốt cũng không hề đơn giản. Một số quy tắc khi khởi tạo trọng: 
♦ Khởi tạo trọng sao cho mạng nơron thu được là cân bằng (với đầu vào ngẫu nhiên thì sai số lan truyền ngược cho các ma trận trọng số là xấp xỉ bằng nhau): 
|ΔW1/W1| = |ΔW2/W2| = |ΔW3/W3|
Nếu mạng nơron không cân bằng thì quá trình thay đổi trọng số ở một số ma trận là rất nhanh trong khi ở một số ma trận khác lại rất chậm, thậm chí không đáng kể. Do đó để các ma trận này đạt tới giá trị tối ưu sẽ mất rất nhiều thời gian. 
♦ Tạo trọng sao cho giá trị kết xuất của các nút có giá trị trung gian. (0.5 nếu hàm truyền là hàm Sigmoid). Rõ ràng nếu ta không biết gì về giá trị kết xuất thì giá trị ở giữa là hợp lý. Điều này cũng giúp ta tránh được các giá trị thái quá. 
Thủ tục khởi tạo trọng thường được áp dụng: 
– B1: Khởi tạo các trọng số nút ẩn (và các trọng số của các cung liên kết trực tiếp giữa nút nhập và nút xuất, nếu có) giá trị ngẫu nhiên, nhỏ, phân bố đều quanh 0. 
– B2: Khởi tạo một nửa số trọng số của nút xuất giá trị 1, và nửa kia giá trị -1. 
II.3. Vấn đề lãng quên (catastrophic forgetting) 
Catastrophic forgetting là vấn đề một mạng quên những gì nó đã học được trong các mẫu trước khi đang học các mẫu mới. Nguyên nhân là do sự thay đổi các trọng số theo các mẫu mới, nếu như các mẫu cũ trong một thời gian không được đưa vào huấn luyện. Để tránh điều này, ta thường thực hiện việc huấn luyện luân phiên giữa mẫu cũ và mẫu mới. 
Hình 10: Huấn luyện luân phiên trên hai tập mẫu
Xét ví dụ mạng được huấn luyện luân phiên với hai tập mẫu A và B (hình 2-10). Tại mỗi chu kỳ mạng sẽ học tập mẫu A sau đó học tập mẫu B. Khi bước vào chu kỳ thứ hai, lỗi lúc bắt đầu học tập mẫu A cao hơn là ở chu kỳ thứ nhất khi vừa học xong tập A. Điều này là do giữa hai lần học tập mẫu A mạng đã học tập mẫu B. Tuy nhiên nếu xét trên cả chu kỳ thì lỗi huấn luyện sẽ giảm xuống. Tức là lỗi lúc bước vào chu kỳ thứ ba sẽ nhỏ hơn lúc bước vào chu kỳ thứ hai. 
Có nhiều phương pháp để huấn luyện dữ liệu mới. Chẳng hạn sau khi một số mẫu mới được học, một vài mẫu cũ được chọn ngẫu nhiên trong số các mẫu trước đó để đưa vào học. Vấn đề sẽ khó khăn hơn khi các mẫu cũ không còn nữa. Khi đó các mẫu giả (pseudoexamples) có thể được sử dụng để lưu giữ các trọng số càng gần các trọng số trước càng tốt. 
II.4 Vấn đề quá khớp 
a. Khái niệm quá khớp 
Vấn đề quá khớp xảy ra khi mạng được luyện quá khớp (quá sát) với dữ liệu huấn luyện (kể cả nhiễu), nên nó sẽ trả lời chính xác những gì đã được học, còn những gì không được học thì nó không quan tâm. Như vậy mạng sẽ không có được khả năng tổng quát hóa. 
Về mặt toán học, một giả thuyết (mô hình) h được gọi là quá khớp nếu tồn tại giả thuyết h' sao cho: 
1. Error train (h) < Error train (h') 
2. Error test (h) > Error test (h') 
b. Giải quyết quá khớp 
Vấn đề quá khớp xảy ra vì mạng có năng lực quá lớn. Có 3 cách để hạn chế bớt năng lực của mạng: 
– Hạn chế số nút ẩn 
– Ngăn không cho mạng sử dụng các trọng số lớn 
– Giới hạn số bước luyện 
Khi mạng được luyện, nó chuyển từ các hàm ánh xạ tương đối đơn giản đến các hàm ánh xạ tương đối phức tạp. Nó sẽ đạt được một cấu hình tổng quát hóa tốt nhất tại một điểm nào đó. Sau điểm đó mạng sẽ học để mô hình hóa nhiễu, những gì mạng học được sẽ trở thành quá khớp. Nếu ta phát hiện ra thời điểm mạng đạt đến trạng thái tốt nhất này, ta có thể ngừng tiến trình luyện trước khi hiện tượng quá khớp xảy ra. 
Ta biết rằng, chỉ có thể để đánh giá mức độ tổng quát hóa của mạng bằng cách kiểm tra mạng trên các mẫu nó không được học. Ta thực hiện như sau: chia mẫu thành tập mẫu huấn luyện và tập mẫu kiểm tra. Luyện mạng với tập mẫu huấn luyện nhưng định kỳ dừng lại và đánh giá sai số trên tập mẫu kiểm tra. Khi sai số trên tập mẫu kiểm tra tăng lên thì quá khớp đã bắt đầu và ta dừng tiến trình luyện.
Chú ý rằng, nếu sai số kiểm tra không hề tăng lên, tức là mạng không có đủ số nút ẩn để quá khớp. Khi đó mạng sẽ không có đủ số nút cần thiết để thực hiện tốt nhất. Do vậy nếu hiện tượng quá khớp không hề xảy ra thì ta cần bắt đầu lại nhưng sử dụng nhiều nút ẩn hơn.
CHƯƠNG 3: ỨNG DỤNG CỦA MẠNG NƠRON
Ngày nay, mạng nơ ron ngày càng được ứng dụng nhiều trong thực tế. Đặc biệt là các bài toán nhận dạng mẫu, xử lý, lọc dữ liệu, và điều khiển. Ứng dụng của mạng nơ ron được chia thành các loại sau: 
Xử lý ngôn ngữ
Xử lý ngôn ngữ tự nhiên
Nhận dạng mẫu
Nhận dạng ảnh
Nhận giọng nói
Nhận dạng chữ viết
Xử lý tín hiệu
Điều khiển tự động
Lọc và phân loại dữ liệu
Chuẩn đoán bệnh
Tìm kiếm
CHƯƠNG 4: THỰC NGHIỆM
I. Giới thiệu bài toán
I.1. Phát biểu bài toán
Thực nghiệm này xây dựng một mạng nơ ron, thực hiện bài toán phân loại mẫu đơn giản sau: 
Cho thông tin về học sinh, gồm họ tên, điểm các môn Văn và Toán. Xây dựng chương trình cho biết với các thông tin đấy, học sinh có được đánh giá là Đạt hay không? Đạt ở đây được đánh giá theo tiêu chí sau: 
- Trung bình cộng của điểm lớn hơn hoặc bằng 5
- Không có điểm nào bằng 0
I.2. Mô hình mạng nơron của bài toán
Mô hình mạng được sử dụng là mô hình mạng truyền thẳng MLP gồm các tầng: một tầng vào, một tầng ẩn, và một tầng ra. Số nơ ron đầu vào bằng số chiều của vector đặc trưng cho mẫu, ở đây là 2 (điểm môn Toán và Văn), số nơ ron tầng ẩn có thể thay đổi linh hoạt trong quá trình huấn luyện mạng, số nơ ron đẩu ra là 1.
Hình 11: Mô hình mạng nơron cho bài toán thực nhiệm
Các tham số của mạng được lựa chọn như sau:
Sử dụng hàm truyền Sigmod: f(x) = 1 / (1 + e-x)
Các trọng số khởi tạo với giá trị nhỏ: Trọng số nơ ron đầu vào bằng 1, trọng số nơ ron tầng ẩn và tầng ra lấy ngẫu nhiên quanh giá trị 0
Các ngưỡng khởi tạo với giá trị nhỏ: Ngưỡng của nơ ron đầu vào bằng 1, ngưỡng của nơ ron tầng ẩn và tầng ra khởi tạo trong khoảng 0.25 đến 1
Thời gian học η = 0.2 cho nơ ron tầng ẩn, và η = 0.15 cho nơ ron tầng ra
Thuật toán huấn luyện là thuật toán lan truyền ngược đã trình bày ở chương 2.
Lỗi chấp nhận được là 0.05
II. Cài đặt chương trình
II.1. Mô hình chương trình
Hình 12: Mô hình lớp của chương trình
Một số hàm chính trong chương trình:
Hàm trong lớp NeuralNetwork
public void loadPatterns(String aPattern): Lấy mẫu cho quá trình huấn luyện
public void initNeuralNetwork(): Khởi tạo mạng Nơ ron
public void train(): Huấn luyện mạng
public void test(string aValues): Thực hiện đánh sau khi huấn luyện với giá trị vào tùy ý
private void forwardPropagate(Pattern pPattern): Tính giá trị vào cho các nút trong mạng
private void backPropagate(): Cập nhật các trọng số theo thuật toán lan truyền ngược
public double getThreshold(): Lấy giá trị ngưỡng ngẫu nhiên trong khoảng 0.25 đến 1
Hàm trong lớp Neural
public void calculateOutputs(): Tính giá trị ra của nơ ron
public double getSigmoid(double x): Tính giá trị theo hàm Sigmod
II.2. Kết quả thử nghiệm
Hình 13: Giao diện chính của chương trình
Các bước thực hiện
Lấy dữ liệu huấn luyện (Load Data): Chương trình tạo ngẫu nhiên thông tin cần thiết của sinh viên với các thông tin sau: Tên, điểm Toán, điểm Văn, và đầu ra mong muốn: 1 (True) là Đạt, 0 (False) là không đạt. Sau đó khởi tạo mạng nở ron
Huấn luyện (Start training): chương trình sẽ huấn liệu cho đến khi lỗi nhỏ hơn bằng 0.05.
Hình 14: Kết quả huấn luyện
Nhận dạng (Recognize): Test thử mạng đã được huấn luyện bằng cách thực hiện chọn điểm Toán và Văn, sau đó nhấn nút Recognize. Kết quả sẽ trả về là True/False và đầu ra ở tầng ra của mạng
Hình 15: Kết quả thực nghiệm
CHƯƠNG 5: KẾT LUẬN
Báo cáo này trình bày về các vấn đề về mạng nơ ron, gồm: khái niệm của mạng nơ ron nhân tạo, lịch sử phát triển, các mô hình mạng và phương pháp xây dựng cũng như huấn luyện mạng. Trong đó đi sâu vào việc xây dựng một mạng nơ ron truyền thẳng MLP, và thuật tuán huấn luyện Lan truyền ngược.
Báo cáo này cũng trình bày một thực nghiệm cho các lý thuyết về mạng MLP và thuật toán Lan truyền ngược đã nêu ra. Thực nghiệm xây dựng một chương trình đơn giản để phân loại mẫu (phân loại học sinh). 
Các vấn đề còn chưa có trong báo cáo, và cần nghiên cứu triển khai là:
Tìm hiểu về các thuật toán huấn luyện mạng nơ ron khác, để có thể đưa ra các so sánh, cũng như chọn mô hình thích hợp cho các bài toán cụ thể.
Phát triển chương trình thực nghiệm thành một chương trình có ý nghĩa thực tế hơn, như nhận dạng chữ viết tay, nhận dạng ảnh, dựa trên nền tảng mạng đã xây dụng
TÀI LIỆU THAM KHẢO
[1]. Genevieve Orr, Nici Schraudolph and Fred Cummins 
 [2]. Christos Stergiou and Dimitrios Siganos. Neural Networks.  
[3]. Nikola K. Kasabov. Foundations of Neural Networks, Fuzzy Systems, and Knowledge Engineering. Massachusetts Institute of Technology.

File đính kèm:

  • docbao_cao_mang_neural_va_ung_dung_bui_hoang_khanh.doc