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ữ l
Trang 1TRƯỜ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
Trang 2Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
Contents
Chương 1: Mở đầu 4
Chương 2: Neural Network 5
1 Nguồn gốc 5
2 Mô hình một neuron – logistic unit 6
3 Mô hình neural network 7
4 Phân lớp đa lớp (Multi-class classification) 8
5 Forward propagation 9
6 Cost function 9
7 Back propagation algorithm 11
Chương 3: Support Vector Machine 13
0 Ký hiệu 13
1 Margin 13
1.1 Khái niệm: 13
1.2 Functional margin 14
1.3 Geometric margin 15
2 Bài toán tối ưu (Optimization problem) 16
3 Lagrange duality 16
4 Optimal margin classifier 19
5 Kernels 22
6 Regularization 25
7 SMO algorithm 27
7.1 Coordinate ascent 27
7.2 SMO 28
8 Kết luận 29
Chương 4: Thực nghiệm, đánh giá 31
1 Chương trình demo 31
1.1 Cấu trúc dữ liệu học 31
1.2 Cấu trúc engine máy học 31
Trang 31.3 Chương trình demo 31
2 Đánh giá 34
3 Kết luận: 34
Chương 5: Kết luận 35
1 So sánh giữa 2 thuật toán SVM và Neural Network 35
2 Tổng kết 35
Tài liệu tham khảo 36
Trang 4Lê 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ọ tronggiả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
Trang 5Chương 2: Neural Network
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
Trang 6Lê 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ị
h θ(x )=g(θ T x)
Trang 7số (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
logistic unit
2 Mô hình neural network
Layer 3 Output layer
Layer 1
Input layer
Layer 2 Hidden layer
Trang 8Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
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
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
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ố 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
3 Phân lớp đa lớp (Multi-class classification)
Trang 9a1(l) +Θ12(l)
a2(l) +…
Θ20(l)
a0(l) +Θ21(l)
a1(l) +Θ22(l)
a2(l) +…
Trang 10Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
Trong logistic regression, ta có hàm cost function như sau
min
Θ J (Θ)
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
ij
(l)J (Θ) trong quá trình tối ưu Θ Việc
ij
(l)J (Θ) có độ phức tạp cao khitính theo
Layer 2
Layer 3
Layer 4
Trang 116 Back propagation algorithm
Trang 12Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
Trang 13Chươ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ậttoá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
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
1+e− (w T
h θ ( x )= p ( y=1|x ;w , b) càng lớn, và độ tin cậy của ta càng cao khi phân loại y=1 Nếu
, y(i)
=1)
Trang 14Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
7.2 Functional margin
tin cậy cao và chính xác
Trang 157.3 Geometric margin
, y(i)
γ=min
i γ(i)
Trang 16Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
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
của geometric margin
Trang 18Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
θ P (w)={f (w) nếu w thỏa điều kiệnràng buộc ban đầu ∞ otherwise
Từ đó suy ra bài toán
Tiếp theo, ta định nghĩa
affine đều lồi
Trang 19Dựa trên những giả thiết trên, thì luôn tồn tại w¿, α¿, β¿ mà w¿ là đáp số của bài toán
bài toán primal và dual
10 Optimal margin classifier
Ở phần trước, ta đã đưa ra bài toán sau để tìm optimal margin classifier
Trang 20Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
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ó
các đường đứt khúc song song với mặt phẳng phân cách Trong trường hợp này có
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
Trang 21i : y ( i)=1
w¿T
x(i) 2
Trang 22Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
ϕ (x ) Tức ta chỉ đơn giản thay x bằng ϕ(x ) trong các phần trên
K ( x , z)=ϕ( x ) T ϕ (z)
Trang 23SVM cho phép thuật toán có thể học từ không gian feature có chiều rất lớn mà
Trang 24Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
)
K ( x , z ) sẽ lớn và ngược lại, khi 2 vector ϕ ( x ) và ϕ ( z ) xa nhau (gần vuông góc với
Ví dụ:
K ( x , z)=exp(−‖x−z‖2
2 σ2 )
Trang 25, … , x(m)} thì ma trận kernel tương ứng là đối xứ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
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
Trang 26Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
dụng để giải bài toán đã trình bày chi tiết ở phần trên
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
Trang 27Để 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 {
End of Coordinate ascent
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
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
Trở lại bài toán tối ưu ta cần giải
Trang 28Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
Thuật toán SMO
repeat till convergence {
Trang 29Từ điều kiện ràng buộc 0 ≤ α i ≤ C ∀ α i, thì (α i , α j)∈[0,C]×[0,C] (tức nằm trong hình
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
Trang 30Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
Trang 31Chương 4: Thực nghiệm, đánh giá
1 Chương trình demo
Semeion+Handwritten+Digit, 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
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 nodetươ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
Trang 32Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
Các thư viện sử dụng:
mọi nền tảng (Windows hoặc Linux)
hình ảnh bằng C++
Hướng dẫn cài đặt môi trường windows để chạy ứng dụng demo
- Tải và cài đặt thư viện MinGW cho windows tại địa chỉ
http://sourceforge.net/projects/mingw/files/
- Tải và cài đặt thư viện OpenCV cho Windows tại địa chỉ
http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.0/
- Cập nhật lại biến PATH cho hệ điều hành Trên Windows 7, vào "Control
Panel", chọn "System and Security", chọn "Advanced system setting", chọn tab
"Advanced", chọn "Envioment Variables", ở mục "System variable" chọn Path,
bấm Edit và thêm vào chuỗi đường dẫn sau
Hình ảnh tự nhiên của 1 chữ số Dùng hàm findContour để tìm hình chữ nhật nhỏ nhất chứa chữ số cần nhận dạng.
Cắt hình ban đầu theo kích thước và vị trí hình chữ nhật tìm được.
Cắt hình ban đầu theo kích thước và vị trí hình chữ nhật tìm được.
Chuyển thành hình trắng đen (grayscale)
Chuyển thành ảnh nhị phân với các pixel có độ xám <130 sẽ có giá trị là 1 và ngược
Trang 33Đây là 3 đường dẫn tới thư mục binary của 2 thư viện bổ xung ở trên (Tên đường
có thể thay đổi tùy vào lúc cài đặt các gói thư viện)
Hình ảnh giao diện của chương trình demo:
Trang 34Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
15 Đánh giá
- Cả 2 thuật toán đã nhận dạng được 100% kí tự số không nhiễu được tạo từ các bộ font phổ biến trên máy tính Và khoảng 60% kí tự viết tay được scan hoặc chụp thành hình ảnh đưa vào máy tính
- Tuy nhiên tốc độ “training” và nhận dạng của Neural Network chậm hơn
SVM khá nhiều
- Các kí tự số viết tay thường khó nhận dạng được là số 6, số 9, số 8 Lý do chủ yếu là vì chương trình xử lý hình ảnh cho kết quả nhị phân chưa thật sự tốt
16 Kết luận:
- Việc nhận dạng chữ số viết tay hiện tại không đánh giá chính xác được chất lượng của 2 thuật toán nói trên vì kĩ thuật xử lý ảnh chưa thật sự tốt và còn phụ thuộc nhiều vào chất lượng hình ảnh và độ nhiễu của môi trường xung quanh
- Tuy nhiên, với tỉ lệ nhận dạng thành công như trên, cũng đã phần nào nói lên hiệu quả khi được đầu tư áp dụng vào thực tế
Trang 35Chương 5: Kết luận
1 So sánh giữa 2 thuật toán SVM và Neural Network
- Quá trình phát triển của NN bắt đầu từ một thuật toán heuristic, trải qua thựcnghiệm và áp dụng, và cuối cùng tiến đến lý thuyết Ngược lại, quá trình
phát triển của SVM bắt nguồn từ lý thuyết, sau đó áp dụng lý thuyết trên vàothực nghiệm
- Trong Neural Network, việc tìm kiếm tối ưu có thể chỉ tìm được lời giải cục
bộ địa phương thay vì lời giải tối ưu toàn cục Trong khi đó, lời giải của
SVM là toàn cục và là duy nhất do bài toán tối ưu là bài toán lồi
- Lý thuyết của SVM dựa trên một diễn giải hình học Độ phức tạp của SVM không phụ thuộc vào số chiều của không gian đầu vào (input space)
- Neural Network áp dụng nguyên tắc tối thiểu rủi ro thực nghiệm (empirical risk minimization) Trong khi, SVM dựa trên nguyên tắc tối thiểu rủi ro cấu trúc (structural risk minimization)
- SVM thường hoạt động tốt hơn NN do SVM ít bị ảnh hưỡng bởi overfitting (hiện tượng hàm phân lớp thể hiện rất tốt trên tập dữ liệu huấn luyện như rất tồi trên dữ liệu thực tế) Độ phức tạp phân lớp trong việc dự đoán của SVM tuyến tính với số lượng support vector, vì thế thời gian dự đoán rất nhanh
Trang 36Lê Hoài Nam – Lương Chấn Viễn Neural Network và SVM
Tài liệu tham khảo
[3] GS.TSKH Hoàng Kiếm, Slide Công nghệ tri thức và ứng dụng, Trường Đại
học CNTT
[4] Nguyễn Hoàng Vũ, Lê Quý Quốc Cường; khóa luận tốt nghiệp Nghiên cứu
phương pháp phân đa lớp văn bản bằng SVM và một số cải tiến, 2011; GVHD:
TS Vũ Thanh Nguyên, Đại học Công Nghệ Thông Tin
[5] R T Rockarfeller (1970), Convex Analysis, Princeton University Press.
[6] Ts Nguyễn Đình Thúc, Trí tuệ nhân tạo- mạng noron - phương pháp và ứng