1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Hệ thập lục phân 1234

11 955 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 261,12 KB

Nội dung

Một số ký dụng thường thấy trong ngôn ngữ: • AdavàVHDLgói những số thập lục phân dùng gốc của hệ, điểm chỉ bằng con số biểu đạt gốc, chẳng hạn "16#5A3#".. • Một số phiên bảnBASIC, đặc bi

Trang 1

Hệ thập lục phân

Trang 2

Mục lục

1.1 Từ nguyên 1

1.1.1 Anh ngữ 1

1.2 Biểu thị số thập lục phân 1

1.3 Ứng dụng 2

1.4 Phân số 3

1.5 Hài hước 3

1.6 Triển khai sang hệ nhị phân 3

1.7 Đổi gốc từ các hệ số khác 4

1.7.1 Phép chia lấy số dư trong cơ số nguồn 4

1.7.2 Phép cộng và tính nhân trong hệ thập lục phân 4

1.7.3 Phép đổi thông qua hệ nhị phân 4

1.8 Hệ thập lục phân trong con mắt của giới báo chí và phim ảnh 5

1.9 Xem thêm 5

1.10 am khảo 5

1.11 Liên kết ngoài 5

2 Học tăng cường 6 2.1 Các thuật toán 6

2.2 Nghiên cứu hiện tại 7

2.3 am khảo 7

2.4 Liên kết ngoài 8

2.5 Nguồn, người đóng góp, và giấy phép cho văn bản và hình ảnh 9

2.5.1 Văn bản 9

2.5.2 Hình ảnh 9

2.5.3 Giấy phép nội dung 9

i

Trang 3

Chương 1

Hệ thập lục phân

Trong toán học và trong khoa học điện toán, hệ

thập lục phân (hay hệ đếm cơ số 16, tiếng Anh:

hexadecimal), hoặc chỉ đơn thuần gọi là thập lục, là

mộthệ đếmcó 16 ký tự, từ 0 đến 9 và A đến F (chữ

hoa và chữ thường như nhau) Hệ thống thập lục phân

hiện dùng, được công tyIBMgiới thiệu với thế giới điện

toán vào năm 1963 Một phiên bản cũ của hệ thống này,

dùng các con số từ 0 đến 9, và các con chữ A đến F, đã

được sử dụng trong máy tínhBendix G-15, ra mắt năm

1956

Ví dụ, số thập phân 79, với biểu thị nhị phân là

01001111, có thể được viết thành 4F trong hệ thập lục

phân (4 = 0100, F = 1111)

Chú ý trong bảng sau: hex = thập lục phân

dec = thập phân

oct = bát phân

1.1 Từ nguyên

1.1.1 Anh ngữ

Chính IBM đã lựa chọn tiền tố hexa, thay vì sexa của

tiếng Latinh Cái tên hexadecimal là một cái tên xa lạ,

vì hexa nguyên có gốc từ hexi (έξι) trongtiếng Hy Lạp

và có nghĩa là “sáu”, còn decimal lại có gốc Latinh và có

nghĩa là “mười” Có thể hexa cũng đã được lấy từ tiếng

Latinh, song chữ deka của Hy Lạp lại gần với chữ decem

của Latinh hơn, nên có một số ý kiến cho rằng cách

đặt tên này có sự bất nhất nào đấy Một từ cổ hơn nữa

là sexidecimal nghe có vẻ Latinh nhưng không đúng

(từ Latinh đúng là sedecim, có nghĩa là 16) Từ này đã

được đổi vì một số người cho rằng việc dùng từ này

là quá mạo hiểm, vì từ này còn có một nghĩa khác là

“gốc 60” Tuy vậy, chữ sexagesimal (gốc 60) vẫn còn

giữ lại được nhóm tiền tố của nó Trong tài liệu trước

đây của máy tính Bendix, từ sexadecimal cũng có được

dùng đến ÔngSteven Schwartzmancó ghi lại: “Vì từ

hexadecimal là một từ tương đối dài, nên nhiều khi nó

được viết tắt là hex" Từ hexadecimal - thập lục phân

- là một từ bất thường, vì nó là từ ghép bởi tiết tố của

hai thứ tiếng Latinh và Hy Lạp Từ nguyên gốc Latinh

phải là sexadecimal, song những kẻ tấn công máy tính

(computer hackers), có thể bị gợi ý và dẫn dụ bằng từ này mà gọi tắt nó thành sex Giáo sư và nhà khoa học

máy tínhDonald Knuthcó chỉ ra rằng theo đúng nghĩa

của từ thì tên của nó phải là senidenary, một từ gốc Latinh với nghĩa là “nhóm 16” Những từ binary (nhị phân), ternary (tam phân) và quaternary (tứ phân) đều

