Machine Learning cơ bản
Gửi bởi: Khoa CNTT - HCEM 22 tháng 4 2021 lúc 10:34:18 | Được cập nhật: hôm kia lúc 23:04:42 | IP: 10.1.29.116 Kiểu file: PDF | Lượt xem: 435 | Lượt Download: 8 | File size: 24.502769 Mb
Nội dung tài liệu
Tải xuốngCác tài liệu liên quan
Có thể bạn quan tâm
Thông tin tài liệu
Vũ
Hữu Tiệp
Machine
Learning
cơ
bản
machinelearningcoban
.com
Vũ Hữu Tiệp
Machine Learning cơ bản
Order ebook tại
https:// machinelearningcoban.com/ ebook/
Blog:
https:// machinelearningcoban.com
Facebook Page:
https:// www.facebook.com/ machinelearningbasicvn/
Facebook Group:
https:// www.facebook.com/ groups/ machinelearningcoban/
Interactive Learning:
Last update:
January 19, 2018
Chương 0
Lời tác giả
Những năm gần đây, trí tuệ nhân tạo (artificial intelligence–AI ) nổi lên như một bằng chứngcủa cuộc cách mạng công nghiệp lần thứ tư (1–động cơ hơi nước, 2–năng lượng điện, 3–côngnghệ thông tin). Trí tuệ nhân tạo đã và đang trở thành thành phần cốt lõi trong các hệthống công nghệ cao. Nó đã len lỏi vào hầu hết các lĩnh vực trong đời sống mà có thể chúngta không nhận ra. Xe tự hành của Google và Tesla, hệ thống tự tag khuôn mặt trong ảnhcủa Facebook; trợ lý ảo Siri của Apple, hệ thống gợi ý sản phẩm của Amazon, hệ thống gợiý phim của Netflix, hệ thống dịch đa ngôn ngữ Google Translate, máy chơi cờ vây AlphaGovà gần đây là AlphaGo Zero của Google DeepMind, v.v., chỉ là một vài ứng dụng nổi bậttrong vô vàn những ứng dụng của trí tuệ nhân tạo.
Học máy (machine learning–ML) là một tập con của trí tuệ nhân tạo. Nó là một lĩnh vựcnhỏ trong khoa học máy tính, có khả năng tự học hỏi dựa trên dữ liệu được đưa vào màkhông cần phải được lập trình cụ thể (Machine Learning is the subfiled of computer science,that “gives computers the ability to learn without being explicitly programmed”–Wikipedia).
Những năm gần đây, sự phát triển của các hệ thống tính toán cùng với lượng dữ liệu khổnglồ được thu thập bởi các hãng công nghệ lớn đã giúp machine learning tiến thêm một bướcdài. Một lĩnh vực mới được ra đời được gọi là học sâu (deep learning–DL). Deep learning đãgiúp máy tính thực thi những việc tưởng chừng như không thể vào mười năm trước: phânloại cả ngàn vật thể khác nhau trong các bức ảnh, tự tạo chú thích cho ảnh, bắt chước giọngnói và chữ viết của con người, giao tiếp với con người, chuyển đổi ngôn ngữ, hay thậm chícả sáng tác văn thơ hay âm nhạc
Mối quan hệ AI-ML-DL
Deep learning là một tập con của machine learning. Machine learning là một tập concủa artificial intelligence (xem Hình
1
Đọc thêm: 8 Inspirational Applications of Deep Learning (
CHƯƠNG 0. LỜI TÁC GIẢ
ii
Hình 0.1: Mối quan hệ giữa artificial intelligence, machine learning, và deep learning (NguồnWhat’s the Difference Between Artificial Intelligence, Machine Learning, and Deep Learning? –
0.1 Mục đích của cuốn sách
Những phát triển thần kỳ của trí tuệ nhân tạo dẫn đến nhu cầu cao về nhân lực nhữngngành khoa học dữ liệu, machine learning, và các ngành liên quan trên toàn thế giới cũngnhư ở Việt Nam trong những năm sắp tới. Đó cũng là động lực để tôi bắt đầu viết blogMachine Learning cơ bản (
https:// machinelearningcoban.com
) từ đầu năm 2017. Tính tới
thời điểm tôi viết những dòng này, trang blog đã có hơn 650 ngàn lượt ghé thăm. Facebookpage Machine Learning cơ bản (
) của blog cũng đã có hơn 10 nghìn
lượt likes, Forum Machine Learning cơ bản (
) có gần 8 nghìn thành
viên. Trong quá trình viết blog và duy trì các trang Facebook, tôi nhận được rất nhiều nhữngủng hộ của bạn đọc về tinh thần cũng như vật chất. Ngoài ra, rất nhiều bạn đọc đã khuyếnkhích tôi tổng hợp những kiến thức trên blog lại thành một cuốn sách cho cộng đồng nhữngngười làm machine learning sử dụng tiếng Việt. Những sự ủng hộ và lời động viên đó là độnglực lớn cho tôi bắt tay vào thực hiện và hoàn thành cuốn sách này.
Lĩnh vực machine learning và deep learning là cực kỳ rộng lớn và có nhiều nhánh nhỏ. Đểđi sâu vào từng nhánh, một cuốn sách chắc chắn không thể bao quát được mọi vấn đề. Mụcđích chính của cuốn sách này là cung cấp cho các bạn những khái niệm, kỹ thuật chung và
Machine Learning cơ bản
iii
CHƯƠNG 0. LỜI TÁC GIẢ
các thuật toán cơ bản nhất của machine learning. Từ đó, bạn đọc muốn đi sâu vào từng vấnđề cụ thể có thể tìm đọc thêm các tài liệu, cuốn sách, và khoá học liên quan.
Hãy luôn nhớ rằng đơn giản trước hết. Khi bắt tay vào giải quyết một bài toán machinelearning hay bất cứ bài toán nào, chúng ta nên bắt đầu từ những thuật toán đơn giản nhất.Không nên nghĩ rằng chỉ có những thuật toán phức tạp mới có thể giải quyết được vấn đề.Những thuật toán phức tạp thường yêu cầu độ tính toán cao và nhạy cảm với cách chọncác tham số đầu vào. Thêm vào đó, những thuật toán đơn giản giúp chúng ta sớm có mộtmô hình tổng quát cho mỗi bài toán. Kết quả của các thuật toán đơn giản, thường được gọilà baseline, cũng giúp chúng ta có cái nhìn ban đầu về sự phức tạp của mỗi bài toán. Việccải thiện kết quả sẽ được dần thực hiện ở các bước sau. Cuốn sách này sẽ giúp các bạn cónhững cái nhìn đầu tiên và các hướng giải quyết cho các bài toán machine learning. Để cócác sản phẩm thực tiễn, chúng ta sẽ phải học hỏi và thực hành thêm rất nhiều.
0.2 Hướng tiếp cận của cuốn sách
Để giải quyết mỗi bài toán machine learning, chúng ta cần chọn một mô hình phù hợp. Môhình này được mô tả bởi bộ các tham số, có thể lên tới cả triệu tham số, mà chúng ta cầnđi tìm. Thông thường, bộ các tham số này được tìm bằng cách giải một bài toán tối ưu.
Khi viết về các thuật toán machine learning, tôi sẽ bắt đầu bằng những ý tưởng trực quan,theo sau bởi một mô hình toán học mô tả ý tưởng đó. Các tham số mô hình được tìm bằngcách tối ưu mô hình toán học đó. Các suy luận toán học và các ví dụ mẫu trên Python ởcuối mỗi bài sẽ giúp bạn đọc hiểu rõ hơn về nguồn gốc, ý nghĩa, và cách sử dụng mỗi thuậttoán. Xen kẽ giữa các phần về các thuật toán machine learning, tôi cũng sẽ giới thiệu cáckỹ thuật tối ưu cơ bản, với hy vọng giúp bạn đọc hiểu rõ hơn về bản chất của vấn đề.
0.3 Đối tượng của cuốn sách
Cuốn sách được thực hiện hướng đến nhiều nhóm độc giả khác nhau. Nếu bạn không thựcsự muốn đi sâu vào phần toán, bạn vẫn có thể tham khảo source code và cách sử dụng cácthư viện. Nhưng để sử dụng các thư viện một cách hiệu quả, bạn cũng cần hiểu nguồn gốccủa mô hình và ý nghĩa của các tham số. Nếu bạn thực sự muốn tìm hiểu nguồn gốc, ý nghĩacủa các thuật toán, bạn có thể học được nhiều điều từ cách xây dựng và tối ưu các mô hình.Phần tổng hợp các kiến thức toán cần thiết trong Phần
sẽ là một nguồn tham khảo súc
tích bất cứ khi nào bạn có thắc mắc về các dẫn giải toán học trong sách
. Phần
được
dành riêng để nói về tối ưu lồi–một mảng rất quan trọng trong tối ưu, phù hợp với các bạnthực sự muốn đi sâu thêm về tối ưu.
Rất nhiều hình vẽ trong cuốn sách được vẽ dưới dạng vector graphics (độ phân giải rất cao),có thể được dùng trong các bài giảng hoặc thuyết trình. Các kiến thức trong sách cũng đượcsắp xếp theo thứ tự từ dễ đến khó, vì vậy cuốn sách cũng được hy vọng là một cuốn giáotrình cho các khoá học machine learning tiếng Việt.
2
Bạn đọc chưa quen với nhiều khái niệm toán học trong phần này có thể đọc từ Phần
và quay lại bất cứ khi nào
bạn gặp khó khăn.
Machine Learning cơ bản
CHƯƠNG 0. LỜI TÁC GIẢ
iv
Các dẫn giải toán học được xây dựng phù hợp với chương trình toán phổ thông và đại học ởViệt Nam. Các từ khoá khi được dịch sang tiếng Việt đều dựa trên những tài liệu tôi đượchọc trong nhiều năm học toán tại Việt Nam. Các thuật ngữ tiếng Anh cũng thường xuyênđược sử dụng, với hy vọng giúp bạn đọc dần làm quen với các tài liệu tiếng Anh, và giúpcác bạn học đại học ở nước ngoài có thể tiếp cận. Phần cuối cùng của sách có mục Indexcác thuật ngữ quan trọng bằng tiếng Anh và nghĩa tiếng Việt đi kèm nếu tôi tìm được cáchdịch phù hợp.
0.4 Yêu cầu về kiến thức
Để có thể bắt đầu đọc cuốn sách này, bạn cần có một kiến thức nhất định về đại số tuyếntính, giải tích ma trận, xác suất thống kê, và kỹ năng lập trình.
Phần
của cuốn sách ôn tập lại các kiến thức toán quan trọng cho machine learning. Bất
cứ khi nào bạn đọc gặp khó khăn về toán, bạn được khuyến khích đọc lại các chương trongphần này.
Ngôn ngữ lập trình được sử dụng trong cuốn sách là Python. Lý do tôi sử dụng ngôn ngữnày vì đây là một ngôn ngữ lập trình miễn phí, có thể được cài đặt dễ dàng trên các nền tảnghệ điều hành khác nhau. Quan trọng hơn, có rất nhiều các thư viện hỗ trợ machine learningcũng như deep learning được viết cho Python. Có hai thư viện python chính thường đượcsử dụng trong cuốn sách là numpy và scikit-learn. Numpy (
) là một
thư viện phổ biến giúp xử lý các phép toán liên quan đến các mảng nhiều chiều, với các hàmgần gũi với đại số tuyến tính. Nếu bạn đọc chưa quen thuộc với numpy, bạn có thể tham giamột khoá học ngắn miễn phí trên trang web kèm theo cuốn sách này (
Bạn sẽ được làm quen với cách xử lý các mảng nhiều chiều với nhiều ví dụ và bài tập thựchành trực tiếp trên trình duyệt. Các kỹ thuật xử lý mảng trong cuốn sách này đều đượcđề cập tại đây. Scikit-learn, hay sklearn, (
) là một thư viện chứa rất
nhiều các thuật toán machine learning cơ bản và rất dễ sử dụng. Tài liệu của scikit-learncũng là một nguồn chất lượng cho các bạn làm machine learning. Scikit-learn sẽ được dùngtrong cuốn sách như một cách kiểm chứng lại các kết quả mà chúng ta thực hiện dựa trênsuy luận toán học cũng như lập trình thông qua numpy.
Tất nhiên, các thư viện machine learning hiện nay rất phổ biến và có những bạn có thể tạora sản phẩm bằng cách chỉ sử dụng những thư viện này mà không cần nhiều kiến thức toán.Tuy nhiên, cuốn sách này không hướng tới việc sử dụng các thư viện sẵn có mà không hiểubản chất đằng sau của chúng. Việc sử dụng các thư viện cũng yêu cầu những kiến thức nhấtđịnh về việc lựa chọn và điều chỉnh tham số mô hình.
0.5 Source code đi kèm
Toàn bộ source code trong cuốn sách có thể được tìm thấy tại
https:// github.com/ tiepvupsu/
. Các file có đuôi .ipynb là các file chứa code (Jupyter notebook). Các file có
đuôi .pdf, .png là các hình tạo được từ file .ipynb.
Machine Learning cơ bản
v
CHƯƠNG 0. LỜI TÁC GIẢ
0.6 Bố cục của cuốn sách
Cuốn sách này được chia thành 8 phần và sẽ tiếp tục được cập nhật:
Phần
ôn tập lại cho bạn đọc những kiến thức quan trọng trong đại số tuyến tính, giải tích
ma trận, xác suất, và hai phương pháp phổ biến trong việc ước lượng tham số cho các môhình machine learning thống kê.
Phần
giới thiệu các khái niệm cơ bản trong machine learning, kỹ thuật xây dựng vector
đặc trưng cho dữ liệu, một mô hình machine learning cơ bản–linear regression, và một hiệntượng cần tránh khi xây dựng các mô hình machine learning.
Phần
giúp các bạn làm quen với các mô hình machine learning rất trực quan, không yêu
cầu nhiều kiến thức toán phức tạp. Qua đây, bạn đọc sẽ có cái nhìn đầu tiên về việc xâydựng các mô hình machine learning.
Phần
đề cập tới một lớp các thuật toán machine learning phổ biến nhất–neural networks,
là nền tảng cho các mô hình deep learning phức tạp hiện nay. Phần này cũng giới thiệu mộtkỹ thuật cơ bản và hữu dụng trong việc giải quyết các bài toán tối ưu không ràng buộc.
Phần
giới thiệu về các kỹ thuật thường dùng trong các hệ thống khuyến nghị sản phầm.
Phần
giới thiệu các kỹ thuật giảm chiều dữ liệu.
Phần
mang lại cho các bạn một cái nhìn bao quát hơn về tối ưu, đặc biệt là tối ưu lồi.
Các bài toán tối ưu lồi có ràng buộc cũng được giới thiệu trong phần này.
Phần
giới thiệu các thuật toán phân lớp dựa trên ý tưởng của support vector machine.
0.7 Các lưu ý về ký hiệu
Các ký hiệu toán học trong sách được mô tả ở Bảng
và đầu Chương
. Các khung với
font chữ có chiều rộng các ký tự như nhau được dùng để chứa các đoạn source code.
text in a box with constant width represents source codes.
Các đoạn ký tự với
constant width, deep red,
’string, dark green’
được dùng để chỉ các
biến, hàm số, chuỗi, v.v., trong các đoạn code.
Đóng khung và in nghiêng
Các khái niệm, định nghĩa, định lý, và lưu ý quan trọng được đóng khung và in nghiêng.Ký tự phân cách giữa phần nguyên và phần thập phân của các số thực là dấu chấm,‘.’, thay vì dấu phẩy, ‘,’, như trong các tài liệu tiếng Việt khác. Cách làm này thốngnhất với các tài liệu tiếng Anh và các ngôn ngữ lập trình.
Machine Learning cơ bản
CHƯƠNG 0. LỜI TÁC GIẢ
vi
0.8 Tham khảo thêm
Có rất nhiều những cuốn sách, khoá học, website hay về machine learning cũng như deeplearning, trong đó, có một số mà tôi muốn đặc biệt nhấn mạnh:
0.8.1 Khoá học
1. Khóa học Machine Learning của Andrew Ng trên Coursera (
2. Khoá học mới Deep Learning Specialization cũng của Andrew Ng (
3. Các khoá CS224n: Natural Language Processing with Deep Learning (
); CS231n: Convolutional Neural Networks for Visual Recognition (
); CS246: Mining Massive Data Sets (
của Stanford.
4. Introduction to Computer Science and Programming Using Python (
) của MIT.
0.8.2 Sách
1. C. Bishop, Pattern Recognition and Machine Learning (
), Springer,
2006 [
2. I. Goodfellow et al., Deep Learning (
3. J. Friedman et al., The Elements of Statistical Learning (
Springer, 2001 [
4. Y. Abu-Mostafa et al., Learning from data (
), AMLBook New
York, 2012 [
5. S. JD Prince, Computer Vision: Models, Learning, and Inference (
Cambridge University Press, 2012 [
6. S. Boyd et al., Convex Optimization (
), Cambridge university
press, 2004 [
Ngoài ra, các website Machine Learning Mastery (
), Pyimage-
search (
) cũng là các nguồn thông tin rất hữu ích.
Machine Learning cơ bản
Document Outline
- Lời tác giả
- Phần I Kiến thức toán cơ bản cho machine learning
- Ôn tập Đại số tuyến tính
- Lưu ý về ký hiệu
- Chuyển vị và Hermitian
- Phép nhân hai ma trận
- Ma trận đơn vị và ma trận nghịch đảo
- Một vài ma trận đặc biệt khác
- Định thức
- Tổ hợp tuyến tính - Không gian sinh
- Hạng của ma trận
- Hệ trực chuẩn, ma trận trực giao
- Biễu diễn vector trong các hệ cơ sở khác nhau
- Trị riêng và vector riêng
- Chéo hoá ma trận
- Ma trận xác định dương
- Chuẩn của vector và ma trận
- Giải tích ma trận
- Ôn tập Xác Suất
- Maximum Likelihood và Maximum A Posteriori
- Ôn tập Đại số tuyến tính
- Phần II Tổng quan về machine learning
- Phần III Khởi động
- Phần IV Neural networks
- Phần V Recommendation systems–Hệ thống khuyến nghị
- Phần VI Dimensionality reduction–Giảm chiều dữ liệu
- Phần VII Convex optimization–Tối ưu lồi
- Phần VIII Support vector machines