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

BÁO CÁO MẠNG NEURAL VÀ ỨNG DỤNG

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 (614.79 KB, 34 trang )

ĐẠI HỌC CÔNG NGHỆ
ĐẠI HỌC QUỐC GIA HÀ NỘI
BÁO CÁO
MẠNG NEURAL VÀ ỨNG DỤNG
Người hướng dẫn: PGS. TS. Đỗ Năng Toàn
Người thực hiện:
- Bùi Hoàng Khánh
- Lê Duy Hưng
- Hoàng Mạnh Khôi
i
Hà Nội, 04/2010
MỤC LỤC
DANH MỤC HÌNH VẼ iii
DANH MỤC BẢNG BIỂU iv
CHƯƠNG 1: TỔNG QUAN VỀ MÔ HÌNH MẠNG NƠRON 1
I. Giới thiệu về mạng nơron nhân tạo 1
I.1. Mạng nơron nhân tạo là gì? 1
I.2. Lịch sử phát triển mạng nơron 1
I.3. So sánh mạng nơron với máy tính truyền thống 3
II. Nơron sinh học và nơron nhân tạo 3
II.1. Nơron sinh học 3
II.2. Nơron nhân tạo 4
III.3. Mô hình mạng nơron 6
III.3.1. Các kiểu mô hình mạng nơron 7
III.3.2. Perceptron 9
III.3.3. Mạng nhiều tầng truyền thẳng (MLP) 10
CHƯƠNG 2: HUẤN LUYỆN VÀ XÂY DỰNG MẠNG NƠRON 12
I. Huấn luyện mạng Nơron 12
I.1. Các phương pháp học 12
I.2. Học có giám sát trong các mạng nơron 13
I.3. Thuật toán lan truyền ngược 13


II. Các vấn đề trong xây dựng mạng MLP 15
II.1. Chuẩn bị dữ liệu 15
II.2. Xác định các tham số cho mạng 17
II.3. Vấn đề lãng quên (catastrophic forgetting) 19
i
II.4 Vấn đề quá khớp 20
CHƯƠNG 3: ỨNG DỤNG CỦA MẠNG NƠRON 22
CHƯƠNG 4: THỰC NGHIỆM 23
I. Giới thiệu bài toán 23
I.1. Phát biểu bài toán 23
I.2. Mô hình mạng nơron của bài toán 23
II. Cài đặt chương trình 24
II.1. Mô hình chương trình 24
II.2. Kết quả thử nghiệm 25
CHƯƠNG 5: KẾT LUẬN 28
TÀI LIỆU THAM KHẢO a
ii
DANH MỤC HÌNH VẼ
Hình 1: Cấu trúc của một nơron sinh học điển hình 4
Hình 2: Nơron nhân tạo 5
Hình 3: Mạng tự kết hợp 7
Hình 4: Mạng kết hợp khác kiểu 8
Hình 5: Mạng truyền thẳng 8
Hình 6: Mạng phản hồi 9
Hình 7: Perceptron 9
Hình 8: Mạng MLP tổng quát 10
Hình 9: Mối liên hệ giữa sai số và kích thước mẫu 15
Hình 10: Huấn luyện luân phiên trên hai tập mẫu 19
Hình 11: Mô hình mạng nơron cho bài toán thực nhiệm 23
Hình 12: Mô hình lớp của chương trình 24

Hình 13: Giao diện chính của chương trình 25
Hình 14: Kết quả huấn luyện 26
Hình 15: Kết quả thực nghiệm 27
iii
DANH MỤC BẢNG BIỂU
Bảng 1: Một số hàm truyền thông dụng 6
iv
CHƯƠNG 1: TỔNG QUAN VỀ MÔ HÌNH MẠNG NƠRON
I. Giới thiệu về mạng nơron nhân tạo
I.1. Mạng nơron nhân tạo là gì?
Định nghĩa: Mạng nơron nhân tạo, Artificial Neural Network (ANN) gọi tắt là mạng nơron,
neural network, là một mô hình xử lý thông tin phỏng theo cách thức xử lý thông tin của các hệ
nơron sinh học. Nó được tạo lên từ một số lượng lớn các phần tử (gọi là phần tử xử lý hay nơron)
kết nối với nhau thông qua các liên kết (gọi là trọng số liên kết) làm việc như một thể thống nhất để
giải quyết một vấn đề cụ thể nào đó.
Một mạng nơron nhân tạo được cấu hình cho một ứng dụng cụ thể (nhận dạng mẫu, phân
loại dữ liệu, ) thông qua một quá trình học từ tập các mẫu huấn luyện. Về bản chất học chính là
quá trình hiệu chỉnh trọng số liên kết giữa các nơron.
I.2. Lịch sử phát triển mạng nơron
Các nghiên cứu về bộ não con người đã được tiến hành từ hàng nghìn năm nay. Cùng với sự
phát triển của khoa học kĩ thuật đặc biệt là những tiến bộ trong ngành điện tử hiện đại, việc con
người bắt đầu nghiên cứu các nơron nhân tạo là hoàn toàn tự nhiên. Sự kiện đầu tiên đánh dấu sự ra
đời của mạng nơron nhân tạo diễn ra vào năm 1943 khi nhà thần kinh học Warren McCulloch và
nhà toán học Walter Pitts viết bài báo mô tả cách thức các nơron hoạt động. Họ cũng đã tiến hành
xây dựng một mạng nơron đơn giản bằng các mạch điện. Các nơron của họ được xem như là các
thiết bị nhị phân với ngưỡng cố định. Kết quả của các mô hình này là các hàm logic đơn giản chẳng
hạn như “ a OR b” hay “a AND b”.
Tiếp bước các nghiên cứu này, năm 1949 Donald Hebb cho xuất bản cuốn sách
Organization of Behavior. Cuốn sách đã chỉ ra rằng các nơron nhân tạo sẽ trở lên hiệu quả hơn sau
mỗi lần chúng được sử dụng.

