87
Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự LỜI CẢM ƠN Em xin chân thành cảm ơn các thầy, các cô khoa Công nghệ Thông tin Trường Đại học Dân lập Hải Phòng đã tận tình dạy dỗ, truyền đạt cho chúng em nhiều kiến thức quý báu. Em xin tỏ lòng biết ơn sâu sắc đến thầy Th.s Ngô Trường Giang, người đã tận tình giúp đỡ và truyền đạt nhiều kinh nghiệm để đề tài có thể được thực hiện và hoàn thành. Xin chân thành cảm ơn các bạn trong khoa Công Nghệ Thông Tin, Đại Học Dân Lập Hải Phòng đã giúp đỡ, động viên tôi rất nhiều trong quá trình thực hiện đề tài. Em xin trân thành cảm ơn! Hải Phòng, tháng 07 năm 2007. Sinh viên Bùi Quang Chiến Bùi Quang Chiến Trang 1

Ứng dụng mạng neural trong nhận dạng kí tự

Embed Size (px)

Citation preview

Page 1: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

LỜI CẢM ƠN

Em xin chân thành cảm ơn các thầy, các cô khoa Công nghệ Thông tin

Trường Đại học Dân lập Hải Phòng đã tận tình dạy dỗ, truyền đạt cho chúng em

nhiều kiến thức quý báu.

Em xin tỏ lòng biết ơn sâu sắc đến thầy Th.s Ngô Trường Giang, người đã

tận tình giúp đỡ và truyền đạt nhiều kinh nghiệm để đề tài có thể được thực hiện

và hoàn thành.

Xin chân thành cảm ơn các bạn trong khoa Công Nghệ Thông Tin, Đại Học

Dân Lập Hải Phòng đã giúp đỡ, động viên tôi rất nhiều trong quá trình thực hiện

đề tài.

Em xin trân thành cảm ơn!

Hải Phòng, tháng 07 năm 2007. Sinh viên

Bùi Quang Chiến

Bùi Quang Chiến Trang 1

Page 2: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

MỤC LỤC

LỜI NÓI ĐẦU.......................................................................................................4

CHƯƠNG 1: TỔNG QUAN VỀ MẠNG NEURAL NHÂN TẠO.................5

1.1. Khái niệm mạng neural ...........................................................................51.1.1. Tìm hiểu về Neural......................................................................51.1.2. Mạng neural nhân tạo....................................................................8

1.2. Đặc trưng của mạng neural....................................................................101.2.1. Tính phi tuyến.............................................................................101.2.2. Tính chất tương ướng đầu vào đầu ra..........................................101.2.3. Tính chất thích nghi.....................................................................101.2.4. Tính chất đưa ra lời giải có bằng chứng......................................111.2.5. Tính chất chấp nhận sai xót.........................................................111.2.6. Khả năng cài đặt VLSI(Very-large-scale-intergrated)................111.2.7. Tính chất đồng dạng trong phân tích và thiết kế.........................11

1.3. Phân loại mạng neural nhân tạo.............................................................121.3.1. Phân loại theo kiểu liên kết neural..............................................121.3.2. Một số loại mạng neural..............................................................12

1.4. Xây dựng mạng neural...........................................................................141.5. Huấn luyện mạng neural........................................................................16

1.5.1. Phương pháp học.........................................................................161.5.2. Thuật toán học.............................................................................17

1.6. Thu thập dữ liệu cho mạng neural.........................................................221.7. Biểu diễn chi thức cho mạng neural......................................................241.8. Một số vấn đề của mạng neural.............................................................261.9. Ứng dụng của mạng neural....................................................................27

CHƯƠNG 2: ỨNG DỤNG MẠNG NEURAL NHẬN DẠNG KÍ TỰ.........28

2.1. Giới thiệu...............................................................................................282.2. Phát biểu bài toán..................................................................................282.3. Các bước giải quyết giải quyết bài toán................................................29

2.3.1. Xây dựng mạng neural................................................................292.3.2. Xử lý dữ liệu (phân tích ảnh)......................................................302.3.3. Huấn luyện mạng neural..............................................................352.3.4. Nhận dạng ảnh kí tự....................................................................39

Bùi Quang Chiến Trang 2

Page 3: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

CHƯƠNG 3: CÀI ĐẶT CHƯƠNG TRÌNH THỬ NGHIỆM.......................41

3.1. Môi trường thử nghiệm..........................................................................413.2. Giao diện chương trình..........................................................................413.3. Bảng mã ASCII sử dụng trong chương trình.........................................413.4. Thực nghiệm..........................................................................................43

3.4.1. Thực nghiệm quá trình tính giá trị một số tham số đầu vào:.......433.4.2. Thực nghiệm huấn luyện mạng...................................................453.4.3. Thực nghiệm nhận dạng..............................................................49

KẾT LUẬN.........................................................................................................57

TÀI LIỆU THAM KHẢO...................................................................................58

Bùi Quang Chiến Trang 3

Page 4: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

LỜI NÓI ĐẦU

Ngày nay không ai có thể phủ nhận vai trò cực kỳ quan trọng của máy tính

trong nghiên cứu khoa học kỹ thuật cũng như trong đời sống. Máy tính đã làm

được những điều kỳ diệu và giải được những vấn đề tưởng chừng nan giải. Càng

ngày càng có nhiều người tự hỏ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. Các mạng neural nhân tạo đã 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.

Trong đồ án này 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:

Chương 1:Tổng quan về mạng neural nhân tạo.

Chương 2: Ứng dụng mạng neural nhận dạng kí tự.

Chương 3: Cài đặt chương trình thử nghiệm.

Bùi Quang Chiến Trang 4

Page 5: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

CHƯƠNG 1:TỔNG QUAN VỀ MẠNG NEURAL NHÂN TẠO

1.1. Khái niệm mạng neural .

1.1.1. Tìm hiểu về Neural.

1.1.1.1. Neural sinh học:

Một neural được cấu gồm những thành phần chính sau: Dendrite, Soma,

Synapse, Axon như hình 1.1.

Hình 1.1: Mô hình neural sinh học

Soma là thân của neural.

Các dendrites là các dây mảnh, dài, gắn liền với soma, chúng truyền dữ liệu

(dưới dạng xung điện thế) đến cho soma xử lý. Bên trong soma các dữ liệu đó

được tổng hợp lại, có thể xem gần đúng sự tổng hợp ấy như là một phép lấy tổng

tất cả các dữ liệu mà neural nhận được.

Một loại dây dẫn tín hiệu khác cũng gắn với soma là các axon. Khác với

dendrites, axons có khả năng phát các xung điện thế, chúng là các dây dẫn tín

hiệu từ neural đi các nơi khác. Chỉ khi nào điện thế trong soma vượt quá một giá

trị ngưỡng nào đó thì axon mới phát một xung điện thế, còn nếu không thì nó ở

trạng thái nghỉ.

Axon nối với các dendrites của các neural khác thông qua những mối nối

đặc biệt gọi là synapse. Khi điện thế của synapse tăng lên do các xung phát ra từ

Bùi Quang Chiến Trang 5

Page 6: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

axon thì synapse sẽ nhả ra một số chất hoá học (neurotransmitters); các chất này

mở "cửa" trên dendrites để cho các ions truyền qua. Chính dòng ions này làm

thay đổi điện thế trên dendrites, tạo ra các xung dữ liệu lan truyền tới các neural

khác.

Có thể tóm tắt hoạt động của một neural như sau: neural lấy tổng tất cả các

điện thế vào mà nó nhận được, và phát ra một xung điện thế nếu tổng ấy lớn hơn

một ngưỡng nào đó. Các neural nối với nhau ở các synapses. Synapse được gọi

là mạch khi nó cho phép truyền dẫn dễ dàng tín hiệu qua các neural khác. Ngược

lại, một synapse yếu sẽ truyền dẫn tín hiệu rất khó khăn.

Các synapses đóng vai trò rất quan trọng trong sự học tập. Khi chúng ta

học tập thì hoạt động của các synapses được tăng cường, tạo nên nhiều liên kết

mạnh giữa các neural. Có thể nói rằng người nào học càng giỏi thì càng có nhiều

synapses và các synapses ấy càng mạnh mẽ, hay nói cách khác, thì liên kết giữa

các neural càng nhiều, càng nhạy bén.

