Tìm hiểu giải thuật lan truyền ngược huấn luyện cho mạng nhiều lớp và cài đặt ứng dụng
BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN -o0o - Báo cáo tập lớn mơn Đề tài: Tìm hiểu giải thuật lan truyền ngược huấn luyện cho mạng nhiều lớp cài đặt ứng dụng Giáo viên hướng dẫn: Thầy Trầ n Hùng Cường Nhóm thực hiện: Nhóm 21 – Lớp KHMT2 K3 Thành viên nhóm: Cao Xuân Điền Nguyễn Minh Hải Trần Ngọc Quý Nguyễn Ngọc Thao NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Hà Nội ngày tháng năm 2011 Giảng viên MỤC LỤC I Tìm hiểu thuật tốn Lan truyền ngược q trình xử lý tập mẫu học lặp lặp lại nhiều lần, bước lặp so sánh lớp mà mạng neural dự đoán cho mẫu với lớp xác mẫu Với mẫu học, trọng số điều chỉnh cho cực tiểu sai số trung bình-bình phương(phương sai) lớp dự đoán lớp thực Sự điều chỉnh trọng số thực bước quay ngược lại tức bước từ tầng xuất quay ngược qua tầng ẩn đến tầng ẩn Mặc dù không chắn hầu hết trọng số hội tụ giá trị trình học hết thúc Thuật toán lan truyền ngược gồm bước sau: Khởi tạo trọng số: Các trọng số mạng khởi tạo giá trị ngẫu nhiên khoảng từ -1.0 đến 1.0 từ -0.5 đến 0.5 Mỗi neural kết hợp với định hướng (bias), giá trị định hướng khởi tạo giống trọng số Với mẫu học X xử lý theo bước sau: Lan truyền tiến đầu vào: bước này, mạng đầu vào đầu neural tầng ẩn tầng xuất tính tốn Đầu tiên mẫu học đưa vào tầng nhập mạng Mạng đầu vào cho neural tầng ẩn tầng xuất tính toán ánh xạ biến đầu vào (hình 2-4) Đầu vào neural đầu neral tầng trước nối đến Để tính tốn mạng đầu vào neural đầu vào cộng dồn trọng số tương ứng Cho neural j tầng ẩn hay tầng xuất mạng đầu vào Ij j : Ij =∑ w ij O i + θ j Trong wij trọng số liên kết từ neural i tấng trước đến neural j, O đầu neural i từ tầng trước θ j định hướng neural i Sự định hướng có tác dụng ngưỡng, làm thay đổi cách hoạt động neural Mỗi neural tầng ẩn hay tầng xuất có mạng đầu vào áp dụng hàm kích hoạt đến (hình 2-4), hàm hàm logistic hàm simoid Cho mạng đầu vào Ij neural j đầu Oj neural j tính sau: O j= Hàm xem hàm nén (squashing), ánh xạ miền đầu vào rộng lớn lên vùng nhỏ khoảng từ đến Hàm logistic hàm khơng tuyến tính (phi tuyến) có khả phân loại, cho phép thuật giải lan truyền ngược mô hình theo tốn phân lớp tuyến tính liên tục Một neural tầng ẩn tầng xuất Sai số lan truyền ngược: sai số lan truyền ngược trình cập nhật trọng số định hướng làm sai số việc dự đoán mạng Cho neural j tầng xuất, sai số Errj tính bởi: Errj = Oj(1 - Oj)(Tj - Oj) Với Oj giá trị thực đầu neural j,và Tj đầu dựa lớp biết mẫu học cho, Oj(1 - Oj) đạo hàm hàm logistic Để tính độ sai số tầng ẩn với neural j, tổng sai số trọng số neural tầng liên kết đến neural j tính trước Sai số tầng ẩn với neural j là: Err j = Oj (1 - Oj ) ∑ Err kW jk k Trong wjk trọng số liên kết từ neural j đến neural k tầng kế tiếp, Errk sai số neural k Trọng số định hướng cập nhật làm sai số lan truyền Trọng số cập nhật công thức sau, với ∆wij phần thay đổi trọng số wij ∆wij = (l)ErrjOj wij = wij +∆wij Biến l biểu thị khả học hay mức độ học, số có giá trị khoảng Học lan truyền ngược sử dụng phương pháp giảm gradient để kiếm tập trọng số mà mơ hình hóa tốn phân lớp cho trước cho cực tiểu sai số bình phương-trung bình lớp mạng dự đoán lớp thực mẫu học cho Mức độ học ngăn không cho sa lầy vào cực tiểu cục không gian định nghĩa trọng số xuất để hội tụ, khơng phải giải pháp tốt tới khám phá cực tiểu toàn cục Nếu mức độ học nhỏ việc học tiến triển chậm Nếu mức độ học lớn giải pháp khơng thỏa đáng Một kinh nghiệm cho mức độ học l=t với t số lần lặp lặp lại tập liệu học lúc Sự định hướng cập nhật theo công thức sau, với ∆θj phần thay đổi θj ∆θj = (l)Errj ∆θj = θj + ∆θj Điều kiện kết thúc: Quá trình học mạng bắt đầu với giá trị trọng số tùy ý tiến hành lặp lặp lại Mỗi lần lặp gọi hệ Trong hệ mạng điều chỉnh trọng số cho sai số giảm dần trình học kết thúc khi: + Tất ∆wij hệ trước nhỏ ngưỡng xác định + Tỷ lệ mẫu bị phân lớp sai hệ trước nhỏ ngưỡng + Lặp đủ số lượng hệ xác định trước Trong thực tế, có phải trải qua hàng trăm ngàn hệ trọng số hội tụ Tóm tắt thuật giải lan truyền ngược cho mạng neural học để phân lớp trình bày sau: Input: tập mẫu học, mức độ học l, mạng đa tầng Output: mạng neural học để phân lớp cho mẫu 1) 2) 3) 4) Khởi tạo tất trọng số định hướng mạng; While điều kiện kết thúc chưa thỏa { for với mẫu X tập mẫu học { //lan truyền tiến đầu vào for với neural j tầng ẩn tần xuất 5) Ij =∑ w ij O i + θ j 6) 7) for với neural j tầng ẩn tầng xuất // tính mạng đầu vào cho neural j O j= // tính mạng đầu cho neural j // sai số lan truyền ngược for với neural j tần suất Errj = Oj(1 - Oj)(Tj - Oj) //tính sai số for với neural j tầng ẩn Err j = Oj (1 - Oj )∑Err k jk // tính sai 8) 9) 10) 11) số 12) for với trọng số wij mạng { 13) ∆wij = (l)ErrjOj ; //độ tăng trọng số wij = = wij +∆wij; } //cập nhật trọng số 14) 15) for với định hướng θ i mạng { ∆θj = (l)Errj ; 16) // độ tăng định hướng ∆θj = θj + ∆θj ; } 17) // cập nhập định hướng 18) } 19) } Kiến trúc mạng: Các lớp nơ ron thứ t nối đầy đủ với lớp nơ ron thứ t+1 Trong nhiều ứng dụng thực tế, để đơn giản, người ta thường sử dụng mạng có lớp ẩn, số nơ ron có lớp ẩn xác định dựa kinh nghiệm, dựa kỹ thuật tìm kiếm khác Huấn luyện mạng Quá trình huấn luyện mạng trình bày q trình học có giám sát với tập mẫu{Xs ,Ys} Thủ tục học tóm lược sau: Mỗi đưa mẫu Xs =(x1, x2 …xn) vào mạng, ta thực công việc sau: -Lan truyền mẫu X5 qua mạng để có outs = Tinh (Xs , NN) -Tính sai số Errs mạng dựa sai lệch outs – Ys -Hiệu chỉnh trọng số liên kết nơ ron dẫn tới lớp W ij từ nơ ron j lớp ẩn cuối tới nơ ron i lớp ra: Wij = Wij + α δ aj i hệ số học aj đầu nơ ron j δ i sai số mà nơ ron i lớp phải chịu trách nhiệm, xác định theo công thức: δ i = erri g’(Neti) (16) Với erri sai số thành phần thứ i Errs , Neti tổng thơng tin vào có số nơ ron thứ i (Neti = ∑W ij aj g’(.) đạo hàm cuarhamf kích hoạt g dùng nơ ron -Hiệu chỉnh trọng số liên kết nơ ron Wjk dẫn tới tất lớp ẩn từ nơ ron thứ k sang nơ ron thứ j (các lớp ẩn xét từ lên) -Tính tổng sai số nơ ron j phải chịu trách nhiệm δ j = g’(Netj) ∑W ij i δ i (17) -Hiệu chỉnh trọng số Wjk Wjk = Wjk + α +ak δ j (18) (trường hợp xét liên kết từ nơ ron vào thứ k sang nơ ron j lớp ẩn thứ nhất, ta có a k = Ik , tín hiệu vào) Chú ý: G(x) = 1+e−x Phương pháp nhận dạng Phương pháp nhận dạng ký tự quang mạng nơron bao gồm bước mô tả hình sau : b) Thu nhận ảnh Ảnh văn bản, tài liệu thu nhận máy quét scanner, webcam, thiết bị thu nhận ảnh thơng dụng khác Phân tích ảnh để tìm ký tự Q trình phân tích ảnh để tìm ký tự bao gồm bước sau: - Tách dòng ký tự khỏi ảnh ký tự - Tách từ riêng biệt khỏi dòng ký tự - Tách riêng ký tự khỏi từ Thuật toán sử dụng để tách ký tự khỏi ảnh văn dựa đặc tính biên độ độ sáng pixel ảnh Tiền xử lý ký tự Quá trình tiền xử lý ký tự giải vấn đề ánh xạ giá trị pixel ảnh ký tự vào ma trận 10x15 tuyến tính hóa ma trận thành 150 giá trị đưa vào 150 nơron lớp vào mạng Mạng nơron nhận dạng ký tự Hiện nay, loại mạng nơron thông dụng gồm có: mạng truyền thẳng (feel- forward), mạng hồi qui (feedback), mạng tự tổ chức (self-organizing) Mạng truyền thẳng feed-forward bao gồm nhiều lớp đơn vị xử lý phi tuyến (non-linear processing unit) Trong phần mềm ta thiết kế chương trình nhận dạng sử dụng mạng MLP có lớp lớp vào có 150 nút tương ứng với 250 phần tử vectơ ma trận pixel, lớp ẩn có 600 nơron lớp có 16 nơron với 16 bit c) Quá trình huấn luyện mạng : Huấn luyện mạng neural nhiều lớp sử dụng thuật toán Lan truyền ngược gồm hai q trình: Q trình truyền tuyến tính q trình truyền ngược: Q trình truyền tuyến tính: Dữ liệu từ lớp nhập qua lớp ẩn đến lớp xuất để: Thay đổi giá trị trọng số liên kết W neural mạng biểu diễn liệu học Tìm khác giá trị thật hàm mẫu mà mạng tính kết dự đốn mạng gọi lỗi (học có giám sát) Q trình truyền ngược: Giá trị lỗi truyền ngược lại cho trình huyến luyện(học) tìm trọng số Wi để lỗi nhỏ Bước 1: Lan truyền xuôi đầu vào Xs={x1, x2, …, xn} qua mạng: n • W Đầu nơron j lớp ẩn yj =g ( ∑ ii xi - θ j) (1) i=1 • Đầu nơron lớp : m m n Yk =g ( ∑ y j wjk ) = g( ∑ w jk g ( ∑ w ij xi - θj ) - θk ) (2) j=1 j=1 i=1 Bước 2: Lan truyền ngược sai số : So sánh phần tử vectơ đầu thực với phần tử tương ứng vectơ đầu mẫu để tính độ sai lẹch ek =tk -yk Tổng bình phương sai số mạng ứng với mẫu học ( Xs Ts) E= ¿ ¿ p ∑¿ k =1 yk – tk )2 Thông tin sai số lan truyền ngược qua mạng để điều chỉnh lại giá trị trọng số vòng lặp thứ l: Với liên kết nơron ẩn nơron ra: ∆w jk = η.δ k (l ) y j (l ) ,với η hệ số học δκ (l) = ek (l) gk ( yk (l) ) Wjk ( l+1) = w jk (l) + ∆wjk (3) Với liên kết nơron vào nơron ẩn: ∆wij = η.δ j (l) xi m δ (l) = gj’ (yj) ∑ δκ (l) Wjk ( l+1 ) j=1 Wij (l+1 )= wij + ∆w+ij Sau hiệu chỉnh trọng số, mẫu Xs tiếp tục đưa vào mạng lần thứ thứ (l+1) tiếp tục thuật toán hiệu chỉnh trọng số E< ε cho trước số vòng lặp đạt đến mức định trước Mẫu đưa vào mạng trình huấn luyện lặp lại mạng học thuộc tất mẫu Lưu cấu hình mạng lại để sẵn sàng đưa vào sử dụng Hàm kích hoặt sử dụng mạng Perceptron nhiều lớp hàm sigmoid lưỡng cực g(s) = −∝s 1+e -1 hàm sigmoid đơn cực g(s) = −∝s 1+e đạo hàm hàm g’(s) = g(s) ( 1-g(s) ) d) Hậu sử lý liệu Giai đoạn làm nhiệm vụ chuyển đổi giá trị sang dạng ký tự tương ứng xếp lại ký tự dạng text theo dạng văn ban đầu e) Kết đánh giá: Thử nghiệm việc huấn luyện mạng với tập mẫu loại fontLatinh Arial, Latinh Tahoma, Latinh Times Roman III Chương Trinh Thử Nghiêm Và Kế t Quả ̣ ̀ A Ý tưởng hướng thực Tách kí tự Thuật tốn Bắt đầu từ kí tự hàng với giá trị x Quét hết chiều rộng với giá trị y Nếu phát điểm đen đánh dấu y đỉnh hàng Nếu không xét điểm Bắt đầu từ giới hạn kí tự phát giá trị x (0,giới hạn kí tự) Quét đến giới hạn dòng, giữ nguyên x Nếu phát điểm đen đánh dấu x phía trái kí tự Nếu không xét điểm Nếu không thấy điểm đen tăng x khởi động lại y để xét đường thẳng đứng Bắt đầu từ phía trái kí tự tìm thấy đỉnh dịng thời, (giới hạn trái kí tự, giới hạn dòng) Quét hết chiều rộng ảnh Trên giá trị x Nếu khơng có điểm đen đánh dấu x-1 bên phải kí tự Nếu phát điểm đen tăng x khởi động lại y để xét đường thẳng đứng Gới hạn trái kí tự Gớ x Q trình tách kí tự Tìm giới hạn kí tự Thuật tốn Q trình tách kí tự Bắt đầu từ đỉnh dòng thời bên trái kí tự Quét đến bên phải kí tự y giá trị y Nếu phát điểm đen đánh dấu y thay đổi lại giới hạn Nếu không xét điểm Nếu khơng tìm thấy điểm đen tăng y khởi động lại x, xét đường thẳng ngang Bắt đầu từ giới hạn dịng bên trái kí tự Quét tới bên phải kí tự giá trị y Nếu phát điểm đen, đánh dấu y giới hạn kí tự Nếu không phát điểm đen giảm y khởi động lại x xét đường thẳng ngang Gới hạn ký tự Quá trình tìm giới hạn Gới hạn ký tự Q trình tìm giới hạn kí tự Ánh xạ vào ma trận Thuật toán: Đối với chiều rộng: Khởi tạo với 19 phần tử tương ứng Ánh xạ điểm đầu (0,y) điểm cuối (C_rong,y) ảnh kí tự tương ứng với giá trị đầu (0,y) giá trị cuối (10,y) ma trận Chia nhỏ chiều rộng thành 19 giá trị tương ứng Đối với chiều cao: Khởi tạo với 29 phần tử tương ứng Ánh xạ điểm đầu (x,0) điểm cuối (x,C_cao) ảnh kí tự tương ứng với giá trị đầu (x,0) giá trị cuối (x,29) ma trận Chia nhỏ chiều cao thành 19 giá trị tương ứng Hình 2.5: Quá trình chia lưới kí tự Để đưa giá trị vào mạng neural ta cần chuyển ma trận điểm ảnh sang ma trận giá trị Thuật toán: Bắt đầu từ phần tử (0,0) Tăng x giữ nguyên giá trị y chiều rộng ma trận Ánh xạ phần tử tới phần tử mảng tuyến tính Nếu điểm đen nhận giá trị Ngược lạI nhận giá trị Nếu x = chiều rộng khởi động lại x tăng y Lặp lại (x,y)=( C_Rong, C_Cao) Hình 2.6: Quá trình ánh xạ từ ma trận điểm sang ma trận giá trị Huấn luyện mạng neural Thuật toán: Xây dựng mạng tương ứng với mơ hình tham số Khởi tạo giá trị trọng số với giá trị ngẫu nhiên Nạp file huấn luyện (cả ảnh đầu vào đầu mong muốn) Phân tích ảnh ánh xạ tất kí tự tìm thấy vào mảng chiều Đọc giá trị đầu mong muốn từ file chuyển đổi kí tự tới giá trị nhị phân Unicode lưu trữ riêng biệt Với kí tự: Tính tốn giá trị đầu mạng Feed ForWard So sánh với giá trị đầu mong muốn tương ứng với kí tự tính tốn lỗi truyền ngược giá trị từ đầu với liên kết điều chỉnh trọng số liên kết Chuyển sang kí tự lặp lại “6” hết kí tự Tính tốn trung bình lỗi cho tất kí tự Lặp lại từ bước đến đạt số đưa vào số lần lặp tối đa Với phạm vi lỗi đạt đến ngưỡng Nếu bỏ lặp lại Ngược lại tiếp tục lặp lại Nhận dạng ảnh kí tự Thuật tốn: Nạp file ảnh Phân tích ảnh cho dịng kí tự Với dịng tách kí tự liên tiếp Phân tích xử lý ảnh kí tự cho việc ánh xạ vào vectơ đầu vào Đưa giá trị vecto đầu vào cho mạng neural tính tốn giá trị đầu Chuyển đổi mã Unicode đầu từ nhị phân tới kí tự tương ứng trả dạng textbox B Môi Trường Cha ̣y Thử Nghiêm ̣ Phần cứng : Một máy tính pentum IV Card đồ họa 256 MB Ram 512 MB HDD trông 200Mb Phần mềm : Ngôn ngữ sử dụng: C# visual studio 2005 .Net Framework 3.5 Tập liệu ảnh bitmap với số ký tự đầu vào từ 120 đến 160 ký tự hai loại font: Arial Tahoma với kích thước: 8,10,12,14,18,20 Giao Diê ̣n Chính Giao diê ̣n nhâ ̣n da ̣ng C Nhận xét q trình nhận dạng kí tự: Chương trình thực nghiệm huấn luyện nhận dạng hai loại font : Arial Tahoma với nhiều kích thước khác đạt kết tốt, số tồn cần phát triển để đạt kết cao Đối với trình huấn luyện ta cần ý nhiều font Arial nói hình 3.5a hình 3.5b chữ “I_Hoa”mã 49h chữ “l_Thường ” mã 6Ch tách kí tự, chia lưới đưa kết vào mạng làm cho mạng khơng phân biệt hai kí tự dẫn đến sau nhận dạng sai Phương pháp cần tăng số lần lặp cho q trình huấn luyện Ngồi cịn số trường hợp ảnh hai kí tự nằm chéo số trường hợp sau: Nó dẫn đến q trình tách kí tự bị dính dó nhận dạng sai.Đối với trường hợp ta cần phát triển phương pháp tách để tách kí tự Trong q trình thực nghiệm nhận dạng kí tự ta thấy kí tự sai q trình huấn luyện mạng chưa học kí tự ảnh nhận dạng bị nhận dạng sai Chỉ có số q trình tách kí tự Tài liệu tham khảo Bài giảng thầy Trần Hùng Cường Giáo trình lý thuyết nhận dạng Giáo trình sử lý ảnh http://www.codeproject.com http://tailieuhay.com/ http://giaoan.violet.vn/ Cơng Việc thành viên Cao Xn Điền : tìm tài liêu, nghiên cứu tìm hiểu mạng nơron nhiều lớp đóng góp ý kiến xây dựng trương trình Nguyễn Minh Hải:Tìm tài liệu,nghiện cứu thuật tốn lan truyền ngược,đóng góp ý kiến xây dựng trương trình Trần Ngọc Q: nghiên cứu ứng dụng mạng Neuron lan truyền ngược cho nhận dang ký tự,tìm hiểu code ứng dụng Nguyễn Ngọc Thao(NT) : phân công công việc,tổng hợp ý kiến,nghiên cứu thuật tốn xây dựng trương trình ứng dụng ... tương ứng với 250 phần tử vectơ ma trận pixel, lớp ẩn có 600 nơron lớp có 16 nơron với 16 bit c) Quá trình huấn luyện mạng : Huấn luyện mạng neural nhiều lớp sử dụng thuật toán Lan truyền ngược. .. cứu ứng dụng mạng Neuron lan truyền ngược cho nhận dang ký tự ,tìm hiểu code ứng dụng Nguyễn Ngọc Thao(NT) : phân công công việc,tổng hợp ý kiến,nghiên cứu thuật tốn xây dựng trương trình ứng dụng. .. mà mạng tính kết dự đốn mạng gọi lỗi (học có giám sát) Quá trình truyền ngược: Giá trị lỗi truyền ngược lại cho trình huyến luyện( học) tìm trọng số Wi để lỗi nhỏ Bước 1: Lan truyền xuôi đầu vào