Những tiến bộ của máy tính đầu những năm 1950 giúp cho việc mô hình hóa các nguyên lý
của những lý thuyết liên quan tới cách thức con người suy nghĩ đã trở thành hiện thực. Nathanial
Rochester sau nhiều năm làm việc tại các phòng thí nghiệm nghiên cứu của IBM đã có những nỗ
lực đầu tiên để mô phỏng một mạng nơron. Trong thời kì này tính toán truyền thống đã đạt được
những thành công rực rỡ trong khi đó những nghiên cứu về nơron còn ở giai đoạn sơ khai. Mặc dù
vậy những người ủng hộ triết lý “thinking machines” (các máy biết suy nghĩ) vẫn tiếp tục bảo vệ
cho lập trường của mình.
Năm 1956 dự án Dartmouth nghiên cứu về trí tuệ nhân tạo (Artificial Intelligence) đã mở ra
thời kỳ phát triển mới cả trong lĩnh vực trí tuệ nhân tạo lẫn mạng nơron. Tác động tích cực của nó là
thúc đẩy hơn nữa sự quan tâm của các nhà khoa học về trí tuệ nhân tạo và quá trình xử lý ở mức
đơn giản của mạng nơron trong bộ não con người.
Những năm tiếp theo của dự án Dartmouth, John von Neumann đã đề xuất việc mô phỏng
các nơron đơn giản bằng cách sử dụng rơle điện áp hoặc đèn chân không. Nhà sinh học chuyên
1
nghiên cứu về nơron Frank Rosenblatt cũng bắt đầu nghiên cứu về Perceptron. Sau thời gian nghiên
cứu này Perceptron đã được cài đặt trong phần cứng máy tính và được xem như là mạng nơron lâu
đời nhất còn được sử dụng đến ngày nay. Perceptron một tầng rất hữu ích trong việc phân loại một
tập các đầu vào có giá trị liên tục vào một trong hai lớp. Perceptron tính tổng có trọng số các đầu
vào, rồi trừ tổng này cho một ngưỡng và cho ra một trong hai giá trị mong muốn có thể. Tuy nhiên
Perceptron còn rất nhiều hạn chế, những hạn chế này đã được chỉ ra trong cuốn sách về Perceptron
của Marvin Minsky và Seymour Papert viết năm 1969.
Năm 1959, Bernard Widrow và Marcian Hoff thuộc trường đại học Stanford đã xây dựng
mô hình ADALINE (ADAptive LINear Elements) và MADALINE. (Multiple ADAptive LINear
Elements). Các mô hình này sử dụng quy tắc học Least-Mean-Squares (LMS: Tối thiểu bình
phương trung bình). MADALINE là mạng nơron đầu tiên được áp dụng để giải quyết một bài toán
thực tế. Nó là một bộ lọc thích ứng có khả năng loại bỏ tín hiệu dội lại trên đường dây điện thoại.
Ngày nay mạng nơron này vẫn được sử dụng trong các ứng dụng thương mại.
Năm 1974 Paul Werbos đã phát triển và ứng dụng phương pháp học lan truyền ngược
( back-propagation). Tuy nhiên phải mất một vài năm thì phương pháp này mới trở lên phổ biến.
Các mạng lan truyền ngược được biết đến nhiều nhất và được áp dụng rộng dãi nhất nhất cho đến

ngày nay.
Thật không may, những thành công ban đầu này khiến cho con người nghĩ quá lên về khả
năng của các mạng nơron. Chính sự cường điệu quá mức đã có những tác động không tốt đến sự
phát triển của khoa học và kỹ thuật thời bấy giờ khi người ta lo sợ rằng đã đến lúc máy móc có thể
làm mọi việc của con người. Những lo lắng này khiến người ta bắt đầu phản đối các nghiên cứu về
mạng neuron. Thời kì tạm lắng này kéo dài đến năm 1981.
Năm 1982 trong bài báo gửi tới viện khoa học quốc gia, John Hopfield bằng sự phân tích
toán học rõ ràng, mạch lạc, ông đã chỉ ra cách thức các mạng nơron làm việc và những công việc
chúng có thể thực hiện được. Cống hiến của Hopfield không chỉ ở giá trị của những nghiên cứu
khoa học mà còn ở sự thúc đẩy trở lại các nghiên cứu về mạng neuron.
Cũng trong thời gian này, một hội nghị với sự tham gia của Hoa Kỳ và Nhật Bản bàn về việc
hợp tác/cạnh tranh trong lĩnh vực mạng nơron đã được tổ chức tại Kyoto, Nhật Bản. Sau hội nghị,
Nhật Bản đã công bố những nỗ lực của họ trong việc tạo ra máy tính thế hệ thứ 5. Tiếp nhận điều
đó, các tạp chí định kỳ của Hoa Kỳ bày tỏ sự lo lắng rằng nước nhà có thể bị tụt hậu trong lĩnh vực
này. Vì thế, ngay sau đó, Hoa Kỳ nhanh chóng huy động quĩ tài trợ cho các nghiên cứu và ứng dụng
mạng neuron.
Năm 1985, viện vật lý Hoa Kỳ bắt đầu tổ chức các cuộc họp hàng năm về mạng neuron ứng
dụng trong tin học (Neural Networks for Computing).
Năm 1987, hội thảo quốc tế đầu tiên về mạng neuron của Viện các kỹ sư điện và điện tử
IEEE (Institute of Electrical and Electronic Engineer) đã thu hút hơn 1800 người tham gia.
Ngày nay, không chỉ dừng lại ở mức nghiên cứu lý thuyết, các nghiên cứu ứng dụng mạng
nơron để giải quyết các bài toán thực tế được diễn ra ở khắp mọi nơi. Các ứng dụng mạng nơron ra
đời ngày càng nhiều và ngày càng hoàn thiện hơn. Điển hình là các ứng dụng: xử lý ngôn ngữ
2
(Language Processing), nhận dạng kí tự (Character Recognition), nhận dạng tiếng nói (Voice
Recognition), nhận dạng mẫu (Pattern Recognition), xử lý tín hiệu (Signal Processing), Lọc dữ liệu
(Data Filtering),…
I.3. So sánh mạng nơron với máy tính truyền thống
Các mạng nơron có cách tiếp cận khác trong giải quyết vấn đề so với máy tính truyền thống.
Các máy tính truyền thống sử dụng cách tiếp cận theo hướng giải thuật, tức là máy tính thực hiện

một tập các chỉ lệnh để giải quyết một vấn đề. Vấn đề được giải quyết phải được biết và phát biểu
dưới dạng một tập chỉ lệnh không nhập nhằng. Những chỉ lệnh này sau đó phải được chuyển sang
một chương trình ngôn ngữ bậc cao và chuyển sang mã máy để máy tính có thể hiểu được.
Trừ khi các bước cụ thể mà máy tính cần tuân theo được chỉ ra rõ ràng, máy tính sẽ không
làm được gì cả. Điều đó giới hạn khả năng của các máy tính truyền thống ở phạm vi giải quyết các
vấn đề mà chúng ta đã hiểu và biết chính xác cách thực hiện. Các máy tính sẽ trở lên hữu ích hơn
nếu chúng có thể thực hiện được những việc mà bản thân con người không biết chính xác là phải
làm như thế nào.
Các mạng nơron xử lý thông tin theo cách thức giống như bộ não con người. Mạng được tạo
nên từ một số lượng lớn các phần tử xử lý được kết nối với nhau làm việc song song để giải quyết
một vấn đề cụ thể. Các mạng nơron học theo mô hình, chúng không thể được lập trình để thực hiện
một nhiệm vụ cụ thể. Các mẫu phải được chọn lựa cẩn thận nếu không sẽ rất mất thời gian, thậm chí
mạng sẽ hoạt động không đúng. Điều hạn chế này là bởi vì mạng tự tìm ra cách giải quyết vấn đề,
thao tác của nó không thể dự đoán được.
Các mạng nơron và các máy tính truyền thống không cạnh tranh nhau mà bổ sung cho nhau.
Có những nhiệm vụ thích hợp hơn với máy tính truyền thống, ngược lại có những nhiệm vụ lại thích
hợp hơn với các mạng nơron. Thậm chí rất nhiều nhiệm vụ đòi hỏi các hệ thống sử dụng tổ hợp cả
hai cách tiếp cận để thực hiện được hiệu quả cao nhất. (thông thường một máy tính truyền thống
được sử dụng để giám sát mạng nơron)
II. Nơron sinh học và nơron nhân tạo
II.1. Nơron sinh học
Qua quá trình nghiên cứu về bộ não, người ta thấy rằng: bộ não con người bao gồm khoảng
10
11
nơron tham gia vào khoảng 10
15
kết nối trên các đường truyền. Mỗi đường truyền này dài
khoảng hơn một mét. Các nơron có nhiều đặc điểm chung với các tế bào khác trong cơ thể, ngoài ra
chúng còn có những khả năng mà các tế bào khác không có được, đó là khả năng nhận, xử lý và
3

truyền các tín hiệu điện hóa trên các đường mòn nơron, các con đường này tạo nên hệ thống giao
tiếp của bộ não.
Hình 1: Cấu trúc của một nơron sinh học điển hình
Mỗi nơron sinh học có 3 thành phần cơ bản:
• Các nhánh vào hình cây ( dendrites)
• Thân tế bào (cell body)
• Sợi trục ra (axon)
Các nhánh hình cây truyền tín hiệu vào đến thân tế bào. Thân tế bào tổng hợp và xử lý cho
tín hiệu đi ra. Sợi trục truyền tín hiệu ra từ thân tế bào này sang nơron khác. Điểm liên kết giữa sợi
trục của nơron này với nhánh hình cây của nơron khác gọi là synapse. Liên kết giữa các nơron và độ
nhạy của mỗi synapse được xác định bởi quá trình hóa học phức tạp. Một số cấu trúc của nơron
được xác định trước lúc sinh ra. Một số cấu trúc được phát triển thông qua quá trình học. Trong
cuộc đời cá thể, một số liên kết mới được hình thành, một số khác bị hủy bỏ.
Như vậy nơron sinh học hoạt động theo cách thức sau: nhận tín hiệu đầu vào, xử lý các tín
hiệu này và cho ra một tín hiệu output. Tín hiệu output này sau đó được truyền đi làm tín hiệu đầu
vào cho các nơron khác.
Dựa trên những hiểu biết về nơron sinh học, con người xây dựng nơron nhân tạo với hy
vọng tạo nên một mô hình có sức mạnh như bộ não.
II.2. Nơron nhân tạo
Một nơron là một đơn vị xử lý thông tin và là thành phần cơ bản của một mạng nơron. Cấu
trúc của một nơron được mô tả trên hình dưới.
4
Hình 2: Nơron nhân tạo
Các thành phần cơ bản của một nơron nhân tạo bao gồm:
♦ Tập các đầu vào: Là các tín hiệu vào (input signals) của nơron, các tín hiệu này thường
được đưa vào dưới dạng một vector N chiều.
♦ Tập các liên kết: Mỗi liên kết được thể hiện bởi một trọng số (gọi là trọng số liên kết –
Synaptic weight). Trọng số liên kết giữa tín hiệu vào thứ j với nơron k thường được kí hiệu là w
kj
.

Thông thường, các trọng số này được khởi tạo một cách ngẫu nhiên ở thời điểm khởi tạo mạng và
được cập nhật liên tục trong quá trình học mạng.
♦ Bộ tổng (Summing function): Thường dùng để tính tổng của tích các đầu vào với trọng số
liên kết của nó.
♦ Ngưỡng (còn gọi là một độ lệch - bias): Ngưỡng này thường được đưa vào như một thành
phần của hàm truyền.
♦ Hàm truyền (Transfer function) : Hàm này được dùng để giới hạn phạm vi đầu ra của mỗi
nơron. Nó nhận đầu vào là kết quả của hàm tổng và ngưỡng đã cho. Thông thường, phạm vi đầu ra
của mỗi nơron được giới hạn trong đoạn [0,1] hoặc [-1, 1]. Các hàm truyền rất đa dạng, có thể là các
hàm tuyến tính hoặc phi tuyến. Việc lựa chọn hàm truyền nào là tuỳ thuộc vào từng bài toán và kinh
nghiệm của người thiết kế mạng. Một số hàm truyền thường sử dụng trong các mô hình mạng nơron
được đưa ra trong bảng 1 .
♦ Đầu ra: Là tín hiệu đầu ra của một nơron, với mỗi nơron sẽ có tối đa là một đầu ra.
Xét về mặt toán học, cấu trúc của một nơron k, được mô tả bằng cặp biểu thức sau:
[cong thuc]
trong đó: x
1
, x
2
, , x
p
: là các tín hiệu vào; (w
k1
, w
k2, ,
w
kp)
là các trọng số liên kết của nơron
thứ k; u
k

là hàm tổng; b
k
là một ngưỡng; f là hàm truyền và y
k
là tín hiệu đầu ra của nơron.
5
Như vậy tương tự như nơron sinh học, nơron nhân tạo cũng nhận các tín hiệu đầu vào, xử lý
( nhân các tín hiệu này với trọng số liên kết, tính tổng các tích thu được rồi gửi kết quả tới hàm
truyền), và cho một tín hiệu đầu ra ( là kết quả của hàm truyền).
Bảng 1: Một số hàm truyền thông dụng
Hàm truyền Đồ thị Định nghĩa
Symmetrical Hard Limit
(hardlims)
Linear (purelin)
Saturating Linear (satlin)
Log-Sigmoid (logsig)
III.3. Mô hình mạng nơron
Mặc dù mỗi nơron đơn lẻ có thể thực hiện những chức năng xử lý thông tin nhất định, sức
mạnh của tính toán nơron chủ yếu có được nhờ sự kết hợp các nơron trong một kiến trúc thống nhất.
Một mạng nơron là một mô hình tính toán được xác định qua các tham số: kiểu nơron (như là các
6
nút nếu ta coi cả mạng nơron là một đồ thị), kiến trúc kết nối (sự tổ chức kết nối giữa các nơron) và
thuật toán học (thuật toán dùng để học cho mạng).
Về bản chất một mạng nơron có chức năng như là một hàm ánh xạ F: X → Y, trong đó X là
không gian trạng thái đầu vào (input state space) và Y là không gian trạng thái đầu ra (output state
space) của mạng. Các mạng chỉ đơn giản là làm nhiệm vụ ánh xạ các vector đầu vào x ∈ X sang
các vector đầu ra y ∈ Y thông qua “bộ lọc” (filter) các trọng số. Tức là y = F(x) = s(W, x), trong đó
W là ma trận trọng số liên kết. Hoạt động của mạng thường là các tính toán số thực trên các ma
trận.
III.3.1. Các kiểu mô hình mạng nơron