1.1.1.2. 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

Bùi Quang Chiến Trang 6

w2

wk

w1y1

y2

b0yk

fa

Đầu vào Đầu ra a=f( w’y+b)

Page 7: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

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.

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ùi Quang Chiến Trang 7

Page 8: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

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

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

logsig

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

Bùi Quang Chiến Trang 8

Page 9: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

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.

Mô hình mạng neural.

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

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.

Bùi Quang Chiến Trang 9

Page 10: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

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

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.

Bùi Quang Chiến Trang 10

Page 11: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

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.

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.

Bùi Quang Chiến Trang 11

Page 12: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

1.3. Phân loại mạng neural nhân tạo.

1.3.1. Phân loại theo kiểu liên kết neural.

Ta có mạng neural truyền thẳng và neural mạng qui hồi.

Trong mạng truyền thẳng các neural đi theo một hướng nhất định tạo thành

đồ thị không có chu trình, các đỉnh là các neural còn các cạnh là các liên kết

giữa chúng.

Các mạng qui hồi cho phép các liên kết neural tạo thành chu trình, các

thông tin ra của các neural được truyền lại cho các neural đã góp phần kích hoạt

chúng, nên mạng qui hồi còn có khả năng lưu giữ trạng thái trong của nó dưới

dạng các ngưỡng kích hoạt ngoài các trọng số liên kết neural.

1.3.2. Một số loại mạng neural.

1.3.2.1. Mạng dẫn tiến .

Có thể nói mạng neural dẫn tiến là một kiểu mạng đơn giản trong việc sắp

đặt mạng. Trong mạng này thông tin chỉ truyền trên một hướng duy nhất. từ lớp

đầu vào xuyên qua lớp ẩn (nếu có) và kết thúc tại lớp đầu ra. Không có chu trình

hoặc vòng trong mạng.

a. Các mạng dẫn tiến đơn mức.

Trong một mạng neural phân mức, các neural được tổ chức dưới dạng các

mức. Với dạng đơn giản nhất của mạng phân mức, chúng ta có một mức đầu vào

gồm các nút nguồn chiếu trực tiếp tới mức đầu ra gồm các neural.

Mức đầu vào Mức đầu ra

Hình 1.4: Mạng tiến với một mức neural

Bùi Quang Chiến Trang 12

Page 13: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Như vậy, mạng thực sự là không có chu trình. Nó được minh hoạ trong

hình 1.4 cho trường hợp ba nút đối với cả mức đầu ra và đầu vào. Một mạng như

vậy được gọi là một mạng đơn mức. “Đơn mức” tức là chỉ có một mức, chính là

mức đầu ra gồm các nút tính toán (các neural). Chúng ta không tính mức đầu

vào của các nút nguồn vì không có tính toán nào được thực hiện ở đây.

b. Các mạng dẫn tiến đa mức.

Lớp thứ hai của một mạng neural dẫn tiến được phân biệt bởi sự có mặt của

một hay nhiều mức ẩn, mà các nút tính toán của chúng được gọi là các neural ẩn

hay các đơn vị ẩn (thuật ngữ “ẩn” ở đây mang ý nghĩa là không tiếp xúc với môi

trường). Chức năng của các neural ẩn là can thiệp vào giữa đầu vào và đầu ra

của mạng một cách hữu hiệu. Bằng việc thêm một vài mức ẩn, mạng có khả

năng rút ra được các thống kê bậc cao của tín hiệu đầu vào. Khả năng các neural

ẩn rút ra được các thống kê bậc cao đặc biệt có giá trị khi mức đầu vào có kích

thước lớn.

Mạng neural trong hình 1.5 được gọi là kết nối đầy đủ với ý nghĩa là tất cả

các nút trong mỗi mức của mạng được nối với tất cả các nút trong mức tiếp sau.

Nếu một số kết nối không tồn tại trong mạng, chúng ta nói rằng mạng là kết nối

không đầy đủ.

Mức đầu vào Mức ẩn Mức đầu ra

gồm các nút gồm các gồm các

nguồn neural ẩn neural đầu ra

Hình 1.5: Mạng tiến kết nối đầy đủ với một mức ẩn và một mức đầu ra

Bùi Quang Chiến Trang 13

Page 14: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

1.3.2.2. Mạng quy hồi .

Trái với mạng neural dẫn tiến , mạng nổn quy hồi là những mô hình với

hai luồng dữ liệu có hướng. Trong khi mạng dẫn tiến truyền dữ liệu theo một

đường thẳng thì những mạng neural quy hồi có ít nhất một phản hồi từ những

neural xử lý sau quay trở lại các neural xử lý trước đó.

Hình 1.6: Mạng hồi quy không có neural ẩn và không có vòng lặp tự phản hồi

Hình 1.7: Mạng hồi quy có các neural ẩn

1.4. 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.

Bùi Quang Chiến Trang 14

Page 15: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

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.

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).

Bùi Quang Chiến Trang 15

x

h1

h2

h3

g2

g1

f

Page 16: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

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.5. Huấn luyện mạng neural.

1.5.1. Phương pháp học.

Mạng neural nhân tạo 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.5.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.

1.5.1.2. Học không giám sát.

Trong học không có giám sát, ta được cho trước một số dữ liệu x và hàm

chi phí cần được cực tiểu hóa có thể là một hàm bất kỳ của dữ liệu x và đầu ra

của mạng, f – hàm chi phí được quyết định bởi phát biểu của bài toán. Phần lớn

các ứng dụng nằm trong vùng của các bài toán ước lượng như mô hình hóa

thống kê, nén, lọc, phân cụm.

Bùi Quang Chiến Trang 16

Page 17: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

1.5.1.3. Học tăng cường.

Dữ liệu x thường không được tạo trước mà được tạo ra trong quá trình một

agent tương tác với môi trường. Tại mỗi thời điểm t, agent thực hiện hành động

yt và môi trường tạo một quan sát xt với một chi phí tức thời Ct, theo một quy

trình động nào đó (thường là không được biết). Mục tiêu là một sách lược lựa

chọn hành động để cực tiểu hóa một chi phí dài hạn nào đó, nghĩa là chi phí tích

lũy mong đợi. Quy trình hoạt động của môi trường và chi phí dài hạn cho mỗi

sách lược thường không được biết, nhưng có thể ước lượng được. Mạng neural

nhân tạo thường được dùng trong học tăng cường như một phần của thuật toán

toàn cục. Các bài toán thường được giải quyết bằng học tăng cường là các bài

toán điều khiển, trò chơi và các nhiệm vụ quyết định tuần tự (sequential decision

making) khác.

1.5.2. Thuật toán học.

1.5.2.1. Thuật toán học của mạng neural một lớp.

Xét trường hợp perceptron sử dụng hàm kích hoạt ngưỡng:

(1.1)

Nếu ta cho w0=-t và v0=1, ta có thể viết lại

(1.2)

Thuật toán:

Thuật toán học của perceptron hay mạng neural một lớp gồm 3 bước

chính:

Bước 1: Khởi tạo:

Khởi tạo trọng số w (0 hoặc ngẫu nhiên).

Chọn tốc độ học µ.

Bước 2 : Học

Với mỗi mẫu (x,t) trong tập học.

Bùi Quang Chiến Trang 17

Page 18: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Tính y=f(x, w).

Nếu y!=t thay đổi vectơ trọng số w với:

w(mới (cũ)+ µ(t-y)x;

Bước 3: lặp 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.5.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

gồm hai quá trình: Quá trình truyền tuyến tính và quá trình truyền ngược:

Quá trình truyền tuyến tính: Dữ liệu từ lớp nhập qua lớp ẩn và đến lớp xuất

để:

Thay đổi giá trị của trọng số liên kết W của các neural trong

mạng biểu diễn được dữ liệu học.

Tìm ra sự khác nhau giữa giá trị thật hàm mẫu mà mạng tính

được và kết quả dự đoán của mạng gọi là lỗi (học có giám sát).

Quá trình truyền ngược: Giá trị lỗi sẽ được truyền ngược lại sao cho quá

trình huyến luyện(học) sẽ tìm ra trọng số Wi để lỗi nhỏ nhất.

Thuật toán:

Xét mạng neural 3 lớp : input, hiden và output.

Hàm kích hoạt các neural : logistic (sigmoid).

g(x)= (1.3)

Bùi Quang Chiến Trang 18

Page 19: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Bước 1: Khởi tạo trọng số w ngẫu nhiên nhỏ.

Bước 2 : Chọn lớp đầu vào x và đính nó vào lớp đầu vào .

Bước 3 : Truyền sự kích hoạt qua trọng số đến khi kich hoạt các neural đầu

ra.

Bước 4: Tính đạo hàm riêng “δE” theo trọng số cho lớp xuất. sử dụng

GRADIENT của hàm lỗi .

Bước 5: Tính đạo hàm riêng “δE” theo trọng số cho lớp ẩn. sử dụng

GRADIENT của hàm lỗi.

Bước 6: Cập nhật tất cả trọng số theo Wi=W(i-1)-µ(δE/ δ Wi)

Bước 7: quay lai “Bước 2” cho đến “Bước 6” cho tất cả các mẫu.

Trong đó: GRADIENT hàm lỗi:

Bùi Quang Chiến Trang 19

Page 20: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Đối với các neural lớp đầu ra:

Hàm lỗi:

2)1(2

1)( zzE

(1.4)

( t là giá trị thật của mẫu huấn luyện)

Đạo hàm riêng của hàm lỗi theo trọng số b:

(1.5)

Ta có:

Đặt:

Ta được:

(1.6)

Bùi Quang Chiến Trang 20

w2

wk

w1

z=g(v)

v=b0 + g(x)=

y1

y2

b0yk

Page 21: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Đối với các neural lớp ẩn:

Đạo hàm riêng của hàm lỗi theo trọng số:

(1.7)

Ta có:

Đặt:

Ta được:

(1.8)

Bùi Quang Chiến Trang 21

a2

ad

a1

y=g(u)

v=a0 +

x1

x2

a0

f

Lớp đầu ra

Page 22: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Sau khi tính được đạo hàm riêng của hàm lỗi theo từng trọng số, trọng số

sẽ được điều chỉnh bằng cách trừ bớt đi 1 lượng bằng tích của đạo hàm riêng và

tốc độ học:

(1.9)

Những hạn chế của phương pháp lan truyền ngược:

Ngoài những thành công của giải thuật học lan truyền ngược, vẫn còn có

một số khía cạnh làm cho giải thuật trở nên chưa được bảo đảm là mọi lúc đều

tốt. Khó khăn chủ yếu là ở quá trình huấn luyện lâu. Có thể do nhịp độ học và

động lực không tối ưu. Sự sai sót trong việc huấn luyện nói chung xuất hiện từ

hai nguồn: mạng liệt và những cực tiểu địa phương.

Mạng liệt: xảy ra khi những trọng số được điều chỉnh tới những giá trị rất

lớn. Tổng đầu vào của một đơn vị ẩn hoặc đơn vị đầu ra có thể bởi vậy mà đạt

giá trị rất cao (hoặc dương hoặc âm), và qua hàm kích hoạt sigmoid, đơn vị sẽ

có một giá trị kích hoạt rất gần 0 hoặc rất gần 1. Giá trị hiệu chỉnh trọng số gần

0, và quá trình huấn luyện có thể đi đến một trạng thái dừng ảo.

Cực tiểu địa phương: bề mặt sai số của mạng rất phức tạp đầy những ngọn

đồi và những thung lũng. Bởi vì sự hạ độ dốc, mạng có thể bị mắc bẫy tại một

cực tiểu địa phương khi có nhiều cực tiểu thấp hơn gần bên cạnh. Những

phương pháp thống kê có thể giúp để tránh cái bẫy này, nhưng chúng làm chậm.

Một phương án khác là tăng thêm số lượng đơn vị ẩn. Như vậy sẽ làm việc trong

không gian sai số nhiều chiều, nên cơ hội gặp bẫy nhỏ hơn. Tuy nhiên việc tăng

cũng có giới hạn trên, khi vượt qua giới hạn này, cơ hội mắc bẫy lại tăng lên.

1.6. Thu thập dữ liệu cho mạng neural.

Một khi ta quyết định giải quyết một vấn đề sử dụng những mạng neural ta

cần phải thu thập dữ liệu cho mục tiêu huấn luyện. Tập hợp dữ liệu huấn luyện

bao gồm một số trường hợp, mỗi trường hợp chứa những giá trị của đầu vào vả

đầu ra khác nhau. Những việc đầu tiên cần làm là: những biến nào được sử

dụng, bao nhiêu trường hợp cần thu thập.

Sự lựa chọn do trực giác quyết định. Công việc chuyên môn của ta trong

lĩnh vực cần giải quyết sẽ cho ta những ý tưởng về các biến đầu vào phù hợp.

Bùi Quang Chiến Trang 22

Page 23: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Trong những mạng neural ta có thể chọn và loại bỏ nhiều biến và mạng neural

cũng có thể xác định bằng quá trình thực nghiệm. Trong một bước ta nên tính

đến bất kỳ biến nào mà ta nghĩ có ảnh hưởng đến quá trình thiết kế.

Những mạng neural xử lý dữ liệu số trong một tầm giới hạn rõ ràng. Điều

này đưa ra một vấn đề, nếu dữ liệu nằm trọng một vùng đặc biệt như dữ liệu

chưa biết hay không phải dữ liệu số. Thì phải có những phương pháp xử lý thích

hợp, chẳng hạn. Dữ liệu số được chia nhỏ thành những khoảng thích hợp cho

mạng và những giá trị thiếu có thể thay thế bằng giá trị trung bình hay giá trị

thống kê của biến đó thông qua những biến khác đã được huấn luyện.

Xử lý dữ liệu không phải số thì khó hơn. Loại dữ liệu không phải là số

thông thường nhất là những biến có giá trị định danh như giới tính(nam, nữ).

Biến định danh có thể biểu diễn bằng số học và mạng neural có chức năng hỗi

trợ điều này. Tuy nhiên, mạng neural làm việc tốt với những trường hợp biến

định danh là một tập nhiều giá trị.

Số trường hợp mẫu dùng để huấn luyện mạng rất khó xác định. Đã có một

vài hướng dẫn về mối liên hệ giữa số trường hợp mẫu với kích thước mạng(cách

đơn giản nhất là số trường hợp mẫu gấp 10 lần số kết nối trong mạng). Thực ra

số trường hợp mẫu cũng có liên quan đến độ phức tạp của hàm mà mạng phải

học. Khi số biến tăng lên, số trường hợp mẫu cần huấn luyện cũng tăng phi

tuyến, vì thế với số các biến nhỏ(50 hoặc nhỏ hơn) thì lại cần một số lớn các

trường hợp mẫu.

Trong hầu hết các vấn đề trong thực tế, số trường hợp mẫu là khoảng hàng

trăm hay hàng nghìn mẫu. Đối với những vấn đề rất phức tạp thì cần nhiều hơn,

nhưng trường hợp này rất ít. Nếu dữ liệu huấn luyện ít hơn, rõ ràng không đủ

thông tin để huấn luyện mạng, và cách tốt nhất là dùng mạng tuyến tính. Nhiều

vấn đề trong thực tế có dữ liệu không đáng tin cậy, một vài dữ liệu bị phá hỏng

do liệu do nhiễu, hoặc các giá trị không phối hợp đựợc với nhau. Mạng neural

có khả năng đặc biệt xử lý dữ liệu bị mất(sử dụng giá trị trung bình hay các

những giá trị thống kê khác). Mạng neural cũng chịu được nhiễu, nhưng cũng

phải có giới hạn. Nếu thỉnh thoảng có giá trị nằm xa ra khỏi vùng giá trị bình

thường thì mạng huấn luyện phải có ngưỡng. Cách tốt nhất đối với trường hợp

này là nhận ra và loại bỏ những giá trị nằm xa đó ( có thể hủy trường hợp này

Bùi Quang Chiến Trang 23

Page 24: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

hoặc xem giá trị nằm xa này là giá trị bị mất ). Nếu giá trị này khó nhận ra,

mạng neural có chức năng huấn luyện chịu được giá trị nằm khỏi vùng này

nhưng huấn luyện này thường kém hiệu quả hơn là huấn luyện chuẩn.

Tóm lại cách thu thập dữ liệu có thể nói gọn lại như sau:

- Chọn những giá trị huấn luyện có tác dụng.

- Dữ liệu số và biến có giá trị định danh có thể xử lý trực tiếp bằng mạng

neural. Chuyển những loại biến khác sang một trong các dạng này.

- Cần hàng trăm hoặc hàng ngàn trường hợp mẫu huấn luyện; càng nhiều

biến thì càng nhiều mẫu huấn luyện. Mạng neural có khả năng nhận ra

những biến hữu dụng để huấn luyện.

1.7. Biểu diễn chi thức cho mạng neural.

Chúng ta có thể đưa ra định nghĩa về tri thức như sau:

Tri thức chính là thông tin được lưu trữ hay các mô hình được con người và

máy móc sử dụng để biểu diễn thế giới thực, phán đoán về thế giới và có những

đáp ứng phù hợp với thế giới bên ngoài.

Các đặc tính cơ bản của diễn tri thức là:

Thông tin gì thực sự được biểu diễn.

Làm thế nào thông tin được mã hóa một cách vật lý cho việc sử dụng

sau này. Trong các ứng dụng thực tế của các máy tính thông minh,

có thể nói rằng một giải pháp tốt phụ thuộc vào một biến tri thức tốt.

Điều đó cũng đúng với các mạng neural, một lớp đặc biệt của các

máy thông minh. Tuy nhiên, các dạng biểu diễn có thể từ các đầu

vào thành các tham số bên trong của mạng là rất đa dạng, và có

khuynh hướng là cho việc tìm ra một giải pháp thích hợp nhằm biểu

diễn tri thức bằng phương tiện mạng neural trở nên một sự thách

thức về thiết kế.

Ở đây cần nhấn mạnh rằng mạng neural lưu trữ thông tin về thế giới thực

bằng chính bản thân cấu trúc của nó kể cả về mặt hình dạng cũng như giá trị

tham số bên trong(có thể thay đổi được để nắm bắt môi ). Một nhiệm vụ chính

Bùi Quang Chiến Trang 24

Page 25: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

của mạng neural là học một mô hình của thế giới thực để đạt được một số mục

đích xác định cần quan tâm. Tri thức của thế giới bao gồm hai loại thông tin sau:

Trạng thái thế giới đã biết, được biểu diễn bởi các sự kiện về những

cái đã biết; dạng tri thức này được xem như là các thông tin ban đầu.

Các quan sát(đo đạc) về thế giới, thu nhập được thông qua các bộ

cảm biến được thiết kế để thăm dò môi trường mà trong đó mạng

hoạt động. Nói chung, các quan sát này luôn bị nhiễu và sai lệch do

nhiều nguyên nhân khác nhau. Các quan sát thu nhận được như vậy

cung cấp một quỹ thông tin, mà từ đó lấy ra các ví dụ được dùng để

huấn luyện mạng neural.

Do cấu trúc một mạng neural là vô cùng đa dạng, nên để có thể biểu diễn

tri thức một cách có hiệu quả, người ta đưa ra bốn quy tắc chung sau:

Quy tắc 1. Các đầu vào tương tự từ các lớp tương tự cần phải luôn tạo ra

những biểu diễn tương tự trong mạng, và như vậy nên được phân lớp thuộc về

cùng một loại. Trong tiêu chuẩn này, người ta thường sử dụng một số thước đo

để xác định độ “tương tự” giữa các đầu vào (ví dụ khoảng cách euclide).

Quy tắc 2. Các phần tử mà có thể phân ra thành các lớp riêng biệt thì nên

có những biểu diễn khác nhau đáng kể trong mạng.

Quy tắc 3. Nếu một đặc trưng nào đó đặc biệt quan trọng thì nên có một số

lượng lớn neural liên quan đến việc biểu diễn đặc trưng này trong mạng. Số

lượng lớn các neural bảo đảm mức độ chính xác cao trong việc thực hiện các

quyết định và nâng cao khả năng chịu đựng các neuron hỏng.

Quy tắc 4. Thông tin ban đầu và các tính chất bất biến nên được đưa vào

trong thiết kế ban đầu của một mạng neural, và như vậy sẽ giảm bớt gánh nặng

cho quá trình học. Quy tắc 4 đặc biệt quan trọng vì nếu chúng ta áp dụng nó một

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 đủ.

Bùi Quang Chiến Trang 25

Page 26: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Như vậy mạng neural chuyên biệt cần một tập hợp dữ liệu nhỏ hơn cho việc tích

luỹ; nó học sẽ nhanh hơn, và thường có khả năng tổng quát hoá tốt hơn.

3. Tốc độ chuyển thông tin qua một mạng chuyên biệt là nhanh hơn.

4. Giá của việc xây dựng một mạng chuyên biệt sẽ nhỏ hơn do kích thước

nhỏ của nó so với mạng kết nối đầy đủ.

1.8. Một số vấn đề của mạng neural.

Khi xây dựng một ứng dụng mạng neural chúng ta cần quan tâm một số

vấn đề sau:

Vấn đề về kiến trúc mạng neural : neural nào nối với neural nào? Đây

chính là sự lựa chọn mô hình của mạng neural. Nó sẽ phụ thuộc vào sự trình

bày dữ liệu và ứng dụng. Những mô hình phức tạp quá dẫn đến những vấn đề

lựa chọn quá trình huấn luyện hay là việc lựa chọn giải thuật học.

Lựa chọn giải thuật học: ở đây có nhiều sự cân bằng giữa các giải thuật

học. Gần như bất kỳ giải thuật nào sẽ làm tốt với độ chính xác của các siêu tham

số cho việc huấn luyện trên tập dữ liệu cố định cho trứớc. Tuy nhiên sự lựa chọn

và điều hướng của giải thuật cho việc huấn luyện trên các tập dữ liệu này cần

thực hiện nhiều thí nghiệm, đó là điều rất quan trọng. Trên một mô hình nếu lựa

chọn giải thuật và hàm đánh giá phù hợp thì mạng neural có thể cho kết quả rất

tốt.

Trọng số của các cung nối và ngưỡng thay đổi thường xuyên. Đã có nhiều

nghiên cứu về vấn đề này và cũng đã có một số kết quả :

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.

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.

Một số hướng dẫn khi sử dụng mạng neural.

Bùi Quang Chiến Trang 26

Page 27: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Xây dựng mạng khởi tạo(dùng một lớp ẩn có số neural= ½ tổng 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 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ý thông tin liên quan đến con người (quản lý

nhân sự ở các công sở, doanh nghiệp; quản lý học sinh, sinh viên trong các

trường trung học, đại học và cao đẳng;… ); các ngành khoa học hình sự, tội

phạm; khoa học tướng số, tử vi,…

Kết hợp chặt chẽ với logic mờ, mạng neural nhân tạo đã tạo nên cuộc cách

mạng thực sự trong việc thông minh hóa và vạn năng hóa các bộ điều khiển kỹ

thuật cao cho cả hiện nay và trong tương lai. Ví dụ như ứng dụng tự động điều

khiển hệ thống lái tàu, hệ thống dự báo sự cố,…

Mạng neural dựa trên việc mô phỏng cấp thấp hệ thống neural sinh học.

Trong tương lai với sự phát triển mô phỏng neural sinh học, chúng ta có thể có

loại máy tính thông minh thật sự.

Bùi Quang Chiến Trang 27

Page 28: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

CHƯƠNG 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 ứng dụng đang được rất nhiều người quan tâm

nhưng nó đầy khó khăn và thử thách.

Điều rất khó của khả năng nhận dạng phù hợp kí tự là các kiểu ngôn ngữ

rất phức tạp không theo quy luật do biến đổi trong font, kiểu và kích cỡ.

Với một số phương thức lập trình truyền thống đã ánh xạ ảnh kí tự vào

trong ma trận, phân tích ảnh hoặc vector dữ liệu, kiểm tra đưa ra quyết định phù

hợp của kết quả. Việc thực thi này trong lập trình truyền thống cần viết mã

nguồn vô tận cho mỗi kiểu đối với sự không nhất quán hay sự trênh lệch với các

giá trị đầu ra khác nhau. Lý thuyết này không hiện thực.

Sử dụng mạng neural nhân tạo với những mạng làm việc đúng quy tắc từ

việc cập nhật lại các trọng số liên kết giữa các nút mạng. Với ưu điểm là mạng

có thể nhận dữ liệu từ những phân tích sinh động của các ảnh đầu vào và việc

huấn luyện cho các kí tự đầu ra cho mẫu nói cách khác 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ư 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 phân

ngưỡng, xoay ảnh, lọc nhiễu... Đề tài này chỉ đi sâu nghiên cứu quá 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.

Bùi Quang Chiến Trang 28

Page 29: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Chuyển thành ma trận tuyến tính và đưa vào mạng neural.

Đưa và 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, xử lý dữ 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 :

Hình 2.1: Sơ đồ mạng neural thiết kế

Bùi Quang Chiến Trang 29

500 neural Lớp ẩn

150 neural Lớp đầu vào

Điểm ảnh

Điểm ảnh

Điểm ảnh

Điểm ảnh

0 hoặc 1

0 hoặc 1

0 hoặc 1

0 hoặc 1

16 neural Lớp đầu

ra

Page 30: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Lớp đầu vào gồm 150 neural nhận giá trị nhị phân(0,1) của 150 thành

phần của véctơ tương ứng. dữ liệu được véc tơ hóa từ ma trận điểm ảnh kí tự

bằng phương pháp chia lưới.

Lớp ẩn gồm 500 neural, số neural này được quyết định từ những kết quả

tối ưu và giá trị lỗi cơ sở trong quá trình huấn luyện.

Lớp đầu ra gồm 16 neural đưa ra giá trị nhị phân(0,1) tương ứng với 16

bít của mã Unicode.

Với những lớp nói ở trên ta đã xây dụng được mạng neural như hình 2.1.

2.3.2. Xử lý dữ liệu (phân tích ảnh).

Quá trình phân tích ảnh để tìm ra đặc tính của kí tự bởi việc kiểm tra điểm

ảnh nó là giá trị đầu vào cho cả quá trình huấn luyện và quá trình kiểm tra. Quá

trình phân tích này dựa trên việc nhận dạng từ ảnh đầu vào bằng phương pháp

tính giá trị màu. Giới hạn của giá trị là điểm đen RGB(0,0,0) hoặc điểm trẳng

RGB(255,255,255). Những ảnh đầu vào được định dạng bitmap(*.bmp).

2.3.2.1. Tách dòng kí tự.

Sự liệt kê các dòng của kí tự trong một ảnh kí tự hay một trang văn bản là

một trong yếu tố quan trọng trong quá trình tìm giới hạn của kí tự, khi tìm giới

hạn của kí tự tiếp theo chúng ta không cần quét trên toàn bộ ảnh.

Thuật toán:

1. Bắt đầu từ điểm ảnh x, y đầu tiên (0,0), và đặt là dòng 0.

2. Quét đến hết chiều rộng của ảnh trên một giá trị y của ảnh.

3. Nếu là phát hiện điểm đen thì lưu giá trị y là đỉnh của hàng đầu tiên:

Nếu không xét tiếp điểm tiếp theo.

Nếu không thấy điểm đen nào thì tăng y và khởi động lại x để quét

dòng ngang tiếp theo.

Bắt đầu từ đỉnh cuả hàng tìm thấy (0,giới hạn trên).

4. Quét đến hết chiều rộng của ảnh trên một giá trị y của ảnh.

Bùi Quang Chiến Trang 30

Page 31: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Nếu không phát hiện điểm đen nào thì đánh dấu giá trị y-1 là giới

hạn dưới của hàng. Và tăng số dòng, xét dòng tiếp theo.

Nếu vẫn phát hiện thấy điểm đen tăng y và khởi động lại x xét hàng

ngang tiếp theo.

5. Bắt đầu từ giới hạn dưới của hàng ngang tìm thấy sau cùng lặp lại từ bước 1

đến bước 4 tìm dòng kế tiếp.

6. Nếu y bằng chiều cao của ảnh thì dừng.

Hình 2.2: Quá trình tách dòng kí tự

2.3.2.2. Tách kí tự.

Thuật toán

1. Bắt đầu từ kí tự đầu tiên của hàng trên cùng với giá trị x đầu tiên.

2. Quét hết chiều rộng với một giá trị y.

Nếu phát hiện điểm đen đánh dấu y như là đỉnh của hàng đầu

tiên.

Nếu không xét điểm tiếp theo.

3. Bắt đầu từ giới hạn trên của kí tự phát hiện được và giá trị x đầu

tiên.(0,giới hạn trên kí tự) .

4. Quét đến giới hạn dưới của dòng, giữ nguyên x.

Bùi Quang Chiến Trang 31

Ảnh đầu vào

Quá trình tách dòng

Giới hạn trên Gới hạn dưới

Page 32: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Nếu phát hiện điểm đen đánh dấu x là phía trái của kí tự.

Nếu không xét điểm tiếp theo.

Nếu không thấy điểm đen nào tăng x và khởi động lại y để

xét đường thẳng đứng tiếp theo.

5. Bắt đầu từ phía trái của kí tự tìm thấy và đỉnh của dòng hiện thời,

(giới hạn trái kí tự, giới hạn trên dòng).

6. Quét hết chiều rộng của ảnh. Trên cùng một giá trị x.

Nếu không có điểm đen nào thì đánh dấu x-1 là bên phải của

kí tự.

Nếu phát hiện điểm đen tăng x và khởi động lại y để xét

đường thẳng đứng tiếp theo.

Hình 2.3: Quá trình tách kí tự

2.3.2.3. Tìm giới hạn kí tự.

Trong một số trường hợp quá trình tách kí tự có thể không phải là giới hạn

thực tế của kí tự. Ở đây xuất hiện vấn đề không sắp xếp kí tự theo quy luật như

sắp xếp dòng kí tự. Tức là đỉnh của một hàng không tất yếu là đỉnh của tất cả và

tương tự đáy của của một hàng cũng không là đáy của tất cả các kí tự trên một

dòng. Từ đây cần có một thủ tục tìm giới hạn kí tự.

Thuật toán

Bùi Quang Chiến Trang 32

x

y

Quá trình tách kí tự

(0,0)

Gới hạn phải kí tự

Gới hạn trái kí tự

f

Page 33: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

1. Bắt đầu từ đỉnh của dòng hiện thời và bên trái của kí tự.

2. Quét đến bên phải của kí tự. cùng một giá trị y.

Nếu phát hiện điểm đen thì đánh dấu y và thay đổi lại giới

hạn trên.

Nếu không xét điểm tiếp theo.

Nếu không tìm thấy điểm đen nào tăng y và khởi động lại x,

xét đường thẳng ngang tiếp theo.

3. Bắt đầu từ giới hạn dưới của dòng và bên trái của kí tự.

4. Quét tới bên phải của kí tự trên một giá trị y.

Nếu phát hiện điểm đen, đánh dấu y là giới hạn dưới của kí

tự.

Nếu không phát hiện điểm đen giảm y và khởi động lại x xét

đường thẳng ngang tiếp theo.

Hình 2.4: Quá trình tìm giới hạn kí tự

Bùi Quang Chiến Trang 33

Quá trình tìm giới hạn

Gới hạn trên ký tự

Gới hạn dưới ký tự

Page 34: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

2.3.2.4. Ánh xạ vào ma trận

Bước tiếp theo là ta phải ánh xạ ảnh của kí tự vào một ma trận nhị phân hai

chiều tương ứng. Một việc rất quan trọng ở đây là việc quyết định cỡ của ma

trận. Nếu các điểm ảnh của kí tự được ánh xạ vào ma trận. tuy nhiên việc này

dẫn đến việc xử lý các ma trận rất lớn. Để cho cân bằng hợp lý ta sẽ chuẩn hóa

cỡ của ma trận bằng 10x15 với 150 phần tử.

Thuật toán:

1. Đối với chiều rộng:

Khởi tạo với 10 phần tử tương ứng.

Ánh xạ điểm đầu (0,y) và điểm cuối (C_rong,y) của ảnh kí tự

tương ứng với giá trị đầu (0,y) và giá trị cuối (10,y) của ma trận.

Chia nhỏ chiều rộng thành 10 giá trị tương ứng.

2. Đối với chiều cao:

Khởi tạo với 15 phần tử tương ứng.

Ánh xạ điểm đầu (x,0) và điểm cuối (x,C_cao) của ảnh kí tự

tương ứng với giá trị đầu (x,0) và giá trị cuối (x,15) của ma trận.

Chia nhỏ chiều cao thành 15 giá trị tương ứng.

Hình 2.5: Quá trình chia lưới kí tự

Bùi Quang Chiến Trang 34

0

15

0 10

(0,0)

(10,15)

Page 35: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng 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:

1. Bắt đầu từ phần tử (0,0).

2. Tăng x giữ nguyên giá trị y cho tới khi bằng chiều rộng của ma trận.

Ánh xạ mỗi phần tử tới một phần tử của mảng tuyến tính.

Nếu là điểm đen thì nhận giá trị bằng 1.

Ngược lạI nhận giá trị bằng 0.

Nếu x = chiều rộng thì khởi động lại x và tăng y.

Lặp lại cho tới khi (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ị.

2.3.3. Huấn luyện mạng neural.

Một mạng neural đã được xây dựng sẽ phải được huấn luyện trên một

không gian đầu vào đã được chuẩn bị trước. Khi hoạt động mạng neural sẽ đọc

giá trị đã được huấn luyện.

Một vài vấn đề cẩn thiết cho việc huấn luyện mạng:

Tại sao lại có sự khác nhau của không gian đầu vào? Môi một đầu vào khác

nhau giá trị ngẫu nhiên và trong một phạm vi giới hạn không có giá trị luồng nào

dự đoán được giữa các giá trị của nó.

Bùi Quang Chiến Trang 35

Page 36: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Tại sao có sự phức tạp của các tham số cho việc huấn luyện mạng? Các

tham số phức tạp là các kí tự thường thường bởi các đặc trưng chồng lấp và kích

cỡ dữ liệu cao.

Cái gì cần được sử dụng cho những giá trị của :

Tốc độ học.

Hệ số góc Sigmoid.

Trọng số kết nối cơ sở.

Có bao nhiêu lần lặp cần thiết cho việc huấn luyện mạng của một tập đầu

vào?

Giá trị ngưỡng của lỗi là bao nhiêu được sử dụng để so sánh tương phản

trong việc xác định quá trình dừng của việc lặp lại nếu có nhu cầu xuất hiện.

Sự phức của các dữ liệu tham số riêng lẻ cũng là vấn đề khác trong quá

trình nhận dạng. Mỗi một kí tự lại có một số lớn đặc tính phân biệt mà cần phải

tính toán để nhận dạng nó một cách chính xác. Sự loại bỏ một số đặc tính có thể

có kết quả của trong sự tương đồng của các mẫu. Sự tối thiểu của dữ liệu yêu

cầu cho nó là một trong những phần phức tạp nhất của không gian đầu vào trong

việc nhận dạng.

Thuật toán:

1. Xây dựng mạng tương ứng với mô hình tham số.

2. 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 và đầu ra mong muốn).

3. Phân tích ảnh và ánh xạ tất cả kí tự tìm thấy vào các mảng một chiều.

4. Đọc giá trị đầu ra mong muốn từ file và chuyển đổi từng kí tự tới giá

trị nhị phân Unicode và lưu trữ riêng biệt.

5. Với mỗi kí tự:

Tính toán giá trị đầu ra của mạng Feed ForWard.

So sánh với giá trị đầu ra mong muốn tương ứng với từng kí tự

và tính toán lỗi.

Bùi Quang Chiến Trang 36

Page 37: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

truyền ngược giá trị từ đầu và với mỗi liên kết điều chỉnh

trọng số liên kết.

6. Chuyển sang kí tự tiếp theo và lặp lại “6” cho tới khi hết các kí tự.

7. Tính toán trung bình lỗi cho tất cả các kí tự.

8. Lặp lại từ bước 6 đến 8 cho tới khi đạt số đưa vào của số lần lặp tối

đa.

với phạm vi lỗi đạt đến ngưỡng. Nếu như vậy thì bỏ lặp lại.

ngược lại tiếp tục lặp lại.

Sơ đồ khối quá trình huấn luyện được chỉ ra trong hình 2.7.

Bùi Quang Chiến Trang 37

Page 38: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Hình 2.7: Sơ đồ khối quá trình huấn luyện mạng neural

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ùi Quang Chiến Trang 38

Đ

S

Đ

S

BẮT ĐẦU

Tính toán đầu ra

Dòng đầu tiên

Ánh xạ kí tự tới vector

Phân tích dòng ảnh

Chuyển từ Unicode sang kí tự

Hết kí tự trên dòng ?

Hết Các dòng ?

Dòng tiếp theo

Kí tự tiếp theo

KẾT THÚC

Đ Đ

Đ

S

S

S

Cập nhật trọng số

BẮT ĐẦU

Xây dựng mạng

Khởi tạo trọng số

Nạp file huấn luyện

Phân tích ảnh

Phát hiện kí tự tiếp theo

Các kí tự sẵn sàng ?

Các kí tự sẵn sàng ?

Đọc đầu ra mong muốn

Tính đầu ra của mạng

Tính lỗi

Các kí tự sẵn sàng ?

Lỗi < ngưỡng

?

Số lần lặp

=max epochs

?

Tính trung bình lỗi

Vector đầu vào tiếp

theo

KẾT THÚC

Đ

S

Page 39: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Hình 2.8: Sơ đồ khối quá trình nhận dạng kí tự:

Bùi Quang Chiến Trang 39

Page 40: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Thuật toán:

1. Nạp file ảnh.

2. Phân tích ảnh cho các dòng kí tự.

3. Với mỗi dòng tách các kí tự liên tiếp.

Phân tích và xử lý ảnh kí tự cho việc ánh xạ vào một vectơ đầu

vào.

Đưa giá trị vecto đầu vào cho mạng neural và tính toán giá trị

đầu ra.

Chuyển đổi mã Unicode đầu ra từ nhị phân tới kí tự tương ứng

và trả ra dưới dạng textbox.

Bùi Quang Chiến Trang 40

Page 41: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

CHƯƠNG 3:CÀI ĐẶT CHƯƠNG TRÌNH THỬ NGHIỆM

3.1. Môi trường thử nghiệm.

Phần cứng : Một máy tính pentum IV.

Card đồ họa 256 MB.

Ram 512 MB .

Phần mềm : Ngôn ngữ sử dụng: C# trong bộ visual studio 2005.

Tập dữ liệu là những ảnh bitmap với số ký tự đầu vào từ 120 đến 160 ký tự

của hai loại font: Arial và Tahoma với các kích thước: 8,10,12,14,18,20.

3.2. Giao diện chương trình.

Hình 3.1: Giao diện chương trình thực nghiệm

3.3. Bảng mã ASCII sử dụng trong chương trình

Trong đề tài này chúng ta sử dụng mã Unicode gồm 256 mã được mã hóa

bằng 16 bit. Đây cũng là lý do mà số neural đầu ra là 16 neural, tương ứng với

16 bit của mã Unicode.

Bùi Quang Chiến Trang 41

Page 42: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Dưới đây bảng 3.1 là một số mã ASCII sử dụng trong quá trình thực

nghiệm:

Bảng 3.1 Một số mã sử dụng trong quá trình thực nghiệm

Bùi Quang Chiến Trang 42

Page 43: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

tự

thập

phân

Hexa

A 65 41

B 66 42

C 67 43

D 68 44

E 69 45

F 70 46

G 71 47

H 72 48

I 73 49

J 74 4A

K 75 4B

L 76 4C

M 77 4D

N 78 4E

O 79 4F

P 80 50

Q 81 51

R 82 52

S 83 53

T 84 54

U 85 55

tự

thập

phân

Hexa

V 86 56

W 87 57

X 88 58

Y 89 59

Z 90 5A

a 97 61

b 98 62

c 99 63

d 100 64

e 101 65

f 102 66

g 103 67

h 104 68

i 105 69

j 106 6A

k 107 6B

l 108 6C

m 109 6D

n 110 6E

o 111 6F

p 112 70

tự

thập

phân

Hexa

q 113 71

r 114 72

s 115 73

t 116 74

u 117 75

v 118 76

w 119 77

x 120 78

y 121 79

z 122 7A

0 48 30

1 49 31

2 50 32

3 51 33

4 52 34

5 53 35

6 54 36

7 55 37

8 56 38

9 57 39

Bùi Quang Chiến Trang 0

Page 44: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

3.4. Thực nghiệm

3.4.1. Thực nghiệm quá trình tính giá trị một số tham số đầu vào:

3.4.1.1. Thực nghiệm tìn số lần lặp lại.

Quá trình tăng số lần lặp có sinh ra quan hệ tỷ lệ rõ ràng của mạng. Tuy

nhiên trong trường hợp cụ thể việc tăng số lần lặp có một số hiệu ứng bất lợi của

nhiều số đưa vào dẫn đến nhận dạng sai. Từng phần riêng có thể thuộc tính của

tham số tốc độ học. Nó là giới hạn tối ưu và mở rộng việc cập nhật kết quả trọng

số trong trạng thái vòng tối ưu. Với việc tăng sự lặp đi lặp lại mạng sẽ thử lại tới

trạng thái mong muốn và tiếp tục quay lại. Vì vậy cần có số lần lặp tối ưu với lỗi

chấp nhận được.

Các giá trị khác số kí tự=124, tốc độ học=150, Sigmoid slope=0.014

Bảng 3.2 : Thực nghiệm tìm số lần lặp

Kiểu font

300 600 900

Số kí

tự lỗi.% lỗi

Số kí tự

lỗi.% lỗi

Số kí

tự lỗi.% lỗi

Arial 4 4.44 3 3.33 1 1.11

Tahoma 1 1.11 0 0 0 0

Time NewRoman 0 0 0 0 1 1.11

Giá trị quyết định ở trên cho số lần lặp là 300 bởi vì đối với mạng neural có

một đặc trưng là chấp nhận sai xót và lại khi sử dụng số lần lặp quá lớn với số

lượng neural lớn và tập huấn luyện lớn thì ta cần rất nhiều thời gian cho việc

huấn luyện dẫn đến tốn kém chi phí huấn luyện.

3.4.1.2. Thực nghiệm tìm đầu vào (số kí tự đưa vào).

Kích thước của trạng thái đầu vào cũng ảnh hưởng tới quá trình thực thi.

Nó là tự nhiên, đó là nhiều giá trị của kí tự đầu vào thiết lập mạng là phụ thuộc

vào quá trình huấn luyện sẽ dễ bị mắc lỗi. Thông thường sự phức tạp và tập hợp

Bùi Quang Chiến Trang 43

Page 45: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

đầu vào lớn cần mô hình mạng lớn với nhiều số của lần lặp lại. Cho tập hợp 120

đến 150 kí tự ta cần có mô hình mạng với một lớp ẩn có 500 neural.

Các giá trị khác số lần lặp=300, tốc độ học=150, Sigmoid slope=0.014.

Bảng 3.3 : Thực nghiệm tìm số kí tự

Kiểu font

50 90 124

Số kí tự

lỗi.% lỗi

Số kí tự

lỗi.% lỗi

Số kí tự

lỗi.% lỗi

Arial 0 0 4 0.044 6 0.048

Tahoma 0 0 2 0.022 4 0.032

Time

NewRoman0 0 2 0.022 4 0.032

Giá trị quyết định ở trên cho số kí tự đưa vào là 120 đến 160 vì với số

lượng 50 hay 90 ký tự thì không thể hiện hết những ký tự đang được sử dụng

hiện nay vấn đề lâu dài là tập 256 ký tự của bảng mã ASCII.

3.4.1.3. Thực nghiệm tìm tham số tốc độ học.

Sự thay đổi của tham số tốc độ học cũng ảnh hưởng tới sự thi hành của

mạng khi cho số lần lặp định sẵn. Giảm giá trị của tham số này, mạng sẽ cập

nhật lại trọng số. Nó làm giảm khả năng và học khó hơn khi nó cập nhật liên kết

chậm hơn, sẽ tăng số lần lặp để đạt giá trị tối ưu. Vì vậy cần một giá trị tối ưu

cho sự thi hành của mạng.

Các giá trị khác số kí tự=124, số lần lặp=300, Sigmoid slope=0.014.

Theo kết quả trong bảng 3.4, giá trị tối ưu quyết định ở trên cho tham số

tốc độ học là 150 vì nếu sử dụng các giá trị 50 hay 100 thì mạng học rất lâu và

độ chính xác không cao đốI với các giá trị khác cho kết quả tương tự.

Bùi Quang Chiến Trang 44

Page 46: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Bảng 3.4: Thực nghiệm tìm tốc độ học

Kiểu font50 100 150

Số kt lỗi. % lỗi Số kt lỗi. % lỗi Số kt lỗi. % lỗi

Arial 82 91.11 18 20 3 3.33

Tahoma 56 62.22 11 12.22 1 1.11

Time NewRoman 77 85.56 15 16.67 0 0

3.4.2. Thực nghiệm huấn luyện mạng.

Như chúng ta đã biết sự có nhiều yếu tố ảnh hưởng tới quá trình huấn luyện

mạng như là: sự đa dạng của đầu vao: kích thước , phong cách…

Một điều cần thiết là chuẩn bị trình tự của các ảnh kí tự đầu vào trong một

file ảnh đơn giản (*.bmp [bitmap] mở rộng), tương ứng với cac kí tự trong file

văn bản (*.cts [character trainer set] mở rộng) và lưư trữ hai file này trong cùng

một thư mục (cả hai file này cùng tên nhưng khác phần mở rộng). Ứng dụng sẽ

cung cấp cho người dùng một hộp thoại lựa chọn đường dẫn tới vị trí của file

văn bản *.cts và sẽ đưa file ảnh tương ứng với chính nó.

Trong đồ án này một số tham số được lựa chọn sau:

Tốc độ học = 150.

Hệ số góc Sigmoid= 0.014.

Trọng số kết nối cơ sở= 30.

Số lần lại 300-600 tùy độ phức tạp của từng loại font.

Trung bình ngưỡng của lỗi = 0.0002.

Bùi Quang Chiến Trang 45

Page 47: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Mẫu dùng trong quá trình thực nghiệm huấn luyện:

Ảnh đầu vào:

Hình3.2: Ảnh đầu dùng để huấn luyện

Đầu ra mong muốn:

Hình 3.3: File là đầu ra mong muốn

Kết quả huấn luyện: Sau khi huấn luyện xong lưu lại kết quả vào thu mục

“Mang” với *.ann để mỗI khi nhận dạng ta đưa giá trị này vao mạng neural.

Dưới dây hình 3.4 là một ví dụ các giá trị trọng số của file sau khi huấn

luyện

Bùi Quang Chiến Trang 46

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789

Page 48: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Hình 3.4 : Kết quả sau khi huấn luyện

Bùi Quang Chiến Trang 47

Ung Dung Mang Neural Trong Nhan Dang Ky Tu--Bui Quang Chien--2007 Network Name = Arial8Hidden Layer Size = 500Number of Patterns= 124Number of Epochs = 300Learning Rate = 150Sigmoid Slope = 0.014Weight Bias = 30

Weight[1 , 0 , 0] = -75.64764Weight[1 , 0 , 1] = 165.6839Weight[1 , 0 , 2] = -315.9442Weight[1 , 0 , 3] = 20.66214Weight[1 , 0 , 4] = -100.0667Weight[1 , 0 , 5] = 211.1713Weight[1 , 0 , 6] = 133.3773

.

.

.

Weight[2 , 15 , 494] = 6.119909Weight[2 , 15 , 495] = 27.66709Weight[2 , 15 , 496] = -14.68367Weight[2 , 15 , 497] = 6.72017Weight[2 , 15 , 498] = 8.664137Weight[2 , 15 , 499] = -21.96243

Page 49: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Bảng 3.5: Thống kê kết quả huấn luyện:

Loại font Số kí tự

huấn luyện

Số kí tự lỗi %lỗi Ghi chú

Arial8 124 2 0.016

Arial10 124 2 0.016

Arial12 124 3 0.024

Arial14 124 3 0.024

Arial18 124 2 0.013

Arial20 124 2 0.013

Arial_Số 160 0 0

Arial_Hoa 156 0 0

Arial_Thường 156 0 0

Tahoma 8 124 2 0.016

Tahoma 10 124 3 0.026

Tahoma 12 124 2 0.016

Tahoma 14 124 2 0.016

Tahoma 18 124 0 0

Tahoma 20 124 0 0

Tahoma_Số 160 0 0

Tahoma_Hoa 156 0 0

Tahoma_Thường 156 0 0

Bùi Quang Chiến Trang 48

Page 50: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Nhận xét quá trình huấn luyện :

Đối vớI font Ariai có :

Hình3.5 a : chữ “I_ hoa” mã 48h Hình 3.5b : chữ “l_thường” mã 6Ch

Đối với quá trình huấn luyện ta cần chú ý nhiều và font Arial như ở hình

3.5a và hình 3.5b chữ “I_Hoa”mã 49h và chữ “l_Thường ” mã 6Ch khi tách kí

tự, chia lưới và đưa kết quả vào mạng sẽ làm cho mạng không phân biệt được

hai kí tự này dẫn đến sau này nhận dạng sai. Phương pháp này cần tăng số lần

lặp cho quá trình huấn luyện.

3.4.3. Thực nghiệm nhận dạng.

Để thực hiện nhận dạng kí tự chúng ta tiến hành các bước sau:

Đưa giá trị đã huấn luyện vào mạng.

Đưa anh cần nhận dạng vào.

Ghi lại kết quả nhận dạng được.

Bùi Quang Chiến Trang 49

I l

Page 51: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Một số ảnh và kết quả nhận dạng được

Ảnh đầu vào:

Hình 3.6a : Ảnh kích cỡ 8 cua font Arial

Kết quả thu được

Hình3.7b : Kết quả thu được của font Arial8

Bùi Quang Chiến Trang 50

ABCDEFGHlJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkImnopqrstuvwxyz0123456789

Page 52: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Ảnh đầu vào:

Hình 3.8a : Ảnh kích cỡ 8 cua font Tahoma

Kết quả thu được

Hình 3.8b : Kết quả thu được của font Tahoma 8

Bùi Quang Chiến Trang 51

ABCDGFOHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789

Page 53: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Ảnh đầu vào:

Hình3.9a : Ảnh kích cỡ 8 cua font Arial

Kết quả thu được

Hình 3.9b : Kết quả thu được của font Arial8

Bùi Quang Chiến Trang 52

TRUONG DAl HOC DAN LAP HAlPHONGNganh Cong NgheThong TinLop CT702SinhVien BuiQuang ChienMm So SinhVien 10324DeTaiTotNghiep Nam 2007Ung Dung Mang NeuraITrong Nhan Dang kyTu

Page 54: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Ảnh đầu vào:

Hình 3.10a : Ảnh kích cỡ 8 cua font TahomaKết quả thu được

Hình 3.10b : Kết quả thu được của font Tahoma8

Bảng3.6: Kết quả quá trình nhận dạng font Arial

Loại font Số kí tự Số kí tự lỗi % lỗi Ghi chú

Bùi Quang Chiến Trang 53

TUONO DAI HOC DAN LAP HAI PHONO�Nganh Cong NgheThongTinLop CT702Sinh Vien BuiQuang ChienMa So Sinh Vien 10324DeTaiTot Nghiep Nam 2007Ung Dung Mang NeuralTrong Nhan Dang kyTu

Page 55: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

nhận dạng

Arial8 124 2 0.016

150 4 0.026

Arial10 124 3 0.024

150 4 0.026

Arial12 124 2 0.016

150 5 0.03

Arial14124 2 0.016

150 2 0.013

Arial18124 2 0.016

150 2 0.013

Arial20124 2 0.026

150 2 0.013

Arial_Số160 0 0

0 0

Arial_Hoa156 0 0

0 0

Arial_Thường 156 0 0

0 0

Bảng3.7: Kết quả quá trình nhận dạng font Tahoma

Loại font Số kí tự nhận Số kí tự lỗi % lỗi Ghi chú

Bùi Quang Chiến Trang 54

Page 56: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

dạng

Tahoma8124 2 0.016

150 2 0.013

Tahoma10124 1 0.008

150 4 0.026

Tahoma12124 3 0.024

150 4 0.026

Tahoma14124 0 0

150 0 0

Tahoma18124 0 0

150 0 0

Tahoma20124 0 0

150 0 0

Tahoma_Số160 0 0

0 0

Tahoma_Hoa156 0 0

0 0

Tahoma_Thường156 0 0

0 0

Nhận xét quá trình nhận dạng kí tự:

Bùi Quang Chiến Trang 55

Page 57: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

Chương trình thực nghiệm đã được huấn luyện và nhận dạng hai loại font :

Arial và Tahoma với nhiều kích thước khác nhau đã đạt được kết quả tốt, nhưng

còn một số tồn tại cần được phát triển để đạt kết quả cao hơn.

Đối với quá trình huấn luyện ta cần chú ý nhiều và font Arial như đã nói ở

hình 3.11a và hình 3.11b chữ “I_Hoa”mã 49h và chữ “l_Thường ” mã 6Ch khi

tách kí tự, chia lưới và đưa kết quả vào mạng sẽ làm cho mạng không phân biệt

được hai kí tự này dẫn đến sau này nhận dạng sai. Phương pháp này cần tăng số

lần lặp cho quá trình huấn luyện.

Ngoài ra còn một số trường hợp ảnh của hai kí tự nằm chéo nhau như một

số trường hợp sau:

Nó sẽ dẫn đến quá trình tách kí tự bị dính do dó nhận dạng sai. Đối với

trường hợp này ta cần phát triển phương pháp tách để tách kí tự.

Trong quá trình thực nghiệm nhận dạng kí tự ta thấy những kí tự sai là do

quá trình huấn luyện mạng chưa học được cho nên những kí tự này trong ảnh

nhận dạng sẽ bị nhận dạng sai. Chỉ có một số ít do quá trình tách kí tự.

Bùi Quang Chiến Trang 56

Page 58: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

KẾT LUẬN

Trong thời gian vừa qua, như đã trình bày ở trên đây nội dung nghiên cứu

đề tài của em được gồm các phần chính sau:

Tìm hiểu mạng nơron nhân tạo.

Tìm hiểu bài toán nhận dạng

Mô tả bài toán ứng dụng mạng nơron trong nhận dạng kí tự.

Phân tích cụ thể bài toán nhận dạng.

Thiết kế mạng và huấn luyện mạng nơron cho bài toán “ứng

dụng mạng nơron trong nhận dạng kí tự”.

Cài đặt và kiểm tra thực nghiệm bài toán này.

Nhận dạng kí tự là một phần rất quan trọng của lĩnh vực nhận dạng nói

riêng và xử lý ảnh nói chung. Cùng với việc sử dụng công cụ là mạng neural là

một lĩnh vực còn khá mới cần được phát triển hơn.

Trong Khóa luận này nó mới chỉ dừng ở phần thử nghiệm trên một số loại

font., kích thước…nhất định.

Hướng phát triển tiếp theo của khóa luận này trong tương lai.

Nâng cao hiệu quả và độ chính xác trong việc nhận dạng kí tự.

Mở rộng thêm nhiều loại font.

Mở rộng các cỡ chữ đặc biệt là các cỡ chữ dùng nhiều trong văn bản.

Phát triển thêm các chức năng hay mô đun cho thiết bị cầm tay.

Bùi Quang Chiến Trang 57

Page 59: Ứng dụng mạng neural trong nhận dạng kí tự

Đồ án tốt nghiệp Ứng dụng mạng neural trong nhận dạng kí tự

TÀI LIỆU THAM KHẢO

[1.] Tìm hiểu mạng neural nhân tạo cho bài toán nhận dạng Đồ án tốt

nghiệp năm 2006. Đinh Thị Hương Lan, CT603, Trường đại học dân lập

hải phòng.

[2.] MathNeuralNetworks. Ben Krose, faculty of Mathematics and computer

science, university of Amsterdam. And Patrick van der smagt, institute

of robotics and system dynamics German aerospase Reseach

establishment.

[3.] Artificial Neural Networks and Information theory, colin Fyfe,

department of computing and information system, the university of

Paisley.

[4.] A Growth Algorithm for Neural Networks Decision Trees. Mostefa golea

and Mario Marchand, Deparment of physics, university of Ottawa

Canada.

[5.] Artificial neural network From Wikipedia, the free encyclopedia.

[6.] Neural network From Wikipedia, the free encyclopedia.

[7.] http://en.wikipedia.org/wiki/Non-linear

[8.] http://www.codeproject.com/

Bùi Quang Chiến Trang 58

Page 60: Ứng dụng mạng neural trong nhận dạng kí tự