Tìm hiểu giải thuật lan truyền ngược huấn luyện cho mạng nhiều lớp và cài đặt ứng dụng
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
1 Cao Xuân Điền
2 Nguyễn Minh Hải
3 Trần Ngọc Quý
4 Nguyễn Ngọc Thao
Trang 2NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Hà Nội ngày tháng năm 2011
Giảng viên
Trang 3MỤC LỤC
I Tìm hiểu thuật toán 4
Lan truyền ngược 4
Khởi tạo các trọng số: 4
Lan truyền tiến các đầu vào: 4
Sai số lan truyền ngược: 5
Điều kiện kết thúc: 6
Huấn luyện mạng 9
Sử dụng mạng: 11
Khả năng tính toán của mạng nhiều lớp: 11
Nghiên cứu sự hội tụ và độ phức tạp của quá trình huấn luyện mạng 11
Một số vấn đề về mạng nơ ron nhiều lớp : 12
II Ứng dụng mạng Neuron lan truyền ngược cho 14
nhận dạng ký tự 14
1 Đặt vấn đề 14
2 Phương pháp và thuật toán nhận dạng ký tự 14
a) Cơ sở dữ liệu 14
b) Phương pháp nhận dạng 15
c) Quá trình huấn luyện mạng : 16
d) Hậu sử lý dữ liệu 18
e) Kết quả và đánh giá: 18
III Chương Trình Thử Nghiệm Và Kết Quả 19
A Ý tưởng và hướng thực hiện 19
Huấn luyện mạng neural 23
Nhận dạng ảnh kí tự 24
B Môi Trường Chạy Thử Nghiệm 24
C Nhận xét quá trình nhận dạng kí tự: 26
Trang 4I Tìm hiểu thuật toán
Lan truyền ngược
là quá trình xử lý tập các mẫu học được lặp đi lặp lại nhiều lần, mỗi bước lặp
so sánh các lớp mà mạng neural dự đoán cho mỗi mẫu với các lớp chính xáccủa các mẫu Với mỗi mẫu học, các trọng số được điều chỉnh sao cho cực tiểusai số trung bình-bình phương(phương sai) của lớp được dự đoán và lớp thực
sự Sự điều chỉnh các trọng số này được thực hiện ở bước quay ngược lại tức làbước từ tầng xuất quay ngược qua các tầng ẩn đến tầng ẩn đầu tiên Mặc dùkhông chắc chắn nhưng hầu hết các trọng số đều hội tụ về một giá trị và quátrình học hết thúc Thuật toán lan truyền ngược gồm các bước như sau:
Khởi tạo các trọng số:
Các trọng số trong mạng được khởi tạo giá trị ngẫu nhiên trong khoảng từ
-1.0 đến -1.0 hoặc từ -0.5 đến 0.5 Mỗi neural được kết hợp với một định hướng(bias), giá trị định hướng này được khởi tạo giống như các trọng số
Với mỗi mẫu học X được xử lý theo các bước sau:
Lan truyền tiến các đầu vào:
trong bước này, mạng đầu vào và đầu ra của mỗi neural trong tầng ẩn và tầngxuất được tính toán Đầu tiên mẫu học được đưa vào tầng nhập của mạng.Mạng đầu vào cho mỗi neural trong các tầng ẩn và tầng xuất được tính toánnhư là một ánh xạ của các biến đầu vào (hình 2-4) Đầu vào của một neural làđầu ra của những neral ở tầng trước nối đến nó Để tính toán mạng đầu vào củaneural thì mỗi đầu vào của nó được cộng dồn bởi trọng số tương ứng Cho mộtneural j ở trong tầng ẩn hay tầng
I j =∑ w ij O i + θj
Trang 5Sự định hướng này có tác dụng như là một ngưỡng, nó làm thay đổi cách hoạtđộng của neural.
Mỗi neural ở trong tầng ẩn hay tầng xuất có một mạng đầu vào của nó và áp dụng một hàm kích hoạt đến nó (hình 2-4), hàm này là hàm logistic hoặc hàm
sau:
O j=
Hàm này được xem như là một hàm nén (squashing), vì nó ánh xạ mộtmiền đầu vào rộng lớn lên một vùng nhỏ hơn trong khoảng từ 0 đến 1 Hàmlogistic là một hàm không tuyến tính (phi tuyến) và có khả năng phân loại, chophép thuật giải lan truyền ngược mô hình theo bài toán phân lớp là tuyến tính liêntục
Một neural trong tầng ẩn hoặc tầng xuất
Sai số lan truyền ngược:
sai số được lan truyền ngược bởi quá trình cập nhật trọng số và định hướng làm
tính bởi:
Errj = Oj(1 - Oj)(Tj - Oj)
Trang 6Để tính độ sai số của tầng ẩn với neural j, tổng các sai số của trọng số của các neural trong tầng kế tiếp liên kết đến neural j được tính trước Sai số
của tầng ẩn với neural j là:
k
Trọng số và định hướng được cập nhật đã làm sai số lan truyền Trọng số
∆wij = (l)ErrjOj
wij = wij +∆wij
Biến l biểu thị khả năng học hay mức độ học, là một hằng số có giá trị trong
khoảng 0 và 1 Học lan truyền ngược sử dụng phương pháp giảm gradient đểkiếm ra một tập trọng số mà có thể mô hình hóa bài toán phân lớp cho trước saocho cực tiểu sai số bình phương-trung bình giữa lớp được mạng dự đoán và lớpthực sự của mẫu học đã cho Mức độ học ngăn không cho sa lầy vào cực tiểu cục
bộ trong không gian quyết định nghĩa là các trọng số xuất hiện để hội tụ, nhưng
nó không phải là giải pháp tốt nhất và đi tới khám phá cực tiểu toàn cục Nếumức độ học quá nhỏ thì việc học tiến triển rất chậm Nếu mức độ học quá lớnthì các giải pháp không thỏa đáng Một kinh nghiệm là cho mức độ học l=t với t
là số lần lặp đi lặp lại trên tập dữ liệu học cho tới lúc này
θj
∆θj = (l)Err j
∆θj = θj + ∆θj
Điều kiện kết thúc:
Quá trình học mạng được bắt đầu với các giá trị trọng số tùy ý và tiến hành lặp
đi lặp lại Mỗi lần lặp được gọi là một thế hệ Trong mỗi thế hệ mạng điềuchỉnh các trọng số sao cho sai số giảm dần và quá trình học kết thúc khi:
Trang 7+ Tất cả ∆wij ở thế hệ trước nhỏ hơn một ngưỡng xác định nào đó hoặc+ Tỷ lệ các mẫu bị phân lớp sai ở thế hệ trước nhỏ hơn một ngưỡng nào đóhoặc
+ Lặp đủ số lượng thế hệ xác định trước
Trong thực tế, có khi phải trải qua hàng trăm ngàn thế hệ thì các trọng số mới có thể hội tụ Tóm tắt thuật giải lan truyền ngược cho mạng neural học để phân lớp được trình bày như sau:
Trang 8Input: tập các mẫu học, mức độ học l, một mạng đa tầng
Output: một mạng neural đã được học để phân lớp cho các mẫu
1) Khởi tạo tất cả các trọng số và định hướng trong mạng;
2) While điều kiện kết thúc chưa thỏa {
3) for với mỗi mẫu X trong tập các mẫu học {
//lan truyền tiến các đầu vào
4) for với mỗi neural j của tầng ẩn hoặc tần xuất
5) I j =∑ w ij O i + θj // tính mạng đầu vào cho neural j
6) for với mỗi neural j của tầng ẩn hoặc tầng xuất
7) O j= // tính mạng đầu ra cho neural j
// sai số lan truyền ngược
8) for với mỗi neural j trong tần suất
9) Errj = Oj(1 - Oj)(Tj - Oj) //tính sai số
10) for với mỗi neural j trong tầng ẩn
số
12) for với mỗi trọng số wij trong mạng {
14) wij = = wij +∆wij; } //cập nhật trọng số
15) for với mỗi định hướng θ i trong mạng {
16) ∆θj = (l)Err j ; // độ tăng định hướng
Trang 917) ∆θj = θj + ∆θj ; } // cập nhập định
hướng
Trang 10-Tính sai số Err s của mạng dựa trên sai lệch out s – Y s
-Hiệu chỉnh các trọng số liên kết nơ ron dẫn tới lớp ra W ij từ nơ ron j tại lớp ẩn cuối cùng tới nơ ron i tại lớp ra:
W ij = W ij + a j δ i
Trang 11ở đây α là hệ số học
a j là đầu ra của nơ ron j
δ i là sai số mà nơ ron i ở lớp ra phải chịu trách nhiệm, được xác định theo công thức:
δ i = err i g’(Net i ) (16)
Với err i là sai số thành phần thứ i trong Err s , Net i là tổng thông tin vào có trong số của nơ ron thứ i (Net i = ∑Wij a j và g’(.) là đạo hàm cuarhamf kích hoạt g được dùng trong các
nơ ron.
-Hiệu chỉnh các trọng số liên kết nơ ron W jk dẫn tới tất cả các lớp ẩn từ nơ ron thứ
k sang nơ ron thứ j (các lớp ẩn được xét từ dưới lên)
-Tính tổng sai số tại nơ ron j phải chịu trách nhiệm
δ j = g’(Net j ) ∑
i
W
ijδ i (17) -Hiệu chỉnh trọng số W jk
a, Trường hợp xét hàm kích hoạt tại các nơ ron ta có hệ thức g’(x) = g(x) (1-g(x))
b, Từ các công thức ( 15), (18) ta có thể viết lại:
Trang 12Quá trình huấn luyện mạng cần chú ý tới các yếu tố sau
Các trọng số W ij ban đầu W ij được gán với các giá trị ngẫu nhiên, nhỏ
Lựa chọn các hệ số học α và hệ số quán tính βsao cho α +β ≈ 1, với β không lớn hơn α quá nhiều
Các tín hiệu vào ra nên định cỡ chỉ trong khoảng [0, 1] Các nghiên cứu thực nghiêm chỉ ra rằng nên nằm trong khoảng [0,2 , 0,8]’
Giả sử đã huấn luyện mạng như hình 7 với tập mẫu {X s , Y s } để được ma trận trọng
số W Quá trình lan truyền trong mạng một vecto tín hiệu vào X = (x 1 , x 2 , x 3 ) được cho
out = g (W 64 a 4 + W 65 a 5 ) = g(W 64 g(W 41 x 1 + W 42 x 2 + W 43 x 3 ) + W 65 g(W 51 x 1 +W 52
x 2 + W 53 x 3 )
=F ( X, W)
Với một lớp ẩn, mạng có thể tính toán xấp xỉ một hàm liên tục bất kỳ đối với các biến tương ứng là các tín hiệu đầu vào.
Với lớp hai ẩn, mạng có thể tính toán một hàm bất kỳ Tuy vậy số nơ ron trong các lớp ẩn có thể tăng theo hàm mũ đối với số đầu vào và cho đến nay vẫn chưa có những cơ sở lý luận đầy đủ để khảo sát họ các hàm có thể xấp xỉ nhờ các mạng nhiều lớp.
Phương pháp hiệu chỉnh trọng số liên kết nơ ron (15) (18) dựa trên nguyên tắc lan truyền ngược sai số có thể lý giải dựa trên nguyên lý tìm kiếm gradient trong không gian các tham số W sao cho cực tiểu hàm sai số tổng cộng:
E(w) = 12∑¿ ¿j – out j ) 2
Trang 13Ở đây, Y j là giá trị thực nghiệm quan sát được tại nơ ron i ở lớp ra, out j là giá trị tính toán của mạng tại nơ ron thứ i ở lớp ra đối với mẫu X s
Khai triển E theo các trọng số thành phần, ta có:
∂Wij = -a j (Y j – out j ) g’ (Net i ) = - a jδi
Lấy đạo hàm riêng của E theo các W ij :
Việc hiệu chỉnh vecto trọng số W =(w ij ) sao cho E(W) min dẫn tới việc xác định vecto gia số ∆ W = ¿ ij ) ngược hướng với vecto gradient (∂ E/∂w ij ) Nói cách khác:
∂ E
∂Wjk = -a k δj
∆w ij = -α¿i a j ) = δi a j
∆w jk = -α¿j ak ) = δj a k
Công thức này phù hợp với công thức (15) (18) tương ứng.
Độ phức tạp thời gian của mạng nhiều lớp chủ yếu phụ thuộc vào thời gian huấn luyện mạng với một tập mẫu nào đó Giả sử có M mẫu vào và |W| trọng số Mỗi lần đưa tất cả các mẫu đi qua mạng (gọi la một vòng lặp (epoch)) phải tốn O( m |W| ) thao tác nơ ron Trong trường hợp xấu nhất, số vòng lặp sẽ phụ thuộc hàm mũ vào số đâu vào n Do vậy, chi phí thời gian sẽ là O(k n m |W|).
Hơn nữa, quá trình học không phải lúc nào cũng hội tụ và có thể dẫn tới các cực tiểu địa phương của hàm E Khi dùng mạng nơ ron nhiều lớp để biểu diễn tất cả các hàm logic
có n đầu vào, ta phải dùng cỡ 2 n /n nút ấn, mạng này có khoảng O (2 n ) trọng số, do vậy phải tiêu tốn O (2 n ) bit để biểu diễn các hàm logic.
Mạng nơ ron nhiều lớp truyền thẳng là cách biểu diễn các đối tượng dựa trên các giá trị của thuộc tính của chúng tương đối hiệu quả, tuy rằng chúng chưa vét cạn hết mọi khía cạnh khác nhau về đối tượng đó Cách tiếp cận mạng loại này tỏ ra khá hiệu quả các khi quan sát ( tín hiệu vào) có miền giá trị liên tục Do vậy, có
Trang 14thể xem là tốt hơn so với các cách tiếp cận truyền thống dựa trên logic mệnh đề và cây quyết định.
Khả năng tổng quát hóa : mạng lọa này có thể đưa ra các kết quả mang tính tổng quát hóa, tuy rằng kiểu phụ thuộc giữa đầu ra và đầu vào không quá rối rắm.
Khả năng dung thứ lỗi : Mạng được luyện mẫu theo nguyên tắc hồi quy tuyến tính nên có thể chấp nhận sai số trong tập dữ liệu vào Tuy vậy, mạng không thể đưa ra được những kết quả tính toán không chắc chắn, không chính xác như kiểu mạng Bayes.
Mạng được sử dụng như một hộp đen, biểu hiện mối quan hệ nào đó giữa tín hiệu
ra và tín hiệu vào, mà không cần chỉ rõ dạng giải tích tường minh của mối quan hệ
đó Tuy nhiên, điểm bất lợi của cách tiếp mạng chính là ở chỗ không thể lý giải các kết quả một cách rõ ràng như đối với suy diễn logic hay cây quyết định
Trang 15II.Ứng dụng mạng Neuron lan truyền ngược cho
nhận dạng ký tự
1 Đặt vấn đề
Mạng nơron nhân tạo (Artificial Neural Network: ANNs) là sự tái tạobằng kỹ thuật những chức năng của hệ thần kinh con người với vô số cácnơron được liên kết truyền thông với nhau qua mạng Giống như con người,ANNs được học bởi kinh nghiệm, lưu những kinh nghiệm đó và sử dụng trongnhững tình huống phù hợp
Trong kỹ thuật nhận dạng ký tự, mạng nơron tỏ ra ưu thế hơn cácphương pháp truyền thống ở chỗ không tốn thời gian cho thủ tục tiền xử lý,làm mảnh ký tự, trích trọn đặc trưng… Mặt khác các phương pháp ra quyếtđịnh trong nhận dạng truyền thống được cài đặt tĩnh trong chương trình, khimuốn bổ sung thêm các mẫu học mới phải thiết kế lại chương trình Trongkhi với mạng nơron, chỉ cần cung cấp một tập mẫu vào ra của dữ liệu mới chopha huấn luyện là có thể bổ sung vào “bộ nhớ mạng” những kiểu dữ liệu mới
mà không ảnh hưởng đến cấu trúc chương trình ban đầu
Trong phạm vi bài báo này sẽ giới thiệu tổng quan về lý thuyết mạngnơron và ứng dụng mạng Perceptron nhiều lớp lan truyền ngược sai số để thiết
Trang 16b) Phương pháp nhận dạng
Phương pháp nhận dạng ký tự quang bằng mạng nơron bao gồm các bước được
Trang 17nơron ở lớp vào của mạng.
Mạng nơron nhận dạng ký tự
Hiện nay, các loại mạng nơron thông dụng gồm có: mạng truyền thẳng(feel- forward), mạng hồi qui (feedback), mạng tự tổ chức (self-organizing).Mạng truyền thẳng feed-forward bao gồm nhiều lớp các đơn vị xử lý phi tuyến(non-linear processing unit)
Trong phần mềm này ta thiết kế chương trình nhận dạng sử dụng mạng MLP có
3 lớp lớp vào có 150 nút tương ứng với 250 phần tử vectơ ma trận pixel, lớp ẩn
có 600 nơron và lớp ra có 16 nơron với 16 bit
c) Quá trình huấn luyện mạng :
Huấn luyện mạng neural nhiều lớp sử dụng thuật toán Lan truyền ngược gồmhai quá trình: Quá trình truyền tuyến tính và quá trình truyền ngược:
Quá trình truyền tuyến tính: Dữ liệu từ lớp nhập qua lớp ẩn và đến lớp xuấtđể:
biểu diễn được dữ liệu học
Trang 18 Tìm ra sự khác nhau giữa giá trị thật hàm mẫu mà mạng tính được
và kết quả dự đoán của mạng gọi là lỗi (học có giám sát)
Quá trình truyền ngược: Giá trị lỗi sẽ được truyền ngược lại sao cho quátrình huyến luyện(học) sẽ tìm ra trọng số Wi để lỗi nhỏ nhất
Bước 1: Lan truyền xuôi đầu vào Xs={x1, x2, …, xn} qua mạng:
Bước 2: Lan truyền ngược sai số :
So sánh các phần tử của vectơ đầu ra thực với các phần tử tương ứng của vectơ đầu ra mẫu để tính độ sai lẹch ek =tk -yk
Tổng bình phương của sai số của mạng ứng với mẫu học ( Xs Ts)
Wij (l+1 )= wij + w+ij
Sau khi hiệu chỉnh trọng số, mẫu Xs tiếp tục được đưa vào mạng lần thứ
thứ (l+1) và tiếp tục thuật toán hiệu chỉnh trọng số cho đến khi E< cho trước
hoặc số vòng lặp đạt đến mức định trước
Trang 19Mẫu tiếp theo được đưa vào mạng và quá trình huấn luyện lặp lại nhưtrên cho đến khi mạng học thuộc tất cả các mẫu Lưu cấu hình mạng lại để sẵnsàng đưa vào sử
Trang 20III Chương Trình Thử Nghiệm Và Kết Quả
A. Ý tưởng và hướng thực hiện
Tách kí tự.
Thuật toán
1 Bắt đầu từ kí tự đầu tiên của hàng trên cùng với giá trị x đầu tiên.
2 Quét hết chiều rộng với một giá trị y.
tiên
3 Bắt đầu từ giới hạn trên của kí tự phát hiện được và giá trị x đầu tiên.
4 Quét đến giới hạn dưới của dòng, giữ nguyên x.
đường thẳng đứng tiếp theo
5 Bắt đầu từ phía trái của kí tự tìm thấy và đỉnh của dòng hiện thời,
(giới hạn trái kí tự, giới hạn trên dòng)
6 Quét hết chiều rộng của ảnh Trên cùng một giá trị x.
tự
thẳng đứng tiếp theo
Trang 21y
Quá trình tách kí tự
Gới hạn phải kí tự Gới hạn trái kí tự
Quá trình tách kí tự
Tìm giới hạn kí tự.
Thuật toán
1 Bắt đầu từ đỉnh của dòng hiện thời và bên trái của kí tự.
2 Quét đến bên phải của kí tự cùng một giá trị y.
trên
đường thẳng ngang tiếp theo
3 Bắt đầu từ giới hạn dưới của dòng và bên trái của kí tự.
4 Quét tới bên phải của kí tự trên một giá trị y.
đường thẳng ngang tiếp theo