III.3 LƯỢNG HÓA VECTOR VÀ PHÂN NHÓM III.3.1 Lượng hóa vector

Một phần của tài liệu hệ nhận dạng chữ viết tay (Trang 44)

CHƯƠNG III: CƠ SỞ LÝ THUYẾT VỀ MARKOV ẨN

III.3 LƯỢNG HÓA VECTOR VÀ PHÂN NHÓM III.3.1 Lượng hóa vector

III.3.1 Lượng hóa vector

Trong phần trước, nhiều kiểu mô hình Markov ẩn được trình bày. HMM rời rạc thích hợp cho mô hình hóa các tiến trình với những chuỗi quan sát có giá trị rời rạc. Ngược lại, HMM liên tục mô hình chuỗi quan sát có giá trị liên tục. Để thực hiện, thông thường mô hình biểu diễn chuỗi quan sát như một hỗn hợp các phân bố Gauss. Điều này dẫn đến một số lớn các tham số tự do cần được ước lượng trong quá trình huấn luyện. Vì vậy nhu cầu về dữ liệu huấn luyện là rất lớn. Quá trình lượng hóa vector (VQ) cho phép các mô hình rời rạc biểu diễn những quan sát liên tục bằng cách ánh xạ mỗi quan sát liên tục thành một mẫu tượng nằm trong bảng ký hiệu rời rạc. Cụ thể, các vector liên tục N- chiều được phân bố thành một số tế bào (codebook) và ánh xạ một quan sát liên tục thành một nhãn của tế bào mà nó nằm trong đó. Tiến trình VQ cho phép mô hình rời rạc, với dữ liệu huấn luyện không lớn, biểu diễn những quan sát liên tục.

VQ đã được sử dụng rộng rãi trong lĩnh vực xử lý tiếng nói: trong HMM dùng để nhận dạng tiếng nói cũng như trong mã hóa tiếng nói với tỷ lệ bit thấp. Trong tài liệu của Makhoul, vector được lượng hóa là một tập các tham số, tính từ mỗi frame của tiếng nói (mỗi frame ~ 20ms). Một cách sử dụng khác của VQ là dùng để nén ảnh trong đó mỗi block chẳng hạn 4x4 pixel được định lượng thành một vector 16-chiều để lợi dụng sự dư thừa trong các block của ảnh nhằm giảm bớt lượng thông tin cần để truyền ảnh.

III.3.1.1 Phép lượng hóa vô hướng

Lượng hóa một đại lượng vô hướng thì không mới. Như minh họa trong hình 5.6, dòng số thực biểu diễn một đại lượng đo được, chia thành các phần Ci – codebook. Khi đó lượng hóa là tiến trình ánh xạ mỗi số thực vào nhãn (label) của phần chứa điểm tương ứng trên dòng. Sai lệch được biết đến khi tất cả các điểm trong một phần được ánh xạ vào cùng một nhãn. Sai lệch trung bình trên toàn bộ, D, có thể được tính khi cho trước độ đo sai lệch d(x,y) theo đó giá trị x được lượng hóa thành y:

= (49)

trong đó là toán tử kỳ vọng, có L phần Ci trong codebook, P[xCi] là xác suất rời rạc mà x nằm trong Civà p(x) là data của x.

Hình 6. Phép lượng hóa một độ đo một chiều

Khái niệm định lượng vô hướng không bị giới hạn trong một chiều. Một vector N-chiều có thể được định lượng vô hướng bằng cách xem xét mỗi chiều trong N chiều như những dòng số thực độc lập được định lượng như đã mô tả ở trên. Một ví dụ của định lượng vô hướng hai chiều được trình bày trong hình 7

Hình 7. Phép lượng hóa không gian hai chiều

Mục đích của thuật toán VQ thường là cực tiểu toàn bộ sai lệch trung bình sinh ra quá trình định lượng. Sai lệch này được định nghĩa trong phương trình (57) theo d(x,y) – độ đo sai lệch khi vector x được lượng hóa thành codeword y. Như vậy dạng của d(x,y) có ý nghĩa đáng kể trong quá trình thiết kế codebook.

Như vậy chúng ta đã xem xét quá trình lượng hóa như tiến trình đánh nhãn một vector liên tục với định danh của tế bào mà nó rơi vào. Với mục đích nhận

dạng, tế bào nên được đánh nhãn bằng một vector đại diện – code vector (điển hình là trọng tâm của nó) cùng với một định danh

Gọi y là code vector mà x được lượng hóa thành và yklà chiều thứ k của y. Có một số độ đo sai lệch thông thường gồm:

-Sai số bình phương trung bình:

dl(x,y) = (50)

- Dạng tổng quát hơn là:

dt(x,y) = (51)

Thông thường, r = l hay r = , d1 biểu diễn sai số tuyệt đối trung bình và tiến về sai số cực đại. Cực tiểu hóa D với r = sẽ tương đương với cực tiểu hóa sai số định lượng cực đại.

Sai số bình phương trung bình giả thiết rằng mỗi chiều của vector góp phần như nhau vào sai số. Một sai số bình phương trung bình có trọng được định nghĩa như sau:

- Sai số bình phương trung bình có trọng:

dw(x,y) = W(x-y) (52)

trong đó W là ma trận định nghĩa trọng số dương. Nếu W= l, trong đó là ma trận hợp biến của vector ngẫu nhiên x thì dwtrở thành khoảng cách Mahalanobis.

Cách tiếp trên đã chia không gian vector thành một số tế bào N – chiều, và lượng hóa mỗi vector liên tục thành một vector đại diện cho tế bào mà nó nằm trong đó.

Như vậy thiết kế codebook là quá trình điều chỉnh phân bố để cực tiểu sai lệch trung bình tổng thể.

Một cách tiếp cận khác là biểu diễn mỗi tế bào như một img N- chiều. Thao tác lượng hóa sau đó gồm ước lượng mỗi img cho vector liên tục để xác định xác suất mà mỗi img có thể đưa ra vector. Vector đại diện của tế bào với xác suất cực đại sau đó được chọn làm kết quả định lượng. Ưu điểm của phương pháp này là các img có thể chồng lên nhau trong khi trước đây chúng ta chỉ có thể xem xét một phân bố hạn chế trong các tế bào. Điều này phản ánh cấu trúc của quần thể gần gũi hơn bằng những phân bố giới hạn. Một ưu điểm chủ yếu khác của

cách tiếp cận này là khả năng thực hiện định lượng mềm (Soft Quantisation). Bằng cách ước lượng xác suất mỗi img tạo ra vector, các codeword có thể được lưu thay vì xác suất. Như vậy một quyết định cứng là không cần và như thế sẽ giữ lại nhiều thông tin hơn cho những giai đoạn xử lý tiếp theo.

Kết quả của cách tiếp cận cực đại xác suất là tập hợp các vector liên tục được mô hình hóa như một hàm mật độ hỗn hợp, và quá trình lượng hóa là xác định thành phần hỗn hợp nào tạo ra vector. Quá trình thiết kết codebook sau đó cực đại hóa xác suất của hàm mật độ hỗn hợp biểu diễn toàn bộ tập hợp.

III.3.1.2 Thiết kế codebook

Chia một không gian vector thành nhiều tế bào có thể được thực hiện với các tế bào đồng nhất hoặc có kích thước khác nhau. Cách tiếp cận đồng nhất tăng theo số mũ khi số chiều tăng – chia mỗi tham số của vector N-chiều thành M phần được MN tế bào. Cách tiếp cận đồng nhất cũng không khả thi nếu có ít nhất một chiều có giá trị không bị ràng buộc.

Như vậy ta có thuận lợi khi xây dựng một codebook trong đó các tế bào chỉ phủ không gian tham số giốn như được phân bố với các vector xuất hiện trong tiến trình VQ thông thường. Codebook này cũng đảm bảo rằng các phần tử của không gian tham số có xác suất phân bố cao sẽ được phủ bởi các tế bào nhỏ hơn các phần có xác suất thấp. Trong trường hợp này mục tiêu của thiết kế codebook là cực tiểu hóa sai lệch trung bình toàn cục của quá trình VQ.

Để thiết kế một codebook như vậy, cần một tập vector đại diện và một phân bố các vector xuất hiện trong VQ- tập huấn luyện. Quá trình phát sinh codebook sau đó sẽ tiến hành phân nhóm các vector này thành tế bào. Tiến trình này được lặp lại trên từng phần cho đến khi sai lệch trung bình toàn cục đạt đến một cực tiểu. Với một phân bố cụ thể các vector huấn luyện, để tính toán các vector này, trước hết cần tính vector đại diện cho mỗi tế bào mà các vector trong tế bào đó sẽ được lượng hóa. Với các độ đo sai lệch bình phương trung bình hoặc sai số bình phương trung bình có trọng số, toàn bộ sai lệch được cực tiểu hóa nếu vector đại diện của một tế bào là trung bình mẫu của các vector huấn luyện được phân bố vào tế bào đó.

Một thuật toán thiết kế codebook thường sử dụng là thuật toán LBG – Linder, Buzo, Gray mà thực chất là giải thuật phân nhóm k-means. Đôi khi nó còn được gọi là thuật toán Lloyd tổng quát tài liệu về lý thuyết thông tin. Tên “LBG” sau khi Linde, Buzo và Gray, những người đã chứng minh rằng thuật toán hoạt động với phạm vi độ đo sai lệch rộng. Nội dung của nó như sau:

1. Khởi tạo:

Đặt m=0. Chọn một tập hợp các codeword khởi đầu.

2. Phân lớp:

Phân lớp tập hợp các vector huấn luyện thành các nhóm Ci theo qui tắc lân cận gần nhất:

x Ci(m), nếu d(x,yi(m)) d(x,yj(m)) với mọi j i (53)

3. Cập nhật code vector: mm + 1.

Code vector của mỗi nhóm được tính như trung bình mẫu của các vector huấn luyện.

4. Kết thúc:

Nếu khác biệt trong toàn bộ sai lệch trung bình giữa lần lặp lại m và lần cuối cùng là dưới một ngưỡng thì dừng, ngược lại đến bước 2.

Bất kỳ một phép kiểm tra kết thúc hợp lý nào cũng có thể được áp dụng thay vì bước 4.

Trong trường hợp codebook được biểu diễn như một hỗn hợp các img – thay vì phân bố không gian vector thành các tế bào – quá trình phân nhóm tương tự nhưng được điều khiển bởi xác suất của mỗi vector huấn luyện trong tế bào. Phân nhóm tiếp tục đến khi toàn bộ xác suất của tất cả các vector huấn luyện được phát sinh bởi các img tương ứng là cực đại hóa. Thay vì tính toán vector đại diện các tham số của img phải được ước lượng cho một tập hợp các vector huấn luyện cho trước. Với một mô hình hỗn hợp Gauss, quá trình này gồm tính toán trung bình mẫu và hợp biến cho mỗi nhóm các vector huấn luyện.

Một cách phân nhóm các vector huấn luyện khác để tạo codebook là lượng hóa vector theo kiểu thống kê – Stochastic Vector Quantisation. Phương pháp này cần một mô hình định nghĩa trước cho các vector mã hóa. Các vector nhiễu White

Gauss được truyền qua bộ lọc trạng thái để biểu diễn mô hình và các kết quả chuẩn được sử dụng làm codeword. Cách tiếp cận này tính toán đơn giản hơn phân nhóm.

Khi codebook đã được thiết kế, cách tiếp cận để định lượng mỗi vector mới là so sánh nó với mọi codeword để tìm codeword cực tiểu sai lệch lượng hóa (theo một độ sai lệch nào đó) hoặc cực đại xác suất (theo một mật độ xác suất tham số nào đó). Cách tiếp cận này có hiệu suất tối ưu với chi phí là một khối lượng tính toán đáng kể - các thao tác là tuyến tính theo trong số chiều và kích thước của codebook. Bằng cách phân bố codebook theo cách thích hợp nào đó, có thể giảm độ phức tạp, chỉ tỷ lệ với kích thước của codebook.

Một codebook tìm kiếm nhị phân hoạt động theo cách phân nhóm có thứ bậc các vector huấn luyện. Trong quá trình phát sinh codebook, thuật toán phân nhóm được sử dụng để phân nhóm các vector huấn luyện thành 2 nhóm, và vector đại diện được tìm thấy như trọng tâm của mỗi nhóm. Sau đó quá trình lặp lại một cách đệ qui cho mỗi nhóm này, xây dựng thành một cây nhị phân như hình 8. Quá trình đệ qui kết thúc khi mức thấp nhất của cây biểu diễn số codeword cần L, trong đó L là lũy thừa của 2. Sau đó quá trình định lượng gồm tìm kiếm cây từ gốc xuống lá sao cho sai lệch được cực tiểu hóa tại mỗi nút. Trong trường hợp này số tính toán sai lệch bằng với 2log2L, nhỏ hơn đáng kể so với L tính toán khi tìm kiếm đầy đủ với bất kỳ giá trị L lớn hợp lý nào.

Hình 8. Cây nhị phân tìm kiếm VQ

Mục đích phân nhóm là tìm một cấu trúc nào đó trong phân bố của tập hợp các vector trong không gian Euclide N-chiều. Với một hoặc hai chiều, có thể dễ dàng hình dung bằng trực giác – chẳng hạn trong hình 9 – các vector mẫu được phân bố rõ ràng thành 3 nhóm. Trong nhiều bài toán nhận dạng mẫu số chiều cao hơn nhiều và việc biểu diễn bằng hình vẽ là không thể.

Hình 9. Ba nhóm cluster trong mặt phẳng hai chiều

Để phát triển một thuật toán phân nhóm, cần thiết phải có một độ đo khoảng cách nào đó giữa hai vector x và y. Độ đo khoảng cách thông thường nhất là khoảng cách Euclide:

D = ||x-y|| (54)

Thuật toán phân nhóm sau đó có thể được xem như bài toán cực tiểu hóa hoặc cực đại hóa một hàm tiêu chuẩn. Một ví dụ thường gặp là cực tiểu hóa tổng tiêu chuẩn sai số trung bình:

J = (55)

trong đó k là số nhóm, Cj là tập hợp các mẫu tạo thành nhóm thứ j và là vector trung bình của nhóm Cj:

= (56)

Njlà số mẫu trong nhóm Cj

Nhiều độ đo khoảng cách khác và các hàm tiêu chuẩn khác đã được đề nghị. Tuy nhiên phần tử này chỉ tóm tắt hai phương pháp phân nhóm thông thường nhất – thuật toán k-means và thuật toán ISODATA

Thuật toán k-means dựa trên cực tiểu hóa tổng các khoảng cách bình phương của tất cả các điểm từ tâm nhóm tương ứng của chúng. Các bước của thuật toán như sau:

1. Chọn k tâm nhóm ban đầu tùy ý. Thường là k mẫu đầu tiên trong tập hợp huấn luyện.

2. Phân bố mẫu x trong k nhóm theo quan hệ:

x Ci(m), nếu ||x-yi(m)|| ||x-yj(m)|| với mọi j i (57)

trong đó Ci(m) là nhóm i, có tâm yi(m), trong lần lặp thứ m của thuật toán.

3. Tính từ tâm nhóm mới từ trung bình mẫu của các mẫu huấn luyện đã được đánh nhãn như thành viên của mỗi nhóm. Quá trình này cực tiểu hóa tổng các bình phương khoảng cách từ mỗi mẫu đến tâm nhóm của nó.

4. Nếu nhóm không thay đổi thừ lần lặp cuối cùng, thì thuật toán hội tụ, ngược lại đến bước 2.

Thuật toán ISODATA

Thuật toán ISODATA tương tự thuật toán k-means, nhưng kết hợp thêm một số thủ thuật heuristic để kiểm soát hoạt động của nó. Bắt đầu là số tâm nhóm k’ được đặc tả. k’ không cần giốn như số nhóm mong muốn k và có thể được thiết lập lại bằng cách lấy mẫu dữ liệu huấn luyện. Các bước của thuật toán như sau:

1. Đặc tả các tham số: k = số nhóm cần

N= tham số cho số mẫu trong một nhóm

S= tham số độ lệch chuẩn

C= tham số gộp (lumping)

L = số các cặp cực đại của nhóm có thể gộp lại l = số lần lặp cực đại

2. Phân bố tất cả mẫu huấn luyện trong số k’ nhóm hiện diện theo cùng quy luật như bước 2 của thuật toán k-means.

3. Nếu một nhóm có ít hơnNthành viên thì loại nó và giảm k’ đi một.

5. Với mỗi nhóm Ci, tính khoảng cách trung bình i của các thành viên từ trung bình nhóm.

6. Tính khoảng cách trung bình toàn bộ (overall average distance) với mọi mẫu huấn luyện từ các trung bình nhóm tương ứng của chúng.

7.

Nếu đây là lần lặp cuối cùng, đặtc= 0 và đi đến bước 11.

Nếu k’ k/ 2 đến bước 8

Nếu đây là lần lặp chẵn, hoặc nếu k’ > 2k thì đến bước 11

Ngược lại tiếp tục

8. Tìm một vector lệch chuẩn = (, ,…, )x’cho mỗi nhóm sử dụng quan hệ:

= i=1,2,…,k (58)

trong đó n là số chiều của mẫu, xiklà thành phần thứ I của mẫu thứ l trong nhóm Cj, yijlà thành phần thứ i của tâm nhóm Cj và Nj là số các mẫu trong nhóm Cj. Mỗi thành phần của biểu diễn độ lệch chuẩn của các mẫu trong nhóm Ci theo trục tọa độ chính.

9. Tìm thành phần cực đại của cho mỗi nhóm.

10. Với nhóm Cj bất kỳ, >j, nếu (i>và Ni>2(N+1)) hoặc k’ k/ 2 thì chia Cj thành 2 nhóm Cj’ và Cj-, xóa Cjvà tăng k thêm 1.

11. Tính các khoảng cách Dijtheo từng cặp giữa tất cả các tâm nhóm. 12. Sắp xếp theo thứ tự tăng các khoảng cách L nhỏ nhất mà nhỏ hơnc

13. Các khoảng cách Dijcó thứ tự nhỏ nhất được xem xét một cách liên tục để kết các nhóm lại với nhau. Nếu cả Ci lẫn Cj được thu gọn theo một khoảng cách nhỏ nhất trong lần lặp này, thì một tâm nhóm mới y*được tính toán theo:

Một phần của tài liệu hệ nhận dạng chữ viết tay (Trang 44)

Tải bản đầy đủ (PDF)

(70 trang)