Cách thức kết nối các nơron trong mạng xác định kiến trúc (topology) của mạng. Các nơron
trong mạng có thể kết nối đầy đủ (fully connected) tức là mỗi nơron đều được kết nối với tất cả các
nơron khác, hoặc kết nối cục bộ (partially connected) chẳng hạn chỉ kết nối giữa các nơron trong
các tầng khác nhau. Người ta chia ra hai loại kiến trúc mạng chính:
♦ Tự kết hợp (autoassociative): là mạng có các nơron đầu vào cũng là các nơron đầu ra.
Mạng Hopfield là một kiểu mạng tự kết hợp.
Hình 3: Mạng tự kết hợp
♦ Kết hợp khác kiểu (heteroassociative): là mạng có tập nơron đầu vào và đầu ra riêng biệt.
Perceptron, các mạng Perceptron nhiều tầng (MLP: MultiLayer Perceptron), mạng Kohonen, …
thuộc loại này.
7
Hình 4: Mạng kết hợp khác kiểu
Ngoài ra tùy thuộc vào mạng có các kết nối ngược (feedback connections) từ các nơron đầu
ra tới các nơron đầu vào hay không, người ta chia ra làm 2 loại kiến trúc mạng.
♦ Kiến trúc truyền thẳng (feedforward architechture): là kiểu kiến trúc mạng không có các
kết nối ngược trở lại từ các nơron đầu ra về các nơron đầu vào; mạng không lưu lại các giá trị
output trước và các trạng thái kích hoạt của nơron. Các mạng nơron truyền thẳng cho phép tín hiệu
di chuyển theo một đường duy nhất; từ đầu vào tới đầu ra, đầu ra của một tầng bất kì sẽ không ảnh
hưởng tới tầng đó. Các mạng kiểu Perceptron là mạng truyền thẳng.
Hình 5: Mạng truyền thẳng
♦ Kiến trúc phản hồi (Feedback architecture): là kiểu kiến trúc mạng có các kết nối từ nơron
đầu ra tới nơron đầu vào. Mạng lưu lại các trạng thái trước đó, và trạng thái tiếp theo không chỉ phụ
thuộc vào các tín hiệu đầu vào mà còn phụ thuộc vào các trạng thái trước đó của mạng. Mạng
Hopfield thuộc loại này.
8
Hình 6: Mạng phản hồi
III.3.2. Perceptron
Perceptron là mạng nơron đơn giản nhất, nó chỉ gồm một nơron, nhận đầu vào là vector có
các thành phần là các số thực và đầu ra là một trong hai giá trị +1 hoặc -1.
Hình 7: Perceptron

Đầu ra của mạng được xác định như sau: mạng lấy tổng có trọng số các thành phần của
vector đầu vào, kết quả này cùng ngưỡng b được đưa vào hàm truyền (Perceptron dùng hàm Hard-
limit làm hàm truyền) và kết quả của hàm truyền sẽ là đầu ra của mạng.
Hoạt động của Perceptron có thể được mô tả bởi cặp công thức sau:
[Cong thuc]
và y = f(u - b) = Hardlimit(u - b); y nhận giá trị +1 nếu u - b>0, ngược lại y nhận giá trị -1.
Perceptron cho phép phân loại chính xác trong trường hợp dữ liệu có thể phân chia tuyến
tính (các mẫu nằm trên hai mặt đối diện của một siêu phẳng). Nó cũng phân loại đúng đầu ra các
hàm AND, OR và các hàm có dạng đúng khi n trong m đầu vào của nó đúng (n ≤ m). Nó không thể
phân loại được đầu ra của hàm XOR.
9
III.3.3. Mạng nhiều tầng truyền thẳng (MLP)
Mô hình mạng nơron được sử dụng rộng rãi nhất là mô hình mạng nhiều tầng truyền thẳng
(MLP: Multi Layer Perceptron). Một mạng MLP tổng quát là mạng có n (n≥2) tầng (thông thường
tầng đầu vào không được tính đến): trong đó gồm một tầng đầu ra (tầng thứ n) và (n-1) tầng ẩn.
Hình 8: Mạng MLP tổng quát
Kiến trúc của một mạng MLP tổng quát có thể mô tả như sau:
♦ Đầu vào là các vector (x1, x2, , xp) trong không gian p chiều, đầu ra là các vector (y1,
y2, , yq) trong không gian q chiều. Đối với các bài toán phân loại, p chính là kích thước của mẫu
đầu vào, q chính là số lớp cần phân loại. Xét ví dụ trong bài toán nhận dạng chữ số: với mỗi mẫu ta
lưu tọa độ (x,y) của 8 điểm trên chữ số đó, và nhiệm vụ của mạng là phân loại các mẫu này vào một
trong 10 lớp tương ứng với 10 chữ số 0, 1, …, 9. Khi đó p là kích thước mẫu và bằng 8 x 2 = 16; q
là số lớp và bằng 10.
♦ Mỗi nơron thuộc tầng sau liên kết với tất cả các nơron thuộc tầng liền trước nó.
♦ Đầu ra của nơron tầng trước là đầu vào của nơron thuộc tầng liền sau nó.
Hoạt động của mạng MLP như sau: tại tầng đầu vào các nơron nhận tín hiệu vào xử lý (tính
tổng trọng số, gửi tới hàm truyền) rồi cho ra kết quả (là kết quả của hàm truyền); kết quả này sẽ
được truyền tới các nơron thuộc tầng ẩn thứ nhất; các nơron tại đây tiếp nhận như là tín hiệu đầu
vào, xử lý và gửi kết quả đến tầng ẩn thứ 2;…; quá trình tiếp tục cho đến khi các nơron thuộc tầng
ra cho kết quả.

