Tải bản đầy đủ (.pdf) (51 trang)

BÁO CÁO TỐT NGHIỆP: NÉN TÍN HIỆU _EEG ppsx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.18 MB, 51 trang )


TRƯỜNG ………………….
KHOA……………………….

[\[\


BÁO CÁO TỐT NGHIỆP


ĐỀ TÀI:




NÉN TÍN HIỆU _EEG
Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 1 -

LỜI MỞ ĐẦU

Trong thập kỉ trước nén dữ liệu đã được sử dụng ở khắp mọi nơi. Có thể nói
rằng nén dữ liệu đã trở thành yêu cầu chung cho các hầu hết các phần mềm ứng dụng,
và cũng là một lĩnh vực nghiên cứu quan trọng và hấp dẫn trong khoa học máy tính.
Nếu không có các kĩ thuật nén dữ liệu thì sẽ không bao giờ có sự phát triển của
Internet, TV số, truyền thông di động hay sự phát triển của các kĩ thuật truyền thông
video. Ưu điểm nổi bật và hiệu quả của nén đã được áp dụng và phát triển nhiều lĩnh
vực khác như truyền thông đa phương tiện hay các lĩnh vực nghiên cứu khác. Thời
gian gần đây, một lĩnh vực đang phát triển rất nhanh và ngày càng thu hút sự quan tâm
của nhiều người đó là y tế từ xa (Telemedicine), mà nén đóng vai trò rất quan trọng.
Từ đó con người sẽ được chăm sóc sức khoẻ tốt hơn bằng cách có thể khám, chữa


bệnh từ bất kì một bệnh viện nào trên thế giới mà không cần phải đến tận nơi đó. Chỉ
cần giao tiếp với bác sĩ qua thiết bị thu ghi và phương tiện truyền thông thì sau đó sẽ
nhận được kết quả chẩn đoán và phương thức chữa bệnh của bác sĩ gửi về. Một trong
những tín hiệu EEG quan trọng nhất đó là tín hiệu EEG. Và trong bài báo cáo này sẽ
trình bày các phương pháp nén được sử dụng để nén tín hiệu EEG. Sự cần thiết của
việc này như thế nào sẽ được trình bày sau đây.












Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 2 -

CHƯƠNG 1: GIỚI THIỆU CHUNG

1.1. Nén dữ liệu
Nén dữ liệu hay còn gọi là mã hóa nguồn (source coding), là sự biểu diễn thông
tin của dữ liệu nguồn dưới dạng nén. Nó đã là một công nghệ then chốt trong cuộc
cách mạng truyền thông đa phương tiện số trong nhiều thập kỉ.
Mục tiêu của nén dữ liệu bao gồm việc tìm ra một thuật toán hiệu quả để loại bỏ dư
thừa tồn tại trong dữ liệu đó. Ví dụ cho một xâu kí tự S, thì cái gì là chuỗi kí tự có thể
thay thế được để cho ta một không gian tích trữ nhỏ hơn? Những giải pháp cho vấn đề

này là những thuật toán nén mà sẽ xuất phát từ chuỗi kí tự có thể thay thế được để thu
được số bit ít hơn trong toàn bộ số bit cần biểu diễn, cùng với những thuật toán giải
nén để khôi phục lại dữ liệu ban đầu.
Tuy nhiên, ít hơn bao nhiêu bit? Điều đó phụ thuộc vào việc lựa chọn thuật toán
mà được sử dụng và lượng dư thừa thông tin tồn tại trong dữ liệu nguồn. Dữ liệu khác
nhau có thể yêu cầu những thuật toán khác nhau để nhận ra dư thừa và loại bỏ nó. Rõ
ràng, điều này khiến cho những bài toán nén trở nên khó giải quyết vì yêu cầu chung
khó được trả lời một cách dễ dàng khi nó gồm quá nhiều trường hợp. May mắn thay,
chúng ta có thể đưa ra một số ràng buộc nhất định và kết hợp với kinh nghiệm về dữ
liệu cũng như mục đích sử dụng dữ liệu để đưa ra những thuật toán phù hợp.
Khi nén dữ liệu, chúng ta cần thiết phải phân tích những đặc tính của dữ liệu
được nén và hy vọng suy ra một vài mô hình để biểu diễn nén. Điều này làm tăng mức
độ đa dạng về mô hình dữ liệu. Do vậy, kĩ thuật biểu diễn là một khâu trọng tâm của kĩ
thuật nén. Một cách cụ thể, nén dữ liệu có thể được xem như là một phương pháp biểu
diễn hiệu quả một nguồn dữ liệu số như văn bản, hình ảnh, âm thanh hay bất kì một
dạng kết hợp nào của tất cả các loại này ví dụ như video.
Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 3 -

Hình 1: data in compression



Hình 2: figure of data compression

Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 4 -
Mục đích của nén dữ liệu là biểu diễn nguồn số này bằng số lượng bit ít nhất có
thể khi gặp những yêu cầu tối thiểu để khôi phục lại dữ liệu ban đầu. Lý thuyết thông
tin (information theory) được sử dụng nhiều trong nén dữ liệu.

1.2. Tín hiệu EEG (Electroencephalograph) và Sự cần thiết nén dữ liệu y sinh
(Biomedical data compression)


Hình 3: system 10/20

Một ứng dụng quan trọng về nén dữ liệu là trong lĩnh vực y học. Yêu cầu nén
tín hiệu y-sinh ngày càng cao do sự phát triển ngày càng đa dạng của các dịch vụ y tế
từ xa. Những ứng dụng y tế từ xa càng ngày càng dành được nhiều sự quan tâm,
nghiên cứu bởi nó cung cấp sự truy nhập dễ dàng tới những thủ tục chuẩn đoán bệnh
và đánh giá bệnh. Cần phải truyền một lượng lớn dữ liệu y sinh đã thúc đẩy sự cần
thiết của việc nén dữ liệu y sinh mà không mất thông tin quan trọng mang trên những
tín hiệu ghi đựơc mà có thể dẫn tới hành động chuẩn đoán hay đánh giá bệnh sai. Do
đó, nghiên cứu về nén tín hiệu y-sinh là rất cần thiết. Một trong những tín hiệu y-sinh
phổ biến hiện nay là tín hiệu điện não (EEG- Electroencephalogram). Tín hiệu EEG
ghi lại các hoạt động điện của não nhằm phục vụ các nghiên cứu về não, hay chẩn
đoán và điều trị bệnh nhân có rối lọan não. Ví dụ như, chuẩn đoán động kinh và vị trí
não bị tổn thương liên quan đến rối loạn này- một chứng bệnh rất phổ biến trên thế
giới cũng như ở Việt Nam.
Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 5 -
1.2.1. Tín hiệu EEG

Những hoạt động điện của vỏ não thường là những tín hiệu nhịp (rhythms) vì
chúng thường dao động lặp đi lặp lại. Sự đa dạng của tín hiệu nhịp EEG vô cùng lớn
và phụ thuộc vào nhiều yếu tố trong trạng thái tinh thần của đối tượng, như là mức độ
kích động, trạng thái đi bộ hay trạng thái ngủ. Thông thường, những tín hiệu được ghi
trên da đầu có biên độ nằm trong khoảng từ vài microvolts tới xấp xỉ 100 µV, và tần số
trong khoảng từ 0.5 đến 30-40 Hz.



Hình 4 : các tín hiệu nhịp EEG
Tín hiệu EEG cơ bản được chia thành 5 dải tần sau :
 Nhịp Alpha : là nhịp cơ sở của não người lớn. Là dạng sóng dễ nhận biết nhất,
đi thành chuỗi sóng 8-13 Hz với biên độ 30-50 mV

Hình 5: tín hiệu alpha
 Nhịp Beta : là sóng có tần số 4-35 Hz, điện thế khoảng 5-30 mV

Hình 6: tín hiệu Beta


Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 6 -
 Nhịp Delta : là một sóng chậm dưới 4 Hz và có biên độ thay đổi

Hình 7: tín hiệu Delta
 Nhịp Theta : bao gồm các sóng 4-8 Hz , thường có biên độ lớn hơn 20 mV

Hình 8: tín hiệu Theta
 Nhịp Gamma : có tần số > 30 Hz.
Đối với người lớn bình thường thì dải tần của tín hiệu EEG nằm giữa
khoảng 0.1-100 Hz.
Hầu hết những tín hiệu ở trên duy trì trong vài phút , trong khi có những tín hiệu
khác chỉ xảy ra trong vài giây, như nhịp gamma. Ngoài ra còn có những tín hiệu mà nó
không xuất hiện vào mọi lúc. Nó là những tín hiệu nhất thời, đột ngột, biểu thị hoạt
động quá mức, không bình thường của hoạt động điện của não
 Các gai (Spikes) là những biến đổi điện thế thoáng qua, nhanh, có biên độ thực
sự cao hơn hoạt động điện cơ bản. Có khoảng thời gian từ 20 – 70 ms



Hình 9: Spike đơn

 Sóng nhọn (Sharp waves) : là những sóng đơn độc, có khoảng thời gian từ 70 –
200 ms . Có biên độ xấp xỉ bằng với Spikes
 Phức hợp sóng gai (Spike-wave complexes) : là một sóng phức hợp của một
gai (spikes) và theo sau là một sóng chậm. Có tần số vào khoảng 3- 6 Hz

Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 7 -

Hình 10: Spike and Sharp wave

Sự xuất hiện của các dạng sóng này chỉ ra những hành động thần kinh sai lệch
thường được tìm thấy ở những người phải trải qua những cơn động kinh. Đó là những
tín hiệu biểu hiện bệnh lý.
1.2.2. Sự cần thiết nghiên cứu nén tín hiệu y sinh
Mong muốn nén dữ liệu EEG vì nhiều lý do.Như chúng ta đã biết, EEG là một
trong những phương pháp phổ biến giúp bác sĩ có thể xác định vị trí ổ bệnh (khu vực
phóng điện) và chức phận não bệnh nhân bị tổn thương. Là một phương pháp hữu hiệu để
phát hiện và chẩn đoán bệnh động kinh - một căn bệnh phổ biến và nguy hiểm. Theo
thống kê của Tổ Chức Y tế Thế giới (WHO), tỉ lệ người mắc bệnh động kinh trên thế giới
khoảng 0,5% dân số, thay đổi tuỳ theo từng quốc gia, từng vùng, từng dân tộc, như ở Pháp
và ở Mỹ là khoảng 0,85%; Canada là 0,6%. Tại Việt Nam khoảng 2% dân số trong đó có
đến 60% số bệnh nhân là trẻ em. Theo BS Lê Văn Tuấn, chuyên khoa nội thần kinh BV
Chợ Rẫy, TP.HCM: Động kinh đôi khi biến chứng và tai nạn có thể gặp khi bệnh nhân lên
cơn động kinh: cắn phải lưỡi, viêm phổi do hít phải dãi hay chất nôn ói; gãy xương do
chấn thương; tổn thương não do cưoin kéo dài làm não thiếu oxy; ngừng thở do tắc nghẽn
đường thở… Tuy nhiên, bệnh hoàn toàn có thể điều trị nếu được phát hiện sớm và điều trị
đúng cách thì khả năng hoàn toàn khỏi bệnh là rất cao. Đối với trẻ em, nếu không được

điều trị kịp thời, hoặc điều trị không đúng cách dẫn tới tình trạng không khống chế được
cơn co giật. Lâu dần, trẻ sẽ bị thiểu năng trí tuệ, rối loạn hành vi. Những cơn co giật sẽ
làm cho hệ miễn dịch của trẻ yếu đi, dễ nhiễm các bệnh khác và dễ tử vong hơn trẻ bình
thường. Tre bị động kinh không được điều trị đúng thuốc, đúng phác đồ nên sinh ra kháng
thuốc. Khi đó, khả năng hồi phục sẽ khó khăn hơn rất nhiều. Do đó việc phát hiện kịp thời
động kinh, chẩn đoán chính xác bệnh và điều trị hợp lý là vô cùng quan trọng, cấp bách và
cần thiết. Song không phải bất kì bệnh viện nào cũng làm được điều đó vì nó hoàn toàn
phụ thuộc vào trình độ và khả năng của bác sĩ đọc điện đồ não. Tín hiệu EEG ghi được rất
phức tạp bởi bản ghi không chỉ có tín hiệu nền cơ bản (alpha, gamma,…), các xung bất
thường (spike, sharp…) mà nó còn có rất nhiều các loại artifact (ECG, EMG…). Hơn nữa
việc nhận biết các sóng nhịp cơ bản cũng không đơn giản, dễ dàng do các nhịp này xuất
hiện phụ thuộc vào tuổi, vào trạng thái tinh thần của bệnh nhân. Song chúng ta có thể khắc
Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 8 -
phục được khó khăn này bằng việc gửi tín hiệu điện não EEG từ một nơi không đáng tin
cậy đến những nơi tin cậy mà ở đó có những bác sĩ giỏi, kinh nghiệm thực hiện việc đọc
bản ghi và chẩn đoán lâm sàng. Từ đây phát sinh một yêu cầu cần thiết là thực hiện truyền
hiệu quả tín hiệu EEG cả về mặt vật lý lẫn hiệu quả kinh tế. Do đó thực hiện nén EEG là
cần thiết. Hơn nữa thực hiện công việc này cũng sẽ giúp ích rất nhiều trong việc nghiên
cứu về tín hiệu EEG như việc loại bỏ artifacts, dò tìm xung động kinh, và phân loại các
dạng xung này bằng việc gửi bản ghi điện não từ bệnh viện đến nơi thực hiện nghiên cứu.
Trước tiên nén là để giảm thời gian truyền, giảm không gian lưu trữ, và trong những hệ
thống xách tay, nó giảm yêu cầu bộ nhớ hay tăng số lượng kênh và dải thông. Một trong
những mục đích đầu tiên của việc làm này là tự động thu thập những dữ liệu EEG mà
được yêu cầu với những đặc tính hạn chế từ trước ( luồng dữ liệu 20 480 bps) từ bệnh
viện ngoại vi hay từ nhà bệnh nhân, mà truyền qua môi trường truyền tốc độ thấp như là
đường dây điện thoại đóng mạch hay mạng điện thoại tế bào, với những phần cứng giá rẻ,
mà không nhất thiết phải có mặt của bác sĩ.
Những thuật toán nén dữ liệu cho phép người bệnh thực thi một hệ thống xách
tay để gửi tín hiệu EEG (20 kênh, 128 Hz, 8-b), trong thời gian thực qua đường điện

thoại với modem 14 400 bps. Một y tá trực thu tín hiệu và trong quá trình thu, bác sĩ
chỉ cần liên lạc với y tá qua điện thoại. Vì vậy, bệnh nhân không cần gặp trực tiếp bác
sỹ điều trị nữa. Dữ liệu được thu thập từ nơi bệnh nhân nằm và sau đó kết quả chẩn
đoán, phương pháp điều trị sẽ được gửi trở lại. Điều này cũng dẫn đến việc giảm giá
toàn bộ, khi việc chuyên chở bệnh nhân là không cần nữa.
Một động lực khác để nén dữ liệu là đối với nhiều trường hợp ở đó lượng dữ
liệu được lưu trữ vượt quá khả năng của các thiêt bị lưu trữ thương mại. Trong trường
hợp này, giá cả và những giới hạn về công nghệ của những thiết bị lưu trữ khối có sẵn
bắt buộc chúng ta phải giảm tốc độ lấy mẫu từ 128 tới 64 Hz và số lượng kênh ghi từ
20 kênh xuống 12 kênh, tuy nhiên chất lượng tín hiệu vẫn có thể chấp nhận được, vì
vậy những kĩ thuật nén dữ liệu EEG rất hữu ích và đạt hiệu quả thương mại cao .
Bộ vi xử lý mà giám sát thiết bị thu EEG có thể được dành cho nén dữ liệu chỉ
trong một phần nhỏ thời gian giữa 2 mẫu tín hiệu vào liên tiếp. Chiều dài từ mà mã
được tạo ra từ những thuật toán nén có thể là rất dài (những tín hiệu xảy ra hiếm khi),
khiến mất dữ liệu do khả năng tính toán giới hạn của bộ vi xử lý. Để đối phó với bộ
biến đổi A/D tốc độ dữ liệu và yêu cầu tính toán thấp, một kĩ thuật nén dựa vào chiều
dài từ mã lớn nhất cố định được chấp nhận.
Từ sự cần thiết đó, mục tiêu của đề tài này là nghiên cứu một vài thuật toán để
tìm ra được phương pháp nén EEG hiệu quả nhất dựa trên một yêu cầu và tiêu chí
đánh giá nào đó.
Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 9 -

CHƯƠNG 2: LÝ THUYẾT NÉN DỮ LIỆU

2.1. Những vấn đề chung
Mã chiều dài thay đổi là mã được mong muốn cho việc nén dữ liệu vì chúng ta có
thể đạt được việc tiết kiệm toàn cục bằng cách gán những từ mã ngắn cho những kí tự
xuất hiện thường xuyên và những từ mã dài hơn cho những kí tự xuất hiện ít hơn.
Ví dụ, cho mã chiều dài thay đổi (0, 100, 101, 110, 111) với chiều dài từ mã (1, 3, 3, 3,

3) cho bảng kí tự (A, B, C, D, E), và chuỗi kí tự nguồn là BAAAAAAAC với tần suất
của mỗi kí tự là (7, 1, 1, 0, 0). Khi đó lượng bít trung bình được yêu cầu là:
(2.1)
Việc này đã tiết kiệm được gần một nửa số bit so với việc biểu diễn bằng mã chiều dài
cố định 3 bits/symbol
Một nguồn được mô hình hoá bằng một bảng S = (s1, s2, …, sn) và sự phân phối xác
suất tương ứng là P = (p1, p2,…,pn)
Giả sử chúng ta xuât phát từ mã C =(c1, c2, …, cn) với chiều dài mỗi từ mã là L =
(l1, l2,…, ln).



Hình 11 : Code and source data


Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 10 -
Mục tiêu của chúng ta là cực tiểu hoá chiều dài trung bình của từ mã :
(2.2)
Do vậy mã chiều dài thay đổi rất hữu ích cho việc nén dữ liệu. Tuy nhiên, một
mã chiều dài thay đổi sẽ trở nên vô giá trị nếu như không thể nhận ra một cách duy
nhất những từ mã của mã này từ bản tin đã được mã hoá
Ví dụ : Cho mã chiều dài thay đổi (0, 10, 010, 101) của bảng kí tự (A, B, C, D) . Một
đoạn tin là ‘0100101010’ có thể được giải mã nhiều hơn một cách. Ví dụ
‘0100101010’ có thể dịch là ‘ 0 10 010 101 0’ là ‘ ABCDA’ hoặc ‘010 0 101 010 ‘ là
CADC.
Khi đó sẽ không nhận được chính xác dữ liệu nguồn
Một mã được coi là có khả năng giải mã duy nhất nếu có duy nhất một cách có
thể để giải mã bản tin mã hoá.
Một giải pháp dường như khả quan cho những trường hợp mã không phải là mã có khả

năng giải mã duy nhất đó là thêm vào những kí tự phân cách mở rộng trong giai đoạn
mã hoá. Ví dụ, chúng ta sử dụng kí tự ‘/’, sau đó mã hoá chuối kí tự ABCDA là
‘0/10/010/101/0’. Tuy nhiên, phương pháp này phải trả giá quá đắt bởi vì kí tự mở
rộng ‘/’ phải được chèn vào cho mỗi từ mã.
Mã lý tưởng trong trường hợp này là một mã mà không chỉ có chiều dài thay đổi
mà còn có đặc tính tự phân cách. Một loại được gọi là mã tiền tố (prefix code) là mã
như thế. “Tiền tố” là một vài bit đầu tiên của một từ mã. Khi hai từ mã có chiều dài
khác nhau, có thể từ mã ngắn hơn sẽ giống hệt với vài bít đầu tiên của từ mã dài hơn.
Một mã tiền tố (prefix code) là mã trong đó không từ mã nào là tiền tố của từ mã nào,
hay cũng không thể một từ mã mà xuất phát từ một từ mã khác bằng cách cộng thêm
vào sau vài bit từ từ mã ngắn hơn.

Hình 12 : A Prefix code
Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 11 -
Những mã tiền tố chỉ là một tập con của mã khả năng giải mã duy nhất. Nên nếu
một mã không phải là mã tiền tố thì chúng ta không thể khẳng định rằng từ mã này
không thể giải mã một cách duy nhất.
Ví dụ : mã (0, 01, 011, 0111) cho (A, B, C, D). Rõ ràng đây không phải là mã tiền tố
vì từ mã này là tiền tố của từ mã kia. Song nếu nhận được một bản tin mã hoá
01011010111, thì chỉ có một cách giải mã duy nhất là 01 011 01 0111 đó là BCBD.
Một số mã có khả năng giải mã duy nhất nhưng yêu cầu phải xem xét ngay từ
đầu trong suốt quá trình giải mã. Điều này khiến chúng không hiệu quả bằng mã tiền
tố (prefix codes)
2.2. Lý thuyết thông tin
2.2.1. Khái niệm thông tin

Thông tin là những tính chất xác định của vật chất mà con người (hoặc hệ thống
kĩ thuật) nhận được từ thế giới vật chất bên ngoài hoặc từ những quá trình xảy ra trong
bản thân nó.

Về mặt thông kê người ta đưa ra một số khái niệm về thông tin như sau:
 Điều gì đã xác định (khẳng định được, đoán chắc được, không bấp bênh,…) thì
không có thông tin và người ta nói rằng lượng thông tin chứa trong điều ấy
bằng không
 Điều gì không xác định (bất định) thì điều đó có thông tin và lượng thông tin
chứa trong nó khác không. Nếu ta càng không thể ngờ tới điều ấy thì thông tin
điều đó mang lại cho ta càng lớn
Tóm lại, ta nhận thấy khái niệm thông tin gắn liền với sự bất định của đối tượng ta
cần xét. Có sự bất định về một đối tượng nào đó thì những thông báo về đối tượng
đó sẽ cho ta thông tin. Khi không có sự bất định thì sẽ không có thông tin về đối
tượng đó. Như vậy, khái niệm thông tin chỉ là một cách diễn đạt khác đi của khái
niệm sự bất định.
Trước khi nhận tin (được thông báo) về một đối tượng nào đấy thì vẫn còn sự
bất định về đối tượng đó, tức là độ bất định về đối tượng đó khác không (có thể lớn
hay nhỏ). Sau khi nhận tin (đã được hiểu rõ hoặc hiểu một phần) về đối tượng thì
độ bất định của nó giảm đến mức thấp nhất, hoặc hoàn toàn mất. Như vậy, “ thông
tin là độ bất định đã bị thủ tiêu” hay nói một cách khác “ làm giảm độ bất định kết
quả cho ta thông tin”

Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 12 -
2.2.2. Lượng thông tin
2.2.2.1. Định nghĩa lượng thông tin

Như chúng ta đã biết : trước khi nhận tin thì độ bất định lớn nhất, sau khi nhận
tin (hiểu rõ hoặc hiểu một phần về đối tượng thì độ bất định giảm đến mức thấp nhất),
có khi triệt tiêu hoàn toàn. Như vậy, có một sự chệnh lệch giữa độ bất định trước khi
nhận tin và độ bất định sau khi nhận tin. Sự chênh lệch đó là mức độ thủ tiêu độ bất
định. Độ lớn, nhỏ của thông tin mang đến cho ta phụ thuộc trực tiếp vào mức độ lệch
đó. Vậy :

“Lượng thông tin là mức độ bị thủ tiêu của độ bất định  Lượng thông tin = độ
chêch của độ bất định trước và sau khi nhận tin = độ bất định trước khi nhận tin - độ
bất định sau khi nhận tin (độ bất định tiên nghiệm - độ bất định hậu nghiệm) “.
2.2.2.2.Giới thiệu về lý thuyết thông tin

Mặc dù những kiến thức về đo lượng thông tin đã được sử dụng một thời gian,
song người đã gom góp tất cả mọi thứ lại thành một lĩnh vực được gọi là lý thuyết
thông tin (information theory) là Claude Elwood Shannon, một kĩ sư điện ở phòng thí
nghiệm Bell. Shannon đã định nghĩa một đại lượng gọi là lượng thông tin (self-
information). Giả sử chúng ta có một sự kiện A, là tập hợp của các kết cục của một thí
nghiệm ngẫu nhiên nào đó. Nếu sự kiện A xảy ra với xác suất là P(A), thì lượng thông
tin của A được cho bởi
i(A) = log
b
)(
1
AP
= - log
b
P(A) (2.3)
Chú ý rằng chúng ta không chỉ cụ thể cơ số của hàm log. Chúng ta sẽ thảo luận
sau về vấn đề chi tiết hơn. Sử dụng hàm log để đo thông tin không phải là sự lựa chọn
tuỳ ý. Nhớ lại rằng log(1) = 0, và –log(x) tăng khi x giảm từ 0 đến 1. Vì vậy, nếu xác
suất của một sự kiện là thấp, thì lượng thông tin của nó là cao; nếu xác suất của một sự
kiện là cao, lượng thông tin tương ứng là thấp.
Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 13 -


Hình 13: self-information

Một tính chất khác của định nghĩa toán học về thông tin là lượng thông tin thu
được từ sự xảy ra của hai sự kiện độc lập là tổng lượng thông tin thu được từ sự xảy ra
của mỗi sự kiện riêng lẻ. Giả sử rằng A và B là hai sự kiện độc lập. Lượng thông tin
tương ứng của sự xảy ra của cả sự kiện A và B là
i(AB) =log
b
)(
1
ABP
(2.4)
Khi A và B là độc lập thì ta có :
P(AB) = P(A)P(B) (2.5)
Và do đó
i(AB) = log
b
)()(
1
BPAP

= log
b
)(
1
AP
+ log
b
)(
1
BP


= i(A) + i(B) (2.6)
Đơn vị thông tin phụ thuộc vào cơ số của hàm log. Nếu chúng ta sử dụng cơ số 2,
thì đơn vị là bits, nếu sử dụng cơ số e, đơn vị là nats; và nếu sử dụng có số 10, thì đơn
vị là hartleys.
Lưu ý rằng tính toán thông tin bằng bits, chúng ta cần phải lấy logarithm cơ số 2
của xác suất. Bởi vì hàm này không xuất hiện trong máy tính, nên ta phải thực hiện
như sau :

Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 14 -
Ta có : log
b
x = a
Suy ra : b
a
= x
Vì vậy nếu ta muốn lấy log cơ số 2 của x
Log
2
x = a => 2
a
= x,
Chúng ta muốn tìm giá trị của a. Chúng ta có thể lấy hàm log tự nhiên (log cơ số e)
hay log cơ số 10 cả 2 vế (2 hàm này có xuất hiện trong máy tính). Thì
Ln(2
a
) = lnx => aln2 = lnx
Và a =
2
ln

ln x
(2.7)

Nếu chúng ta có một tập hợp những sự kiện độc lập A
i
, là những tập hợp của các
kết cục của thí nghiệm S có nghĩa là
UA
i
= S
Ở đây S là không gian mẫu, khi đó lượng thông tin trung bình của thí nghiệm ngẫu
nhiên được cho bởi công thức :
H =  P(A
i
)i(A
i
) = - P(A
i
)log
b
P(A
i
). (2.8)
Đại lượng này được gọi là entropy của thí nghiệm. Một trong những đóng góp
của Shannon là ông đã chỉ ra rằng nếu thí nghiệm là một nguồn bao gồm những kí tự
A
i
, từ tập hợp A, thì entropy là đại lượng đo số lượng kí tự nhị phân trung bình cần để
mã hoá lối ra của nguồn. Shanno đã chứng minh rằng một sơ đồ nén không mất thông
tin tốt nhất (lossless compression) là có thể thực hiện được nén lối ra nguồn với lượng

bit trung bình bằng với entropy của nguồn.
Tập hợp những kí tự A thường được gọi là bảng chữ của nguồn, và những kí tự
được gọi là những chữ cái. Đối với một nguồn S tổng quát với bảng chữ A = {1, 2,…,
m} mà tạo ra một chuỗi {X
1
, X
2
, …}, thì entropy được cho bởi
H(S) =
n
lim
Gn
n
1
(2.9)
Ở đây
Gn =
  







mi
i
mi
i
min

in
nn iXiXiXP
1
11
2
12 1
2211 log), ,,( P(X
1
=i
1
,X
2
=i
2
,…, X
n
=i
n
)
(2.10)
Và (X
1
, X
2
, …, X
n
) là một chuỗi chiều dài n từ nguồn. Nếu mỗi thành phần trong
chuỗi là phân phối độc lập đồng nhất (independent and identically distributed (iid)) ,
thì chúng ta cho có chứng minh rằng
Gn = -n





mi
i
iXPiXP
1
1 1
1111 )(log)(
Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 15 -
Và phương trình entropy trở thành
H(S) = -

)(log)( 11 XPXP (2.11)
Đối với đa số các nguồn phương trình (2.9) và (2.11) là không đồng nhất. Nếu
chúng ta cần phải phân biệt giữa hai phương trình đó, thì chúng ta sẽ gọi đại lượng
được tính toán theo phưong trình (2.11) là entropy bậc nhất (first-order entropy) của
nguồn, trong khi đại lượng theo phương trình (2.9) được gọi là entropy của nguồn
Thông thường không thể biết được entropy đối với một nguồn vật lý.Vì thế
chúng ta phải ước lượng entropy. Việc ước lượng entropy phụ thuộc vào giả thiết của
chúng ta về cấu trúc của chuỗi nguồn.
2.3. Các phương pháp nén dữ liệu
2.3.1. Các phương pháp nén không mất thông tin
2.3.1.1 Mã Huffman

Một thuật toán mã hoá rất phổ biến là thuật toán mã hoá Huffman. Đầu tiên
chúng ta sẽ trình bày một thủ tục để xây dựng mã Huffman khi biết được mô hình xác
suất cho nguồn, sau đó một thủ tục giành cho việc xây dựng mã khi không biết được

số liệu thống kê của nguồn.
Kĩ thuật này được phát triển bởi David Huffman. Mã được tạo ra bằng cách sử dụng kĩ
thuật này hay thủ tục này được gọi là mã Huffman. Những mã này là những mã prefix
và là mã tối ưu đối với mô hình đã cho (tập hợp xác suất).
Thủ tục Huffman được dựa trên hai quan sát đối với mã tiền tố tối ưu.
1. Trong một mã tối ưu, những kí tự mà xảy ra thường xuyên hơn ( có xác suất
xảy ra cao hơn) sẽ có từ mã ngắn hơn những kí tự mà xảy ra ít hơn
2. Trong một mã tối ưu, hai kí tự mà tần xuất xảy ra thấp nhất sẽ có cùng chiều
dài.
Chúng ta dễ dàng nhận ra rằng quan sát đầu tiên là đúng. Nếu những kí tự mà xảy
ra thường xuyên hơn có từ mã dài hơn từ mã của những kí tự xảy ra ít thường xuyên
hơn, thì số lượng bit trung bình trên mỗi kí tự sẽ lớn hơn nếu trường hợp ngược lại.
Vì vậy, một mã gán những từ mã dài hơn cho những kí tự xảy ra thường xuyên không
thể tối ưu
Chúng ta hãy xem xét tại sao quan sát thứ hai đúng, xét trường hợp sau. Giả sử
tồn tại một mã tối ưu C trong đó hai từ mã tương ứng với hai kí tự xác suất thấp nhất
không có chiều dài giống nhau. Giả sử từ mã dài hơn dài hơn k bits so với từ mã ngắn
Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 16 -
hơn. Do đây là mã prefix, nên từ mã ngắn hơn không thể là tiền tố của từ mã dài hơn.
Điều này có nghĩa là thậm chí nếu chúng ta để k bits rơi vào k vị trí cuối cùng của từ
mã dài hơn, thì hai từ mã này vẫn hoàn toàn khác biệt. Do những từ mã này tương ứng
với những kí tự xác suất thấp nhất trong bảng kí tự, nên sẽ không có một từ mã nào
khác có thể dài hơn những từ mã này; vì vậy, sẽ không có nguy cơ là từ mã ngắn hơn
sẽ trở thành tiền tố của từ mã khác nào đó. Hơn nữa, cắt bỏ k bit này chúng ta sẽ thu
được một từ mã mới có chiều dài trung bình ngắn hơn C . Nhưng điều này vi phạm đến
luận điểm ban đầu của chúng ta là C là một mã tối ưu. Vì vậy đối với một mã tối ưu
quan sát thứ hai là đúng.
Thu được thủ tục mã Huffman bằng cách bổ sung một yêu cầu đơn giản đối với
hai quan sát này. Yêu cầu này là những từ mã tương ứng với hai kí tự có xác suất thấp

nhất chỉ khác nhau ở bit cuối cùng. Có nghĩa là, nếu  và  là hai kí tự xác suất thấp
nhất trong bảng kí tự, nếu từ mã của  là m*0, thì từ mã của  sẽ là m*1. Ở đây m là
một chuỗi bit 0 và 1, và * biểu thị sự móc nối vào nhau.
Yêu cầu này không vi phạm hai quan sát của chúng ta và dẫn đến một thủ tục mã
hoá rất đơn giản.

Chiều dài trung bình của một mã là :
L =

)()( ii acaP
(2.12)
Trong đó P(a
i
) là xác suất của kí tự a
i
còn c(a
i
) là từ mã tương ứng.
Đo hiệu quả của mã này là dư thừa của nó – đó là sự khác nhau giữa entropy và
chiều dài trung bình.
Thủ tục này sẽ được minh hoạ bằng ví dụ sau:
Huffman code for the orginal
Five-letter alphabel

Letter Probability Codeword

a2 0.4 1
a1 0.2 01
a3 0.2 000
a4 0.1 0010

a5 0.1 0011


Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 17 -
Huffman Tree

(0.4) (0.4) (0.6) 0
a2(0.4)
(0.2) (0.4) 0 (0.4) 1 (1.0)
a1(0.2)
(0.2) 0 (0.2) 1
a3(0.2)

a4(0.1) 0 (0.2)

a5(0.1) 1

Hình 14: Cây huffman

Một cách khác xây dựng mã Huffman sử dụng thực tế là mã Huffman, do ưu
điểm của mã tiền tố, có thể biểu diễn là một cây nhị phân trong đó những nút ngoài
hay lá ngoài sẽ tương ứng với những kí tự. Mã Huffman này đối với bất kì kí tự nào có
thể thu được bằng cách di chuyển trên cây từ nút gốc đến lá tương ứng với kí tự, cộng
bit 0 tới từ mã mỗi lần chúng ta đi qua một cành cao hơn, và bit 1 mỗi lần đi qua cành
thấp hơn.
Chúng ta xây dựng cây nhị phân bắt đầu tại những nút lá. Như đã biết những từ
mã của hai kí tự với xác suất nhỏ nhất là giống nhau ngoại trừ bit cuối cùng. Điều này
có nghĩa là việc di chuyển từ gốc tới lá tương ứng với hai kí tự này là như nhau trừ
bước cuối cùng. Tức là những lá tương ứng với hai kí tự với xác suất thấp nhất sẽ là

con của cùng một gốc. Khi chúng ta kết nối những lá tương ứng với những kí tự có xác
suất thấp nhất tới một nút duy nhất, thì chúng ta coi như nút này là một kí tự của bảng
chữ đã được giảm bớt. Xác suất của kí tự này sẽ là tổng xác suất của các con của nó.
Bây giờ chúng ta sẽ sắp xếp những nút tương ứng bảng kí tự giảm bớt và áp dụng quy
tắc như trên để tạo ra một nút bố cho những nút tương ứng với hai kí tự có xác suất
thấp nhất trong bảng giảm bớt. Cứ tiếp tục như thế cho đến khi ta thu được một nút
duy nhất, đó chính là nút gốc. Để thu được một mã cho mỗi kí tự, chúng ta di chuyển
trên cây từ gốc tới mỗi nút lá, bằng cách gán 0 tới cành cao hơn và 1 cho cành thấp
hơn
Ví dụ :
Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 18 -
Cho bảng tần suất của 5 chữ cái A,B,C,D,E như sau tương ứng là 0.10; 0.15;
0.30; 0.16; 0.29
A B C D E
0.10

0.15

0.30

0.16

0.29

Quá trình xây dựng cây Huffman diễn ra như sau :





Như vậy bộ mã tối ưu tương
ứng là :









A B C

D

E
010

011

11

00

10

Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 19 -
2.3.1.2. Mã số học
Một phương pháp khác nhằm tạo ra mã chiều dài biến thiên, phương pháp này

ngày càng được sử dụng phổ biến được gọi là phương pháp mã hoá số học
(arithmetic coding). Mã số học đặc biệt hữu dụng khi xử lý những nguồn có bảng
chữ nhỏ (small alphabets), như là nguồn nhị phân, và bảng chữ có xác suất của các kí
tự rất lệch nhau. Nó cũng là một phương pháp rất hữu hiệu khi những vấn đề mô
hình (modeling) và mã hoá (coding) của phương pháp nén không mất thông tin
(lossless compression) tách rời nhau.
Như chúng ta đã nghiên cứu về phương pháp mã hóa Huffman, mà bảo đảm tốc
độ mã hóa R trong giới hạn 1 bit của entropy H. Tốc độ mã hóa là số bit trung bình
được sử dụng để biểu diễn một kí tự từ nguồn và, đối với một mô hình xác suất đã cho,
entropy là tốc độ thấp nhất mà tại đó nguồn có thể được mã hóa. Chúng ta có thể thắt
chặt giới hạn này một chút. Nhận thấy rằng thuật toán Huffman sẽ tạo ra một mã mà
tốc độ của nó nằm trong giới hạn p
max
+ 0.086 của entropy, ở đây p
max
là xác suất của
kí tự xảy ra thường xuyên nhất. Trong nhiều ứng dụng, có khi kích thước bảng chữ là
lớn, p
max
nhìn chung là khá nhỏ, và độ chênh lệch với entropy, đặc biệt về tỉ lệ tốc độ,
là khá nhỏ. Tuy nhiên, có những trường hợp ở đó bảng chữ là nhỏ và xác suất xảy ra
của những kí tự khác nhau rất lệch, giá trị của p
max
có thể khá lớn và mã Huffman có
thể trở nên khá không hiệu quả khi so sánh với entropy. Một cách để tránh vấn đề này
là chặn khối nhiều hơn một kí tự với nhau và tạo ra một mã Huffman mở rộng. Tuy
nhiên, thực tế không phải phương thức này bao giờ cũng thực hiện được.
Tạo ra những từ mã (codewords) cho nhóm hoặc chuỗi kí tự thực sự hiệu quả
hơn là tạo ra một từ mã riêng biệt cho mỗi kí tự trong chuỗi. Song phương pháp này
trở nên không khả thi khi cố gắng tạo ra mã Huffman cho chuỗi kí tự dài. Để tìm từ

mã Huffman cho một chuỗi dài m (sequence of symbols m) riêng biệt chúng ta cần
những từ mã cho tất cả những chuỗi chiều dài m có thể. Việc này sẽ làm cho kích
thước của sách mã (codebook) tăng theo hàm mũ. Chúng ta cần một phương pháp
gán từ mã cho chuỗi riêng biệt này mà không phải tạo những mã cho tất cả các chuỗi
có cùng chiều dài. Kĩ thuật mã hoá số học (arithmetic coding technique) sẽ thực hiện
được yêu cầu này.
Trong mã hoá số học, phải tạo ra một bộ nhận dạng duy nhất hay một nhãn
(tag)cho chuỗi được mã hoá. Nhãn này tương ứng với một phân số nhị phân, cái mà sẽ
trở thành mã nhị phân của chuỗi. Thực tế việc tạo nhãn và mã nhị phân là hai quá trình
giống nhau. Tuy nhiên, chúng ta có thể hiểu dễ dàng hơn phương pháp mã số học nếu
về mặt lý thuyết chia phương pháp này thành hai giai đoạn. Trong giai đoạn đầu tạo ra
một bộ nhận dạng duy nhất hay nhãn cho chuỗi kí tự đã cho. Sau đó cho nhãn này một
Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 20 -
mã nhị phân duy nhất . Mã số học duy nhất có thể được tạo ra cho một chuỗi dài m mà
không cần phải tạo ra mọi từ mã cho những chuỗi cùng chiều dài. Điều này không
giống với mã Huffman.
Để phân biệt một chuỗi kí tự này với một chuỗi kí tự khác chúng ta cần phải gán
nhãn cho nó bằng một bộ nhận dạng duy nhất. Một tập hợp nhãn có thể dùng biểu diễn
những chuỗi kí tự là những số trong khoảng đơn vị [0, 1). Do trong khoảng đơn vị [0,
1) có vô số số, nên có thể gán một nhãn duy nhất cho mỗi kí tự riêng biệt. Để làm điều
này chúng ta cần một hàm mà sẽ ánh xạ những chuỗi kí tự vào khoảng đơn vị. Một
hàm mà ánh xạ những biến ngẫu nhiên, và chuỗi của biến ngẫu nhiên vào khoảng đơn
vị là một hàm phân phối tích luỹ (cdf) của biến ngẫu nhiên của nguồn.
Trước khi bắt đầu triển khai mã hóa số học, chúng ta cần phải thiết lập một số kí
hiệu. Chúng ta đã biết rằng một biến ngẫu nhiên ánh xạ những kết cục, hay tập hợp
những kết cục của một thí nghiệm tới những giá trị trên trục số thực. Sử dụng phương
pháp này, chúng ta cần ánh xạ những kí tự nguồn tới những số. Để thuận lợi, chúng ta
sử dụng ánh xạ
X(a

i
) = i a
i
 A (2.13)
Ở đây, A = {a
1
, a
2
, …, a
m
} là bảng chữ cho một nguồn rời rạc và X là một biến ngẫu
nhiên. Việc ánh xạ này có nghĩa rằng một mô hình xác suất cho trước của nguồn,
chúng ta cũng có một hàm mật độ xác suất đối với biến ngẫu nhiên là :
P(X = i) = P(a
i
)
Và hàm mật độ tích lũy được xác định như sau :
F
x
(i) = 
i
k=1
P(X = k) (2.14)
Chú ý rằng đối với mỗi kí tự a
i
với xác suất khác không chúng ta có một giá trị
riêng biệt của F
x
(i). Chúng ta sẽ sử dụng điều này để sau đó phát triển mã số học.
Thủ tục tạo nhãn thực hiện bằng cách giảm kích thước của khoảng mà trong đó

nhãn cư trú do càng ngày nhận càng nhiều những phần tử của chuỗi.
Hãy bắt đầu bằng việc đầu tiên chia khoảng đơn vị thành những khoảng con có
dạng [F
x
(i-1), F
x
(i)), i = 1, …, m. Vì giá trị cực tiểu của hàm phân phối tích luỹ (cdf)
bằng không và giá trị cực đại bằng một, nên việc phân chia phải chính xác khoảng đơn
vị. Chúng ta liên kết khoảng con [F
x
(i-1), F
x
(i)) với kí tự a
i
. Sự xuất hiện của kí tự đầu
tiên trong chuỗi sẽ giới hạn khoảng chứa nhãn từ một trong những khoảng con này.
Giả sử rằng kí tự đầu tiên là a
k
. Sau đó thì khoảng chứa giá trị nhãn sẽ là khoảng [F
x
(k-
1), F
x
(k)). Bây giờ khoảng con này sẽ được phân chia chính xác theo tỉ lệ giống như
khoảng nguồn. Có nghĩa là khoảng thứ j tương ứng với kí tự a
j
được cho bởi [F
x
(k-1) +
F

x
(j-1)/(F
x
(k) – F
x
(k-1), F
x
(k-1) + F
x
(j)/(F
x
(k) – F
x
(k-1)). Vì thế nếu kí tự thứ hai trong
chuỗi là a
j
, thì khoảng chứa giá trị nhãn trở thành [F
x
(k-1) + F
x
(j-1)/(F
x
(k) – F
x
(k-1),
Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 21 -
F
x
(k-1) + F

x
(j)/(F
x
(k) – F
x
(k-1)). Mỗi kí tự tiếp theo khiến cho nhãn tương ứng bị giới
hạn tới một khoảng mà được phân chia nữa với tỉ lệ giống nhau.
Xét Ví dụ:
Xét một bảng chữ 3 kí tự A = {a
1
, a
2
, a
3
} với xác suất p(a
1
) = 0.7, p(a
2
) = 0.1, và
p(a
3
) = 0.2. Sử dụng phương trình (2.14) ta có F
x
(1) = 0.7, F
x
(2) = 0.8 và F
x
(3) = 1. Sự
phân chia này được biểu diễn bằng hình sau:



Hình 15: Giới hạn khoảng chứa nhãn cho chuỗi lối vào (a
1
, a
2
, a
3
)

Phần con mà nhãn cư trú trong đó phụ thuộc vào kí tự đầu tiên của chuỗi được
mã hóa. Ví dụ, nếu kí tự đầu tiên là a
1
, nhãn sẽ nằm trong khoảng [0.0, 0.7); nếu kí tự
đầu tiên là a
2
, nhãn nằm trong khoảng [0.7, 0.8), nếu là a
3
, thì nhãn sẽ nằm trong
khoảng từ [0.8, 1.0). Khi đã xác định được khoảng chứa nhãn thì những khoảng con
còn lại sẽ bị xóa bỏ, và khoảng được giữ lại này lại được phân chia ra thành các
khoảng con khác với cùng một tỉ lệ giống như khoảng nguồn. Giả sử kí tự đầu tiên là
a
1
. Nhãn sẽ nằm trong khoảng con [0.0, 0.7). Sau đó khoảng này lại được chia theo tỉ
lệ chính xác giống như khoảng nguồn, để tạo ra những khoảng con [0.0, 0.49), [0.49,
0.56), [0.56, 0.7). Khoảng đầu tiên tương ứng với kí tự a
1
, khoảng thứ hai tương ứng
với kí tự a
2

, và khoảng còn lại [0.56, 0.7) tương ứng với kí tự a
3
. Giả sử rằng kí tự thứ
hai trong chuỗi là a
2
. Khi đó giá trị nhãn được giới hạn nằm trong khoảng [0.49, 0.56).
Bây giờ chúng ta phân chia khoảng này thành các khoảng con theo cùng tỉ lệ như
Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 22 -
khoảng ban đầu, thu được các khoảng sau : khoảng [0.49, 0.539) tương ứng với kí tự
a
1
, [0.539, 0.546) tương ứng với kí tự a
2
, và [0.546, 0.56) tương ứng với kí tự a
3
. Nếu
kí tự thứ ba là a
3
, nhãn sẽ bị giới hạn trong khoảng [0.546, 0.56), sau đó khoảng này có
thể sẽ được chia nhỏ hơn nữa. Quá trình này sẽ tiếp tục cho đến khi hoàn thành xong
chuỗi nguồn theo cách thức như trên.
2.3.1.3.Kĩ thuật từ điển

Kĩ thuật từ điển là một kĩ thuật nén được kết hợp chặt chẽ với cấu trúc trong dữ
liệu để tăng lượng nén. Những kĩ thuật này – cả phương pháp tĩnh và thích nghi
(adaptive or dynamic) – đều xây dựng một danh sách những mẫu xảy ra phổ biến và
mã hóa những mẫu này bằng cách truyền chỉ số của nó trong danh sách. Chúng hữu
dụng nhất với những nguồn có một lượng tương đối nhỏ những mẫu được tạo ra khá
thường xuyên như là nguồn văn bản và những lệnh máy tính.

Trong nhiều ứng dụng, lối ra nguồn bao gồm những mẫu xảy ra liên tiếp. Ví dụ như
trong một văn bản có những mẫu hay những từ nào đó tái diễn liên tiếp. Trong khi đó
cũng có những mẫu hoàn toàn không xuất hiện, hay nếu có thì xảy ra rất hiếm khi. Cho
nên đối với những loại nguồn này một phương pháp rất hợp lý để mã hóa nó là giữ
một danh sách hay từ điển những mẫu xảy ra thường xuyên. Khi những mẫu này xuất
hiện trong lối ra nguồn, chúng sẽ được mã hóa bằng việc tham chiếu đến bảng từ điển.
Nếu mẫu này không xuất hiện trong từ điển, thì nó có thể được mã hóa bằng cách sử
dụng một phương pháp khác kém hiệu quả hơn. Trong thực tế chúng ta tách nguồn vào
thành hai loại, những mẫu xảy ra thường xuyên và những mẫu xảy ra không thường
xuyên. Để phương pháp này có hiệu quả, loại mẫu xảy ra thường xuyên, và do đó kích
thước của từ điển, phải nhỏ hơn nhiều so với toàn bộ số mẫu có thể.
Giả sử có một nguồn văn bản cụ thể bao gồm những từ có 4 kí tự, 3 kí tự từ 26 chữ cái
thường của bảng chữ cái Tiếng Anh theo sau là những dấu phân cách như là dấu chấm
(.), dấu phẩy (,), dấu hỏi (?), dấu chấm phẩy (;), dấu hai chấm (:), dấu chấm cảm (!).
Hay nói cách khác kích thước bảng chữ nguồn là 32. Nếu chúng ta mã hóa nguồn văn
bản mỗi lần một kí tự, coi mỗi kí tự là một sự kiện đồng khả năng, thì chúng ta sẽ cần
5 bit trên một kí tự. Coi tất cả 32
4
(=2
20
= 1,048,576) mẫu 4 kí tự (four-character
pattern) là đồng khả năng, thì chúng ta sẽ có một mã mà gán 20 bít cho mỗi mẫu 4 kí
tự này. Giả sử đặt 256 mẫu 4 kí tự mà có khả năng nhất vào trong từ điển. Lưu đồ
truyền thực hiện như sau : bất cứ khi nào muốn gửi một mẫu mà có tồn tại trong từ
điển, chúng ta sẽ gửi một bit cờ (flag), giả sử bit 0, theo sau bởi một chỉ số 8 bit tương
ứng với mục từ trong từ điển. Nếu mẫu đó không có trong từ điển, chúng ta sẽ gửi bit
Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 23 -
1 theo sau bởi 20 bit mã hóa mẫu. Tính hữu dụng của lưu đồ này phụ thuộc vào phần
trăm những từ mà chúng ta bắt gặp có trong từ điển. Có thể đánh giá tính hữu dụng

này bằng cách tính số bit trung bình trên mỗi mẫu. Nếu xác suất bắt gặp một mẫu
trong từ điển là p, thì số bit trung bình trên mỗi mẫu R là :
R=9p + 21(1-p) = 21- 12p (2.15)
Để sơ đồ này hiệu quả, R phải có giá trị nhỏ hơn 20, khi đó p ≥ 0.084. Giá trị này
dường như không lớn. Tuy nhiên, nếu các mẫu xảy ra là đồng khả năng, thì xác suất
bắt gặp một mẫu trong từ điển thấp hơn 0.00025.
Chúng ta hoàn toàn không muốn một lưu đồ mã hóa mà chỉ thực hiện tốt hơn một chút
phương pháp mã hóa thông thường cho những mẫu đồng khả năng; mà chúng ta muốn
cải thiện hiệu suất nhiều nhất có thể. Để đạt được điều này, p phải lớn nhất có thể. Có
nghĩa là chúng ta phải lựa chon cẩn thận những mẫu có khả năng xảy ra nhất để đưa
vào trong từ điển. Do đó chúng ta phải có những hiểu biết khá tốt về cấu trúc lối ra
nguồn. Nếu không có thông tin giá trị kiểu này trước khi mã hóa một lối ra nguồn cụ
thể, bằng cách này hay cách khác chúng ta cần phải có được thông tin trong khi đang
thực hiện mã hóa. Nếu cảm thấy đã có đầy đủ hiểu biết trước, chúng ta có thể sử dụng
phương pháp tĩnh (static approach); nếu không, nên sử dụng phương pháp thích nghi
(adaptive approach).
2.3.1.4. Phương pháp nén dựa vào ngữ cảnh (context-based compression)
Phần này chúng ta sẽ trình bày một phương pháp nén sử dụng tối thiểu những giả
thuyết từ trước về thống kê của dữ liệu. Thay vào đó chúng sử dụng ngữ cảnh của dữ
liệu đang được mã hoá và lịch sử quá khứ của dữ liệu để cung cấp kĩ thuật nén hiệu
quả hơn.
Như chúng ta học, chúng ta sẽ nhận được hiệu suất nén càng cao khi bản tin mã
hoá có tập hợp xác suất càng “lệch” (“skewed). “Skewed” có nghĩa rằng những kĩ tự
có xác suất xảy ra cao hơn so với các kí tự khác trong chuỗi sẽ được nén. Vì thế nó
luôn mong đợi những cách biểu diễn bản tin mà sẽ cho kết quả lệch lớn hơn. Một cách
rất hiệu quả có thể thực hiện được điều này là xem xét xác suất xảy ra của mỗi một kí
tự theo ngữ cảnh mà nó xuất hiện. Có nghĩa là, chúng ta không xem xét mỗi kí tự trong
một chuỗi nếu như nó chỉ xảy ra hoàn toàn bất ngờ. Thay vì như thế, chúng ta kiểm tra
lịch sử của chuỗi trước khi xác định xác suất có thể của những giá trị khác nhau mà kí
tự đó đảm nhận.

Trong trường hợp văn bản tiếng Anh, Shannon đã chỉ ra vai trò của ngữ cảnh
bằng hai thí nghiệm rất thú vị. Cách đầu tiên, lựa chọn một phần văn bản và yêu cầu
một đối tượng nào đó đoán mỗi chữ cái. Nếu người đó đoán đúng, nói cô ấy đúng và
Nguyễn Thị Hương k49db Khóa luận tốt nghiệp
7/5/2011 - 24 -
chuyển sang chữ cái tiếp theo. Nếu cô ấy đoán sai, nói cho cô ấy biết câu trả lời đúng
và lại chuyển sang chữ cái tiếp theo. Đây là kết quả của một trong những thí nghiệm
này. Trong đó dấu gạch ngang (dash) biểu diễn những chữ cái đã được đoán đúng


Actual text THE ROOM WAS NOT VERY LIGHT A SMALL OBLONG
Subject
Performance
- - - - ROO- - - - - - NOT-V - - - - I - - - - - -SM - - - OBI - - -

Lưu ý rằng có một dịp tốt để cho cô ấy đoán đúng chữ cái, đặc biệt nếu chữ cái
nằm ở cuối một từ hay nếu theo ngữ cảnh từ đó rất rõ ràng. Bây giờ nếu chúng ta biểu
diến chuỗi nguồn bằng hiệu suất đoán, chúng ta sẽ nhận được một tập hợp xác suất
khác nhau đối với những giá trị mà mỗi thành phần của chuỗi đảm nhận. Xác suất dứt
khoát sẽ lệch hơn nhiều trong hàng thứ hai: “chữ cái” - xảy ra với xác suất cao.
Nếu cặp đôi toán học của đối tượng có sẵn ở một điểm cuối khác, chúng ta có thể gửi
câu “ lược bỏ” ở dòng thứ hai và có cặp đôi được thông qua quá trình đoán như nhau
để tiến đến chuỗi kí tự nguồn.
Trong thí nghiệm thứ hai, cho phép đối tượng tiếp tục đoán cho đến khi cô ấy
đoán được chữ cái đúng và số lượng đoán cần đến để đoán đúng chữ cái sẽ được ghi
nhớ. Hơn nữa, hầu hết những lần đoán đúng, thì kết quả là 1 là số có thể nhất. Sự tồn
tại của cặp đôi toán học tại điểm kết thúc nhận sẽ cho phép chuỗi lệch này biểu diễn
chuỗi nguồn tại bộ nhận. Shannon đã sử dụng thí nghiệm của mình để tiến đến giới
hạn trên và dưới cho bảng chữ cái tiếng Anh (lần lượt là 1.3 bit /chữ cái và 0.6 bit /
chữ cái)

Cái khó trong việc sử dụng những thí nghiệm này là đối tượng đoán là người dự
đoán kí tự tiếp theo trong chuỗi tốt hơn nhiều bất kí một bộ dự đoán toán học nào mà
chúng ta có thể triển khai. Giả sử rằng ngữ văn là bẩm sinh đối với mỗi người, ở đó
trường hợp phát triển một bộ dự đoán hiệu quả như con người đối với ngôn ngữ là
không thể trong tương lai gần. Tuy nhiên thí nghiệm thực hiện cung cấp một phương
pháp nén hữu dụng cho nén tất cả mọi loại chuỗi , chứ không chỉ đơn giản cho những
biểu diễn ngôn ngữ.
Nếu chuỗi kí tự được mã hoá không bao gồm sự xảy ra độc lập của các kí tự, thì
những kiến thức về những kí tự đã xảy ra ở lân cận của kí tự đang mã hoá sẽ cung cấp
cho chúng ta một hiểu biết tốt hơn nhiều về giá trị của kí tự đang mã hoá. Nếu chúng
ta biết được ngữ cảnh trong đó một kí tự xảy ra chúng ta có thể đoán với khả năng
thành công lớn hơn nhiều so với giá trị của kí tự. Nói cách khác, trong ngữ cảnh cho
trước, một số kí tự xảy ra với xác suất lớn hơn nhiều những chữ khác. Có nghĩa là, sự

×