Học có giám sát và học không có giám sát khác nhau ở điểm nào?

Bài viết này cần thêm chú thích nguồn gốc để kiểm chứng thông tin. Mời bạn giúp hoàn thiện bài viết này bằng cách bổ sung chú thích tới các nguồn đáng tin cậy. Các nội dung không có nguồn có thể bị nghi ngờ và xóa bỏ.

Học có giám sát là một kĩ thuật của ngành học máy để xây dựng một hàm [function] từ dữ liệu huấn luyện. Dữ liệu huấn luyện bao gồm các cặp gồm đối tượng đầu vào [thường dạng vec-tơ], và đầu ra mong muốn. Đầu ra của một hàm có thể là một giá trị liên tục [gọi là hồi qui], hay có thể là dự đoán một nhãn phân loại cho một đối tượng đầu vào [gọi là phân loại]. Nhiệm vụ của chương trình học có giám sát là dự đoán giá trị của hàm cho một đối tượng bất kì là đầu vào hợp lệ, sau khi đã xem xét một số ví dụ huấn luyện [nghĩa là, các cặp đầu vào và đầu ra tương ứng]. Để đạt được điều này, chương trình học phải tổng quát hóa từ các dữ liệu sẵn có để dự đoán được những tình huống chưa gặp phải theo một cách "hợp lý" [xem thiên kiến quy nạp - inductive bias].

[So sánh với học không có giám sát.]

Học có giám sát có thể tạo ra hai loại mô hình. Phổ biến nhất, học có giám sát tạo ra một mô hình toàn cục [global model] để ánh xạ đối tượng đầu vào đến đầu ra mong muốn. Tuy nhiên, trong một số trường hợp, việc ánh xạ được thực hiện dưới dạng một tập các mô hình cục bộ [như trong phương pháp lập luận theo tình huống [case-based reasoning] hay giải thuật láng giềng gần nhất].

Để có thể giải quyết một bài toán nào đó của học có giám sát [ví dụ: học để nhận dạng chữ viết tay] người ta phải xem xét nhiều bước khác nhau:

  1. Xác định loại của các ví dụ huấn luyện. Trước khi làm bất cứ điều gì, người kĩ sư nên quyết định loại dữ liệu nào sẽ được sử dụng làm ví dụ. Chẳng hạn, đó có thể là một ký tự viết tay đơn lẻ, toàn bộ một từ viết tay, hay toàn bộ một dòng chữ viết tay.
  2. Thu thập tập huấn luyện. Tập huấn luyện cần đặc trưng cho thực tế sử dụng của hàm chức năng. Vì thế, một tập các đối tượng đầu vào được thu thập và đầu ra tương ứng được thu thập, hoặc từ các chuyên gia hoặc từ việc đo đạc tính toán.
  3. Xác định việc biểu diễn các đặc trưng đầu vào cho hàm chức năng cần tìm. Sự chính xác của hàm chức năng phụ thuộc lớn vào cách các đối tượng đầu vào được biểu diễn. Thông thường, đối tượng đầu vào được chuyển đổi thành một vec-tơ đặc trưng, chứa một số các đặc trưng nhằm mô tả cho đối tượng đó. Số lượng các đặc trưng không nên quá lớn, do sự bùng nổ tổ hợp [curse of dimensionality]; nhưng phải đủ lớn để dự đoán chính xác đầu ra.
  4. Xác định cấu trúc của hàm chức năng cần tìm và giải thuật học tương ứng. Ví dụ, người kĩ sư có thể lựa chọn việc sử dụng mạng nơ-ron nhân tạo hay cây quyết định.
  5. Hoàn thiện thiết kế. Người kĩ sư sẽ chạy giải thuật học từ tập huấn luyện thu thập được. Các tham số của giải thuật học có thể được điều chỉnh bằng cách tối ưu hóa hiệu năng trên một tập con [gọi là tập kiểm chứng -validation set] của tập huấn luyện, hay thông qua kiểm chứng chéo [cross-validation]. Sau khi học và điều chỉnh tham số, hiệu năng của giải thuật có thể được đo đạc trên một tập kiểm tra độc lập với tập huấn luyện.

Mục tiêu của việc học có giám sát một mô hình toàn cục là tìm ra một hàm g, khi cho sẵn một tập các điểm có dạng [x, g[x]].

Giả thiết rằng đã biết trước đặc điểm của hàm g đối với một tập điểm. Tập điểm đó đã được lấy mẫu độc lập và có cùng phân bố [independent and identically distributed [i.i.d.]] theo một xác suất phân bố p chưa biết từ một tập lớn hơn và có thể vô hạn. Ngoài ra, giả sử tồn tại một hàm hàm tổn thất [loss function] theo tác vụ L có dạng:

L : Y × Y → R + {\displaystyle L:Y\times Y\to \mathbb {R} ^{+}}  

trong đó Y là trùng với miền xác định của g và L ánh xạ tới các số thực không âm [có thể đặt thêm hạn chế cho L]. Giá trị L[z, y] là tổn thất nảy sinh khi đoán giá trị của g tại một điểm cho trước là z trong khi giá trị thực của nó là y.

Hàm rủi ro f được định nghĩa là giá trị kỳ vọng của hàm tổn thất và có công thức như sau:

R [ f ] = ∑ i L [ f [ x i ] , g [ x i ] ] p [ x i ] {\displaystyle R[f]=\sum _{i}L[f[x_{i}],g[x_{i}]]\;p[x_{i}]}  

nếu xác suất phân bố p là rời rạc [trường hợp xác suất phân bố liên tục cần một tích phân xác định [definite integral] và một hàm mật độ xác suất.

Mục tiêu là tìm một hàm f* trong số một lớp con cố định các hàm để cho rủi ro R[f*] là cực tiểu.

Tuy nhiên, do thường chỉ biết được đặc điểm của hàm g cho một tập hữu hạn điểm [x1, y1],..., [xn, yn], người ta chỉ có thể xác định gần đúng rủi ro thực sự, ví dụ, với rủi ro kinh nghiệm [empirical risk]:

R ~ n [ f ] = 1 n ∑ i = 1 n L [ f [ x i ] , y i ] {\displaystyle {\tilde {R}}_{n}[f]={\frac {1}{n}}\sum _{i=1}^{n}L[f[x_{i}],y_{i}]}  

Nguyên lý của cực tiểu hóa rủi ro kinh nghiệm là chọn hàm f* sao cho rủi ro kinh nghiệm là nhỏ nhất. Lý thuyết học bằng thống kê tìm hiểu xem việc cực tiểu hóa rủi ro kinh nghiệm có thể đạt được trong những điều kiện nào và có thể trông đợi các tính toán xấp xỉ tốt đến đâu.

  • học bằng phân tích [analytical learning]
  • mạng nơ-ron nhân tạo
    • Instantaneously trained neural networks
  • kỹ thuật lan truyền ngược [backpropagation]
  • boosting
  • thống kê Bayes
  • lập luận theo tình huống [case-based reasoning]
  • học cây quyết định
  • inductive logic programming
  • hồi quy Gauss [Gaussian process regression]
  • learning automata theory
  • Minimum message length [cây quyết định, đồ thị quyết định, v.v.]
  • naive Bayes classifier
  • thuật toán láng giềng gần nhất
  • probably approximately correct learning [PAC] learning
  • symbolic machine learning algorithms
  • subsymbolic machine learning algorithms
  • support vector machines
  • Random Forests
  • Tin sinh học
  • Nhận dạng chữ viết tay
  • Thu thập thông tin [information retrieval]
  • Nhận dạng đối tượng trong computer vision
  • Nhận dạng ký tự quang học
  • Phát hiện spam
  • Nhận dạng mẫu
  • Nhận dạng tiếng nói
  • computational learning theory [ngành toán học liên quan đến việc phân tích các thuật toán học máy]
  • thiên kiến quy nạp [inductive bias]
  • overfitting [hàm học được quá thích nghi với tập huấn luyện]
  • version space

  • Chương trình mạng nơ ron đa lớp [Multi Layer Neural Network] và mạng nơ ron tự tổ chức [Self Organizing Maps] có giải thích bằng tiếng Việt. Lưu trữ 2011-07-15 tại Wayback Machine
  • Sử dụng phần mềm mạng nơ ron 3 lớp Spice-MLP Lưu trữ 2011-09-29 tại Wayback Machine
  • Sử dụng phần mềm mạng tự tổ chức Spice-SOM Lưu trữ 2011-09-29 tại Wayback Machine
  • Hướng dẫn sử dụng mạng nơ ron trong các ứng dụng thực tế Lưu trữ 2011-06-26 tại Wayback Machine trong đó có minh họa phân loại ảnh khuôn mặt, ảnh người đi bộ, ảnh xe hơi, dự báo chứng khoán và một số ví dụ khác

Lấy từ “//vi.wikipedia.org/w/index.php?title=Học_có_giám_sát&oldid=65654286”

Có hai cách phổ biến phân nhóm các thuật toán Machine learning. Một là dựa trên phương thức học [learning style], hai là dựa trên chức năng [function] [của mỗi thuật toán].

Trong trang này:

1. Phân nhóm dựa trên phương thức học

Theo phương thức học, các thuật toán Machine Learning thường được chia làm 4 nhóm: Supervised learning, Unsupervised learning, Semi-supervised learning và Reinforcement learning. Có một số cách phân nhóm không có Semi-supervised learning hoặc Reinforcement learning.

Supervised Learning [Học có giám sát]

Supervised learning là thuật toán dự đoán đầu ra [outcome] của một dữ liệu mới [new input] dựa trên các cặp [input, outcome] đã biết từ trước. Cặp dữ liệu này còn được gọi là [data, label], tức [dữ liệu, nhãn]. Supervised learning là nhóm phổ biến nhất trong các thuật toán Machine Learning.

Một cách toán học, Supervised learning là khi chúng ra có một tập hợp biến đầu vào \[ \mathcal{X} = \{\mathbf{x}_1, \mathbf{x}_2, \dots, \mathbf{x}_N\} \] và một tập hợp nhãn tương ứng \[ \mathcal{Y} = \{\mathbf{y}_1, \mathbf{y}_2, \dots, \mathbf{y}_N\} \], trong đó \[ \mathbf{x}_i, \mathbf{y}_i \] là các vector. Các cặp dữ liệu biết trước \[ [\mathbf{x}_i, \mathbf{y}_i] \in \mathcal{X} \times \mathcal{Y} \] được gọi là tập training data [dữ liệu huấn luyện]. Từ tập training data này, chúng ta cần tạo ra một hàm số ánh xạ mỗi phần tử từ tập \[\mathcal{X}\] sang một phần tử [xấp xỉ] tương ứng của tập \[\mathcal{Y}\]:

\[ \mathbf{y}_i \approx f[\mathbf{x}_i], ~~ \forall i = 1, 2, \dots, N\] Mục đích là xấp xỉ hàm số \[f\] thật tốt để khi có một dữ liệu \[\mathbf{x}\] mới, chúng ta có thể tính được nhãn tương ứng của nó \[ \mathbf{y} = f[\mathbf{x}] \].

Ví dụ 1: trong nhận dạng chữ viết tay, ta có ảnh của hàng nghìn ví dụ của mỗi chữ số được viết bởi nhiều người khác nhau. Chúng ta đưa các bức ảnh này vào trong một thuật toán và chỉ cho nó biết mỗi bức ảnh tương ứng với chữ số nào. Sau khi thuật toán tạo ra một mô hình, tức một hàm số mà đầu vào là một bức ảnh và đầu ra là một chữ số, khi nhận được một bức ảnh mới mà mô hình chưa nhìn thấy bao giờ, nó sẽ dự đoán bức ảnh đó chứa chữ số nào.

Ví dụ này khá giống với cách học của con người khi còn nhỏ. Ta đưa bảng chữ cái cho một đứa trẻ và chỉ cho chúng đây là chữ A, đây là chữ B. Sau một vài lần được dạy thì trẻ có thể nhận biết được đâu là chữ A, đâu là chữ B trong một cuốn sách mà chúng chưa nhìn thấy bao giờ.

Ví dụ 2: Thuật toán dò các khuôn mặt trong một bức ảnh đã được phát triển từ rất lâu. Thời gian đầu, facebook sử dụng thuật toán này để chỉ ra các khuôn mặt trong một bức ảnh và yêu cầu người dùng tag friends - tức gán nhãn cho mỗi khuôn mặt. Số lượng cặp dữ liệu [khuôn mặt, tên người] càng lớn, độ chính xác ở những lần tự động tag tiếp theo sẽ càng lớn.

Ví dụ 3: Bản thân thuật toán dò tìm các khuôn mặt trong 1 bức ảnh cũng là một thuật toán Supervised learning với training data [dữ liệu học] là hàng ngàn cặp [ảnh, mặt người] và [ảnh, không phải mặt người] được đưa vào. Chú ý là dữ liệu này chỉ phân biệt mặt người và không phải mặt người mà không phân biệt khuôn mặt của những người khác nhau.

Thuật toán supervised learning còn được tiếp tục chia nhỏ ra thành hai loại chính:

Classification [Phân loại]

Một bài toán được gọi là classification nếu các label của input data được chia thành một số hữu hạn nhóm. Ví dụ: Gmail xác định xem một email có phải là spam hay không; các hãng tín dụng xác định xem một khách hàng có khả năng thanh toán nợ hay không. Ba ví dụ phía trên được chia vào loại này.

Regression [Hồi quy]

[tiếng Việt dịch là Hồi quy, tôi không thích cách dịch này vì bản thân không hiểu nó nghĩa là gì]

Nếu label không được chia thành các nhóm mà là một giá trị thực cụ thể. Ví dụ: một căn nhà rộng \[x ~ \text{m}^2\], có \[y\] phòng ngủ và cách trung tâm thành phố \[z~ \text{km}\] sẽ có giá là bao nhiêu?

Gần đây Microsoft có một ứng dụng dự đoán giới tính và tuổi dựa trên khuôn mặt. Phần dự đoán giới tính có thể coi là thuật toán Classification, phần dự đoán tuổi có thể coi là thuật toán Regression. Chú ý rằng phần dự đoán tuổi cũng có thể coi là Classification nếu ta coi tuổi là một số nguyên dương không lớn hơn 150, chúng ta sẽ có 150 class [lớp] khác nhau.

Unsupervised Learning [Học không giám sát]

Trong thuật toán này, chúng ta không biết được outcome hay nhãn mà chỉ có dữ liệu đầu vào. Thuật toán unsupervised learning sẽ dựa vào cấu trúc của dữ liệu để thực hiện một công việc nào đó, ví dụ như phân nhóm [clustering] hoặc giảm số chiều của dữ liệu [dimension reduction] để thuận tiện trong việc lưu trữ và tính toán.

Một cách toán học, Unsupervised learning là khi chúng ta chỉ có dữ liệu vào \[\mathcal{X} \] mà không biết nhãn \[\mathcal{Y}\] tương ứng.

Những thuật toán loại này được gọi là Unsupervised learning vì không giống như Supervised learning, chúng ta không biết câu trả lời chính xác cho mỗi dữ liệu đầu vào. Giống như khi ta học, không có thầy cô giáo nào chỉ cho ta biết đó là chữ A hay chữ B. Cụm không giám sát được đặt tên theo nghĩa này.

Các bài toán Unsupervised learning được tiếp tục chia nhỏ thành hai loại:

Clustering [phân nhóm]

Một bài toán phân nhóm toàn bộ dữ liệu \[\mathcal{X}\] thành các nhóm nhỏ dựa trên sự liên quan giữa các dữ liệu trong mỗi nhóm. Ví dụ: phân nhóm khách hàng dựa trên hành vi mua hàng. Điều này cũng giống như việc ta đưa cho một đứa trẻ rất nhiều mảnh ghép với các hình thù và màu sắc khác nhau, ví dụ tam giác, vuông, tròn với màu xanh và đỏ, sau đó yêu cầu trẻ phân chúng thành từng nhóm. Mặc dù không cho trẻ biết mảnh nào tương ứng với hình nào hoặc màu nào, nhiều khả năng chúng vẫn có thể phân loại các mảnh ghép theo màu hoặc hình dạng.

Association

Là bài toán khi chúng ta muốn khám phá ra một quy luật dựa trên nhiều dữ liệu cho trước. Ví dụ: những khách hàng nam mua quần áo thường có xu hướng mua thêm đồng hồ hoặc thắt lưng; những khán giả xem phim Spider Man thường có xu hướng xem thêm phim Bat Man, dựa vào đó tạo ra một hệ thống gợi ý khách hàng [Recommendation System], thúc đẩy nhu cầu mua sắm.

Semi-Supervised Learning [Học bán giám sát]

Các bài toán khi chúng ta có một lượng lớn dữ liệu \[\mathcal{X}\] nhưng chỉ một phần trong chúng được gán nhãn được gọi là Semi-Supervised Learning. Những bài toán thuộc nhóm này nằm giữa hai nhóm được nêu bên trên.

Một ví dụ điển hình của nhóm này là chỉ có một phần ảnh hoặc văn bản được gán nhãn [ví dụ bức ảnh về người, động vật hoặc các văn bản khoa học, chính trị] và phần lớn các bức ảnh/văn bản khác chưa được gán nhãn được thu thập từ internet. Thực tế cho thấy rất nhiều các bài toán Machine Learning thuộc vào nhóm này vì việc thu thập dữ liệu có nhãn tốn rất nhiều thời gian và có chi phí cao. Rất nhiều loại dữ liệu thậm chí cần phải có chuyên gia mới gán nhãn được [ảnh y học chẳng hạn]. Ngược lại, dữ liệu chưa có nhãn có thể được thu thập với chi phí thấp từ internet.

Reinforcement learning là các bài toán giúp cho một hệ thống tự động xác định hành vi dựa trên hoàn cảnh để đạt được lợi ích cao nhất [maximizing the performance]. Hiện tại, Reinforcement learning chủ yếu được áp dụng vào Lý Thuyết Trò Chơi [Game Theory], các thuật toán cần xác định nước đi tiếp theo để đạt được điểm số cao nhất.

Ví dụ 1: AlphaGo gần đây nổi tiếng với việc chơi cờ vây thắng cả con người. Cờ vây được xem là có độ phức tạp cực kỳ cao với tổng số nước đi là xấp xỉ \[10^{761} \], so với cờ vua là \[10^{120} \] và tổng số nguyên tử trong toàn vũ trụ là khoảng \[10^{80}\]!! Vì vậy, thuật toán phải chọn ra 1 nước đi tối ưu trong số hàng nhiều tỉ tỉ lựa chọn, và tất nhiên, không thể áp dụng thuật toán tương tự như IBM Deep Blue [IBM Deep Blue đã thắng con người trong môn cờ vua 20 năm trước]. Về cơ bản, AlphaGo bao gồm các thuật toán thuộc cả Supervised learning và Reinforcement learning. Trong phần Supervised learning, dữ liệu từ các ván cờ do con người chơi với nhau được đưa vào để huấn luyện. Tuy nhiên, mục đích cuối cùng của AlphaGo không phải là chơi như con người mà phải thậm chí thắng cả con người. Vì vậy, sau khi học xong các ván cờ của con người, AlphaGo tự chơi với chính nó với hàng triệu ván chơi để tìm ra các nước đi mới tối ưu hơn. Thuật toán trong phần tự chơi này được xếp vào loại Reinforcement learning. [Xem thêm tại Google DeepMind’s AlphaGo: How it works].

Ví dụ 2: Huấn luyện cho máy tính chơi game Mario. Đây là một chương trình thú vị dạy máy tính chơi game Mario. Game này đơn giản hơn cờ vây vì tại một thời điểm, người chơi chỉ phải bấm một số lượng nhỏ các nút [di chuyển, nhảy, bắn đạn] hoặc không cần bấm nút nào. Đồng thời, phản ứng của máy cũng đơn giản hơn và lặp lại ở mỗi lần chơi [tại thời điểm cụ thể sẽ xuất hiện một chướng ngại vật cố định ở một vị trí cố định]. Đầu vào của thuật toán là sơ đồ của màn hình tại thời điểm hiện tại, nhiệm vụ của thuật toán là với đầu vào đó, tổ hợp phím nào nên được bấm. Việc huấn luyện này được dựa trên điểm số cho việc di chuyển được bao xa trong thời gian bao lâu trong game, càng xa và càng nhanh thì được điểm thưởng càng cao [điểm thưởng này không phải là điểm của trò chơi mà là điểm do chính người lập trình tạo ra]. Thông qua huấn luyện, thuật toán sẽ tìm ra một cách tối ưu để tối đa số điểm trên, qua đó đạt được mục đích cuối cùng là cứu công chúa.

Huấn luyện cho máy tính chơi game Mario

2. Phân nhóm dựa trên chức năng

Có một cách phân nhóm thứ hai dựa trên chức năng của các thuật toán. Trong phần này, tôi xin chỉ liệt kê các thuật toán. Thông tin cụ thể sẽ được trình bày trong các bài viết khác tại blog này. Trong quá trình viết, tôi có thể sẽ thêm bớt một số thuật toán.

Regression Algorithms

  1. Linear Regression
  2. Logistic Regression
  3. Stepwise Regression

Classification Algorithms

Instance-based Algorithms

  1. k-Nearest Neighbor [kNN]
  2. Learning Vector Quantization [LVQ]

Regularization Algorithms

  1. Ridge Regression
  2. Least Absolute Shrinkage and Selection Operator [LASSO]
  3. Least-Angle Regression [LARS]

Bayesian Algorithms

  1. Naive Bayes
  2. Gaussian Naive Bayes

Clustering Algorithms

  1. k-Means clustering
  2. k-Medians
  3. Expectation Maximization [EM]

Artificial Neural Network Algorithms

  1. Perceptron
  2. Softmax Regression
  3. Multi-layer Perceptron
  4. Back-Propagation

Dimensionality Reduction Algorithms

  1. Principal Component Analysis [PCA]
  2. Linear Discriminant Analysis [LDA]

Ensemble Algorithms

  1. Boosting
  2. AdaBoost
  3. Random Forest

Và còn rất nhiều các thuật toán khác.

3. Tài liệu tham khảo

Video liên quan

Chủ Đề