được tổ hợp từ gốc Latinh cả, và theo đúng nghĩa thì từ

decimal (thập phân) đáng ra phải là denary (hệ mười).

Mấy năm trước đây, một hệ thống các ký tự khác của

hệ thập lục phân, rõ ràng, không nhập nhèm, đã được

đề cử (Cf Hexadecimal time)

1.2 Biểu thị số thập lục phân

Một vài con số thập lục phân hầu như hoàn toàn giống với những con số tronghệ thập phân(kể cả đối với con người và máy vi tính) Vì thế mà chúng thường được

ký hiệu theo một quy tắc nhất định

Dưới dạng in ấn, ký hiệu của hệ thường được chỉ định bởi một hậu tố, chẳng hạn 5A316, 5A3SIXTEEN, hoặc 5A3HEX

Trong cácngôn ngữ lập trìnhcho máy vi tính - hầu như luôn luôn dùngvăn bản đơn thuần(plain text), không

hề có sự phân biệt về chữ viết trên, hoặc chữ viết dưới như trong in ấn - rất nhiều cách để đánh dấu số hệ thập lục phân đã xuất hiện Những cách đánh dấu này còn được thấy trong chữ in, đặc biệt là những nội dung có liên quan đến một ngôn ngữ lập trình

Một số ký dụng thường thấy trong ngôn ngữ:

AdavàVHDLgói những số thập lục phân dùng gốc của hệ, điểm chỉ bằng con số biểu đạt gốc,

chẳng hạn "16#5A3#" (Chú ý: Ada chấp nhận

phương thức ký dụng này cho các hệ, từnhị phân

cho đến thập lục phân, cho cả hai loạisố nguyên

(integer) vàsố thực(real)).

Cvà những ngôn ngữ lập trình có ngữ pháp tương ứng (nhưC++,C#,JavavàJavascript) dùng tiền tố

“0x” cho các số thập lục phân, chẳng hạn “0x5A3”

Số không (0) dẫn đầu được dùng đểbộ thanh lọc

(parser) có thể trực tiếp nhận biết một con số,

1

Trang 4

2 CHƯƠNG 1 HỆ THẬP LỤC PHÂN

trong khi chữ “x” đại biểu cho chữ hexadecimal

(thập lục phân) - (đối chiếu với 0 đại diện cho

bát phân(octal)) Chữ “x” trong tiền tố “0x” có

thể được viết hoa (0X) hoặc viết thường (0x), song

thường thấy được viết thường

• Cácshellcủa*nix(phần mềm dùng để thao tác các

mệnh lệnh với máy tính, trong các hệ điều hành

tương tự như UNIX) dùngmã escapebằng tổ hợp

ký tự "\x0FF” trong các biểu thức (expression), và

dùng “0xFF” đối với các hằng số (constant).

• Trong HTML, những ký hiệu hệ thập lục phân

cũng được biểu thị với cách dùng chữ “x": ֣

sẽ tương đương như ֣ – với trình duyệt

webcủa bạn và &#1443 theo thứ tự; (dấu trong

tiếng HebrewHebrew accent munah) Các mã chỉ

định màu sắc dùng hệ thập lục phân thường được

biểu đạt với tiền tố "#", chẳng hạn "#FFFFFF” (màu

trắng)

• Một vàingôn ngữ assemblychỉ định thập lục phân

bằng cách cho thêm chữ “h” vào đuôi (nếu con số

bắt đầu bằng một chữ, đồng thời đứng sau một con

số 0, chỉ định rằng nó là một con số), chẳng hạn

“0A3Ch”, “5A3h”

Postscript chỉ định thập lục phân dùng tiền tố

“16#"

Common Lispdùng tiền tố "#x” hoặc "#16r”

Pascal, và các assembler khác (AT&T,Motorola),

và một vài phiên bản BASIC dùng tiền tố "$",

chẳng hạn "$5A3”

• Ngôn ngữ lập trìnhSmalltalkdùng tiền tố “16r”

Chú ý Smalltalk còn chấp nhận biểu thức <gốc hệ

số>r<dãy các con số> - gốc hệ số là một số từ 2

trở lên (ví dụ: 2r1110 bằng 10r14 hoặc 16rE), với

sự hạn chế trên thực tiễn vì các ký tự và con số

đều nằm trong các ký tự của bộASCII, 0-9 và A-Z

Một số phiên bản của Smalltalk cho phép các con

số thập phân đứng sau dấu chấm ".” biểu đạt số

chấm động thập lục phân (floating point number)

(và các gốc hệ số khác nữa)

• Một số phiên bảnBASIC, đặc biệt là những ngôn

ngữ là biến thể của nó do Microsotạo ra như

QBasicvàVisual Basic, các tiền tố để biểu đạt số

thuộc hệ thập lục phân, như "&H”, ví dụ: "&H5A3";