Một số kết quả đã được chứng minh:
♦ Bất kì một hàm Boolean nào cũng có thể biểu diễn được bởi một mạng MLP 2 tầng trong
đó các nơron sử dụng hàm truyền sigmoid.
♦ Tất cả các hàm liên tục đều có thể xấp xỉ bởi một mạng MLP 2 tầng sử dụng hàm truyền
sigmoid cho các nơron tầng ẩn và hàm truyền tuyến tính cho các nơron tầng ra với sai số nhỏ tùy ý.
10
♦ Mọi hàm bất kỳ đều có thể xấp xỉ bởi một mạng MLP 3 tầng sử dụng hàm truyền sigmoid
cho các nơron tầng ẩn và hàm truyền tuyến tính cho các nơron tầng ra.
11
CHƯƠNG 2: HUẤN LUYỆN VÀ XÂY DỰNG MẠNG NƠRON
I. Huấn luyện mạng Nơron
I.1. Các phương pháp học
Khái niệm: Học là quá trình thay đổi hành vi của các vật theo một cách nào đó làm cho
chúng có thể thực hiện tốt hơn trong tương lai.
Một mạng nơron được huyấn luyện sao cho với một tập các vector đầu vào X, mạng có khả
năng tạo ra tập các vector đầu ra mong muốn Y của nó. Tập X được sử dụng cho huấn luyện mạng
được gọi là tập huấn luyện (training set). Các phần tử x thuộc X được gọi là các mẫu huấn luyện
(training example). Quá trình huấn luyện bản chất là sự thay đổi các trọng số liên kết của mạng.
Trong quá trình này, các trọng số của mạng sẽ hội tụ dần tới các giá trị sao cho với mỗi vector đầu
vào x từ tập huấn luyện, mạng sẽ cho ra vector đầu ra y như mong muốn
Có ba phương pháp học phổ biến là học có giám sát (supervised learning), học không giám
sát (unsupervised learning) và học tăng cường (Reinforcement learning):
♦ Học có giám sát: Là quá trình học có sự tham gia giám sát của một “thầy giáo”. Cũng
giống như việc ta dạy một em nhỏ các chữ cái. Ta đưa ra một chữ “a” và bảo với em đó rằng đây là
chữ “a”. Việc này được thực hiện trên tất cả các mẫu chữ cái. Sau đó khi kiểm tra ta sẽ đưa ra một
chữ cái bất kì (có thể viết hơi khác đi) và hỏi em đó đây là chữ gì?
Với học có giám sát, tập mẫu huấn luyện được cho dưới dạng D = {(x,t) | (x,t) ∈ [IR
N
x
R

K
]}, trong đó: x = (x
1
, x
2
, , x
N
) là vector đặc trưng N chiều của mẫu huấn luyện và t = (t
1
, t
2
, ,
t
K
) là vector mục tiêu K chiều tương ứng, nhiệm vụ của thuật toán là phải thiết lập được một cách
tính toán trên mạng như thế nào đó để sao cho với mỗi vector đặc trưng đầu vào thì sai số giữa giá
trị đầu ra thực sự của mạng và giá trị mục tiêu tương ứng là nhỏ nhất. Chẳng hạn mạng có thể học
để xấp xỉ một hàm t = f(x) biểu diễn mối quan hệ trên tập các mẫu huấn luyện (x, t).
Như vậy với học có giám sát, số lớp cần phân loại đã được biết trước. Nhiệm vụ của thuật
toán là phải xác định được một cách thức phân lớp sao cho với mỗi vector đầu vào sẽ được phân
loại chính xác vào lớp của nó.
♦ Học không giám sát: Là việc học không cần có bất kỳ một sự giám sát nào.
Trong bài toán học không giám sát, tập dữ liệu huấn luyện được cho dưới dạng: D = {(x
1
, x
2
,
, x
N
)}, với (x

1
, x
2
, , x
N
) là vector đặc trưng của mẫu huấn luyện. Nhiệm vụ của thuật toán là phải
phân chia tập dữ liệu D thành các nhóm con, mỗi nhóm chứa các vector đầu vào có đặc trưng giống
nhau.
Như vậy với học không giám sát, số lớp phân loại chưa được biết trước, và tùy theo tiêu
chuẩn đánh giá độ tương tự giữa các mẫu mà ta có thể có các lớp phân loại khác nhau.
♦ Học tăng cường: đôi khi còn được gọi là học thưởng-phạt (reward-penalty learning), là
sự tổ hợp của cả hai mô hình trên. Phương pháp này cụ thể như sau: với vector đầu vào, quan sát
vector đầu ra do mạng tính được. Nếu kết quả được xem là “tốt” thì mạng sẽ được thưởng theo
12
nghĩa tăng các trọng số kết nối lên; ngược lại mạng sẽ bị phạt, các trọng số kết nối không thích hợp
sẽ được giảm xuống. Do đó học tăng cường là học theo nhà phê bình (critic), ngược với học có
giám sát là học theo thầy giáo (teacher).
I.2. Học có giám sát trong các mạng nơron
Học có giám sát có thể được xem như việc xấp xỉ một ánh xạ: X→ Y, trong đó X là tập các
vấn đề và Y là tập các lời giải tương ứng cho vấn đề đó. Các mẫu (x, y) với x = (x
1
, x
2
, . . ., x
n
) ∈ X,
y = (y
l
, y
2

, . . ., y
m
) ∈ Y được cho trước. Học có giám sát trong các mạng nơron thường được thực
hiện theo các bước sau:
♦ B1: Xây dựng cấu trúc thích hợp cho mạng nơron, chẳng hạn có (n + 1) nơron vào (n
nơron cho biến vào và 1 nơron cho ngưỡng x
0
), m nơron đầu ra, và khởi tạo các trọng số liên kết của
mạng.
♦ B2: Đưa một vector x trong tập mẫu huấn luyện X vào mạng
♦ B3: Tính vector đầu ra o của mạng
♦ B4: So sánh vector đầu ra mong muốn y (là kết quả được cho trong tập huấn luyện) với
vector đầu ra o do mạng tạo ra; nếu có thể thì đánh giá lỗi.
♦ B5: Hiệu chỉnh các trọng số liên kết theo một cách nào đó sao cho ở lần tiếp theo
khi đưa vector x vào mạng, vector đầu ra o sẽ giống với y hơn.
♦ B6: Nếu cần, lặp lại các bước từ 2 đến 5 cho tới khi mạng đạt tới trạng thái hội tụ.
Việc đánh giá lỗi có thể thực hiện theo nhiều cách, cách dùng nhiều nhất là sử dụng lỗi tức
thời: Err = (o - y), hoặc Err = |o - y|; lỗi trung bình bình phương (MSE: mean-square error):
Err = (o- y)
2
/2;
Có hai loại lỗi trong đánh giá một mạng nơron. Thứ nhất, gọi là lỗi rõ ràng (apparent
error), đánh giá khả năng xấp xỉ các mẫu huấn luyện của một mạng đã được huấn luyện.
Thứ hai, gọi là lỗi kiểm tra (test error), đánh giá khả năng tổng quá hóa của một mạng đã
được huấn luyện, tức khả năng phản ứng với các vector đầu vào mới. Để đánh giá lỗi kiểm
tra chúng ta phải biết đầu ra mong muốn cho các mẫu kiểm tra.
Thuật toán tổng quát ở trên cho học có giám sát trong các mạng nơron có nhiều cài
đặt khác nhau, sự khác nhau chủ yếu là cách các trọng số liên kết được thay đổi trong suốt
thời gian học. Trong đó tiêu biểu nhất là thuật toán lan truyền ngược.
I.3. Thuật toán lan truyền ngược

