Trong mỗi mạng này:
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:
x e 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ý.
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.
2.3. Bộ thống kê ngữ cảnh
Như đã đề cập phần trên, bộ thống kê ngữ cảnh là một trong ba thành phần quan trọng của mô hình nhận dạng từ. Hai nhiệm vụ quan trọng nhất của bộ thống kê là:
Kiểm tra mức độ hợp lý của một ký tự trong một xâu ký tự.
Chọn ra một từ có độ tin cậy cao (khả năng lựa chọn cao nhất) nhất trong một danh sách các từ ứng cử viên.
Mức độ hợp lý của một ký tự y trong một xâu ký tự s được tính theo xác suất xuất hiện của cặp ký tự xy, trong đó x là ký tự liền trước của ký tự y trong xâu s. Khả năng lựa chọn của một từ được tính theo tần suất hoặc xác suất xuất hiện của từ đó.
2.3.1. Các khái niệm sử dụng trong bộ thống kê
1. Tần suất xuất hiện của một ký tự
Tần suất xuất hiện của một ký tự được tính bằng số lần xuất hiện của ký tự đó trong quá trình duyệt trên dữ liệu đầu vào. Cụ thể hơn, nếu gọi:
- D: là tập dữ liệu đầu vào.
- ch: là ký tự cần tính tần suất xuất hiện. - TS(ch): là tần suất xuất hiện của ký tự ch.
- Count (ch): là hàm đếm số lần xuất hiện của ch trên D. Ta có thể viết dưới dạng công thức như sau:
TS(ch|D)= Count ( ch) (in D ) (2.4)
2. Tần suất xuất hiện của 1 từ
Tần suất xuất hiện của một từ được tính bằng số lần xuất hiện của từ đó trong quá trình duyệt trên dữ liệu đầu vào. Tương tự như trên, ta cũng có thể viết dưới dạng công thức như sau:
Trong đó, D là tập dữ liệu đầu vào, w là từ cần thống kê tần suất xuất hiện,
Count(w) là hàm đếm số lần xuất hiện của w trên D.
3. Tần suất xuất hiện của cặp ký tự xy (hay tần suất xuất hiện của ký tự y ngay sau ký tự x)
Tần suất xuất hiện của cặp ký tự xy được tính bằng số lần xuất hiện của cặp xy hay số lần xuất hiện của ký tự y ngay sau ký tự x trong quá trình duyệt trên dữ liệu đầu vào. Viết dưới dạng công thức, ta có:
TS(xy|D) = Count(xy) (in D) (2.6)
trong đó TS(xy) là tần suất xuất hiện cặp xy, Count là hàm đếm và D là tập dữ liệu đầu vào.
4. Xác suất xuất hiện của 1 ký tự.
Xác suất xuất hiện của một ký tự được tính bằng tần suất xuất hiện của ký tự đó trên tổng tần suất xuất hiện của tất cả các ký tự có một trong quá trình duyệt trên dữ liệu đầu vào. Nếu gọi SX(ch) là xác suất xuất hiện của ký tự ch, ta có thể viết dưới dạng công thức như sau:
D ch i i D ch TS D ch TS D ch SX ) | ( ) | ( ) | ( (2.7)
5. Xác suất xuất hiện ký tự y ngay sau ký tự x (xác suất xuất hiện của cặp
xy)
Xác suất xuất hiện của ký tự y ngay sau ký tự x (hay còn gọi là xác suất xuất hiện của cặp xy) được tính bằng tần suất xuất hiện của ký tự y ngay sau ký tự x trên từng tần suất xuất hiện của tất cả các ký tự khác ngay sau ký tự x. Ta có thể viết dưới dạng công thức như sau:
D x i i y x TS xy TS xy SX ) ( ) ( )
( , với SX(xy) là xác suất xuất hiện cặp xy (2.8)
Xác suất xuất hiện của một từ. được tính bằng tích xác suất xuất hiện của tất cả các cặp ký tự liền kề nhau trong từđó. Nếu gọi w là một từ cần tính xác suất xuất hiện, wi là ký tự thứ i trong w và WXS(w) là xác suất xuất hiện của w , n là chiều dài của từ, ta có:
W SX( w) = SX(wo,w1)* SX(w1,w2)*....*SX(wn-1,wn) (2.9)
2.3.2. Thuật toán kiểm tra mức độ hợp lý của một ký tự trong một xâu
Như đã đề cập phần trên, mức độ hợp lý của ký tự (y) trong một xâu (s) được tính theo xác suất xuất hiện của cặp xy, với x là ký tự liền trước của y trong xâu s. Xác suất xuất hiện cặp ký tự xy được tính bằng giá trị của phần từ nằm trên hàng chứa ký tự x và cột chứa ký tự y của từ điển. Trên cơ sở đó, thuật toán kiểm tra mức độ hợp lý của một ký tự trong một xâu được thể hiện cụ thể như sau:
INPUT: - Ký tự: y - Xâu ký tự: s
- Từ điển ký tự (CharDict), kích thước 27 x 27. OUTPUT:
- Giá trị TRUE (nếu ký tự hợp lý) hoặc giá trị FALSE (trường hợp ngược lại) PROCESS:
Bƣớc 1: x ký tự liền trước của y trong xâu s;
Bƣớc 2: Mức độ hợp lý của y. Xác suất xuất hiện cặp xy = CharDict[x][y];
Bƣớc 3: if (mức độ hợp lý của y > ) return TRUE;
Bƣớc 4: else return FALSE;
Thuật toán 2-1: Thuật toán kiểm tra độ hợp lý của một ký tự.
Kí hiệu sử dụng trong thuật toán là một giá trị ngưỡng, giá trị ngưỡng này được lựa chọn dựa trên các giá trị xác suất đã được lưu trong từ điển ký tự. Kết quả
thống kê trên dữ liệu thực tế cho thấy với những cặp ký tự ít gặp trong thực tế thì xác suất xuất hiện của chúng rất nhỏ (<0.5%) và ngưỡng được chọn bằng 0.5%.
2.3.3. Thuật toán lựa chọn một từ trong danh sách các từ ứng cử viên
Khả năng lựa chọn (còn gọi là độ tin cậy) của một từ được tính theo tần suất xuất hiện hoặc theo xác suất xuất hiện của từ đó. Nếu tất cả các từ ứng cử viên đều nằm trong từ điển thì từ có tần suất xuất hiện cao nhất sẽ được lựa chọn. Trường