Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 128 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
128
Dung lượng
1,9 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI - Hoàng Thị Hồng Hà NGHIÊN CỨU MẠNG NƠRON VÀ ỨNG DỤNG MẠNG NƠRON TRONG NHẬN DẠNG CHỮ VIẾT TAY TIẾNG VIỆT Chuyên ngành: Điện tử Viễn thông LUẬN VĂN THẠC SĨ KHOA HỌC ĐIỆN TỬ VIỄN THÔNG NGƯỜI HƯỚNG DẪN KHOA HỌC : TS PHẠM NGỌC NAM H Ni 2010 Nghiên cứu mạng nơron ứng dụng nhận dạng chữ viết tay tiếng Việt LỜI CAM ĐOAN Tơi xin cam đoan tồn nội dung luận văn không chép y nguyên từ luận văn tác giả khác Tôi xin cam đoan tham khảo, trích dẫn luận văn ghi rõ nguồn mục tài liệu tham khảo luận văn Nếu hội đồng phát có điểm khơng với tơi cam đoan tơi xin chịu hoàn toàn trách nhiệm Hà Nội, 10 tháng 10 năm 2010 Hoàng Thị Hồng Hà Học viên: Hoàng Thị Hồng Hà -I- Lớp: CHĐTVT1-2008/2010 Nghiên cứu mạng nơron ứng dụng nhận dạng chữ viết tay tiếng Việt MC LỤC LỜI CAM ĐOAN DANH MỤC CÁC BẢNG DANH MỤC CÁC HÌNH VẼ MỞ ĐẦU CHƯƠNG - TỔNG QUAN VỀ MẠNG NƠRON NHÂN TẠO 1.1 Lịch sử phát triển mạng nơron 1.2 So sánh mạng nơron với máy tính truyền thống 1.3 Khái niệm mạng nơron 1.3.1 Nơron sinh học 1.3.2 Nơron nhân tạo 13 1.3.3 Mạng nơron nhân tạo 17 1.4 Đặc trưng mạng nơron 18 1.4.1 Tính phi tuyến 18 1.4.2 Tính chất tương ứng đầu vào đầu 18 1.4.3 Tính chất thích nghi 19 1.4.4 Tính chất đưa lời giải có chứng 19 1.4.5 Tính chất chấp nhận sai sót 19 1.4.6 Khả cài đặt VLSI (Very-large-scale-intergrated) 19 1.4.7 Tính chất đồng dạng phân tích thiết kế 20 1.5 Phân loại mạng nơron nhân tạo 20 1.5.1 Phân loại theo kiểu liên kết nơron 20 1.5.2 Một số loại mạng nơron 21 1.5.2.1 Mạng dẫn tiến 21 Học viên: Hoàng Thị Hồng Hà - II - Lớp: CHĐTVT1-2008/2010 Nghiên cứu mạng nơron ứng dụng nhận dạng chữ viết tay tiÕng ViÖt 1.5.2.2 Mạng quy hồi (recurrent network) 24 1.6 Xây dựng mạng nơron 25 1.7 Huấn luyện mạng nơron 26 1.7.1 Phương pháp học 26 1.7.1.1 Học có giám sát 27 1.7.1.2 Học không giám sát 27 1.7.1.3 Học tăng cường 27 1.7.2 Học có giám sát mạng nơron 28 1.7.2.1 Thuật toán học mạng nơron lớp 29 1.7.2.2 Thuật toán học mạng nơron nhiều lớp 30 1.8 Một số vấn đề mạng nơron 36 1.9 Ứng dụng mạng nơron 37 1.10 Kết luận 37 CHƯƠNG - MẠNG NƠRON KOHONEN 39 2.1 Giới thiệu mạng nơron Kohonen 39 2.2 Cấu trúc mạng nơron Kohonen 40 2.3 Thực mạng nơron Kohonen 41 2.3.1 Chuẩn hóa đầu vào 41 2.3.2 Tính tốn đầu cho nơron 41 2.3.3 Chọn nơron chiến thắng 42 2.3.4 Quá trình học mạng nơron Kohonen 42 2.3.4.1 Tốc độ học 44 2.3.4.2 Hiệu chỉnh trọng số 44 2.3.5 Kết luận 46 Học viên: Hoàng Thị Hồng Hà - III - Lớp: CHĐTVT1-2008/2010 Nghiên cứu mạng nơron ứng dụng nhận dạng chữ viết tay tiếng Việt CHNG - ỨNG DỤNG MẠNG NƠRON KOHONEN TRONG BÀI TOÁN NHẬN DẠNG CHỮ VIẾT TAY TIẾNG VIỆT 47 3.1 Giới thiệu sơ lược nhận dạng 47 3.2 Giới thiệu nhận dạng chữ viết tay tiếng Việt 49 3.3 Phương pháp nhận dạng chữ viết tay mạng nơron 53 3.4 Phát biểu toán 54 3.5 Các bước giải toán sử dụng mạng nơron nhận dạng ký tự: 55 3.5.1 Xây dựng giao diện vẽ 55 3.5.2 Xây dựng mạng nơron Kohonen 56 3.5.3 Xử lý liệu (phân tích ảnh) 56 3.5.4 Huấn luyện mạng nơron Kohonen 57 3.5.5 Nhận dạng mạng nơron Kohonen 59 3.5.6 Kết luận 59 CHƯƠNG - MÔ PHỎNG NHẬN DẠNG KÝ TỰ VIẾT TAY TIẾNG VIỆT RỜI RẠC TRỰC TUYẾN BẰNG MẠNG NƠRON KOHONEN 60 4.1 Giới thiệu 60 4.2 Thực chương trình nhận dạng ký tự 61 4.2.1 Xác định tham số cho mạng 62 4.2.2 Vẽ hình ảnh 62 4.2.3 Lấy mẫu xuống hình ảnh 63 4.2.3.1 Lưu hình ảnh lấy mẫu xuống 63 4.2.3.2 Kích thước vị trí 64 4.2.3.3 Thực lấy mẫu xuống 64 4.2.4 Các tập huấn luyện 65 4.2.5 Lớp mạng 65 Học viên: Hoàng Thị Hồng Hà - IV - Lớp: CHĐTVT1-2008/2010 Nghiên cứu mạng nơron ứng dụng nhận dạng chữ viết tay tiÕng ViÖt 4.2.6 Lớp mạng nơron Kohonen 66 4.2.6.1 Tính tốn đầu mạng Kohonen 67 4.2.6.2 Huấn luyện mạng nơron Kohonen 68 4.3 Chương trình mơ 70 4.3.1 Các chức chương trình 70 4.3.2 Kết nhận dạng 71 4.3.3 Kết luận 74 CHƯƠNG - KẾT LUẬN 76 5.1 Các kết đạt 76 5.1.1 Về mặt lý thuyết 76 5.1.2 Về mặt thực tiễn 77 5.2 Hướng phát triển 77 5.3 Một vài suy nghĩ sau nghiên cứu 77 TÀI LIỆU THAM KHẢO 79 PHỤ LỤC Học viên: Hoàng Thị Hồng Hà -V- Lớp: CHĐTVT1-2008/2010 Nghiên cứu mạng nơron ứng dụng nhận dạng chữ viết tay tiếng ViÖt DANH MỤC CÁC BẢNG Bảng 1.1 So sánh khả làm việc não máy tính 10 Bảng 1.2 Một số hàm kích hoạt mạng nơron 16 DANH MỤC CÁC HÌNH Hình 1.1 Mạng nơron sinh học Hình 1.2 Sơ đồ nơron sinh học 12 Hình 1.3 Mơ hình nơron nhân tạo 13 Hình 1.4 Sự tương đương nơron sinh học nơron nhân tạo 13 Hình 1.5 Mơ hình phi tuyến thứ hai mạng nơron 16 Hình 1.6 Sơ đồ đơn giản mạng nơron nhân tạo 17 Hình 1.7 Mạng truyền thẳng 21 Hình 1.8 Mạng phản hồi 21 Hình 1.9 Mạng tiến với mức nơron 22 Hình 1.10 Mạng tiến kết nối đầy đủ với mức ẩn mức đầu 24 Hình 1.11 Mạng hồi quy khơng có nơron ẩn khơng có vịng lặp tự phản hồi 24 Hình 1.12 Mạng hồi quy có nơron ẩn 25 Hình 1.13 Sơ đồ đồ thị có hướng đơn giản 25 Hình 1.14 Bài tốn XOR 30 Hình 2.1 Cấu trúc mạng Kohonen 40 Hình 2.2 Quá trình huấn luyện mạng nơron Kohonen 43 Hình 3.1 Mơ hình chung nhận dạng ký tự viết 53 Hình 3.2 Quá trình tìm giới hạn ký tự 55 Học viên: Hoàng Thị Hồng Hà - VI - Lớp: CHĐTVT1-2008/2010 Nghiên cứu mạng nơron ứng dụng nhận dạng chữ viết tay tiÕng ViƯt Hình 3.3 Q trình lấy mẫu xuống 56 Hình 3.4 Quá trình ánh xạ từ ma trận điểm sang ma trận giá trị 57 Hình 3.5 Quá trình huấn luyện mạng 58 Hình 4.1 Giao diện chương trình mơ 70 Hình 4.2 Nhận dạng ký tự Ă 72 Hình 4.3 Nhận dạng ký tự Ư 72 Hình 4.4 Nhận dạng ký tự Ờ 73 Hình 4.5 Nhận dạng ký tự Ỷ 73 Hình 4.6 Nhận dạng ký tự Ấ 74 Học viên: Hoàng Thị Hồng Hà - VII - Lớp: CHĐTVT1-2008/2010 Nghiên cứu mạng nơron ứng dụng nhận dạng chữ viết tay tiÕng ViÖt MỞ ĐẦU Mạng nơron nhân tạo ANN (Artificial Neural Networks) mô xử lý thông tin, nghiên cứu từ hệ thống thần kinh sinh vật, giống não để xử lý thông tin Nó bao gồm số lượng lớn mối gắn kết cấp cao để xử lý yếu tố làm việc mối liên hệ giải vấn đề rõ ràng ANN giống người, học kinh nghiệm, lưu kinh nghiệm hiểu biết sử dụng tình phù hợp quan trọng hết, người có khả sáng tạo Đầu tiên ANN giới thiệu năm 1943 nhà thần kinh học Warren McCulloch nhà logic học Walter Pits Nhưng với kỹ thuật thời gian chưa cho phép họ nghiên cứu nhiều Những năm gần mô ANN xuất phát triển Các nghiên cứu ứng dụng thực ngành: điện, điện tử, kỹ thuật chế tạo, y học, quân sự, kinh tế Một ứng dụng kinh điển mạng nơron toán nhận dạng mẫu, mẫu tập hợp (hay vector) tham số biểu thị thuộc tính q trình vật lý Ngồi sức mạnh vốn có, mạng nơron cịn thể ưu điểm việc nhận dạng thơng qua khả mềm dẻo, dễ thích nghi với mơi trường Chính vậy, coi mạng nơron trước tiên cơng cụ để nhận dạng Các toán nhận dạng nghiên cứu nhiều bao gồm nhận dạng mẫu hình học (vân tay, mặt người, hình khối,…), nhận dạng tiếng nói nhận dạng ký tự viết Nhận dạng ký tự viết bao gồm hai kiểu nhận dạng ký tự in nhận dạng ký tự viết tay Cho đến toán nhận dạng ký tự in giải trọn vẹn với đời nhiều hệ thống nhận dạng đạt tới độ xác gần tuyệt đối Nhận dạng ký tự viết tay vấn đề thách thức lớn nhà nghiên cứu, toàn chưa thể giải trọn vẹn phụ thuộc nhiều vào người viết biến đổi đa dạng cách viết trạng thái tinh thần người viết Đặc biệt vic nhn dng ký t vit tay Học viên: Hoàng Thị Hồng Hà -1- Lớp: CHĐTVT1-2008/2010 Nghiên cứu mạng nơron ứng dụng nhận dạng chữ viết tay tiếng ViƯt tiếng Việt lại gặp nhiều khó khăn ký tự tiếng Việt có nhiều ký tự có hình dáng giống nhau, khác chút phần dấu Chính lý nêu với gợi ý thầy giáo nhận thấy nghiên cứu mạng nơron hướng nghiên cứu quan trọng, mẻ có nhiều triển vọng Đồng thời áp dụng mạng nơron để giải toán nhận dạng chữ viết tay tiếng Việt hướng tiếp cận khoa học có hiệu quả, góp phần giải toán nhận dạng chữ viết tay tiếng Việt chưa giải trọn vẹn Do tơi chọn đề tài: “Nghiên cứu mạng nơron ứng dụng mạng nơron nhận dạng chữ viết tay tiếng Việt” Tuy nhiên hạn chế mặt thời gian độ phức tạp toán Trong luận văn sâu nghiên cứu mô nhận dạng ký tự viết tay tiếng Việt rời rạc trực tuyến Nội dung luận văn gồm: Chương 1: Tổng quan mạng nơron nhân tạo Trình bày lý thuyết mơ hình mạng nơron như: lịch sử đời phát triển mạng nơron, khái niệm mạng nơron, loại mơ hình mạng nơron, đặc trưng mạng, phương pháp huấn luyện mạng nơron, phương pháp học có giám sát Các vấn đề ứng dụng mạng nơron Chương 2: Mạng nơron Kohonen Trình bày lý thuyết mang nơron Kohonen như: giới thiệu mạng, cấu trúc mạng, bước thực mạng: chuẩn hóa đầu vào, tính tốn đầu ra, tìm nơron chiến thắng, trình huấn luyện mạng Chương 3: Ứng dụng mạng nơron Kohonen toán nhận dạng chữ viết tay tiếng Việt Giới thiệu toán nhận dạng, nhận dạng chữ viết tay tiếng Việt Phương pháp nhận dạng chữ viết tay mạng nơron, phát biểu toán, bước giải toán sử dụng mạng nơron Kohonen nhận dạng ký tự viết tay rời rạc: Học viên: Hoàng Thị Hồng Hà -2- Lớp: CHĐTVT1-2008/2010 Nghiên cứu mạng nơron ứng dụng mạng nơron nhận dạng chữ viết tay tiếng Việt myWorkBook.write(out); myWorkBook.setActiveSheet(0); out.close(); } catch (Exception e) { e.printStackTrace(); } } // phương thức huấn luyện public void run() { try { int inputNeuron = MainEntry.DOWNSAMPLE_HEIGHT * MainEntry.DOWNSAMPLE_WIDTH; int outputNeuron = letterListModel.size(); TrainingSet set = new TrainingSet(inputNeuron, outputNeuron); set.setTrainingSetCount(letterListModel.size()); for (int t = 0; t < letterListModel.size(); t++) { int idx = 0; SampleData ds = (SampleData) letterListModel.getElementAt(t); for (int y = 0; y < ds.getHeight(); y++) { for (int x = 0; x < ds.getWidth(); x++) { set.setInput(t, idx++, ds.getData(x, y) ? : -.5); } } } net = new KohonenNetwork(inputNeuron, outputNeuron, this); net.setTrainingSet(set); net.learn(); } catch (Exception e) { JOptionPane.showMessageDialog(this, "Error: " + e, "Training", JOptionPane.ERROR_MESSAGE); } } // gọi để cập nhật trạng thái từ mạng Häc viên: Hoàng Thị Hồng Hà - 26 - Lớp: CHĐTVT1-2008/2010 Nghiên cứu mạng nơron ứng dụng mạng nơron nhận dạng chữ viết tay tiếng Việt public void update(int retry, double totalError, double bestError) { if ((((retry % 100) != 0) || (retry == 10)) && !net.halt) return; if (net.halt) { trainThread = null; train.setText("Học"); JOptionPane.showMessageDialog(this, "Tiến trình học xong.", "Học", JOptionPane.PLAIN_MESSAGE); } UpdateStats stats = new UpdateStats(); stats._tries = retry; stats._lastError = totalError; stats._bestError = bestError; try { SwingUtilities.invokeAndWait(stats); } catch (Exception e) { JOptionPane.showMessageDialog(this, "Error: " + e, "Training", JOptionPane.ERROR_MESSAGE); } } /** gọi nút nhấn nút học * @param event kiện */ void train_actionPerformed(java.awt.event.ActionEvent event) { if (trainThread == null) { train.setText("Học xong"); train.repaint(); trainThread = new Thread(this); trainThread.start(); } else { net.halt = true; } } /** gọi nhấn nút nhận dạng * @param event kiện */ Häc viªn: Hoàng Thị Hồng Hà - 27 - Lớp: CHĐTVT1-2008/2010 Nghiên cứu mạng nơron ứng dụng mạng nơron nhận dạng chữ viết tay tiếng Việt void recognize_actionPerformed(java.awt.event.ActionEvent event) { if (net == null) { JOptionPane.showMessageDialog(this, "Cần cho chương trình học trước!", "Lỗi", JOptionPane.ERROR_MESSAGE); return; } entry.downSample(); double input[] = new double[10 * 10]; int idx = 0; SampleData ds = sample.getData(); for (int y = 0; y < ds.getHeight(); y++) { for (int x = 0; x < ds.getWidth(); x++) { input[idx++] = ds.getData(x, y) ? : -.5; } } double normfac[] = new double[1]; double synth[] = new double[1]; int best = net.winner(input, normfac, synth); char map[] = mapNeurons(); JOptionPane.showMessageDialog(this, "Ký tự nhận dạng được: " + map[best], "Ký tự nhận dạng", JOptionPane.PLAIN_MESSAGE); clear_actionPerformed(null); } /** sử dụng để ánh xạ nơron đầu với ký tự thực tế * @return mảng ánh xạ ký tự với nơron */ char[] mapNeurons() { char map[] = new char[letterListModel.size()]; double normfac[] = new double[1]; double synth[] = new double[1]; for (int i = 0; i < map.length; i++) map[i] = '?'; for (int i = 0; i < letterListModel.size(); i++) { double input[] = new double[10 * 10]; int idx = 0; SampleData ds = (SampleData) letterListModel.getElementAt(i); Học viên: Hoàng Thị Hồng Hà - 28 - Lớp: CHĐTVT1-2008/2010 Nghiên cứu mạng nơron ứng dụng mạng nơron nhận dạng chữ viết tay tiếng Việt for (int y = 0; y < ds.getHeight(); y++) { for (int x = 0; x < ds.getWidth(); x++) { input[idx++] = ds.getData(x, y) ? : -.5; } } int best = net.winner(input, normfac, synth); map[best] = ds.getLetter(); } return map; } public class UpdateStats implements Runnable { long _tries; double _lastError; double _bestError; public void run() { tries.setText("" + _tries); lastError.setText("" + _lastError); bestError.setText("" + _bestError); } } } Lớp Network package net; import java.util.*; abstract public class Network { public final static double NEURON_ON=0.9; public final static double NEURON_OFF=0.1; protected double output[]; protected double totalError; // lỗi bình phương trung bình mạng protected int inputNeuronCount; // số nơron đầu vào protected int outputNeuronCount; // số nơron đầu protected Random random = new Random(System.currentTimeMillis()); // tạo số ngẫu nhiên /** gọi để học tập huấn luyện * @exception java.lang.RuntimeException */ abstract public void learn () throws RuntimeException; Học viên: Hoàng Thị Hồng Hà - 29 - Lớp: CHĐTVT1-2008/2010 Nghiên cứu mạng nơron ứng dụng mạng nơron nhận dạng chữ viết tay tiếng Việt abstract void trial(double []input); // phương thức đưa đầu vào mạng đến nơron đầu double []getOutput() { return output; } /** tính chiều dài vector * @param v vector * @return Vector length */ static double vectorLength( double v[] ) { double rtn = 0.0 ; for ( int i=0;i0 ) { rtn += vec1[v] * vec2[v];// tổng tích hai phần tử tương ứng hai vector v++; } return rtn; } /** tạo ngẫu nhiên ma trận trọng số * @param weight A weight matrix Học viên: Hoàng Thị Hồng Hà - 30 - Lớp: CHĐTVT1-2008/2010 Nghiên cứu mạng nơron ứng dụng mạng nơron nhận dạng chữ viết tay tiÕng ViÖt */ void randomizeWeights( double weight[][] ) { double r ; int temp = (int)(3.464101615 / (2 * Math.random() )) ; // SQRT(12)=3.464 for ( int y=0;y