Ta sử dụng một số kí hiệu sau:
• j: nơron thứ j (hay nút thứ j)
• X
j
: vector đầu vào của nút thứ j
13
• W
j
: vector trọng số của nút thứ j
• x
ji
: đầu vào của nút thứ j từ nút thứ i
• w
ji
: trọng số trên x
ji
• b
j
: ngưỡng tại nút thứ j
• o
j
: đầu ra của nút thứ j
• t
j
: đầu ra mong muốn của nút thứ j
• Downstream(j): Tập tất cả các nút nhận đầu ra của nút thứ j làm một giá trị đầu vào.
• η: tốc độ học
• f: hàm truyền với f(x) = 1 / (1 + e
-x
)

Thuật toán lan truyền ngược được mô tả như sau:
Input:
- Mạng feed-forward với n
i
đầu vào, n
h
nút ẩn và n
o
đầu ra.
- Hệ số học η
- Tập dữ liệu huấn luyện D = {là vector đầu vào, là vector đầu ra mong muốn}.
Output: Các vector trọng số
Thuật toán:
Bước 1: Khởi tạo trọng số bởi các giá trị ngẫu nhiên nhỏ.
Bước 2: Lặp lại cho tới khi thỏa mãn điều kiện kết thúc.
Với mỗi mẫu, thực hiện các bước sau:
2.1 Tính đầu ra o
j
cho mỗi nút j:
o
j
= f(d – b
j
) với d = Σx
ji
w
ji
2.2 Với mỗi nút k thuộc tầng ra, tính δ
k
theo công thức:

δ
k
= (t
k
– o
k
)(1 – o
k
)o
k
2.3 Với mỗi nút h thuộc tầng ẩn, tính δ
h
theo công thức:
δ
h
= o
h
(1 – o
h
) Σδ
k
w
kh
với k ∈ Downstream(j)
2.4 Cập nhật: w
ji
= w
ji
+ Δw
ji


14
Trong đó Δw
ji
= ηδ
k
x
ji
II. Các vấn đề trong xây dựng mạng MLP
II.1. Chuẩn bị dữ liệu
a. Kích thước mẫu
Không có nguyên tắc nào hướng dẫn kích thước mẫu phải là bao nhiêu đối với một bài toán
cho trước. Hai yếu tố quan trọng ảnh hưởng đến kích thước mẫu:
♦ Dạng hàm đích: khi hàm đích càng phức tạp thì kích thước mẫu cần tăng.
♦ Nhiễu: khi dữ liệu bị nhiễu (thông tin sai hoặc thiếu thông tin) kích thước mẫu cần tăng.
Đối với mạng truyền thẳng (feedforward), cho hàm đích có độ phức tạp nhất định, kèm một
lượng nhiễu nhất định thì độ chính xác của mô hình luôn có một giới hạn nhất định. Có thể cần tập
mẫu vô hạn để đạt đến giới hạn chính xác. Nói cách khác độ chính xác của mô hình là hàm theo
kích thước tập mẫu. Khi kích thước mẫu tăng, độ chính xác sẽ được cải thiện - lúc đầu nhanh,
nhưng chậm dần khi tiến đến giới hạn.
Dạng tổng quát của mối liên hệ giữa sai số và kích thước mẫu như sau:
Hình 9: Mối liên hệ giữa sai số và kích thước mẫu
Trong thực hành thường gặp phải 2 vấn đề sau :
♦ Đối với hầu hết bài toán thực tế, mẫu bị ràng buộc chặt chẽ với dữ liệu có sẵn. Ta thường
không có được số lượng mẫu mong muốn.
♦ Kích thước mẫu cũng có thể bị giới hạn bởi bộ nhớ hoặc khả năng lưu trữ của máy tính.
Nếu tất cả các dữ liệu đồng thời được giữ trong bộ nhớ suốt thời gian luyện, kích thước bộ nhớ máy
tính sẽ bị chiếm dụng nghiêm trọng.
Nếu lưu trữ trên đĩa sẽ cho phép dùng mẫu lớn hơn nhưng thao tác đọc đĩa từ thế hệ này
sang thế hệ khác khiến cho tiến trình chậm đi rất nhiều.

15
Chú ý: việc tăng kích thước mẫu không làm tăng thời gian luyện. Những tập mẫu lớn hơn sẽ
yêu cầu ít thế hệ luyện hơn. Nếu ta tăng gấp đôi kích thước của mẫu, mỗi thế hệ luyện sẽ tốn thời
gian khoảng gấp đôi, nhưng số thế hệ cần luyện sẽ giảm đi một nửa. Điều này có nghĩa là kích
thước mẫu (cũng có nghĩa là độ chính xác của mô hình) không bị giới hạn bởi thời gian luyện.
Luật cơ bản là: Sử dụng mẫu lớn nhất có thể sao cho đủ khả năng lưu trữ trong bộ nhớ
trong (nếu lưu trữ đồng thời) hoặc trên đĩa từ (nếu đủ thời gian đọc từ đĩa).
b. Mẫu con
Trong xây dựng mô hình cần chia tập mẫu thành 2 tập con: một để xây dựng mô hình
gọi là tập huấn luyện (training set), và một để kiểm nghiệm mô hình gọi là tập kiểm tra (test
set). Thông thường dùng 2/3 mẫu cho huấn luyện và 1/3 cho kiểm tra. Điều này là để tránh
tình trạng quá khớp (overfitting).
c. Sự phân tầng mẫu
Nếu ta tổ chức mẫu sao cho mỗi mẫu trong quần thể đều có cơ hội như nhau thì tập
mẫu được gọi là tập mẫu đại diện. Tuy nhiên khi ta xây dựng một mạng để xác định xem
một mẫu thuộc một lớp hay thuộc một loại nào thì điều ta mong muốn là các lớp có cùng
ảnh hưởng lên mạng, để đạt được điều này ta có thể sử dụng mẫu phân tầng. Xét ví dụ
sau[1]:
Giả sử ta xây dựng mô hình nhận dạng chữ cái viết tay tiếng Anh, và nguồn dữ liệu
của ta có 100.000 ký tự mà mỗi ký tự được kèm theo một mã cho biết nó là chữ cái nào.
Chữ cái xuất hiện thường xuyên nhất là e, nó xuất hiện 11.668 lần chiếm khoảng 12%; chữ
cái xuất hiện ít nhất là chữ z, chỉ có 50 lần chiếm 0,05%.
Trước hết do giới hạn của bộ nhớ máy tính, giả sử bộ nhớ chỉ có thể xử lý được 1300
mẫu. Ta tạo hai dạng tập mẫu: tập mẫu đại diện và tập mẫu phân tầng. Với tập mẫu đại diện,
chữ e sẽ xuất hiện 152 lần (11,67% của 1300) trong khi đó chữ z chỉ xuất hiện một lần
(0,05% của 1300). Ngược lại ta có thể tạo tập mẫu phân tầng để mỗi chữ có 50 mẫu. Ta thấy
rằng nếu chỉ có thể dùng 1300 mẫu thì tập mẫu phân tầng sẽ tạo ra mô hình tốt hơn. Việc
tăng số mẫu của z từ 1 lên 50 sẽ cải thiện rất nhiều độ chính xác của z, trong khi nếu giảm
số mẫu của e từ 152 xuống 50 sẽ chỉ giảm chút ít độ chính xác của e.
Bây giờ giả sử ta dùng máy tính khác có bộ nhớ đủ để xử lý một lượng mẫu gấp 10