những cái khác như BBC BASIC chỉ dùng "&"

(được dùng để biểu đạthệ bát phân(octal) trong

BASIC củaMicroso)

• Những ký hiệu như X'5A3' cũng đôi khi được thấy;

PL/Idùng ký hiệu như vậy

Donald Knuthgiới thiệu cách dùng các loại chữ

khác nhau để biểu diễn cơ số của hệ đếm trong

sách của ông e TeXbook Trong hệ thống ký

hiệu của ông, số thập lục phân được biểu đạt bằng

những dòng chữ kiểu chữ đánh máy (typewriter

type), ví dụ: 5A3

Một bảng cửu chương thập lục phân

Vì không có một quy định thống nhất nào nên tất cả những quy ước trên đều được dùng, đôi khi, ngay cả trong cùng một bài viết Song vì quy ước của chúng khá rõ ràng và biệt lập nên ít khi có những trắc trở xảy ra

Ký hiệu thường dùng (và thường gặp) nhất là tiền tố

“0x” hoặc ký hiệu viết số 16 xuống dưới

(subscript-based), đều chỉ số thập lục phân Chẳng hạn cả hai số

0x2BAD và 2BAD16đều cùng đại diện cho sốthập phân

11181 (hoặc 1118110)

Trong những thời kỳ đầu của lịch sử máy tính, sự lựa

chọn những con chữ từ A đến F để thay thế cho những

con số tiếp theo, chưa được chấp nhận trên toàn thế giới Trong những năm sau 1950, một số công trình cài đặt máy tính, ưa lựa chọn cách dùng các số từ 0 đến 5,

cùng với một cơ cấu mã (macron), để biểu thị giá trị từ

10 đến 15 Những người dùng máy tínhBendixthì lại dùng chữ “U” đến chữ “Z”

1.3 Ứng dụng

Hệ thập lục phân được dùng phổ biến trong lập trình

HTMLvàCSS(tạm dịch là Chương mục định hình tuần tự) Những lập trình này dùngbộ tam kết thập lục phân

(hex triplet) biểu thị màu sắc trong các trang web, bắt

đầu bằng một dấu "#" Dấu này còn được dùng để biểu thị các số thập lục phân nửa Khi biểu thị màu sắc với

24bit, công thức #RRGGBB ("Đỏ, Vàng, Xanh”) được

dùng để thể hiện Trong công thức này, “RR” (tiếng Anh là “Red Red”) biểu thị phân hợp màu đỏ, “GG” (“Green Green”) biểu thị phân hợp màu vàng (đáng ra phải gọi là màu xanh lá cây, song gọi là vàng để phân biệt với phân hợp tiếp theo, màu xanh lam), và “BB” (“Blue Blue”) biểu thị phân hợp màu xanh (lam) của tổ hợp tam phần, đại diện cho sắc độ của một màu Lấy ví

Trang 5

1.6 TRIỂN KHAI SANG HỆ NHỊ PHÂN 3

dụ, một dáng màu đỏ với giá trị thập phân (238, 9, 63)

được mã hóa sang hệ thập lục phân là #EE093F Công

thức này được sao chép từ tổ chức màu sắc tronghệ

thống cửa sổ X(X Window System).

Hệ thập phân còn được dùng trong kỹ thuật máy tính

trên nhiều khía cạnh chung chung khác, và là một

phương pháp thông thường nhất để biểu đạt giá trị của

mộtbyte, dùng dãy các ký tự (string), mà con người ai

cũng có thể đọc được Tất cả các giá trị của một byte

(bao gồm 256 giá trị) đều có thể được biểu thị bằng hệ

thập lục phân Một số người cho rằng phương pháp

dùng hệASCII8-bit, để biểu thị giá trị, là một phương

pháp khả thi, song phương pháp này không toàn diện,

vì hệ ASCII còn bao gồm những ký tự không in được

(còn gọi là cácký tự điều khiển(control characters)),

không thích hợp cho mục đích

Trong các dòng liên kết nốiURL, những chữ đặc biệt

có thể được biểu thị bằng cách dùng mã thập lục phân,

dẫn đầu bằngdấu phần trăm(%), chẳng hạnhttp://vi

wikipedia.org/wiki/Trang%20Ch%C3%ADnh

Công thức quy định cách viết địa chỉIPv6, đại diện mỗi

nhóm số gồm 16 bit, bằng những số thập lục phân, hòng

làm cho việc đọc, và sao chép các địa chỉ dài 128-bit

được dễ dàng hơn

1.4 Phân số

Tương tự như các hệ đếm khác, hệ thập lục phân cũng

có thể dùng để biểu thịphân số(vulgar fraction), song

chu kỳ thập phân tái diễn (recurring digits) thường xảy

