Tải bản đầy đủ (.docx) (36 trang)

Tìm hiểu thuật toán Neural Network và Support Vector Machine Áp dụng nhận dạng chữ số viết tay

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 (858.2 KB, 36 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
CHƯƠNG TRÌNH ĐÀO TẠO THẠC SĨ TỪ XA QUA MẠNG
Bài tiểu luận:
Tìm hiểu thuật toán
Neural Network và Support Vector Machine
Áp dụng nhận dạng chữ số viết tay
Môn học: Công nghệ tri thức và ứng dụng
GVHD: GS. TSKH. Hoàng Kiếm
Học viên thực hiện
- Lê Hoài Nam – CH1101106
- Lương Chấn Viễn – CH1101155
Tháng 6 - 2012
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
Contents
2
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
Chương 1: Mở đầu
Công nghệ thông tin được ra đời và phát triển từ những năm nữa cuối của thế kỉ
XX. Và đến nay đã gặt hái được rất nhiều thành tựu vượt bậc, khả năng áp dụng
rộng khắp vào tất các các ngành kinh tế, xã hội khác nhau và làm thay đổi không ít
lối sống, cách suy nghĩ của con người hiện đại.
Tuy nhiên, nhu cầu của con người ngày càng cao, họ không chỉ cần những thiết bị
Công nghệ thông tin làm việc theo mệnh lệnh được lập trình sẵn, hỗ trợ tính toán
cơ bản hay lưu trữ dữ liệu và tìm kiếm thông thường. Họ cần những thiết bị máy
tính thông minh hơn, giúp họ tìm ra lời giải những bài toán khó, gợi ý cho họ trong
giải quyết các vấn đề phức tạp v.v…
Trước nhu cầu mới, ngành Khoa học máy tính nói chung và lĩnh vực Trí tuệ nhân
tạo nói riêng nhận vai trò quan trọng trong việc nghiên cứu tìm ra các giải pháp
tiên tiến giúp làm ra những phần mềm và thiết bị máy tính đáp ứng nhu cầu trên.
Chúng phải có khả năng tự động xử lý thông tin, xử lý tri thức, suy luận tính toán


và điều khiển phức tạp. Một số ứng dụng trong lĩnh vực này có thể kể đến như: các
hệ tự động lập luận và chứng minh định lý; các hệ chuyên gia; các hệ hiểu và xử lý
ngôn ngữ tự nhiên; máy học và khai khoáng dữ liệu; robotics v.v…
Nói tới máy học, hiện nay có rất nhiều thành tựu tiên tiến và rất nhiều trong số đó
đã được áp dụng vào thực tế trên nhiều lĩnh vực như tự động hóa, hỗ trợ ra quyết
định, nhận dạng v.v… Với mục tiêu tiếp cận lĩnh vực này, nhóm đã chọn 2 thuật
toán máy học nổi tiếng là Neuron Network và Support Vector Machine để tìm hiểu
và nghiên cứu cùng với việc xây dựng 1 ứng dụng nhỏ vào việc nhận dạng chữ số.
Mô hình bài toán máy học chung là dựa trên tập dữ liệu học, máy tính sẽ tự tìm ra
kết quả khi người dùng đưa vào tập dự liệu mới. Dữ liệu này thường là tập các
thuộc tính dạng số nhị phân. Do đó để nhận dạng được hình ảnh, hình ảnh phải
được xử lý chuyển sang chỗ số nhị phân. Trong báo cáo này, hình ảnh các kí tự số
sẽ được chuyển thành ảnh nhị phân có kích thước 16x16 pixel, và tập dữ liệu học
sẽ có 256 thuộc tính tương đương với 256 điểm ảnh trong bức hình. Chi tiết sẽ
được trình bày ở chương 4 của báo cáo này.
3
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
Chương 2: Neural Network
1 Nguồn gốc
Neural network hay còn gọi là mạng nơron, bắt nguồn từ việc mô phỏng cách thức
hoạt động của bộ não con người. Ta quan niệm bộ não được cấu thành từ các
neurons thần kinh, các neurons này nối với nhau tạo thành một hệ thống phức tạp.
Các cơ quan thụ cảm (như thính giác, thị giác…) truyền “thông tin” cảm nhận
được đến từng vùng riêng biệt của, thông tin được xử lý và dẫn truyền qua các lớp
neurons và sau cùng chuyển hóa thành phản ứng của con người.
Cấu trúc của một neuron gồm phần nhận “tín hiệu” gọi là Dendrite, hay “input
wires”. Tín hiệu được xử lý bởi phần nhân “Nucleus” và trả về “tín hiệu” phản hồi
tại Axon. Axon của neuron này được nối kết với các dendrite của neuron lớn tiếp
theo, khi đó “thông tin” đầu ra của neuron này được truyền đi từ axon bởi dòng
điện sinh học “electrical impules” đến dendrite của neuron thu nhận như là tín hiệu

đầu vào.
4
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
1. Mô hình một neuron – logistic unit
Dựa trên lý thuyết về neuron thần kinh được trình bày ở trên, mô hình 1 neuron
nhân tạo có cấu trúc như hình bên dưới.
Một neuron, hay còn gọi là unit có n giá trị đầu vào. Một unit khi được “kích hoạt”
khi nhận giá trị từ đầu vào sẽ cho giá trị
5
Layer 3
Output layer
Layer 1
Input layer
Layer 2
Hidden layer
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
Với với gọi là "bias unit"; và gọi là trọng số (weight) hay tham số (parameters)
của unit.
Có nhiều loại hàm kích hoạt (activation function) cho một neuron nhân tạo, nhưng
phổ biến nhất là hàm sigmoid (logistic) . Nên neuron còn được gọi là logistic unit.
2. Mô hình neural network
Một neural network gồm nhiều lớp các neuron. Lớp đầu tiên gọi là input layer, lớp
này có số lượng node (unit) bằng với số lượng thông tin đầu vào . Lớp cuối cùng
gọi là output layer, số lượng node của lớp này tùy theo bài toán của chúng ta.
Trong bài toán phân loại nhị phân, ta cần 1 output unit trả về như trên hình. Các
lớp giữa 2 intput layer và output layer được gọi là hidden layer. Tùy thiết kế mà số
6
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
lượng các hidden layer hay số lượng các unit trong mỗi layer có thể khác nhau. Đa
phần, số lượng của các hidden layer là giống nhau. Số lượng các hidden layer càng

nhiều, thì cho kết quả “tốt”nhưng tiêu tốn thời gian tính toán nhiều hơn.
Tạ gọi là giá trị trả về sau khi được kích hoạt của unit thứ trong lớp . Khi đó và .
Ma trận là ma trận chứa các trọng số từ lớp đến lớp .
Ví dụ như hình trên ta có
Gọi là số lượng unit tại lớp thì là một ma trận chiều.
3. Phân lớp đa lớp (Multi-class classification)
Để giải bài toán phân lớp đa lớp, tức với , ta xây dựng cấu trúc mạng neural
network sao cho có output unit như sau (cho trường hợp )
Và cho lớp 1, cho lớp 2 cho lớp 3 …
Và chú ý rằng ta chuyển giá trị của .
4. Forward propagation
Forward propagation (lan truyền tiến) là các bước thực hiện để tính khi biết và .
Khởi tạo
7
Layer 1 Layer 2 Layer 3 Layer 4
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
Khi biết ta tính
Và cuối cùng ta tính được .
5. Cost function
Cho tập dữ liệu huấn luyện .
Gọi là tổng số các lớp trong mạng neural network; là số lượng các unit trong lớp
thứ .
Ví dụ đối mạng sau ta có ;.
Và ta ký hiệu là phần tử thứ trong vector .
Trong logistic regression, ta có hàm cost function như sau
Trong neural network ta có hàm cost function như sau:
Ta thấy là bình phương độ sai lệch giữa giá trị ước lượng và giá trị thực tế . Hàm
có thể xem như là tổng các của tất cả các training example.
Mục tiêu của ta là tìm các tổ hợp sao cho nhỏ nhất.
Bằng cách sử dụng các thuật toán tối ưu hóa như gradient ascent. Tuy nhiên, việc

sử dụng thuật toán cần tính toán và trong quá trình tối ưu . Việc tính toán theo
định nghĩa, tuy nhiên việc tính có độ phức tạp cao khi tính theo
8
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
Phần tiếp theo ta sẽ trình bày về thuật toán back propagation (lan truyền ngược) để
tính một cách hiệu quả.
6. Back propagation algorithm
Với một training example áp dụng trong một mạng neural network
Ta định nghĩa là sai số của node thứ tại lớp như sau:
Trong đó toán tử element wise operator giữa 2 ma trận được định nghĩa
Thuật toán backward propagation tính :
Input: giá trị của tại điểm cần tính đạo hàm riêng
set .
for each training example :
set .
forward propagation to compute .
backward propagation to compute .
update or for all .
return
End of algorithms
Sau đó, ta có thể áp dụng thuật toán tối ưu như gradient descent để tính giá trị .
9
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
10
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
Chương 3: Support Vector Machine
Tương tự như Neuron nhân tạo, Support Vector Machine (SVM) cũng là 1 trong
những thật toán học có giám sát phổ biến hiện nay. Nói về SVM, báo cáo sẽ trình
bày các phần về Margin và ý tưởng về việc phân loại dữ liệu bằng khoảng cách
lớn, Optimal margin classifier, cách sử dụng Lagrange duality và cuối cùng là thuật

toán SMO để giải bài toán tối tưu khi dùng SVM.
Support vector machine là khái niệm trong thống kê và khoa học máy tính nhằm để
chỉ một phương pháp học có giám sát (supervised learning) với mục đích phân
tích dữ liệu và nhận biết mẫu (pattern recognize), được sử dụng trong phân loại
(classification) và phân tích hồi quy (regression analysis).
1 Ký hiệu
Cho trước một tập dữ liệu huấn luyện training set mà mỗi phần tử huấn luyện
training example gồm vector input đầu vào
và lớp của dữ liệu huấn luyện đó
7. Margin
7.1Khái niệm:
Phần này trình bày về ý nghĩa trực quan của margin và độ "tin cậy" đối với dự
đoán mà ta đưa ra.
Trong thuật toán logistic regression, xác suất để khi biết : được mô hình bởi , ta
dự đoán dưa trên khi và chỉ khi hay tương đương với . Vì vậy khi càng lớn,
càng lớn, và độ tin cậy của ta càng cao khi phân loại . Nếu cho một training set, ta
cần phân loại sao cho với mỗi training example thì và đối với các training
example .
11
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
7.2Functional margin
Với mỗi một training example , ta định nghĩa function margin đối với traning
example đó
Khi đó nếu , ta cần lớn (để tăng độ tin cậy của việc dự đoán), vì thế ta cũng cần là
một số thực dương lớn. Ngược lại, đối với , để lớn ta cần là một số thực âm lớn.
Ngoài ra, nếu thì dự đoán của ta là chính xác đối với training example . Do đó,
một function margin lớn đại diện cho một dự đoán có độ tin cậy cao và chính xác.
Tuy nhiên, khi ta thay thế thì kết quả là cũng được nhân lên 2. Vì thế, ta có thể
scale và làm cho lớn tùy ý. Vì thế, ta cần một điều kiện chuẩn hóa như ; hay thay
thế .

Cho một training set , ta định nghĩa function margin đối với là functional margins
nhỏ nhất của từng training example trong .
7.3Geometric margin
Ranh giới phân cách quyết định là mặt phẳng , dễ dàng thấy được vector vuông
góc với mặt phẳng phân cách trên. Ta xét điểm có tọa độ tương ứng với training
example . Khoảng cách của nó đến mặt phẳng phân cách là , tức độ dài đoạn
thẳng .
Vector là vector đơn vị cùng hướng cùng chiều với .
12
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
Ta có tọa độ điểm .
Ngoài ra do nằm trên mặt phẳng phân cách nên
Từ đó ta suy ra
Chứng minh tương tự với trường hợp , ta được công thức tổng quát của geometric
margin đối với training example :
Cuối cùng ta cũng định nghĩa geometric margin đối với training set là geometric
margin nhỏ nhất của từng training example trong .
8. Bài toán tối ưu (Optimization problem)
Cho một training set, ta cần tìm một mặt phẳng phân cách sao cho cực đại
geometric function, vì nó thể hiện việc dự đoán có độ tin cậy cao và chính xác đối
với training set và phù hợp với dữ liệu huấn luyện. Đặc biệt là nó cho ta một sự
phân loại giữa các training example dương tính và âm tính bởi một khoảng cách
(geometric margin).
Ta giả sử rằng tập dữ liệu có thể phân loại bởi hàm tuyến tính (linearly separable),
tức là có thể phân chia các training example dương tính với các training example
âm tính bởi một mặt phẳng phân cách. Nó đưa ta đến bài toán tối ưu sau
s.t.
Tức là ta muốn cực đại hóa sao cho với mỗi training example đều có geometric
margin . Và ràng buộc thể hiện việc chuẩn hóa của geometric margin.
Ta viết lại bài toán trên như sau (nhằm loại bỏ ràng buộc )

s.t.
Ở đây chúng ta cực đại geometric function bởi liên hệ sao cho tất cả các
functional margins .
13
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
Do ta có thể scale tùy ý mà không làm thay đổi , nên ta có thể chọn sao cho . Và
bài toán tối ưu của ta trở thành như sau
s.t.
Bài toán trên là một bài toán tối ưu với hàm mục tiêu là một hàm lồi bậc 2 với các
ràng buộc là tuyến tính. Lời giải của bài toán cho ta optimal margin classifier.
9. Lagrange duality
Đây là một phương pháp giải bài toán tối ưu có điều kiện ràng buộc.
Xét bài toán
s.t.
Chúng ta định nghĩa hàm Lagrangian là
trong đó, các được gọi là hệ số Lagrange (Lagrange multipliers).
Chúng ta tìm các đạo hàm riêng của
và giải để tìm ra và .
Tiếp theo là phần trình bày về lớp bài toán tương đương với bài toán tìm optimal
margin classifier.
Ta xét bài toán tối ưu ban đầu - the primal optimization problem:
s.t.
Ta định nghĩa generalized Lagrangian:
và ở đây, các là các hệ số Lagrange.
Ta xét bài toán sau:
14
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
Với một bất kỳ
1. nếu không thỏa điều kiện ràng buộc trong bài toán ban đầu, tức là có ít nhất
một hay ít nhất một thì

Do ta có thể chọn (tương ứng với ) hoặc (tương ứng với ) rất lớn.
2. nếu thỏa điều kiện ràng buộc thì
Do đó
Từ đó suy ra bài toán
là bài toán tương đương với bài toán primal ban đầu, nguyên thủy của chúng ta.
Gọi và đây cũng chính là giá trị của bài toán ban đầu cần tìm.
Tiếp theo, ta định nghĩa
Ta xét bài toán tối ưu kép - the dual optimization problem sau
ta gọi là giá trị tối ưu của bài toán dual.
Ta có
xảy ra trong điều kiện sau:
• và lồi. Khi một hàm có ma trận Hessian và positive semi-definite thì là
hàm lồi. Ví dụ: là một hàm lồi; tất cả các hàm tuyến tính hay affine đều lồi.
• là hàm affine.
Giả sử rằng tất cả các đều tồn tại sao cho .
15
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
Dựa trên những giả thiết trên, thì luôn tồn tại mà là đáp số của bài toán toán ban
đầu (primal problem), là lời giải của bài toán kép (dual problem). Và . Hơn thế
nửa, thỏa điều kiện Karush-Kuhn-Tucker (KKT)
Ngược lại nếu bất kỳ thỏa điều kiện KKT thì chính là lời giải của bài toán primal
và dual.
Ta xét điều kiện bổ trợ (dual complementarity condition) . Nếu thì , khi đó điều
kiện sẽ trở thành một đẳng thức thay vì bất đẳng thức.
10. Optimal margin classifier
Ở phần trước, ta đã đưa ra bài toán sau để tìm optimal margin classifier
s.t.
Ta đặt ràng buộc
với mỗi training example , ta có một ràng buộc tương ứng.
từ điều kiên KKT dual complementarity thì khi và chỉ khi (do )

Như hình trên, đường gạch ngang liền là mặt phẳng phân cách. Có 3 điểm có
margin nhỏ nhất và cũng là các điểm gần nhất đối với mặt phẳng nằm trên các
16
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
đường đứt khúc song song với mặt phẳng phân cách. Trong trường hợp này có
đúng 3 tương ứng với 3 điểm trên mặt phẳng. Những điểm đó được gọi là support
vectors. Trên thực tế, số lượng các support vector thường rất nhỏ so với số lượng
dữ liệu huấn luyện.
Lagrangian cho vấn đề hiện tại
bởi vì bài toán hiện tại thỏa điều kiện , nên chúng ta sẽ tìm
Đầu tiên ta cực tiểu đối với 2 biến để được bằng cách tính đạo hàm của .
Thay vào Lagrangian:
Tiếp theo ta tính , ta có bài toán sau
s.t.
Chú ý, ở đây ta thay . Ràng buộc có từ điều kiện ban đầu, ràng buộc từ việc tính .
Việc tìm các sao cho cực đại sẽ được trình bày ở phần sau. Tại đây ta giả sử đã
tìm được , ta sử dụng phương trình để tính . Từ bài toán primal ban đầu, ta tìm tối
ưu
Để dự đoán giá trị của một input mới, ta tính , nếu giá trị này lớn hơn 0 thì . Sử
dụng phương trình ta được
17
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
Như đã biết trước, hầu hết các trừ của các support vector. Khi đó
11. Kernels
Trong thuật toán linear regression, ta thay thế input bởi để đạt được hàm phương
trình bậc 2. Ở đây, ta cũng sử dụng thủ thuật như thế để tăng độ chính xác đối với
mặt phẳng phân cách. Để phân biệt 2 loại input đầu vào, ta gọi các input gốc là
input attributes. Khi các input này được ánh xạ thành một tập input mới để đưa
vào thuật toán học, ta gọi tập giá trị này là input features. Ta gọi hàm ánh xạ
feature mapping ánh xạ các attributes thành features. Ví dụ:

Thay vì áp dụng các input gốc (attributes) , thay vào đó, ta có thể học từ features .
Tức ta chỉ đơn giản thay bằng trong các phần trên.
Như đã trình bày, thuật toán có thể được viết bởi tích vô hướng , điều này có nghĩ
ta thay thế các bởi .
Cho trước một feature mapping , ta định nghĩa Kernel
Ta thay thế bất cứ chỗ nào có bởi để SVM học từ feature .
Với một cho trước, ta dễ dàng tính bởi tìm và và tính tích vô hướng giữa chúng.
Tuy nhiên, một điều thú vị là có thể tính một cách rất dễ dàng trong khi thời gian
tính của có thể rất lớn ( có vector có chiều rất lớn). Do đó, bằng cách áp dụng cách
18
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
tính có độ phức tạp thấp vào trong SVM cho phép thuật toán có thể học từ không
gian feature có chiều rất lớn mà không cần phải tính .
Ví dụ: giải sử và Kernel
Ta có
từ đó ta có là hàm (giả sử với )
Ta thấy là để tính ta chỉ cần trong khi tính ta cần với là chiều của input
attributes.
Với và tương ứng với feature mapping
Tổng quát Kernel tương đương với feature mapping có chiều . Độ phức tạp của
cũng chỉ ở trong khi của là .
Khi xét đến ý nghĩa của kernel, ta thấy nếu 2 vector và gần nhau, kernels sẽ lớn
và ngược lại, khi 2 vector và xa nhau (gần vuông góc với nhau) thì kernels sẽ
nhỏ. Vì thế, ta có thể nghĩ rằng như là hàm đo độ giống nhai của và , hay sự
tương đồng của và . Vì thế khi ta đưa ra một hàm kernels, thì hàm kernels cần thể
hiện sự tương đồng giữa và .
Ví dụ:
tiến tới 1 khi và tiến tới nhau, và tiến đến 0 nếu xa nhau. Kernel trên được gọi là
Gaussian kernel và tương ứng với feature mapping có chiều vô cùng. Nhưng với
một cho trước, là sao ta xác định được đó là một kernel hợp lệ, hay tồn tại một

feature mapping sao cho với tất cả mọi .
Cho một tập hữu hạn m điểm , ta định nghĩa ma trân Kernel là một ma trận
vuông .
Nếu là một kernel hợp lệ thì nên là ma trận đối xứng.
19
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
Ký hiệu là tọa độ thứ của vector . Ta có:
Vậy ma trận kernel là ma trận positive semi-definite.
Định lý Mercer:
Cho hàm . Điều kiện cần và đủ để là một kernel hợp lệ (Mercer kernel) là với mọi
tập hữu hạn thì ma trận kernel tương ứng là đối xứng và positive semi-definite.
End Mercer theory
12. Regularization
Cho tới hiện tại, ta phát triển SVM dựa trên giả thiết rằng dữ liệu có thể phân chia
được bởi hàm tuyến tính. Trong khi ánh xạ dữ liệu đến một không gian feature
nhiều chiều hơn bởi có làm tăng độ hợp lý của việc phân chia dữ liệu, nhưng
chúng ta cũng không thể đảm bảo rằng nó luôn đúng. Hơn nữa, trong một vài
trường hợp, việc tìm một mặt phẳng phân cách không chính xác là cái mình long
muốn do chịu ảnh hưởng không chính xác từ một số các giá trị ngoại lai. Ví dụ như
trong hình dưới
20
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
Hình bên trái cho ta thấy optimal margin classifier, và hình phải thể hiện sự thay
đổi lớn của optimal margin classifier khi ta thêm chỉ duy nhất một giá trị ngoại lai
và margin của classifier đối với tập dữ liệu bây giờ nhỏ hơn nhiều.
Để giúp thuật toán có thể làm việc trong tập dữ liệu không phân tách tuyến tính
được cũng như bớt nhạy cảm với các giá trị ngoại lai, ta xây dựng lại bài toán tối
ưu như sau
s.t.
Khi đó, example được cho phép có functional margin , và với mỗi một example có

functional margin thì ta lại tăng hàm mục tiêu lên một lượng . Tham số điều khiển
trọng lượng tương quan giữa 2 mục tiêu (i) tối thiểu mà vẫn (ii) đảm bảo rằng hầu
hết các example đều có functional margin ít nhất bằng 1.
Cũng như trước, ta xây dựng Lagrangian:
và sau khi giải ; ta được bài toán tối ưu có dạng như sau:
s.t.
sau khi giải ra , từ ta tính .
Và điều kiện KKT dual-complpementarity như sau:
13. SMO algorithm
Thuật toán SMO (Sequential minimal optimization) của tác giả John Platt, được sử
dụng để giải bài toán đã trình bày chi tiết ở phần trên.
21
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
13.1 Coordinate ascent
Trước tiên, ta trình bày về thuật toán coordinate ascent. Xét bài toán tối ưu không
chứa điều kiện ràng buộc sau
Để giải bài toán trên, ta sử dụng thuật toán coordinate ascent
Thuật toán coordinate ascent
1. loop until convergence {
2. for do {
3.
}
}
End of Coordinate ascent
Trong vòng lặp trong cùng (dòng 3) của thuật toán, ta sẽ giữ các giá trị của các
không đổi, sau đó tối ưu hàm mục tiêu chỉ theo biến . Tại thuật toán trên, vòng lặp
trong (dòng 2) tối ưu theo thứ tự các biến từ tuy nhiên không nhất thiết như vậy, ví
dụ ta có thể chọn biến tiếp theo mà ta kỳ vọng là có khả năng là tăng giá trị của
lên nhiều nhất.
Thuật toán coordinate ascent hiệu quả khi ta có thể tìm của một cách dễ dàng và

hiệu quả.
Hình vẽ trên thể hiện cách hoạt động của thuật toán coordinate ascent. Các vòng
tròn ellipse là đường đồng mức của hàm mục tiêu mà ta muốn tối ưu hóa. Thuật
toán Coordinate ascent được khởi tạo tại điểm , các điểm trong hình vẽ là tổ hợp
22
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
trong quá trình lặp. Ta thấy các đường nối giữa 2 tổ hợp tiếp theo song song với
các trục tọa độ do trong mỗi lần lặp, ta chỉ hiệu chỉnh một biến duy nhất.
13.2 SMO
Trở lại bài toán tối ưu ta cần giải
s.t.
Ta chú ý đến đẳng thức , tức ta có thể xác định được 1 biến từ giá trị của các biến
còn lại.
Thuật toán SMO
repeat till convergence {
select to update next
reoptimized w.r.t while holding all other fixed
}
End of SMO
Để kiểm tra tính hội tụ, ta xét đã thỏa điều kiện KKT
với sai số chưa.
Một lý do mà thuật toán SMO hiệu quả là ta có thể tính toán và cập nhật một cách
nhanh chóng. Giả sử ta có một bộ thỏa các điều kiện ràng buộc, và tiếp theo ta tối
ưu theo 2 biến và giữ giá trị của các biến còn lại cố định.
Từ phương trình ta có
Ta có thể hình dụng ràng buộc trên như sau
23
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
Từ điều kiện ràng buộc , thì (tức nằm trong hình vuông như hình trên). Hơn nữa,
nằm trên đường thẳng . Vậy nằm trong phần đoạn thẳng chứa trong hình vuông,

tức .
thế vào ta có
Do các biến không đổi, hàm trở thành hàm bậc 2 theo : . Ta tìm cực đại của hàm
trong khoảng
14. Kết luận
Như vậy, thuật toán SVM hình thành từ khái niệm margin và bài toán optimal
margin classifier nhằm và dẫn đến bài toán tối ưu sau
s.t.
Bài toán trên được giải quyết bởi thuật toán SMO. Sau quá trình huấn luyện ta có
thể đưa ra dự đoán cho input đầu vào mới dựa trên
24
Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
Chương 4: Thực nghiệm, đánh giá
1 Chương trình demo
14.1 Cấu trúc dữ liệu học
Thông tin của dữ liệu học được lấy từ địa chỉ
bao gồm
- 1593 chữ số viết tay của 80 người được đưa vào máy tính xử lý, chuyển thành
hình ảnh nhị phân có kích thước 16x16pixel, mỗi pixel cso giá trị là 0 hoặc 1.
- Hình ảnh nhị phân sẽ được ghi vào cơ sở dữ liệu học gồm có 256 thuộc tính
(tương đương với 256 pixel), mỗi thuộc tính có giá là là 0 hoặc 1.
14.2 Cấu trúc engine máy học
Input: Là 1 vector có 256 giá trị 0/1 thể hiện cho giá trị đọc từ tập tin dữ liệu học.
Output: Là 1 vector có 10 giá trị 0/1, trong đó vị trí của số 1 trong vector này thể
hiện cho giá trị của số được nhận dạng.
Ví dụ: số 0 là 1000000000, số 1 là 0100000000 v.v…
Neural Network được cài đặt có 3 layer với input layer có 256 node tương ứng với
256 giá trị sẽ được truyền vào, hidden layer có 266 node và output layer là 10 node
tương ứng với 10 giá trị output trình bày ở trên.
SVM được cài đặt thành 10 engine khác nhau dùng để nhận dạng các kí tự từ 0…9.

Mỗi engine sẽ có input là 1 vector 256 giá trị và output là {1,-1}. Khi thực hiện
nhận dạng, chương trình sẽ duyệt qua 10 engine này để tìm engine nào trả về giá trị
output là 1 sẽ tương ứng với số nhận dạng được.
14.3 Chương trình demo
25

×