Lƣợng hóa vector và phân nhóm

Một phần của tài liệu Luận văn thạc sĩ công nghệ thông tin Nhận diện chữ viết tay bằng mô hình markov ẩn (Trang 64)

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

….Mức (i-1) Mức 2 Mức 1 Mức 0 Thời gian 0 1 2 3 4 Chì Số Trạng thái 2 1 0 Tiếp 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.

3.5.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:

D= [d(x,y)] (51)

= (52)

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

Hình 3.11 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 3.11

10 20 30 40 50 60

Hình 3.12 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 (60) 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à yk là 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) = (53)

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

dt(x,y) = (54)

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 số đƣợc định nghĩa nhƣ sau:

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

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

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ì dw trở 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 ảnh 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.

3.5.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ống 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 đƣợ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 (56)

3. Cập nhật code vector: m m + 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 3.3.1.1b. 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 3.13 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 3.14– 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 3.14 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|| (57)

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 = (58)

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:

= (59)

Nj là 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

3.5.2.1 Thuật toán –Kmeans

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

3.5.2.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ơn Nthành viên thì loại nó và giảm k‟ đi một. 4. Cập nhật mỗi tâm nhóm theo trung bình mẫu của các thành viên của nó.

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.

 Nếu đây là lần lặp cuối cùng, đặt c = 0 và đi đến bƣớc 11.  Nếu k‟ k/ 2 đến bƣớc 8

 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 (61)

Trong đó n là số chiều của mẫu, xik là thành phần thứ I của mẫu thứ l trong nhóm Cj, yij là 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 Cj và tăng k thêm 1.

11. Tính các khoảng cách Dij theo 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ơn c

Một phần của tài liệu Luận văn thạc sĩ công nghệ thông tin Nhận diện chữ viết tay bằng mô hình markov ẩn (Trang 64)