ra, do số 16 chỉ có một thừa số nguyên tố:

Do cơ số 16 là bình phương của 4 (4²), phân số thập lục

phân có chu kỳ lặp lại cá biệt, xảy ra nhiều lần hơn, so

với những số thập phân Chu kỳ thập phân xảy ra khi

mẫu số, với thừa số thấp nhất (denominator in lowest

terms), có mộtthừa số nguyên tốkhông thấy ở trong

hàng cơ số Trong trường hợp số thập lục phân, tất cả

những phân số có mẫu số không phải là tích của một

số mũ 2, sẽ tạo nên một chu kỳ thập phân tái diễn

1.5 Hài hước

Hệ thập lục phân đôi khi được dùng trong các trò đùa

cợt của các lập trình viên, vì một số từ có thể được

tạo dựng bằng các con số thập lục phân Một số từ

này trong tiếng Anh là “dead” (chết), “bee” (thịt bò),

“babe” (người yêu bé bỏng) và, với những thế tự phù

hợp, từ “c0ffee” (cà phê).Trang nàylà một ví dụ điển

hình những trò đùa cợt này Do khả năng dễ nhận

biết của những từ sắp xếp kiểu này, kiểm duyệt cài

đặt (debugging setup) thường dùng chúng để ráp giá trị

khởi đầu cho những tiểu tiết trong bộ nhớ, giúp các lập

trình viên tìm ra những tiểu tiết chưa được ráp giá trị

khởi đầu (not initialised) Một số người thêm chữ “H”

vào đằng sau một con số để biểu thị con số ấy là một

số thập lục phân y luật này cũng đôi khi được dùng trong ngữ pháp của ngôn ngữ lập trình assembly cổ của Intel Với đuôi “H”, người ta có thể viết những từ và câu mới, chẳng hạn 1517ADEADB17CH

Một ví dụ nữa là consố ma(magic number) trong các

tiệp của hệ thống phân bổ FAT Mach-O và các chương trình Java, con số đó là “CAFEBABE” (cô bé quán cà phê)

Cáingân phiếu của Knuthcó giá trị là một đô la trong

hệ thập lục phân (256 xu = 162), tức là $2.56

Bảng liệt kê sau đây chính là một trò đùa với hệ thập lục phân:

3x12=36 2x12=24 1x12=12 0x12=18

Ba hàng đầu tiên là tích của số 12, trong khi hàng cuối cùng “0x12” trong thập lục phân lại là 18

Giá trị0xdeadbeef(“ox dead bee” - trâu chết [thành] thịt bò) đôi khi được gài vào bộ nhớ chưa được ráp giá

trị khởi đầu (uninitialized memory).

1.6 Triển khai sang hệ nhị phân

Khi làm việc với máy vi tính, chúng ta thường phải xử

lý dữ liệunhị phân, song xử lý con số trong hệ thập lục phân lại dễ dàng hơn so với hệ nhị phân (toàn số chỉ có

0 và 1) rất nhiều Trong khi chúng ta thông thuộc với

hệ thập phân hơn các hệ cơ số khác, việc biến đổi số

từ hệ nhị phân sang hệ thập lục phân lại dễ hơn là việc biến chúng sang hệ thập phân, vì mỗi một số thập lục phân tương đương với 4 bit nhị phân (410)

Hãy thử cân nhắc việc biến đổi số 11112sang hệ thập phân Vì mỗivị trícủa một con số tronghệ nhị phân

(cơ số 2) chỉ cho phép giá trị 0 hay 1 mà thôi, việc định giá trị của con số tại vị trí ấy, tính từ bên phải, là một việc tương đối dễ dàng:

• 00012= 110

• 00102= 210

• 01002= 410

• 10002= 810

Vì vậy:

Đây là một con tính đơn giản, nhưng cũng đã đòi hỏi bốn tính cộng, trong khi với một chút luyện tập, 11112

có thể được chuyển thẳng sang F16 mà chỉ cần một phép tính (xemBiểu thị số thập lục phân) Khi số nhị

Trang 6

4 CHƯƠNG 1 HỆ THẬP LỤC PHÂN

phân là một số lớn, việc đổi chúng sang số thập phân

là một việc dài dòng, tẻ nhạt Khi đổi số nhị phân sang

thập lục phân, chúng ta chỉ đơn giản chia nhóm các con

số thành những nhóm 4, chuyển mỗi nhóm 4 này thành

một số thập lục phân, giữ nguyên vị trí tương ứng của

nhóm Ví dụ sau đây chứng tỏ việc chuyển nhị phân

sang thập phân dài dòng như thế nào:

So sánh ví dụ trên với việc chuyển cùng con số sang hệ

thập lục phân:

Chúng ta cũng có thể đổi thẳng từ hệ thập lục phân

quay trở lại nhị phân như ví dụ trên

Dùngsố bát phân cũng là một cách hữu dụng để xử

lý dữ liệu trong máy vi tính (nhóm 3 bit thay vì nhóm

4); song, cái lợi lớn nhất của thập lục phân so với bát

phân là, để biểu thị một byte (octet), chúng ta chỉ cần

đúng hai con số thập lục phân là đủ Điều này có nghĩa

là nếu chúng ta có giá trị của một word (thường là 4

byte), việc nhận ra giá trị riêng của từng byte một là

một việc khá dễ dàng; ngược lại, nếu chúng ta có giá trị

của từng byte một, chúng ta cũng có thể dễ dàng ráp

chúng lại thành một word

1.7 Đổi gốc từ các hệ số khác

1.7.1 Phép chia lấy số dư trong cơ số

nguồn

Phương pháp đổi một số sang hệ thập lục phân được

thực hiện tương tự như phương pháp được áp dụng cho

cáchệ cơ sốkhác, bằng cách sử dụng phép chia lấy số

nguyên và số dư trong hệ cơ số nguồn Trên lý thuyết,

phương pháp này có thể áp dụng được với bất cứ (một

cặp) hệ cơ số nào Song nói chung theo thói quen sử

dụng của con người và trong kỹ thuậtmáy tính, phương

pháp này được áp dụng với hệ thập phân và nhị phân

(Đối với hệ nhị phân, người ta còn có những phương

pháp nhanh gọn hơn nữa.)

Chẳng hạn, nếu lấy d là số thập phân cần phải được đổi,

thì dãy số hh₋₁…h2h1là những con số để biểu diễn số

ở hệ thập lục phân tương ứng Với cách tính dãy h như

sau:

1 H:= d mod 16

(“mod” (modulus (tiếng

Anh)):phép chia lấy dư,

thực hiện phép chia số

nguyên và lấy kết quả

là số dư - chẳng hạn 17

mod 5 = 2 vì 17/5 = 3, dư

2.)

2 D := d −h i

16

3 Nếu d == 0 thì kết quả là dãy số

h); nếu không, quay trở lại bước 1

Phần sau đây giới thiệu chu trình của thuật toán trên, lập trình bằng ngôn ngữJavaScript, dùng để biến bất

cứ một số thập phân nào sang hệ thập lục phân, kết quả trả về là một string (dãy các ký tự) Mục đích của

ví dụ là minh họa chu trình của thuật toán (có thể dựa vào đấy để áp dụng cho các công dụng xử lý khác) Để

áp dụng thuật toán này với dữ liệu cụ thể, có thể dùng các toán tử trongphép toán thao tác bit

function toHex(d) { /* biến đổi sang hệ thập lục phân */ var r = d % 16; if(d-r==0) {return toChar(r);} else {return toHex((d-r)/16)+toChar(r);} } function toChar(n) { /* biến đổi số nguyên sang ký tự có thể đọc và in được */ var alpha = “0123456789ABCDEF"; return alpha.charAt(n); }

Cần lưu ý rằng cơ số “16” dùng ở trên có thể được thay thế bằng bất cứ cơ số nào (chẳng hạn hệ nhị phân (2), tam phân (3), bát phân (8) v.v ) Sau đây là thủ tục được minh họa bằng ngôn ngữC++để in ra một số ở hệ bất

kì tương ứng với một số thập phân nhận vào

const alpha = “0123456789ABCDEF"; void printinbase(long d, short b) { // in ra số ở hệ cơ

số b tương ứng với số thập phân d) short r=d%b; if (d-r) printinbase(d/b,b); cout << alpha[r]; }

1.7.2 Phép cộng và tính nhân trong hệ thập

lục phân

Chúng ta có thể biến đổi bằng cách phân giải giá trị của

vị trí của từng con số (hàng đơn vị, hàng chục, hàng trăm trong hệ thập phân chẳng hạn), rồi biến mỗi giá trị ấy sang giá trị tương ứng của hệ thập lục phân, sau

đó làm phép cộng hay nhân trên con số ấy để được kết quả trong hệ thập lục phân (khi làm tính nhân, nên

có sẵn một bảng cửu chương trong hệ tương ứng (thập lục phân) để dễ đối chiếu - vì đa số chỉ biết bảng cửu chương trong hệ thập phân mà thôi) (Number system

- Computer Methods in Chemical Engineering)

Ví dụ: 12310+ 45610

10010+ 2010+ 310+ 40010+ 5010+ 610 - hay 6416+ 1416+ 316+ 19016+ 3216+ 616 - 1F416+ 4616+ 91611 (Nhớ) - 1F416

50010+ 4616+ 7010916910 - - 2431657910

1.7.3 Phép đổi thông qua hệ nhị phân

Vì máy vi tính nói chung dùng hệ nhị phân, nên phương pháp đổi của máy thường là thông qua hệ nhị phân trước đã, sau đó dùng sự thông nối trực tiếp giữa thập lục phân và nhị phân, mà đổi sang hệ thập lục phân

Trang 7

1.11 LIÊN KẾT NGOÀI 5

1.8 Hệ thập lục phân trong con mắt

của giới báo chí và phim ảnh

Trong bộ phim hoạt họa nhiều tậpe Simpsons, tập có

tựa đềTreehouse of Horror VI(Ngôi nhà kinh dị trên

cây VI), nhân vật Homer lọt vào tầng không gian thứ 3,

(Homer³), một dãy các số thập lục phân (46 72 69 6e 6b

20 52 75 6c 65 73 21) bồng bềnh trên không tại “vùng đất

của không gian 3 chiều " (3-D land) Đối chiếu những

giá trị thập lục phân này trong bảnASCIIcho chúng ta

các con chữ mà khi ghép lại, nó biến thành một dòng

chữ tiếng Anh “Frink rules!" (ngoại trừ hai dấu ngoặc

kép mà thôi) - nghĩa là “Frink trị vì!" hoặc “Frink là

vua”

Trong chương trình TVReBoot, có một nhân vật với

cái tên Hexadecimal (hệ thập lục phân)

1.9 Xem thêm

Số Hex

Hệ thập phân

Hệ nhị phân

1.10 Tham khảo

1.11 Liên kết ngoài

Intuitor Hex Headquarters- Trang đặc biệt dành

cho việc khuyến cáo, đổi hệ số thập phân truyền

thống sang hệ thập lục phân

Các phương pháp biến đổi đơn giản

Leet Key, một phần lắp ráp phụ của Firefox hỗ trợ

việc biến đổi, cùng việc đánh máy chữ, giữa ASCII

và số thập lục phân

Bits of Meaning (pd)- Giới thiệu vềsố học điện

toántrong máyBendix G-15củaIBM

Hexadecimal basics- Căn bản về số thập lục phân

Hexadecimal Numbers Guide- Hướng dẫn về số

thập lục phân

Hexadecimal Colors- Biểu đạt màu sắc dùng hệ

thập lục phân

Trang 8

Chương 2

Học tăng cường

Trong ngànhkhoa học máy tính, học tăng cường (tiếng

Anh: reinforcement learning) là một lĩnh vực con của

học máy, nghiên cứu cách thức một agent trong một

môi trường nên chọn thực hiện các hành động nào để

cực đại hóa một khoản thưởng (reward) nào đó về lâu

dài Các thuật toán học tăng cường cố gắng tìm một

chiến lược ánh xạ các trạng thái của thế giới tới các

hành động mà agent nên chọn trong các trạng thái đó

Môi trường thường được biểu diễn dưới dạng mộtquá

trình quyết định Markovtrạng thái hữu hạn (Markov

decision process - MDP), và các thuật toán học tăng

cường cho ngữ cảnh này có liên quan nhiều đến các kỹ

thuậtquy hoạch động Các xác suất chuyển trạng thái

và các xác suất thu lợi trong MDP thường là ngẫu nhiên

nhưng lại tĩnh trong quá trình của bài toán (stationary

over the course of the problem).

Khác vớihọc có giám sát, trong học tăng cường không

có các cặp dữ liệu vào/kết quả đúng, các hành động gần

tối ưu cũng không được đánh giá đúng sai một cách

tường minh Hơn nữa, ở đây hoạt động trực tuyến

(on-line performance) được quan tâm, trong đó có việc tìm

kiếm một sụ cân bằng giữa khám phá (lãnh thổ chưa

lập bản đồ) và khai thác (tri thức hiện có) Trong học

tăng cường, sự được và mất giữa khám phá và khai thác

đã được nghiên cứu chủ yếu qua bài toánmulti-armed

bandit

Một cách hình thức, mô hình học tăng cường bao gồm:

1 S: tập các trạng thái của môi trường;

2 A: tập các hành động; và

3 R : tập các khoản “thưởng” với giá trị vô hướng

Tại mỗi thời điểm t, agent thấy được trạng thái của nó

là s ∈ S và tập các hành động có thể A(s) Nó chọn

một hành động a ∈ A(s) và nhận được từ môi trường

trạng thái mới s₊₁ và một khoản thưởng r₊₁ Dựa trên

các tương tác này, agent học tăng cường phải phát triển

một chiến lược π:S → A có tác dụng cực đại hóa lượng

R=r0+r1+…+r với các MDP có một trạng thái kết thúc,

hoặc lượng R=Σγ t r với các MDP không có trạng thái