lần, như vậy số mẫu sẽ tăng lên 13000. Rõ ràng việc tăng kích thước mẫu sẽ giúp cho mô
hình chính xác hơn. Tuy nhiên ta không thể dùng tập mẫu phân tầng như trên nữa vì lúc này
ta sẽ cần tới 500 mẫu cho chữ z trong khi ta chỉ có 50 mẫu trong nguồn dữ liệu. Để giải
quyết điều này ta tạo tập mẫu như sau: tập mẫu gồm tất cả các chữ hiếm với số lần xuất hiện
của nó và kèm thêm thông tin về chữ có nhiều mẫu nhất. Chẳng hạn ta tạo tập mẫu có 50
mẫu của chữ z (đó là tất cả) và 700 mẫu của chữ e (chữ mà ta có nhiều mẫu nhất).
16
Như vậy trong tập mẫu của ta, chữ e có nhiều hơn chữ z 14 lần. Nếu ta muốn các chữ
z cũng có nhiều ảnh hưởng như các chữ e, khi học chữ z ta cho chúng trọng số lớn hơn 14
lần. Để làm được điều này ta có thể can thiệp chút ít vào quá trình lan truyền ngược trên
mạng. Khi mẫu học là chữ z, ta thêm vào 14 lần đạo hàm, nhưng khi mẫu là chữ e ta chỉ
thêm vào 1 lần đạo hàm. Ở cuối thế hệ, khi cập nhật các trọng số, mỗi chữ z sẽ có ảnh
hưởng hơn mỗi chữ e là 14 lần, và tất cả các chữ z gộp lại sẽ có bằng có ảnh hưởng bằng tất
cả các chữ e.
d. Chọn biến
Khi tạo mẫu cần chọn các biến sử dụng trong mô hình. Có 2 vấn đề cần quan tâm:
♦ Cần tìm hiểu cách biến đổi thông tin sao cho có lợi cho mạng hơn: thông tin trước
khi đưa vào mạng cần được biến đổi ở dạng thích hợp nhất, để mạng đạt được hiệu xuất cao
nhất. Xét ví dụ về bài toán dự đoán một người có mắc bệnh ung thư hay không. Khi đó ta có
trường thông tin về người này là “ngày tháng năm sinh”. Mạng sẽ đạt được hiệu quả cao
hơn khi ta biến đổi trường thông tin này sang thành “tuổi”. Thậm chí ta có thể quy tuổi về
một trong các giá trị: 1 = “trẻ em” (dưới 18), 2 = “thanh niên” (từ 18 đến dưới 30), 3 =
“trung niên” (từ 30 đến dưới 60) và 4 = “già” (từ 60 trở lên).
♦ Chọn trong số các biến đã được biến đổi biến nào sẽ được đưa vào mô hình: không
phải bất kì thông tin nào về mẫu cũng có lợi cho mạng. Trong ví dụ dự đoán người có bị ung
thư hay không ở trên, những thuộc tính như “nghề nghiệp”, “nơi sinh sống”, “tiểu sử gia
đình”,… là những thông tin có ích. Tuy nhiên những thông tin như “thu nhập”, “số con cái”,
… là những thông tin không cần thiết.
II.2. Xác định các tham số cho mạng
a. Chọn hàm truyền

Không phải bất kỳ hàm truyền nào cũng cho kết quả như mong muốn. Để trả lời cho
câu hỏi «hàm truyền như thế nào được coi là tốt ? » là điều không hề đơn giản. Có một số
quy tắc khi chọn hàm truyền như sau:
♦ Không dùng hàm truyền tuyến tính ở tầng ẩn. Vì nếu dùng hàm truyền tuyến tính ở
tầng ẩn thì sẽ làm mất vai trò của tầng ẩn đó: Xét tầng ẩn thứ i:
Tổng trọng số ni = w
i
a
i-
1
+ b
i

a
i
= f(n
i
) = w
f
n
i
+b
f
(hàm truyền tuyến tính)
Khi đó: tổng trọng số tại tầng thứ (i + 1)
n
i+
1
= w
i+

1
a
i
+ b
i
+1
= w
i+
1
[w
f
n
i
+b
f
] + b
i
+1
= w
i+
1
[w
f
(w
i
a
i-
1
+ b
i

) + b
f
] + b
i
+1
17
= Wa
i-
1
+ b
Như vậy n
i+
1
= Wa
i-
1
+ b, và tầng i đã không còn giá trị nữa.
♦ Chọn các hàm truyền sao cho kiến trúc mạng nơron là đối xứng (tức là với đầu vào
ngẫu nhiên thì đầu ra có phân bố đối xứng). Nếu một mạng nơron không đối xứng thì giá trị
đầu ra sẽ lệch sang một bên, không phân tán lên toàn bộ miền giá trị của output. Điều này có
thể làm cho mạng rơi vào trạng thái bão hòa, không thoát ra được.
Trong thực tế người ta thường sử dụng các hàm truyền dạng – S. Một hàm s(u) được
gọi là hàm truyền dạng – S nếu nó thỏa mãn 3 tính chất sau:
– s(u) là hàm bị chặn: tức là tồn tại các hằng số C1 ≤ C2 sao cho: C1 ≤ s(u) ≤ C2 với
mọi u.
– s(u) là hàm đơn điệu tăng: giá trị của s(u) luôn tăng khi u tăng. Do tính chất thứ
nhất, s(u) bị chặn, nên s(u) sẽ tiệm cận tới giá trị cận trên khi u dần tới dương vô cùng, và
tiệm cận giá trị cận dưới khi u dần tới âm vô cùng.
– s(u) là hàm khả vi: tức là s(u) liên tục và có đạo hàm trên toàn trục số.
Một hàm truyền dạng - S điển hình và được áp dụng rộng rãi là hàm Sigmoid.

