CHƯƠNG 2. NHẬN DẠNG TỪ DỰA TRÊN MÔ HÌNH ĐA MẠNG KẾT HỢP VỚI THỐNG KÊ NGỮ CẢNH
2.2. Mô hình đa mạng nơron áp dụng trong nhận dạng chữ viết tay tiếng Việt
2.2.1. Khó khăn và giải pháp đề xuất
Trong bài toán nhận dạng chữ viết tay tiếng Việt, Bộ nhận dạng ký tự nhận đầu vào là ảnh của từng ký tự tiếng Việt (chữ cái kèm theo dấu). Nhiệm vụ của bộ này là nhận dạng ảnh đầu vào từ đó trở về output là ký tự tương ứng. Như chúng ta đã biết, chữ tiếng Việt là sự kết hợp giữa chữ cái Latinh và hệ thống dấu (sắc, huyền,
hỏi, ngã, nặng). Khi cắt các từ tiếng Việt viết thường ra thành các kí tự, ta sẽ thu được những nhóm ký tự sau:
18 kí tự có dấu bắt nguồn từ các chữ cái a, ă, â đó là: a, à, á, ã, ạ, ả, â, ầ, ấ, ẫ, ậ, ẩ, ă, ằ, ắ, ẵ, ặ, ẳ. (1)
12 ký tự có dấu bắt nguồn từ các chữ cái e, ê đó là: e, è, é, ẽ, ẹ, ẻ, ê, ề, ế, ễ, ệ, ể.
(2)
18 ký tự có dấu bắt nguồn từ các chữ cái o, ô, ơ đó là: o, ò, ó, õ, ọ, ỏ, ô, ồ, ố, ỗ, ộ, ổ, ơ, ờ, ớ, ỡ, ợ, ở. (3)
6 ký tự có dấu bắt nguồn từ chữ cái i là: i, í, ì, ĩ, ị, ỉ. (4)
12 ký tự có dấu bắt nguồn từ các chữ cái u và ư đó là: u, ù, ú, ũ, ụ, ủ, ư, ừ, ứ, ữ, ự, ử (5)
6 ký tự có dấu bắt nguồn từ chữ cái y đó là: y, ỳ, ý, ỹ, ỵ, ỷ. (6)
17 ký tự không dấu còn lại: d, đ, b, c, g, h, k, l, m, n, p, q, r, s, t, v, x. (7)
Việc phân nhóm kí tự được thực hiện dựa trên cơ sở đặc trưng ảnh theo tiêu chí sau: những kí tự giống nhau, khó phân biệt sẽ được đưa vào cùng một nhóm.
Theo quan điểm này, sự giống nhau của các kí tự rơi vào một trong hai trường hợp sau:
Các kí tự có dấu bắt nguồn từ cùng một chữ cái sẽ được đưa vào cùng một nhóm, ví dụ nhóm các kí tự a, á, à, ă, ắ, ấ ...; o, ô, ố, ồ ... Đặc điểm của các kí tự trong các nhóm này là: có phần thân giống nhau và chỉ khác nhau phần dấu nên để phân biệt các kí tự chúng ta chỉ cần phân biệt phần dấu của chúng.
Với nhận xét và quan sát như vậy, chúng ta có thể chia tập hợp các kí tự tiếng Việt thành các nhóm như bảng dưới đây:
Nhóm 0
a á à ạ ã ả ă ắ ằ ặ ẵ ẳ â ấ ầ ậ ẫ ẩ b c d đ e é è ẹ ẽ ẻ ê ế ề ệ ễ ể g h i í ì ị ĩ ỉ k l m n o ó ò ọ õ ổ ơ ớ ờ ợ ỡ ở ô ố ồ ộ ỗ ổ p q r s t u ú ù ụ ũ ủ ư ứ ừ ự ữ ử v x y ý ỳ ỵ ỹ ỷ
0.1 a á à ạ ã ả ă ắ ằ ặ ẵ ẳ â ấ ầ ậ ẫ ẩ
0.2 e é è ẹ ẽ ẻ ê ế ề ệ ễ ể
0.3 o ó ò ọ õ ỏ ô ố ồ ộ ỗ ổ ơ ớ ờ ợ ỡ ở
0.4 i í ì ị ĩ ỉ
0.5 u ú ù ụ ũ ủ ư
ứ ừ ự ữ ử 0.6 y ý ỳ ỵ ỹ ỷ
d đ m n p r s g q b h k l c x v t
Bảng 2.1: Phân nhóm ký tự tiếng Việt dựa trên đặc trƣng ảnh
Do đó, bên cạnh những khó khăn chung của bài toán nhận dạng chữ viết tay như đã trình bày trong phần giới thiệu, với bài toán nhận dạng chữ viết tay tiếng Việt chúng ta còn gặp những khó khăn sau:
Số các ký tự tiếng việt là rất lớn: 89 ký tự viết thường và 89 ký tự viết hoa chưa kể đến các chữ số và dấu câu. Nếu chỉ sử dụng hệ nhận dạng đơn thuần là nhận dạng một cấp (nhận dạng một lần bởi một mạng nơron) thì số các ký tự cần phân biệt là rất nhiều, do vậy xác suất nhận dạng sai cũng sẽ cao.
Tập hợp các ký tự tiếng Việt có thể chia thành bảy nhóm như trên, trong đó các nhóm (1), (2), (3), (4), (5) và (6) gồm các kí tự rất giống nhau, chúng chỉ khác nhau về dấu nên rất khó phân biệt. Có thể nói, bên cạnh độ lớn về số lượng ký tự thì đặc điểm này là thử thách lớn nhất đối với các hệ nhận dạng chữ viết tay tiếng Việt.
Nhận biết được những khó khăn này, chúng tôi đề xuất giải pháp như sau:
Chia tập hợp toàn bộ ký tự tiếng Việt ra thành các nhóm nhỏ hơn.
Xây dựng hệ thống mạng nơron gồm nhiều mạng kết hợp. Mạng ưu tiên có nhiệm vụ phân nhóm ký tự đầu vào, các mạng tiếp theo sẽ tiếp tục nhận dạng ký tự trong một nhóm con và đưa ra kết quả ứng với mỗi nhóm ký tự, ta áp dụng một phương pháp trích chọn đặc trưng ảnh phù hợp sao cho mạng nơron có thể phân nhóm, nhận dạng ký tự một cách chính xác nhất. Những nghiên cứu về mạng nơron đã giúp cho chúng tôi có cơ sở để tiến hành việc phân nhóm ký tự
và xây dựng hệ thống đa mạng nơron để giải quyết những khó khăn của bài toán nhận dạng ký tự viết tay tiếng Việt theo giải pháp này.
2.2.2. Phân nhóm kí tự
Việc phân nhóm ký tự có thể dựa trên trực quan: những ký tự nào mà mắt thường dễ nhầm lẫn, khó phân biệt thì cho vào cùng một nhóm. Theo quan điểm này chúng ta có thể chia tập hợp các ký tự tiếng Việt viết thường thành các nhóm như trên. Trong lần huấn luyện mạng thứ nhất, mạng nơron sẽ phân loại các ký tự thành 6 nhóm và các ký tự không dấu.
Khi xác định được ký tự thuộc 1 trong các nhóm, ta tiếp tục huấn luyện để xác định phân loại xem chúng là ký tự nào trong nhóm đó bằng cách tiếp tục huấn luyện mạng nơron tiếp theo, trong lần huấn luyện này chúng ta sẽ “huấn luyện chuyên sâu hơn” cho mạng (huấn luyện mạng với tập mẫu học là nhóm ký tự này) và giúp nó
“nhớ” theo một cách nào đó (áp dụng phương pháp trích chọn đặc trưng ảnh phù hợp với nhóm ký tự) để mạng không bị nhầm các ký tự này với nhau nữa. Ý tưởng phân nhóm này có thể thực hiện được theo phương pháp sau:
Dùng một mạng nơron để nhận dạng tất cả các ký tự.
Sau khi phân nhóm lần thứ nhất, chúng ta có thể tiếp tục chia nhỏ hơn đối với những nhóm có số lượng phần tử lớn bằng cách lấy một ngưỡng khác (lớn hơn ngưỡng ở lần phân nhóm trước) hoặc bằng cách huấn luyện mạng một lần nữa với tập mẫu là các ký tự trong nhóm này và thực hiện phân loại chính xác ký tự.
Sau khi có phân nhóm ký tự chúng ta sẽ xây dựng được mô hình đa mạng nơron tương ứng với phân nhóm này.
2.2.3. Xây dựng hệ thống đa mạng 1. Cấu trúc hệ thống đa mạng
Như đã đề cập ở trên, hệ thống mạng nơron áp dụng cho bài toán là hệ thống mạng nơron theo cấu trúc phân lớp được tổ chức như mô tả trong hình 2.2.
Hình 2.2: Cấu trúc hệ thống đa mạng
Theo mô hình trên, Lớp mạng 1 gồm một mạng nơron. Đầu vào của mạng này là ảnh của kí tự c (được cho dưới dạng ma trận), với c thuộc tập hợp C0 gồm tất cả các kí tự. Nhiệm vụ của mạng là xác định xem đầu vào thuộc nhóm kí tự nào C1.1, C1.2, …., hay C1.n1, trong đó C0 = C1.1 + C1.2 + ….+ C1.n1 và C1.1, C1.2, …., C1.n1 đôi một không có phần tử chung.
Một nhóm có thể có một hoặc nhiều ký tự. Nếu nhóm có một ký tự thì ký tự này chính là đầu ra cuối cùng của hệ thống mạng (tức là không xây dựng mạng nơron tương ứng với nhóm có một ký tự). Nếu nhóm có nhiều ký tự thì nhóm này sẽ được huấn luyện để nhận dạng chính xác ký tự, trong trường hợp này chúng ta sẽ tiếp tục xây dựng các mạng nơron ở lớp mạng tiếp theo ứng với những nhóm con có nhiều hơn một phần tử này.
Như vậy, số mạng neuron trong lớp mạng 2 bằng số nhóm ký tự sau lớp mạng 1. Đầu vào của mạng 2.i (với i = 1…n1 ) chính là đầu vào của mạng trước nó sau khi đầu vào này được xác định là thuộc nhóm kí tự C1.i. Nhiệm vụ của mạng này tương
tự như nhiệm vụ của mạng 1 là xác định xem đầu vào của nó sẽ chính xác là ký tự nào.
Như vậy, nếu biết trước số phân nhóm trong tập kí tự, ta sẽ xây dựng được mô hình đa mạng nơron tương ứng.
Nhận xét: mô hình đa mạng thực chất là cấu trúc nhiều mạng kết hợp được tổ chức theo sơ đồ cây. Mỗi mạng nơron là một nút tương ứng với một nhóm kí tự có số phần tử lớn hơn một. Nhiệm vụ của mạng này là phân loại kí tự của nhóm về một trong các nhóm con tiếp theo của nó. Nếu số các ký tự trong nhóm con lớn hơn 1 thì lại tiếp tục được phân loại cho đến khi xác định được ký tự cuối cùng. Nhận xét này sẽ giúp chúng ta trong việc cài đặt hệ thống đa mạng.
2. Cấu trúc, phương pháp huấn luyện từng mạng Cấu trúc
Các mạng nơron trong hệ thống đa mạng được xây dựng đều có dạng là mạng nơron nhiều tầng truyền thẳng. Mỗi mạng đều gồm hai lớp: lớp ẩn H và lớp đầu ra O. Cấu trúc này được thể hiện qua hình 2.3.
Hình 2.3: Cấu trúc mạng nơron hai lớp truyền thẳng Trong mỗi mạng này:
Số nơron ở lớp O bằng số đầu ra, tức là bằng số nhóm kí tự mà mạng phải
Số nơron ở lớp ẩn H được xác định sao cho tỷ lệ phân loại đúng mà mạng có thể đạt được là cao nhất. Việc xác định số nơron ở lớp ẩn thực tế là không có một cơ sở lý thuyết nào xác định chính xác để đạt được kết quả nhận dạng tối ưu mà thường là thông qua thực nghiệm.
Liên kết giữa các nơron ở các lớp là liên kết đầy đủ, tức là mỗi nơron ở lớp sau liên kết với tất cả các nơron ở lớp trước nó.
Hàm tổng tại mỗi nơron là hàm tổng thông thường, tức là:
n = = p0.w0 + p1.w1 + …. + pn.wn
với (p0, p1, …, pn) là vectơ đầu vào và (w0, w1, …, wn) là các trọng số liên kết tương ứng.
Hàm truyền ƒ tại mỗi nơron là hàm sigmoid:
e x
x
f
1 ) 1 (
Phương pháp huấn luyện
Về bản chất, nhiệm vụ của các mạng nơron trong hệ thống đa mạng chính là nhiệm vụ phân loại. Với đầu vào là ảnh của một ký tự bất kỳ (được cho dưới dạng ma trận), mạng nơron cần tính toán để xếp ảnh này vào một nhóm ký tự nào đó. Do đó, chúng tôi chọn phương pháp học có giám sát với thuật toán lan truyền ngược sai số (đã trình bày trong chương 2), một phương pháp rất phổ biến và hiệu quả để huấn luyện từng mạng nơron này. Nhưng lưu ý trong khi huấn luyện từng mạng đơn này là:
Để tránh hiện tượng overfiting (hiện tượng mà khả năng học của mạng rất tốt nhưng khả năng tổng quát hoá của mạng lại kém tức là mạng nhận dạng tốt những mẫu đã được huấn luyện nhưng lại tỏ ra kém hiệu quả với những mẫu chưa được huấn luyện), ta nên chọn tập mẫu huấn luyện và tập mẫu thử nghiệm sao cho: (1) chúng có đầy đủ mẫu của tất cả các ký tự với số lượng không chênh lệch nhau nhiều, (2) tập mẫu huấn luyện và tập mẫu thử nghiệm tuyệt đối không được trùng nhau, chỉ nên giao nhau một phần và số mẫu
trong tập thử nghiệm nên bằng khoảng 2/3 số mẫu trong tập huấn luyện.
Cách chọn mẫu học và thử nghiệm kiểu này được gọi là Cross-Validation [21][22].
Khi khởi tạo mạng, tuy rằng các tham số như trọng số liên kết giữa các nơron, hệ số học tại các nơron có thể lấy một cách ngẫu nhiên nhưng cũng cần phải lấy trong một khoảng hợp lý.
Nếu các tham số này có giá trị quá lớn, khi đó giá trị thu được tại mỗi nơron sau khi tính hàm tổng và trước khi cho vào hàm kích hoạt là rất lớn. Sau khi cho qua hàm kích hoạt (ở đây là hàm sigmoid), các giá trị thu được sẽ xấp xỉ bằng nhau, tạo thành miền phẳng như trong đồ thị hàm sigmoid ở bảng 1-1.
Do đó giá trị các đạo hàm trong công thức (1.1), (1.2) rất nhỏ và quá trình hội tụ sẽ kéo dài, trong nhiều trường hợp có thể chúng ta sẽ không thoát khỏi được miền phẳng này và quá trình hội tụ sẽ chững lại. Như vậy ta không nên khởi tạo giá trị lớn cho các tham số mạng.
Chúng ta cũng không nên lấy các giá trị quá nhỏ, chẳng hạn nếu chúng ta khởi tạo tất cả tham số ban đầu của mạng là 0 thì giá trị hàm sigmoid, cũng như đạo hàm tới các nơron đều bằng 0. Do đó sai số E nhận được có giá trị lớn và quá trình hiệu chỉnh trọng số để thu được sai số nhỏ hơn sẽ lâu.
Chúng ta nên chọn miền giá trị để khởi tạo các tham số mạng sao cho đầu ra tới mỗi nơron sẽ thuộc vào khoảng giữa 0 và miền phẳng của hàm sigmoid, như thế quá trình hiệu chỉnh trọng số để thu được sai số E nhỏ sẽ nhanh và hiệu quả. Việc tìm ra khoảng giá trị hợp lý này cần được tiến hành qua thực nghiệm. Gợi ý trong [21], [22] là nên chọn khoảng[- δ, δ] để khởi tạo trọng số liên kết và ngưỡng tới mỗi nơron, trong đó δ=
m
1 với m là số đầu vào của nơron đó. Thông qua thực nghiệm đã tiến hành và cho thấy khoảng [- δ, δ] như vậy là hợp lý.
Số lần huấn luyện mạng cũng cần được chú ý: nếu số lần huấn luyện mạng
nhiên nó lại nhớ một cách quá “máy móc” dẫn đến khả năng “nhạy bén” để tổng quát hoá nhằm phân loại những mẫu chưa được học lại kém. Khi này mạng rơi vào tình trạng overtraining [21], [22]. Nếu số lần huấn luyện mạng quá ít thì mạng chưa kịp “học thuộc” những mẫu đã dạy nên cũng chưa đủ
“tri thức” để tổng quát hóa và phân loại những mẫu chưa được dạy. Do đó chúng ta nên dừng huấn luyện mạng một thời điểm mà tỷ lệ nhận dạng đúng những mẫu đã học và những mẫu chưa học đều cao và ghi lại bộ tham số mạng tại thời điểm này.
Như đã đề cập trong các phần trên rằng chỉ cần sử dụng mạng nơron hai lớp truyền thẳng là đủ để giải quyết các bài toán phân loại bằng cách huấn luyện mạng có giám sát với thuật toán lan truyền ngược sai số [[2]], [22], ta thấy: về mặt cấu trúc và phương pháp huấn luyện từng mạng thì những gì được sử dụng ở đây là hoàn toàn có cơ sở để tin tưởng. Nhiệm vụ của chúng ta bây giờ là huấn luyện hệ thống đa mạng để chúng có thể hoạt động kết hợp với nhau theo phương thức tốt nhất và cho kết quả nhận dạng đúng cao.
3. Huấn luyện hệ thống đa mạng
Về cơ bản, việc huấn luyện hệ thống đa mạng chính là huấn luyện tất cả các mạng để mỗi mạng thực hiện tốt việc phân loại với đầu vào là ảnh của ký tự thuộc nhóm ký tự tương ứng với mạng. Xét về quy cách thực hiện thì có hai cách là huấn luyện tuần tự (có thể gọi là huấn luyện theo lô) và huấn luyện song song.
Huấn luyện theo lô: theo quan điểm này, hệ thống đa mạng được huấn luyện theo trình tự sau:
Sau khi có bảng phân nhóm ký tự, xây dựng hệ thống đa mạng tương ứng với sự phân nhóm đó.
Với mỗi mẫu trong tập mẫu học, dạy mạng thứ nhất sao cho nó phân loại đúng mẫu đấy. Sau đó huấn luyện mạng tiếp theo tương ứng để nó cũng phân loại đúng mẫu này (ở mức nhỏ hơn). Tiếp tục như vậy cho tới khi có được đầu ra cuối cùng.
Huấn luyện song song: theo phương pháp này, hệ thống đa mạng được huấn luyện như sau:
Sau khi có bảng phân nhóm kí tự, tiến hành cài đặt và huấn luyện song song các mạng đơn ứng với từng nhóm để mạng phân loại đúng các kí tự thuộc nhóm này. Để làm được việc này chúng ta cần chọn ra từ cơ sở dữ liệu các tập mẫu học tương ứng với từng nhóm.
Sau khi huấn luyện xong các mạng (thu được bộ tham số phù hợp cho từng mạng), ghép các mạng lại theo đúng cấu trúc của phân nhóm ký tự.
Cuối cùng là đưa cấu trúc đa mạng này vào hệ thống nhận dạng.
So sánh hai cách huấn luyện: với phương pháp huấn luyện theo lô, tuy thời gian tiến hành có lâu hơn nhưng chúng ta không cần phải chọn ra những tập mẫu học riêng cho từng mạng và cũng không phải ghép các mạng lại sau khi huấn luyện.
Hơn thế nữa, khi có mẫu ký tự mới, việc học mẫu mới này sẽ đơn giản hơn so với phương pháp huấn luyện song song. Tuy nhiên với phương pháp huấn luyện theo lô, chúng ta cần lưu ý trong việc chọn tập mẫu học cho toàn hệ thống để đảm bảo rằng: mạng nào cũng được huấn luyện với số mẫu nhất định tránh hiện tượng có những mạng được huấn luyện với quá nhiều mẫu trong khi có những mạng chỉ được huấn luyện với số mẫu ít. Xét về khía cạnh cài đặt thì phương pháp huấn luyện theo lô đơn giản hơn, do đó, khi cài đặt hệ thống thực nghiệm, chúng tôi chọn phương pháp huấn luyện theo lô.
4. Quy trình nhận dạng của hệ thống đa mạng
Hệ thống đa mạng thực hiện việc nhận dạng đầu vào theo quy trình sau:
Ảnh của ký tự (đầu vào) được đưa qua mạng nơron ở lớp mạng đầu tiên.
Mạng này sẽ thực hiện việc phân loại (lan truyền xuôi tín hiệu đầu vào lần lượt qua các lớp nơron) để xác định xem đầu vào thuộc nhóm kí tự con nào.
Nếu nhóm này chỉ gồm một ký tự thì kết thúc việc nhận dạng và đưa kết quả ra đầu ra.
Ngược lại, nếu nhóm này có nhiều hơn một ký tự thì mạng nơron ứng với nhóm ký tự đó sẽ được kích hoạt. Mạng này cũng nhận đầu vào là đầu vào của mạng nơron trước nó tức là đầu vào của hệ thống và có nhiệm vụ tiếp tục phân loại đầu vào và xác định là ký tự nào trong hệ thống nhận dạng.
Tổng kết: Như vậy, chúng ta đã hoàn thành việc xây dựng hệ thống đa mạng nơron cho hệ nhận dạng kí tự. Công việc này được thực hiện qua các giai đoạn chính là phân nhóm ký tự, xây dựng hệ thống đa mạng tương ứng với phân nhóm đó, cuối cùng là huấn luyện và đưa hệ thống vào qui trình nhận dạng của hệ nhận dạng chung.
2.2.4. Ðánh giá ƣu, nhƣợc điểm của mô hình đa mạng
Ưu điểm của mô hình đa mạng là khi được huấn luyện đầy đủ (tất cả các mạng đều được huấn luyện) thì tỷ lệ nhận dạng đúng mà nó đạt được lớn hơn hẳn so với khi chỉ có một mạng nơron do gánh nặng phải “nhớ” được hết đặc điểm của từng ký tự đã được chia sẻ cho nhiều mạng. Nhưng nhược điểm của nó là việc cài đặt và huấn luyện tốn rất nhiều công sức. Không những chúng ta phải cài đặt một mạng nơron mà chúng ta còn phải ghép nối, kết hợp các mạng nơron lại với nhau.
Một nhược điểm nữa của mô hình này là nếu những mạng đầu tiên phân loại không chính xác thì chúng ta không thể thu được kết quả nhận dạng đúng, đây là điểm mà chúng ta phải hết sức chú ý khi huấn luyện hệ thống này. Ở Việt Nam, một số tác giả của các công trình nghiên cứu về nhận dạng chữ viết tay dựa trên mô hình mạng nơron đã đề xuất những giải pháp của mình và những giải pháp đó tập trung vào việc: sử dụng mạng nơron bốn lớp cải tiến bằng cách dùng các liên kết có chọn lọc ở lớp đầu vào như trong [2]; hoặc là sử dụng mạng nơron mờ, HMM, đối sánh mẫu trong nhận dạng chữ viết tay,…. Mỗi phương pháp đều có những ưu, nhược điểm riêng và hiệu quả của nó được đánh giá trong bài toán áp dụng.