kết thúc (trong đó γ là một hệ số giảm khoản “thưởng

trong tương lai” nào đó, với giá trị trong khoảng 0.0 và

1.0)

Do đó, học tăng cường đặc biệt thích hợp cho các bài toán có sự được mất giữa các khoản thưởng ngắn hạn

và dài hạn Học tăng cường đã được áp dụng thành công cho nhiều bài toán, trong đó cóđiều khiển robot, điều vận thang máy,viễn thông, các trò chơibackgammon

vàcờ vua

2.1 Các thuật toán

Sau khi ta đã định nghĩa được một hàm trả về thích hợp cần được cực đại hóa, ta cần chỉ rõ thuật toán sẽ được

sử dụng để tìm chiến lược thu được kết quả trả về cao nhất Có hai cách tiếp cận chính, cách tiếp cận hàm giá trị và cách tiếp cận trực tiếp

Cách tiếp cận trực tiếp dẫn đến hai bước sau đây:

1 Với mỗi chiến lược có thể, lấy mẫu các kết quả trong khi thực hiện chiến lược đó

2 Chọn chiến lược có kết quả trả về kỳ vọng cao nhất

Một vấn đề với cách tiếp cận này là số chiến lược có thể cực kỳ lớn, hoặc thậm chí vô hạn Một vấn đề khác

là các giá trị trả về có thể ngẫu nhiên, khi đó sẽ cần đến một lượng lớn các mẫu để có thể ước lượng chính xác kết quả trả về của mỗi chiến lược Cách tiếp cận trực tiếp là cơ sở cho các thuật toán dùng trong ngành

Robotic tiến hóa Các vấn đề của cách tiếp cận trực tiếp có thể được làm giảm nhẹ nếu ta giả thiết một cấu trúc nào đó trong bài toán và bằng cách nào đó cho phép các mẫu thu được

từ một chiến lược này có thể được ảnh hưởng tới các ước lượng cho một chiến lược khác Cách tiếp cận hàm giá trị thực hiện điều này bằng cách chỉ giữ một tập các ước lượng về các giá trị trả về của một chiến lược π (thường là chiến lược hiện tại hoặc chiến lược tối ưu) Trong các cách tiếp cận như vậy, người ta cố gắng ước lượng một trong hai hàm: giá trị trả về nếu xuất phát

từ trạng thái s và theo chiến lược π như sau,

V (s) = E[R|s,π],

6

Trang 9

2.2 NGHIÊN CỨU HIỆN TẠI 7

hoặc giá trị trả về kỳ vọng khi thực hiện hành động a

trong trạng thái s và theo chiến lược π nghĩa là,

Q(s,a) = E[R|s,π],

Nếu có sẵn chiến lược tối ưu Q, ta luôn có thể chọn các

hành động tối ưu đơn giản bằng cách tại mỗi trạng thái

chọn hành động với giá trị cao nhất Để thực hiện được

điều này với V, ta phải có một mô hình môi trường, dưới

dạng các xác suất P(s’|s,a), cho phép tính Q bằng công

thức

Q(s, a) =

s ′

V (s ′ )P (s ′ |s, a),

hoặc ta có thể sử dụng các phương pháp Actor-Critic,

trong đó mô hình được chia làm hai phần: phần critic

giữ ước lượng giá trị trạng thái V, và phần actor có trách

nhiệm chọn các hành động thích hợp với mỗi trạng

thái

Cho trước một chiến lược cố định π, việc ước lượng

E[R|.] đối với γ=0 là đơn giản, do ta chỉ phải lấy trung

bình của các khoản thưởng trực tiếp Cách dễ thấy nhất

để thực hiện việc này với γ>0 là lấy trung bình của

tổng trả về sau mỗi trạng thái Tuy nhiên, kiểu lấy mẫu

Monte Carlo đòi hỏi MPD phải kết thúc

Do đó, nói chung việc ước lượng γ > 0 không dễ ực

ra, việc này lại khá đơn giản khi ta nhận ra rằng giá trị

kỳ vọng của R tạo nên mộtphương trình Bellmanđệ

quy: E[R |s t ] = r t + γE[R |s t+1]

Bằng cách thay thế các giá trị kỳ vọng trên bằng các

ước lượng của ta, V, và thực hiện thuật toángradient

descentvới hàm chi phí lỗi bình phương, ta thu được

TD(0) - thuật toán họctemporal difference learning

Trong trường hợp đơn giản nhất, tập hợp các trạng thái

và hành động đều là rời rạc và ta giữ các ước lượng

dạng bản cho mỗi trạng thái Các phương pháp cặp đôi

trạng thái-hành động làSARSAvàQ-Learning Tất cả

các phương pháp đều có các mở rộng mà nhờ đó một

kiến trúc xấp xỉ nào đó được sử dụng, mặc dù trong một

