Tìm hiểu quy tắc huấn luyện của hebb để huấn luyện mạng một lớp và cài đặt ứng dụng nhận dạng chữ số
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
-o0o -BÀI TẬP LỚN MÔN
Lý Thuyết Nhận Dạng
Đề Tài:
Tìm Hiểu Quy Tắc Huấn Luyện Của Hebb Để Huấn Luyện Mạng Một Lớp Và
Cài Đặt Nhận Dạng Chữ Số
Giáo viên hướng dẫn: Th.S Trần Hùng Cường
Nhóm Sinh viên: Nhóm 3
1 Nguyễn Đăng Khoa
2 Phạm Huy Bộ
3 Phạm Văn Duy
4 Vũ Thanh Tùng
Lớp: KHMT2
Khoá: 3
Hà nội, tháng 6 năm 2011
Trang 2Mục Lục
I G i ớ i t h i ệ u v ề m ạ n g n e u r o n n h â n t ạ o : 3
1.Mạng neuron nhân tạo là gì ? 3
2 Mô hình mạng neuron sinh học va neuron nhân tạo: 5
2.1 Mô hình mạng sinh học : 5
2.2 Mô hình mạng neuron: 6
3.Perceptron: 8
II.Tìm hiểu qui tắc Hebb: 9
III.Cài đặt ứng dụng nhận dạng chữ số 13
1.Yêu cầu bài toán ứng dụng 13
2.Cấu trúc dữ liệu sử dụng và biểu diễn trạng thái của bài toán 13
3 Cài đặt bài toán 14
4 Sơ lược giao diện phần mềm : 16
Trang 3MỞ ĐẦU
Kỹ thuật nhận dạng hiện nay đang được nhiều người quan tâm, bởi đây là một ngành khoa học có rất nhiều ứng dụng trong khoa học kỹ thuật, tin học, sinh học và
cả trong lĩnh vực an ninh quốc gia Nó là một bộ phận quan trọng trong các hệ thống thông minh; được sử dụng trong việc dò tìm, xử lý số liệu và hỗ trợ ra quyết định,… Nói một cách tổng quát thì nhận dạng là một bộ môn khoa học có liên quan một cách hữu cơ đến việc phân lớp, tính toán các độ đo
Bài toán nhận dạng ký tự là một bài toán con trong lớp bài toán nhận dạng và xử
lý ảnh Có rất nhiều phương pháp khác nhau để giải quyết bài toán này và phương pháp
áp dụng mạng neuron đã mang lại hiệu quả khá cao
“Nhận dạng ký tự số bằng mạng neuron ” là nội dung đề tài Để nhận
dạng các ký tự số nhóm chúng tôi lựa chọn “ huấn luyện Mạng neuron 1 lớp ”.
Mặc dù đã có nhiều cố gắng trong quá trình thực hiện nhưng đề tài không thể tránh được những thiếu sót mong sự góp ý của thầy giáo và các ban
Nhóm tôi xin chân thành cảm ơn Thầy giáo T S T r ầ n H ù n g C ư ờ n g đ ã t ậ n
t ì n h d ạ y d ỗ v à h ư ớ n g d ẫ n t r o n g s u ố t t h ờ i g i a n h ọ c v ừ a q u a
NỘ I DU NG
I G i ớ i thi ệ u v ề m ạ ng n e u r o n n hâ n tạ o :
1.Mạng neuron 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
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 2-2
Trang 4Hình 2-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à wkj 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
Trang 5đã 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
Đầ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
p
u k w kj x j và y k f (u k b k )
trong đó: x1, x2, , xp: là các tín hiệu vào; (wk1, wk2, , wkp) là các trọng số liên kết
của nơron thứ k; uk là hàm tổng; bk là một ngưỡng; f là hàm truyền và yk là tín hiệu đầu
ra của nơron
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)
2 Mô hình mạng neuron sinh học va neuron nhân tạo:
2.1 Mô hình mạng 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 1011 nơron tham gia vào khoảng 1015 kết nối trên các đường truyền (theo [8]) 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à 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
Trang 6Hình 2-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
2.2 Mô hình mạng neuron:
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 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
Các mô hình kiểu mạng neuron:
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
Trang 7Hình 1: 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
Hình 2: 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
Trang 8
Hình 3: 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
3.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
Trang 9Hình 5:
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 :
i i n i
w x
1
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
II.Tìm hiểu qui tắc Hebb:
Chúng ta có thể giải thích các định lý toán học của Hebb như thế nào,để mà chúng ta
có thể sử dụng nó để huấn luyện ma trận trọng số của các liên kết tuyến tính.Đầu tiên chúng ta nói lại định lý: nếu cả 2 neurons trên cả cạnh của 1 khớp được kích hoạt một cách đồng thời thì sức mạnh của khớp được tăng lên.Chú ý từ Eq(7.2) kết nối giữa đầu vào pj và đầu ra ai là trọng số wij.Do đó các định luật của Hebb có nghĩa là nếu a dương pj sinh ra a dương ai sau đó
wij nên tăng lên.Điều này gợi ý rằng một sự giải thích toán học của định luật có thể là:
Luật Hebb : Wijnew = wijold + αffi(aiq)gj(pjq) (7.4)
Nơi mà pjq là thành phần thứ j của vector đầu vào thứ q, a iq là thành phần thứ i của mạng đầu ra khi vector đầu vào thứ q được thể hiện trong mạng và αf là hằng số a dương, được
gọi là tỉ lệ học.Sự bằng nhau này nói rằng thay đổi trong trọng số wij là tỷ lệ thuận với một sản
Trang 10phẩm của các hàm kích hoạt trên cả cạnh của khớp.Đối với chương này chúng ta sẽ đơn giản hóa biểu thức 7.4 thành dạng dưới đây:
Wijnew = wijold + αfaiqpjq (7.5)
Chú ý rằng biểu hiện này thực ra kế thừa từ định luật của Hebb ngoài các giải thích ngiêm ngặt của nó.Sự thay đổi trong trọng số tương đương với một sản phẩm của hoạt động trên cả cạnh của khớp.Do đó chúng ta không chỉ làm tăng trọng số khi cả pj và ai là dương mà chúng ta còn tăng trọng số khi cả 2 chung đều âm.Thêm vào đó, sự thực thi của luật Hebb sẽ giảm trọng số bất cứ khi nào pj và ai là trái dấu nhau
Luật Hebb được định nghĩa ở biểu thức 7.5 là một luật học không được giám sát.Nó không đòi hỏi bất kỳ thông tin liên quan nào tới mục tiêu đầu ra.Trong chương này chúng ta quan tâm đến việc sử dụng luật Hebb cho việc học có giám sát trong đó mục tiêu đầu ra thì đã được biết cho mỗi vector đầu vào.Đối với luật Hebb có giám sát, chúng ta thay thế mỗi đầu ra đối với mỗi đầu ra thực.Theo cách này, chúng ta nói về thuật toán cái mà mạng nên làm hơn
là cái mà nó đang làm hiện tại.Biểu thức là :
Wijnew = wijold + tiqPjq’ (7.6)
Nơi mà tiq là thành phần thứ i của vector mục tiêu thứ q tq (để đơn giản, chúng ta đặt tỷ
lệ học αf là 1.)
Chú ý rằng biểu thức 7.6 có thể viết thành ký hiệu vector :
Wnew = wold + tqPqT (7.7)
Nếu chúng ta giả sử rằng ma trận trọng số đã được khởi tạo là 0 và sau đó mỗi cặp đầu ra/ đầu vào Q được áp dụng biểu thức 7.7 một lần, chúng ta có thể viết:
W = t1P1T + t2P2T + … TQPQT = ∑Q
q=1 tqPqT (7.8) Điều này có thể được thể hiện trong dạng ma trận:
W = [t1t2t…tQ] (7.9) Trong đó : T = [t1t2t…tQ] ; Q = [p1p2…pQ] (7.10)
Phân tích thực hiện :
Hãy phân tích sự thể hiện của việc học Hebbian đối với các liên kết tuyến tính.Đầu tiên coi như trường hợp nơi mà vector Pq là trực giao(trực giao và chiều dài đơn vị) Nếu Pk là đầu vào của mạng thì đầu ra có thể được tính toán như sau:
Trang 11Khi Pq là trực giao:
(PqTPk) = 1 q = k
= 0 q#k (7.12)
Do đó biểu thức 7.11 có thể được viết lại :
a = wpk = tk (7.13)
Đầu ra của mạng thì bằng đầu ra mục tiêu.Điều này chỉ ra rằng, nếu vector đầu vào nguyên mẫu là trực giao,thì luật Hebb sẽ sinh ra đầu ra chính xác ứng với mỗi đầu vào
Nhưng về vector nguyên mẫu không trực giao thì thế nào?Giả sử rằng mỗi vector pq là chiều dài đơn vị, nhưng đó là chúng không trực giao.Do đó biểu thức 7.11 trở thành:
Bởi vì các vector không trực giao,mạng sẽ không sinh ra đầu ra chính xác.Độ lớn của lỗi phụ thuộc vào số lượng của sự tương quan giữa các mô hình nguyên mẫu đầu vào
Ví dụ, giả sử rằng vector nguyên mẫu đầu vào là:
(kiểm tra thấy rằng 2 vector đầu vào là trực giao)
Ma trận trọng số là:
Nếu chúng ta kiểm tra ma trận trọng số này trong 2 đầu vào nguyên mẫu chúng ta tìm :
Trang 12(7.17)
Và
(7.18) Thành công! Các đầu ra của mạng bằng với các mục tiêu
Bây giờ chúng ta sẽ xem lại vấn đề nhận dạng quả táo và quả cam được mô tả ở chương 3 Gọi lại đầu vào nguyên mẫu là:
(chú ý rằng chúng không trực giao).Nếu chúng ta bình thường hóa các đầu vào đó và chọn như các đầu ra mong muốn -1 và 1,chúng ta có :
(7.20)
Ma trận trọng số của chúng ta trở thành:
Trang 13
(7.21)
Vì vậy chúng ta sử dụng 2 mô hình nguyên mẫu:
III.Cài đặt ứng dụng nhận dạng chữ số
1.Yờu cầu bài toán ứng dụng
Bài toỏn yờu cầu nhận dạng một chữ số đó bị làm nhiễu Thông qua biểu diễn bài toỏn dưới mô hỡnh mạng noron một lớp
2.Cấu trỳc dữ liệu sử dụng và biểu diễn trạng thỏi của bài toỏn
- Ta dựng cấu trúc dữ liệu là mảng một chiều, mảng 2 chiều và mụ hỡnh mạng nơron một lớp
- Ta biểu diễn cỏc chữ số mẫu trên một ma trận 6 dũng, 5 cột cỏc textbox Cỏc ma trận này chỉ chứa các phần tử 1 và -1 ễ nào chứa 1 thỡ được tụ màu đậm để phõn biệt và biểu diễn chữ số đó Ô chứa -1 thỡ để nguyờn khụng tụ màu Vớ dụ biểu diễn cỏc chữ số trờn ma trận như hỡnh sau: