Ngày đăng: 21/07/2015, 15:11
BÀI TẬP LỚN ỨNG DỤNG MẠNG NEURAL NHẬN DẠNG CHỮ VIẾT TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ===== o0o ===== BÀI TẬP LỚN ỨNG DỤNG MẠNG NEURAL NHẬN DẠNG CHỮ VIẾT MÔN: LÝ THUYẾT TẬP THÔ VÀ ỨNG DỤNG Giáo viên hướng dẫn: Th.s Trần Thanh Huân Thực hiện: Nhóm 1 – Lớp LT CĐ ĐH_KHMT3 – K5 Hà Nội. 3/ 2015. MỤC LỤC MỤC LỤC 1 LỜI NÓI ĐẦU 3 1. TỔNG QUAN VỀ MẠNG NEURAL 4 1.1. Khái niệm mạng neural 4 1.2. Đặc trưng của mạng neural 7 1.3. Xây dựng mạng neural 9 1.4. Huấn luyện mạng neural 10 1.5. Thu thập dữ liệu cho mạng neural 17 1.6. Biểu diễn tri thức cho mạng neural 18 1.7. Một số vấn đề cần chú ý: 20 1.8. Một số hướng dẫn khi sử dụng mạng neural 21 1.9. Ứng dụng của mạng neural 21 2. ỨNG DỤNG MẠNG NEURAL NHẬN DẠNG KÍ TỰ 22 2.1. Giới thiệu 22 2.2. Phát biểu bài toán 22 2.3. Các bước giải quyết giải quyết bài toán 23 3. ĐỊNH HƯỚNG XÂY DỰNG CHƯƠNG TRÌNH THỬ NGHIỆM 34 3.1. Môi trường thử nghiệm 34 3.2. Bảng mã ASCII sử dụng trong chương trình 34 3.3. Thực nghiệm 38 3.4. Nhận xét quá trình nhận dạng kí tự: 41 4. KẾT LUẬN 42 5. TÀI LIỆU THAM KHẢO 43 2 LỜI NÓI ĐẦU Máy tính ngày càng đóng vai trò quan trọng khoa học kỹ thuật cũng như trong đời sống. Nó đã làm được những điều kỳ diệu, giải được những vấn đề tưởng chừng nan giải. Liệu máy tính có khả năng suy nghĩ như con người hay chưa? Chúng ta sẽ không trả lời câu hỏi ấy. Thay vào đó, chúng ta sẽ nêu ra những khác biệt chủ yếu giữa cách làm việc của máy tính và bộ óc con người. Một máy tính, dù có mạnh đến đâu chăng nữa, đều phải làm việc theo một chương trình chính xác đã được hoạch định trước bởi các chuyên gia. Bài toán càng phức tạp thì việc lập trình càng công phu. Trong khi đó con người làm việc bằng cách học tập và rèn luyện, khi làm việc con người có khả năng liên tưởng, kết nối sự việc này với sự việc khác, và quan trọng hơn hết, họ có thể sáng tạo. Do có khả năng liên tưởng, con người có thể dễ dàng làm nhiều điều mà việc lập trình cho máy tính đòi hỏi rất nhiều công sức. Chẳng hạn như việc nhận dạng hay trò chơi ô chữ. Một em bé có thể tự học hỏi để nhận dạng và phân loại đồ vật chung quanh mình, biết được cái gì là thức ăn, cái gì là đồ chơi. Một người bình thường cũng có thể đoán được vài chữ trong một ô chữ. Nhưng thật khó mà dạy cho máy tính làm được những việc ấy. Từ lâu các nhà khoa học đã nhận thấy những ưu điểm của bộ óc con người và tìm cách bắt chước để thực hiện trên những máy tính, tạo cho nó có khả năng học tập, nhận dạng và phân loại.Lý thuyết tập thô đã ra đời từ những nỗ lực đó. Nó thực sự được chú ý và nhanh chóng trở thành một hướng nghiên cứu đầy triển vọng trong mục đích xây dựng các máy thông minh tiến gần tới trí tuệ con người. Đặc biệt là lĩnh vực nhận dạng. Báo cáo của chúng em sẽ trình bày “Ứng dụng mạng neural trong nhận dạng kí tự”. Nội dung báo cáo gồm những chương sau: 1:Tổng quan về mạng neural nhân tạo. 2: Ứng dụng mạng neural nhận dạng kí tự. 3: Định hướng xây dựng chương trình thử nghiệm. 3 1. TỔNG QUAN VỀ MẠNG NEURAL 1.1. Khái niệm mạng neural. 1.1.1. Tìm hiểu về Neural. 1.1.1.1. Neural nhân tạo: Neural nhân tạo là một đơn vị tính toán có nhiều đầu vào và một đầu ra, mỗi đầu vào đến từ một liên kết. Đặc trưng của neural là một hàm kích hoạt phi tuyến chuyển đổi tổ hợp tuyến tính của tất cả các tín hiệu đầu vào thành tín hiệu đầu ra. Hàm kích hoạt này đảm bảo tính chất phi tuyến cho tính toán của mạng neural. Hình1.2: Mô hình một neural nhân tạo Một neural được cấu tạo gồm các thành phần chính : liên kết neural, bộ cộng, hàm kích hoạt. Liên kết neural là một thành phần của mạng neural nhận tạo để liên kết giữa các neural, nó nối đầu ra của neural lớp này với đầu vào của một neural trong lớp khác. Đặc trưng của thành phần liên kết là một trọng số mà mỗi tín hiệu đi qua đều được nhân với trọng số này. Các trọng số liên kết chính là các tham số tự do cơ bản của mạng neuron, có thể thay đổi được nhằm thích nghi với môi trường xung quanh. Bộ cộng dùng để tính tổng các tín hiệu đầu vào của neural, đã được nhân với các trọng số liên kết tương ứng. phép toán được mô tả ở đây tạo nên một bộ hợp tuyến tính. 4 w 2 w k w 1 y 1 y 2 b 0 y k f a Đầu vào Đầu ra a=f( ∑w’y+b) Hàm kích hoạt hay còn gọi hàm kích hoạt phi tuyến, chuyển đổi một tổ hợp tuyến tính của tất cả các tín hiệu đầu vào thành tín hiệu đầu ra. Hàm kích hoạt này đảm bảo tính chất phi tuyến cho tính toán mạng neural. Nó được xem như là một hàm giới hạn, nó giới hạn phạm vi biên độ cho phép của tín hiệu đầu ra trong một khoảng giá trị hữu hạn. Mô hình neural trong hình 1.2 còn bao gồm một hệ số điều chỉnh b tác động từ bên ngoài. Hệ số điều chỉnh b có tác dụng tăng lên hoặc giảm đi đầu vào thực của hàm kích hoạt, tùy theo nó dương hay âm. Bảng 1.1 : Một số hàm kích hoạt cơ bản trong mạng neural: Tên hàm Công thức Hardlim a = 0 với n < 0 a = 1 với n ≥ 0 Hardlims a = -1 với n < 0 a = 1 với n ≥ 0 Purelin a = n Satlin a = 0 với n < 0 a = n với 0 ≤ n ≤ 1 a = 1 với n > 1 Satlins a = -1 với n < 0 a = n với 0 ≤ n ≤ 1 a = 1 với n > 1 Tansig n e ee a nn − + − = − 1 Poslin a = 0 với n < 0 a = n với n ≥ 0 Compet a = 1 với neural có n lớn nhất a = 0 với các neural còn lại 5 Logsig n e a − + = 1 1 1.1.2. Mạng neural nhân tạo. Là một hệ thống bao gồm nhiều phần tử xử lý đơn giản (hay còn gọi là neural) tựa như neural thần kinh của não người, hoạt động song song và được nối với nhau bởi các liên kết neural. Mỗi liên kết kèm theo một trọng số nào đó, đặc trưng cho tính kích hoạt hoặc ức chế giữa các neural. Có thể xem các trọng số là phương tiện để lưu trữ thông tin dài hạn trong mạng neural và nhiệm vụ của quá trình huấn luyện của mạng là cập nhật các trọng số khi có thêm thông tin về mẫu học. Hay nói một cách khác, các trọng số đều được điều chỉnh sao cho dáng điệu vào ra của mạng sẽ mô phỏng hoàn toàn phù hợp với môi trường đang xem xét. Hình 1.3: Sơ đồ đơn giản về một mạng neural nhân tạo Mô hình mạng neural ở trên gồm 3 lớp: lớp nhập (input), lớp ẩn(hidden) và lớp xuất (output). Mỗi nút trong lớp nhập nhận giá trị của một biến độc lập và chuyển vào mạng. Dữ liệu từ tất cả các nút trong lớp nhập được tích hợp – ta gọi là tổng trọng số – và chuyển kết quả cho các nút trong lớp ẩn. Gọi là “ẩn” vì các nút trong lớp 6 này chỉ liên lạc với các nút trong lớp nhập và lớp xuất, và chỉ có người thiết kế mạng mới biết lớp này (người sử dụng không biết lớp này). Các nút trong lớp xuất nhận các tín hiệu tổng trọng hóa từ các nút trong lớp ẩn. Mỗi nút trong lớp xuất tương ứng với một biến phụ thuộc. 1.2. Đặc trưng của mạng neural. 1.2.1. Tính phi tuyến. Một neural có thể tính toán một cách tuyến tính hay phi tuyến. Một mạng neural, cấu thành bởi sự kết nối các neural phi tuyến thì tự nó sẽ có tính phi tuyến. Hơn nữa, điều đặc biệt là tính phi tuyến này được phân tán trên toàn mạng. Tính phi tuyến là một thuộc tính rất quan trọng, nhất là khi các cơ chế vật lý sinh ra các tín hiệu đầu vào (ví dụ tín hiệu tiếng nói) vốn là phi tuyến. 1.2.2. Tính chất tương ướng đầu vào đầu ra. Mặc dù khái niệm “học” hay “huấn luyện” chưa được bàn đến nhưng để hiểu được mối quan hệ đầu vào-đầu ra của mạng neural, chúng ta sẽ đề cập sơ qua về khái niệm này. Một mô hình học phổ biến được gọi là học với một người dạy hay học có giám sát liên quan đến việc thay đổi các trọng số liên kết của mạng neural bằng việc áp dụng một tập hợp các mẫu tích luỹ hay các ví dụ tích luỹ. Mỗi một ví dụ bao gồm một tín hiệu đầu vào và một đầu ra mong muốn tương ứng. Mạng neural nhận một ví dụ lấy một cách ngẫu nhiên từ tập hợp nói trên tại đầu vào của nó, và các trọng số liên kết của mạng được biến đổi sao cho có thể cực tiểu hoá sự sai khác giữa đầu ra mong muốn và đầu ra thực sự của mạng theo một tiêu chuẩn thống kê thích hợp. Sự tích luỹ của mạng được lặp lại với nhiều ví dụ trong tập hợp cho tới khi mạng đạt tới một trạng thái ổn định mà ở đó không có một sự thay đổi đáng kể nào của các trọng số liên kết. Các ví dụ tích luỹ được áp dụng trước có thể được áp dụng lại trong thời gian của phiên tích luỹ nhưng theo một thứ tự khác. Như vậy mạng neural học từ các ví dụ bằng cách xây dựng nên một tương ứng đầu vào-đầu ra cho vấn đề cần giải quyết. 1.2.3. Tính chất thích nghi. Các mạng neural có một khả năng mặc định là biến đổi các trọng số liên kết tuỳ theo sự thay đổi của môi trường xung quanh. Đặc biệt, một mạng neural đã được tích luỹ để hoạt động trong một môi trường xác định có thể được tích 7 luỹ lại một cách dễ dàng khi có những thay đổi nhỏ của các điều kiện môi trường hoạt động. 1.2.4. Tính chất đưa ra lời giải có bằng chứng. Trong ngữ cảnh phân loại mẫu, một mạng neural có thể được thiết kế để đưa ra thông tin không chỉ về mẫu được phân loại, mà còn về sự tin cậy của quyết định đã được thực hiện. Thông tin này có thể được sử dụng để loại bỏ các mẫu mơ hồ hay nhập nhằng. 1.2.5. Tính chất chấp nhận sai xót. Một mạng neural, được cài đặt dưới dạng phần cứng, vốn có khả năng chấp nhận lỗi, hay khả năng tính toán thô, với ý nghĩa là tính năng của nó chỉ thoái hoá khi có những điều kiện hoạt động bất lợi. Ví dụ, nếu một neural hay các liên kết kết nối của nó bị hỏng, việc nhận dạng lại một mẫu được lưu trữ sẽ suy giảm về chất lượng. 1.2.6. Khả năng cài đặt VLSI(Very-large-scale-intergrated). Bản chất song song đồ sộ của một mạng neural làm cho nó rất nhanh trong tính toán đối với một số công việc. Đặc tính này cũng tạo ra cho một mạng neural khả năng phù hợp cho việc cài đặt sử dụng kỹ thuật Very-large-scale- intergrated (VLSI). Kỹ thuật này cho phép xây dựng những mạch cứng tính toán song song quy mô lớn. Chính vì vậy mà ưu điểm nổi bật của VLSI là mang lại những phương tiện hữu hiệu để có thể xử lý được những hành vi có độ phức tạp cao. 1.2.7. Tính chất đồng dạng trong phân tích và thiết kế. Về cơ bản, các mạng neural có tính chất chung như là các bộ xử lý thông tin. Chúng ta nêu ra điều này với cùng ý nghĩa cho tất cả các lĩnh vực có liên quan tới việc ứng dụng mạng neural. Đặc tính này thể hiện ở một số điểm như sau: Các neural, dưới dạng này hoặc dạng khác, biểu diễn một thành phần chung cho tất cả các mạng neural. Tính thống nhất này đem lại khả năng chia sẻ các lý thuyết và các thuật toán học trong nhiều ứng dụng khác nhau của mạng neural. 8 Các mạng tổ hợp (modular) có thể được xây dựng thông qua một sự tích hợp các mô hình khác nhau. 1.3. Xây dựng mạng neural. Về cơ bản ta có thể hiểu mạng neural là một đồ thị có hướng như hình 1.8. Trong đó các đỉnh của đồ thị là các neural và các cạnh của đồ thị là các liên kết giữa các neural. Hình 1.8: Sơ đồ đồ thị có hướng đơn giản Vì vậy để xây dựng một mạng neural ta xây dựng một đồ thị có hướng: số đỉnh của đồ thị bằng số neural trong mạng, giá trị của các cạnh chính là trọng số liên kết neural. Ví dụ xây dựng một mạng neural đơn giản: Đầu vào: Cho : Mạng neural có số lớp (với số lớp>1). Mỗi lớp có số neural trong một lớp (số neural>=1). Trọng số w liên kiết neural ngẫu nhiên trong khoảng (-a,a). Đầu ra: Mạng neural nhân tạo. Kiểu dữ liệu: chọn lưu dữ kiểu mảng : int số lớp; int số neural[số lớp]; float w[i][j][k]; với 2<=i<=số lớp, 1<=j,k<=số neural[], Thuật toán. 9 x h 1 h 2 h 3 g 2 g 1 f Bước 1: Chọn lớp i=2 là lớp bắt đầu Bước 2: Chọn lớp i là lớp hiện thời. Bước 3 : Tại lớp đang xét i, xét neural thứ j. Bước 4: Thực hiện khởi tạo ngẫu nhiên trọng số kết nối với neural k của lớp i-1 trong khoảng (-a,a). w(i,j,k)=random(-a,a) Bước 5: Nếu k <= số neural[i-1] quay lại “Bước 4”, ngược lại thực hiện “Bước 6”. Bước 6: Nếu j<= số neural[i] quay lại “Bước 3”, ngược lại thực hiện “Bước 7”. Bước 7: Nếu i<=số lớp quay lại “Bước 3”. ngược lại kết thúc. 1.4. Huấn luyện mạng neural. 1.4.1. Phương pháp học. Lý thuyết tập thôphỏng theo việc xử lý thông tin của bộ não người, do vậy đặc trưng cơ bản của mạng là có khả năng học, khả năng tái tạo các hình ảnh và dữ liệu khi đã học. Trong trạng thái học thông tin được lan truyền theo hai chiều nhiều lần để học các trọng số. Có 3 kiểu học chính, mỗi kiểu học tương ứng với một nhiệm vụ học trừu tượng. Đó là học có giám sát (có mẫu), học không giám sát và học tăng cường. Thông thường loại kiến trúc mạng nào cũng có thể dùng được cho các nhiệm vụ. 1.4.1.1. Học có giám sát. Một thành phần không thể thiếu của phương pháp này là sự có mặt của một người thầy (ở bên ngoài hệ thống). Người thầy này có kiến thức về môi trường thể hiện qua một tập hợp các cặp đầu vào - đầu ra đã được biết trước. Hệ thống học (ở đây là mạng neural) sẽ phải tìm cách thay đổi các tham số bên trong của mình (các trọng số và các ngưỡng) để tạo nên một ánh xạ có khả năng ánh xạ các đầu vào thành các đầu ra mong muốn. Sự thay đổi này được tiến hành nhờ việc so sánh giữa đầu ra thực sự và đầu ra mong muốn. 10 [...]... trình nhận dạng kí tự của mạng neural Ý tưởng bài toán : Phân tích ảnh cho kí tự: Chia ảnh theo dòng và tách ký tự theo từng vùng giới hạn Chuyển đổi kí tự sang ma trận điểm ảnh Chuyển thành ma trận tuyến tính và đưa vào mạng neural 22 Đưa vào mạng neural tính giá trị đầu ra Hiển thị kí tự của mã Unicode thu được Các bước giải quyết bài toán sử dụng mạng neural nhận dạng ký tự: Xây dựng mạng, ... liệu(phân tích ảnh), huấn luyện mạng nueral và nhận dạng mạng neural 2.3 Các bước giải quyết giải quyết bài toán 2.3.1 Xây dựng mạng neural Chọn mạng đa tầng Feedforward với 3 lớp : 0 hoặc 1 Điểm ảnh 0 hoặc 1 Điểm ảnh Điểm ảnh 0 hoặc 1 0 hoặc 1 Điểm ảnh 16 neural Lớp đầu ra 150 neural Lớp đầu vào 500 neural Lớp ẩn 23 Hình 2.1: Sơ đồ mạng neural thiết kế Lớp đầu vào gồm 150 neural nhận giá trị nhị phân(0,1)... phỏng neural sinh học, chúng ta có thể có loại máy tính thông minh thật sự 21 2 ỨNG DỤNG MẠNG NEURAL NHẬN DẠNG KÍ TỰ 2.1 Giới thiệu Nhận dạng ký tự là một trong những ứng dụng được rất nhiều người quan tâm, nghiên cứu Tuy nhiên, đây không phải là vấn đề đơn giản Có nhiều khó khăn, thử thách gặp phải trong nội dung này Nhận dạng kí tự gặp khó khăn ở chỗ các kiểu ngôn ngữ rất phức tạp không theo quy luật... : Nếu mạng gây ra lỗi, thì có thể xác định neural nào gây ra lỗi => điều chỉnh neural đó Với cách tiếp cận này, mạng phải biết rằng nó gây ra lỗi 20 Trong thực tế, lỗi chỉ được biết sau một thời gian dài Chức năng của nột neural không quá đơn giản như mô hình Bởi vì mạng neural hoạt động như một hộp đen 1.8 Một số hướng dẫn khi sử dụng mạng neural Xây dựng mạng khởi tạo(dùng một lớp ẩn có số neural= … huấn luyện lại để tìm các mạng mới 1.9 Ứng dụng của mạng neural Mạng neural trong một vài năm trở lại đây đã được nhiều người quan tâm và đã áp dụng thành công trong nhiều lĩnh vực khác nhau, như tài chính, y tế, địa chất và vật lý Thật vậy, bất cứ ở đâu có vấn đề về dự báo, phân loại và điều khiển, mạng neural đều có thể ứng dụng được Ví dụ như khả năng nhận dạng mặt người trong các hệ thống quản lý… khả năng thích nghi với môi trường dữ liệu đầu vào sinh động 2.2 Phát biểu bài toán Cho bài toán nhận dạng kí tự với đầu vào là trang văn bản trên định dạng file ảnh (*.bmp,*.jmp,…) Yêu cầu là xây dựng chương trình nhận dạng kí tự văn bản trên file ảnh Sử dụng công cụ là mạng nơron và đầu ra là tập hợp các kí tự lưu trữ dưới dạng văn bản Giả thiết giai đoạn tiền xử lý đã được thực hiện : ảnh đã được… số neural của lớp nhập và lớp xuất) Huấn luyện mạng dùng các giải thuật huấn luyện Nên thực hiện trên nhiều mạng khác nhau để tránh trường hợp cực tiểu cục bộ Nếu máy “Không thuộc bài => thêm một vài neural cho tầng ẩn Ngược lại nếu máy “Học vẹt”=> bớt một vài neural ra khỏi tầng ẩn Khi đã tìm được một kiến trúc mạng tương đối tốt lấy mẫu lại tập dữ liệu và huấn luyện lại để tìm các mạng mới 1.9 Ứng. .. áp dụng nó một 19 cách thích hợp sẽ dẫn đến khả năng tạo ra các mạng neural với một kiến trúc chuyên biệt Điều này thực sự được quan tâm do một số nguyên nhân sau: 1 Các mạng neural thị giác và thính giác sinh học được biết là rất chuyên biệt 2 Một mạng neural với cấu trúc chuyên biệt thường có một số lượng nhỏ các tham số tự do phù hợp cho việc chỉnh lý hơn là một mạng kết nối đầy đủ Như vậy mạng neural. .. lại bước 2 cho tất cả các mẫu Nhận xét: Phương trình w.v=0 là chính là siêu phẳng trong không gian d-chiều, suy ra perceptron có khả năng phân lớp tuyến tính, có khả năng giải bài toán quy hồi tuyến tính Hạn chế: Không thể phân lớp phi tuyến Giải pháp: sử dụng mạng neural nhiều tầng MLP 1.4.2.2 Thuật toán học của mạng neural nhiều lớp Huấn luyện mạng neural nhiều lớp sử dụng thuật toán Lan truyền ngược… mạng neural tự sẵn sàng ? KẾT Đọc đầu ra mong muốn THÚC 31 2.3.4 Nhận dạng ảnh kí tự Quá trình nhận dạng của mạng neural đơn giản và dễ hiểu Khi chương trình chạy sẽ gọi các modun: phân tích ảnh, vector hóa trong quá trình huấn luyện có thể được sử dụng lại trong quá trình nhận dạng Những bước cơ sở để nhận dạng ảnh của kí tự có thể tóm tắt bởi sơ đồ hình 2.8 dưới đây: BẮT ĐẦU Phân tích dòng ảnh Dòng. diễn tri thức cho mạng neural 18 1.7. Một số vấn đề cần chú ý: 20 1.8. Một số hướng dẫn khi sử dụng mạng neural 21 1.9. Ứng dụng của mạng neural 21 2. ỨNG DỤNG MẠNG NEURAL NHẬN DẠNG KÍ TỰ 22 2.1 NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ===== o0o ===== BÀI TẬP LỚN ỨNG DỤNG MẠNG NEURAL NHẬN DẠNG CHỮ VIẾT MÔN: LÝ THUYẾT TẬP THÔ VÀ ỨNG DỤNG Giáo viên hướng dẫn: Th.s Trần Thanh Huân Thực hiện:. vực nhận dạng. Báo cáo của chúng em sẽ trình bày Ứng dụng mạng neural trong nhận dạng kí tự”. Nội dung báo cáo gồm những chương sau: 1:Tổng quan về mạng neural nhân tạo. 2: Ứng dụng mạng neural
Source: https://bem2.vn
Category: Ứng dụng hay