số trường hợp, sựhội tụkhông được đảm bảo sẽ xảy

ra Các ước lượng thường được cập nhật bởi một dạng

gradient descent, tuy rằng gần đây đã có các phương

phápbình phương tối thiểucho các trường hợp xấp xỉ

tuyến tính

Các phương pháp trên không những đều hội tụ về các

ước lượng đúng cho một chiến lược cố định, và còn có

thể được dùng để tìm chiến lược tối ưu Việc này thường

được thực hiện bằng cách theo một chiến lược π được

rút ra từ các ước lượng hiện tại, nghĩa là bằng cách hầu

như luôn luôn chọn hành động với lượng giá cao nhất,

và thỉnh thoảng chọn các hành động ngẫu nhiên để

khám phá không gian Các chứng minh cho sự hội tụ

tới chiến lược tối ưu cũng tồn tại đối với các thuật toán

nói đến ở trênvới một số điều kiện nhất định Tuy nhiên

tất cả các chứng minh này chỉ chứng tỏ sự hội tụ tiệm

cận, và về lý thuyết người ta còn biết rất ít về hành

vi của các thuật toán học tăng cường trong trường hợp

mẫu nhỏ, ngoại trừ trong các điều kiện tham số (seing)

rất hạn chế

Một phương pháp khác để tìm chiến lược tối ưu là tìm thẳng trong không gian các chiến lược Phương pháp không gian chiến lược định nghĩa chiến lược là một hàm có tham số π(s,θ) với các tham số θ ông thường,

một phương pháp leo đồi (gradient method) được áp

dụng để điều chỉnh các tham số Tuy nhiên, việc áp dụng các phương pháp leo đồi không đơn giản, do

không có thông tin nào về độ dốc (gradient information)

được giả thiết ay vào đó, chính độ dốc phải được ước

lượng từ các mẫu nhiều nhiễu (noisy samples) của kết

quả trả về Do điều này làm tăng mạnh chi phí tính toán, nên việc sử dụng một phương pháp leo đồi mạnh

hơn là leo đồi độ dốc cao nhất(steepest gradient descent)

có thể có lợi hơn Các phương pháp leo đồi dùng cho không gian chiến lược đã được sự quan tâm lớn trong

5 năm trở lại đây và giờ đã đạt đến giai đoạn tương đối chính muồi, nhưng lĩnh vực nghiên cứu này vẫn còn hoạt động Có nhiều cách tiếp cận khác, chẳng hạn

luyện thép(simulated annealing), có thể dùng để khám

phá không gian chiến lược Các nghiên cứu về các kỹ thuật này ít phát triển hơn

2.2 Nghiên cứu hiện tại

Các chủ đề nghiên cứu hiện tại bao gồm: Cách biểu diễn khác (chẳng hạn cách tiếp cận Predictive State Representation - biểu diễn trạng thái tiên đoán), tìm kiếm leo đồi trong không gian chiến lược, các kết quả hội tụ đối với mẫu nhỏ, các thuật toán và kết quả hội

tụ cho các MDP quan sát được một phần (partially observable MDP), học tăng cường môdun và phân cấp

(modular and hierarchical) Gần đây, học tăng cường

đã được áp dụng trong lĩnh vực Tâm lý họcđể giải thích quá trình học và hoạt động của con người Cụ thể, người ta đã dùng học tăng cường trong các mô hình nhận thức giả lập hoạt động của con người trong khi giải quyết các vấn đề hai khi học kỹ năng (v.d., Fu & Anderson, 2006)

2.3 Tham khảo

Leslie Pack Kaelbling;Michael L Liman;Andrew W Moore, Reinforcement Learning: A Survey, Journal of Artificial Intelligence Research4 (1996) pp 237–285

Richard S Suon; Andrew G Barto, Reinforcement Learning, MIT Press, 1998,ISBN 0-262-19398-1(full text online)

Dimitri P Bertsekas; John Tsitsiklis, Neuro-Dynamic

Programming, Athena Scientific, 1996,ISBN 1-886529-10-8

Trang 10

8 CHƯƠNG 2 HỌC TĂNG CƯỜNG

Jan Peters; Sethu Vijayakumar; Stefan Schaal,

Reinforcement Learning for Humanoid Robotics,

IEEE-RAS International Conference on Humanoid

Robots

Fu, W.-T., Anderson, J R (2006) Recurrent Choice

to Skilled Learning Model Learning: A Reinforcement

Learning Model Learning: A Reinforcement Learning

Model. Journal of Experimental Psychology: General,

135 (2), 184-206

2.4 Liên kết ngoài

Reinforcement Learning Repository

Reinforcement Learning and Artificial

Intelligence

RL-Glue

Ngày đăng: 13/08/2017, 14:14

TỪ KHÓA LIÊN QUAN

w