b. Xác định số nơron tầng ẩn
Câu hỏi chọn số lượng noron trong tầng ẩn của một mạng MLP thế nào là khó, nó
phụ thuộc vào bài toán cụ thể và vào kinh nghiệm của nhà thiết kế mạng. Nếu tập dữ liệu
huấn luyện được chia thành các nhóm với các đặc tính tương tự nhau thì số lượng các nhóm
này có thể được sử dụng để chọn số lượng nơron ẩn. Trong trường hợp dữ liệu huấn luyện
nằm rải rác và không chứa các đặc tính chung, số lượng kết nối có thể gần bằng với số
lượng các mẫu huấn luyện để mạng có thể hội tụ. Có nhiều đề nghị cho việc chọn số lượng
nơron tầng ẩn h trong một mạng MLP. Chẳng hạn h phải thỏa mãn h>(p-1)/(n+2), trong đó
p là số lượng mẫu huấn luyện và n là số lượng đầu vào của mạng. Càng nhiều nút ẩn trong
mạng, thì càng nhiều đặc tính của dữ liệu huấn luyện sẽ được mạng nắm bắt, nhưng thời
gian học sẽ càng tăng.
Một kinh nghiệm khác cho việc chọn số lượng nút ẩn là số lượng nút ẩn bằng với số
tối ưu các cụm mờ (fuzzy clusters)[8]. Phát biểu này đã được chứng minh bằng thực nghiệm.
Việc chọn số tầng ẩn cũng là một nhiệm vụ khó. Rất nhiều bài toán đòi hỏi nhiều hơn một
tầng ẩn để có thể giải quyết tốt.
Để tìm ra mô hình mạng nơron tốt nhất, Ishikawa and Moriyama (1995) sử dụng học
cấu trúc có quên (structural leanrning with forgetting), tức là trong thời gian học cắt bỏ đi
các liên kết có trọng số nhỏ. Sau khi huấn luyện, chỉ các noron có đóng góp vào giải quyết
bài toán mới được giữ lại, chúng sẽ tạo nên bộ xương cho mô hình mạng nơron.
18
c. Khởi tạo trọng
Trọng thường được khởi tạo bằng phương pháp thử sai, nó mang tính chất kinh
nghiệm và phụ thuộc vào từng bài toán. Việc định nghĩ thế nào là một bộ trọng tốt cũng
không hề đơn giản. Một số quy tắc khi khởi tạo trọng:
♦ Khởi tạo trọng sao cho mạng nơron thu được là cân bằng (với đầu vào ngẫu nhiên
thì sai số lan truyền ngược cho các ma trận trọng số là xấp xỉ bằng nhau):
|ΔW
1
/W
1

| = |ΔW
2
/W
2
| = |ΔW
3
/W
3
|
Nếu mạng nơron không cân bằng thì quá trình thay đổi trọng số ở một số ma trận là
rất nhanh trong khi ở một số ma trận khác lại rất chậm, thậm chí không đáng kể. Do đó để
các ma trận này đạt tới giá trị tối ưu sẽ mất rất nhiều thời gian.
♦ Tạo trọng sao cho giá trị kết xuất của các nút có giá trị trung gian. (0.5 nếu hàm
truyền là hàm Sigmoid). Rõ ràng nếu ta không biết gì về giá trị kết xuất thì giá trị ở giữa là
hợp lý. Điều này cũng giúp ta tránh được các giá trị thái quá.
Thủ tục khởi tạo trọng thường được áp dụng:
– B1: Khởi tạo các trọng số nút ẩn (và các trọng số của các cung liên kết trực tiếp
giữa nút nhập và nút xuất, nếu có) giá trị ngẫu nhiên, nhỏ, phân bố đều quanh 0.
– B2: Khởi tạo một nửa số trọng số của nút xuất giá trị 1, và nửa kia giá trị -1.
II.3. Vấn đề lãng quên (catastrophic forgetting)
Catastrophic forgetting là vấn đề một mạng quên những gì nó đã học được trong các
mẫu trước khi đang học các mẫu mới. Nguyên nhân là do sự thay đổi các trọng số theo các
mẫu mới, nếu như các mẫu cũ trong một thời gian không được đưa vào huấn luyện. Để tránh
điều này, ta thường thực hiện việc huấn luyện luân phiên giữa mẫu cũ và mẫu mới.
Hình 10: Huấn luyện luân phiên trên hai tập mẫu
19
Xét ví dụ mạng được huấn luyện luân phiên với hai tập mẫu A và B (hình 2-10). Tại
mỗi chu kỳ mạng sẽ học tập mẫu A sau đó học tập mẫu B. Khi bước vào chu kỳ thứ hai, lỗi
lúc bắt đầu học tập mẫu A cao hơn là ở chu kỳ thứ nhất khi vừa học xong tập A. Điều này là
do giữa hai lần học tập mẫu A mạng đã học tập mẫu B. Tuy nhiên nếu xét trên cả chu kỳ thì

lỗi huấn luyện sẽ giảm xuống. Tức là lỗi lúc bước vào chu kỳ thứ ba sẽ nhỏ hơn lúc bước
vào chu kỳ thứ hai.
Có nhiều phương pháp để huấn luyện dữ liệu mới. Chẳng hạn sau khi một số mẫu
mới được học, một vài mẫu cũ được chọn ngẫu nhiên trong số các mẫu trước đó để đưa vào
học. Vấn đề sẽ khó khăn hơn khi các mẫu cũ không còn nữa. Khi đó các mẫu giả
(pseudoexamples) có thể được sử dụng để lưu giữ các trọng số càng gần các trọng số trước
càng tốt.
II.4 Vấn đề quá khớp
a. Khái niệm quá khớp
Vấn đề quá khớp xảy ra khi mạng được luyện quá khớp (quá sát) với dữ liệu huấn
luyện (kể cả nhiễu), nên nó sẽ trả lời chính xác những gì đã được học, còn những gì không
được học thì nó không quan tâm. Như vậy mạng sẽ không có được khả năng tổng quát hóa.
Về mặt toán học, một giả thuyết (mô hình) h được gọi là quá khớp nếu tồn tại giả
thuyết h' sao cho:
1. Error train (h) < Error train (h')
2. Error test (h) > Error test (h')
b. Giải quyết quá khớp
Vấn đề quá khớp xảy ra vì mạng có năng lực quá lớn. Có 3 cách để hạn chế bớt năng
lực của mạng:
– Hạn chế số nút ẩn
– Ngăn không cho mạng sử dụng các trọng số lớn
– Giới hạn số bước luyện
Khi mạng được luyện, nó chuyển từ các hàm ánh xạ tương đối đơn giản đến các hàm
ánh xạ tương đối phức tạp. Nó sẽ đạt được một cấu hình tổng quát hóa tốt nhất tại một điểm
nào đó. Sau điểm đó mạng sẽ học để mô hình hóa nhiễu, những gì mạng học được sẽ trở
thành quá khớp. Nếu ta phát hiện ra thời điểm mạng đạt đến trạng thái tốt nhất này, ta có thể
ngừng tiến trình luyện trước khi hiện tượng quá khớp xảy ra.
20

×