Học máy - Hướng dẫn nhanh

Trí tuệ nhân tạo (AI) ngày nay đã vượt xa sự cường điệu của blockchain và điện toán lượng tử. Điều này là do thực tế là tài nguyên máy tính khổng lồ dễ dàng có sẵn cho con người. Các nhà phát triển hiện tận dụng lợi thế này trong việc tạo ra các mô hình Học máy mới và đào tạo lại các mô hình hiện có để có hiệu suất và kết quả tốt hơn. Tính khả dụng dễ dàng của Máy tính Hiệu suất Cao (HPC) đã dẫn đến nhu cầu tăng đột biến đối với các chuyên gia CNTT có kỹ năng Học máy.

Trong hướng dẫn này, bạn sẽ tìm hiểu chi tiết về -

Điểm mấu chốt của học máy là gì?

  • Các loại khác nhau trong học máy là gì?

  • Các thuật toán khác nhau có sẵn để phát triển mô hình học máy là gì?

  • Có những công cụ nào để phát triển các mô hình này?

  • Các lựa chọn ngôn ngữ lập trình là gì?

  • Những nền tảng nào hỗ trợ phát triển và triển khai các ứng dụng Học máy?

  • Có những IDE nào (Môi trường phát triển tích hợp)?

  • Làm thế nào để nhanh chóng nâng cấp kỹ năng của bạn trong lĩnh vực quan trọng này?

Khi bạn gắn thẻ một khuôn mặt trong ảnh trên Facebook, chính là AI sẽ chạy phía sau hậu trường và xác định khuôn mặt trong ảnh. Tính năng gắn thẻ khuôn mặt hiện có mặt khắp nơi trong một số ứng dụng hiển thị ảnh có khuôn mặt người. Tại sao chỉ có mặt người? Có một số ứng dụng phát hiện các đối tượng như mèo, chó, chai lọ, ô tô, v.v. Chúng tôi có ô tô tự lái chạy trên đường của chúng tôi, phát hiện các đối tượng trong thời gian thực để điều khiển xe. Khi bạn đi du lịch, bạn sử dụng GoogleDirectionsđể tìm hiểu các tình huống giao thông trong thời gian thực và đi theo con đường tốt nhất do Google đề xuất tại thời điểm đó. Đây là một cách triển khai khác của kỹ thuật phát hiện đối tượng trong thời gian thực.

Chúng ta hãy xem xét ví dụ về Google Translateứng dụng mà chúng tôi thường sử dụng khi đến thăm nước ngoài. Ứng dụng phiên dịch trực tuyến của Google trên điện thoại di động của bạn giúp bạn giao tiếp với người dân địa phương nói ngôn ngữ xa lạ với bạn.

Có một số ứng dụng của AI mà chúng ta sử dụng thực tế ngày nay. Trên thực tế, mỗi người trong chúng ta đều sử dụng AI trong nhiều phần của cuộc sống mà chúng ta không hề hay biết. AI ngày nay có thể thực hiện các công việc cực kỳ phức tạp với độ chính xác và tốc độ cao. Hãy để chúng tôi thảo luận về một ví dụ về nhiệm vụ phức tạp để hiểu những khả năng nào được mong đợi trong một ứng dụng AI mà bạn sẽ phát triển ngày hôm nay cho khách hàng của mình.

Thí dụ

Tất cả chúng ta đều sử dụng Google Directionstrong chuyến đi của chúng tôi ở bất cứ đâu trong thành phố để đi làm hàng ngày hoặc thậm chí cho các chuyến du lịch giữa các thành phố. Ứng dụng Google Directions gợi ý đường dẫn nhanh nhất đến đích của chúng tôi tại thời điểm đó. Khi chúng tôi đi theo con đường này, chúng tôi nhận thấy rằng Google gần như đúng 100% trong các đề xuất của mình và chúng tôi tiết kiệm được thời gian quý báu của mình cho chuyến đi.

Bạn có thể tưởng tượng sự phức tạp liên quan đến việc phát triển loại ứng dụng này vì có nhiều con đường dẫn đến điểm đến của bạn và ứng dụng phải phán đoán tình hình giao thông ở mọi con đường có thể để cung cấp cho bạn ước tính thời gian di chuyển cho mỗi con đường như vậy. Bên cạnh đó, hãy xem xét thực tế là Google Chỉ đường bao phủ toàn bộ địa cầu. Không còn nghi ngờ gì nữa, rất nhiều kỹ thuật AI và Máy học đang được sử dụng dưới lớp vỏ của các ứng dụng như vậy.

Xem xét nhu cầu liên tục về sự phát triển của các ứng dụng như vậy, bây giờ bạn sẽ hiểu tại sao lại có nhu cầu đột ngột về các chuyên gia CNTT có kỹ năng AI.

Trong chương tiếp theo, chúng ta sẽ tìm hiểu những gì cần thiết để phát triển các chương trình AI.

Cuộc hành trình của AI bắt đầu vào những năm 1950 khi sức mạnh tính toán chỉ bằng một phần nhỏ so với ngày nay. AI bắt đầu với các dự đoán được thực hiện bởi máy theo kiểu một nhà thống kê thực hiện các dự đoán bằng máy tính của mình. Do đó, toàn bộ sự phát triển AI ban đầu chủ yếu dựa trên các kỹ thuật thống kê.

Trong chương này, chúng ta hãy thảo luận chi tiết những kỹ thuật thống kê này là gì.

Kỹ thuật thống kê

Sự phát triển của các ứng dụng AI ngày nay bắt đầu bằng việc sử dụng các kỹ thuật thống kê truyền thống lâu đời. Bạn hẳn đã sử dụng phép nội suy đường thẳng trong trường học để dự đoán một giá trị trong tương lai. Có một số kỹ thuật thống kê khác được áp dụng thành công trong việc phát triển cái gọi là các chương trình AI. Chúng tôi nói "cái gọi là" bởi vì các chương trình AI mà chúng ta có ngày nay phức tạp hơn nhiều và sử dụng các kỹ thuật vượt xa các kỹ thuật thống kê được sử dụng bởi các chương trình AI ban đầu.

Một số ví dụ về các kỹ thuật thống kê được sử dụng để phát triển các ứng dụng AI trong những ngày đó và vẫn còn trong thực tế được liệt kê ở đây -

  • Regression
  • Classification
  • Clustering
  • Lý thuyết xác suất
  • Cây quyết định

Ở đây, chúng tôi chỉ liệt kê một số kỹ thuật chính đủ để giúp bạn bắt đầu với AI mà không làm bạn sợ hãi về sự rộng lớn mà AI đòi hỏi. Nếu bạn đang phát triển các ứng dụng AI dựa trên dữ liệu hạn chế, bạn sẽ sử dụng các kỹ thuật thống kê này.

Tuy nhiên, ngày nay dữ liệu rất dồi dào. Để phân tích loại dữ liệu khổng lồ mà chúng ta có, các kỹ thuật thống kê không giúp ích được gì nhiều vì chúng có một số hạn chế riêng. Do đó, các phương pháp tiên tiến hơn như học sâu được phát triển để giải quyết nhiều vấn đề phức tạp.

Khi chúng ta tiếp tục hướng dẫn này, chúng ta sẽ hiểu Machine Learning là gì và cách nó được sử dụng để phát triển các ứng dụng AI phức tạp như vậy.

Hãy xem xét hình sau đây cho thấy một biểu đồ giá nhà so với diện tích của nó tính bằng ft vuông.

Sau khi vẽ các điểm dữ liệu khác nhau trên biểu đồ XY, chúng tôi vẽ một đường phù hợp nhất để thực hiện dự đoán của chúng tôi cho bất kỳ ngôi nhà nào khác với kích thước của nó. Bạn sẽ cung cấp dữ liệu đã biết vào máy và yêu cầu máy tìm dòng phù hợp nhất. Sau khi máy tìm được đường vừa vặn nhất, bạn sẽ kiểm tra độ phù hợp của nó bằng cách cho ăn theo kích thước ngôi nhà đã biết, tức là giá trị Y trong đường cong trên. Lúc này máy sẽ trả về giá trị X ước tính, tức là giá dự kiến ​​của ngôi nhà. Sơ đồ có thể được ngoại suy để tìm ra giá của một ngôi nhà có diện tích 3000 mét vuông hoặc thậm chí lớn hơn. Đây được gọi là hồi quy trong thống kê. Đặc biệt, loại hồi quy này được gọi là hồi quy tuyến tính vì mối quan hệ giữa các điểm dữ liệu X & Y là tuyến tính.

Trong nhiều trường hợp, mối quan hệ giữa các điểm dữ liệu X & Y có thể không phải là một đường thẳng và nó có thể là một đường cong với một phương trình phức tạp. Nhiệm vụ của bạn bây giờ là tìm ra đường cong phù hợp nhất có thể được ngoại suy để dự đoán các giá trị trong tương lai. Một sơ đồ ứng dụng như vậy được thể hiện trong hình bên dưới.

Nguồn:

https://upload.wikimedia.org/wikipedia/commons/c/c9/

Bạn sẽ sử dụng các kỹ thuật tối ưu hóa thống kê để tìm ra phương trình cho đường cong phù hợp nhất ở đây. Và đây là những gì chính xác về Học máy. Bạn sử dụng các kỹ thuật tối ưu hóa đã biết để tìm ra giải pháp tốt nhất cho vấn đề của mình.

Tiếp theo, chúng ta hãy xem xét các danh mục khác nhau của Học máy.

Học máy được phân loại rộng rãi theo các tiêu đề sau:

Máy học phát triển từ trái sang phải như trong sơ đồ trên.

  • Ban đầu, các nhà nghiên cứu bắt đầu với Học có giám sát. Đây là trường hợp dự đoán giá nhà ở đã thảo luận trước đó.

  • Tiếp theo là quá trình học không giám sát, nơi máy móc được tạo ra để tự học mà không cần bất kỳ sự giám sát nào.

  • Các nhà khoa học phát hiện thêm rằng có thể là một ý tưởng hay khi thưởng cho cỗ máy khi nó thực hiện công việc theo cách mong đợi và đã có Học tập tăng cường.

  • Rất nhanh chóng, dữ liệu có sẵn ngày nay đã trở nên khổng lồ đến mức các kỹ thuật thông thường được phát triển cho đến nay không thể phân tích dữ liệu lớn và cung cấp cho chúng ta dự đoán.

  • Do đó, nghiên cứu sâu đã xuất hiện trong đó bộ não con người được mô phỏng trong Mạng thần kinh nhân tạo (ANN) được tạo ra trong máy tính nhị phân của chúng ta.

  • Máy hiện có thể tự học bằng cách sử dụng sức mạnh tính toán cao và tài nguyên bộ nhớ khổng lồ hiện có.

  • Hiện tại có thể thấy rằng Học sâu đã giải quyết được nhiều vấn đề nan giải trước đây.

  • Kỹ thuật này hiện đã được nâng cao hơn nữa bằng cách tặng thưởng cho các mạng Deep Learning và cuối cùng là Deep Reinforcement Learning.

Bây giờ chúng ta hãy nghiên cứu chi tiết hơn từng loại này.

Học tập có giám sát

Học tập có giám sát tương tự như việc huấn luyện một đứa trẻ tập đi. Bạn sẽ nắm tay trẻ, hướng dẫn trẻ cách đưa chân về phía trước, tự mình đi bộ để trình diễn, v.v. cho đến khi trẻ học cách tự đi.

hồi quy

Tương tự, trong trường hợp học có giám sát, bạn đưa ra các ví dụ cụ thể đã biết cho máy tính. Bạn nói rằng đối với giá trị đặc trưng đã cho x1, đầu ra là y1, đối với x2 là y2, đối với x3 là y3, v.v. Dựa trên dữ liệu này, bạn cho phép máy tính tìm ra mối quan hệ thực nghiệm giữa x và y.

Sau khi máy được huấn luyện theo cách này với đủ số điểm dữ liệu, bây giờ bạn sẽ yêu cầu máy dự đoán Y cho một X. Giả sử rằng bạn biết giá trị thực của Y cho X đã cho này, bạn sẽ có thể suy ra dự đoán của máy có đúng không.

Do đó, bạn sẽ kiểm tra xem máy đã học hay chưa bằng cách sử dụng dữ liệu kiểm tra đã biết. Khi bạn hài lòng rằng máy có thể thực hiện các dự đoán với mức độ chính xác mong muốn (giả sử là 80 đến 90%), bạn có thể ngừng đào tạo thêm cho máy.

Bây giờ, bạn có thể sử dụng máy một cách an toàn để thực hiện các dự đoán trên các điểm dữ liệu chưa biết hoặc yêu cầu máy dự đoán Y cho một điểm X nhất định mà bạn không biết giá trị thực của Y. Bài tập này thuộc về hồi quy mà chúng ta đã nói về sớm hơn.

Phân loại

Bạn cũng có thể sử dụng các kỹ thuật học máy cho các vấn đề phân loại. Trong các bài toán phân loại, bạn phân loại các đối tượng có bản chất tương tự thành một nhóm duy nhất. Ví dụ, trong một nhóm 100 sinh viên nói, bạn có thể muốn nhóm họ thành ba nhóm dựa trên chiều cao của họ - ngắn, trung bình và dài. Đo chiều cao của từng học sinh, bạn sẽ xếp chúng vào một nhóm thích hợp.

Bây giờ, khi một học sinh mới đến, bạn sẽ xếp anh ta vào một nhóm thích hợp bằng cách đo chiều cao của anh ta. Bằng cách tuân theo các nguyên tắc trong đào tạo hồi quy, bạn sẽ huấn luyện máy phân loại học sinh dựa trên đặc điểm của anh ta - chiều cao. Khi máy học cách các nhóm được thành lập, nó sẽ có thể phân loại chính xác bất kỳ học sinh mới nào chưa biết. Một lần nữa, bạn sẽ sử dụng dữ liệu thử nghiệm để xác minh rằng máy đã học được kỹ thuật phân loại của bạn trước khi đưa mô hình đã phát triển vào sản xuất.

Học tập có giám sát là nơi AI thực sự bắt đầu hành trình của mình. Kỹ thuật này đã được áp dụng thành công trong một số trường hợp. Bạn đã sử dụng mô hình này trong khi thực hiện nhận dạng chữ viết tay trên máy của mình. Một số thuật toán đã được phát triển để học có giám sát. Bạn sẽ tìm hiểu về chúng trong các chương sau.

Học tập không giám sát

Trong học tập không giám sát, chúng tôi không chỉ định một biến mục tiêu cho máy, thay vào đó chúng tôi hỏi máy "Bạn có thể cho tôi biết gì về X?". Cụ thể hơn, chúng tôi có thể hỏi những câu hỏi chẳng hạn như đưa ra một tập dữ liệu khổng lồ X, "Năm nhóm tốt nhất mà chúng tôi có thể tạo ra từ X là gì?" hoặc "Những tính năng nào xuất hiện cùng nhau thường xuyên nhất trong X?". Để đi đến câu trả lời cho những câu hỏi như vậy, bạn có thể hiểu rằng số lượng điểm dữ liệu mà máy yêu cầu để suy ra một chiến lược sẽ rất lớn. Trong trường hợp học có giám sát, máy có thể được huấn luyện với thậm chí khoảng vài nghìn điểm dữ liệu. Tuy nhiên, trong trường hợp học tập không có giám sát, số lượng điểm dữ liệu được chấp nhận hợp lý cho việc học tập bắt đầu từ vài triệu. Ngày nay, dữ liệu thường có sẵn rất nhiều. Dữ liệu lý tưởng là yêu cầu quản lý. Tuy nhiên, lượng dữ liệu liên tục chảy trong mạng xã hội, trong hầu hết các trường hợp, việc quản lý dữ liệu là một nhiệm vụ bất khả thi.

Hình dưới đây cho thấy ranh giới giữa các chấm màu vàng và đỏ được xác định bởi học máy không giám sát. Bạn có thể thấy rõ rằng máy sẽ có thể xác định lớp của từng chấm đen với độ chính xác khá tốt.

Nguồn:

https://chrisjmccormick.files.wordpress.com/2013/08/approx_decision_boun dary.png

Việc học tập không giám sát đã cho thấy một thành công lớn trong nhiều ứng dụng AI hiện đại, chẳng hạn như nhận diện khuôn mặt, phát hiện đối tượng, v.v.

Học tăng cường

Hãy xem xét việc huấn luyện một chú chó cưng, chúng ta huấn luyện thú cưng của mình để mang quả bóng đến cho chúng ta. Chúng ta ném quả bóng ở một khoảng cách nhất định và yêu cầu con chó lấy nó trở lại cho chúng ta. Mỗi khi con chó làm đúng, chúng tôi thưởng cho con chó. Từ từ, con chó biết rằng làm công việc đúng sẽ mang lại cho nó phần thưởng và sau đó con chó bắt đầu thực hiện công việc đúng cách mọi lúc trong tương lai. Chính xác, khái niệm này được áp dụng trong kiểu học tập "Tăng cường". Kỹ thuật này ban đầu được phát triển cho các máy chơi game. Máy được đưa ra một thuật toán để phân tích tất cả các nước đi có thể xảy ra ở mỗi giai đoạn của trò chơi. Máy có thể chọn ngẫu nhiên một trong các bước di chuyển. Nếu nước đi đúng, máy được thưởng, nếu không có thể bị phạt. Từ từ, máy sẽ bắt đầu phân biệt các bước đi đúng và sai và sau nhiều lần lặp lại sẽ học cách giải câu đố trò chơi với độ chính xác cao hơn. Độ chính xác của việc giành chiến thắng trong trò chơi sẽ cải thiện khi máy chơi ngày càng nhiều trò chơi.

Toàn bộ quá trình có thể được mô tả trong sơ đồ sau:

Kỹ thuật học máy này khác với kỹ thuật học có giám sát ở chỗ bạn không cần cung cấp các cặp đầu vào / đầu ra được gắn nhãn. Trọng tâm là tìm sự cân bằng giữa việc khám phá các giải pháp mới với việc khai thác các giải pháp đã học.

Học kĩ càng

Học sâu là một mô hình dựa trên Mạng thần kinh nhân tạo (ANN), cụ thể hơn là Mạng thần kinh hợp pháp (CNN). Có một số kiến ​​trúc được sử dụng trong học sâu như mạng nơ-ron sâu, mạng niềm tin sâu, mạng nơ-ron tuần hoàn và mạng nơ-ron tích tụ.

Các mạng này đã được ứng dụng thành công trong việc giải quyết các vấn đề về thị giác máy tính, nhận dạng giọng nói, xử lý ngôn ngữ tự nhiên, tin sinh học, thiết kế thuốc, phân tích hình ảnh y tế và trò chơi. Có một số lĩnh vực khác mà học sâu được chủ động áp dụng. Học sâu đòi hỏi sức mạnh xử lý khổng lồ và dữ liệu khổng lồ, ngày nay thường dễ dàng có được.

Chúng ta sẽ nói chi tiết hơn về học sâu trong các chương tới.

Học tập củng cố sâu

Học tăng cường sâu (DRL) kết hợp các kỹ thuật của cả học sâu và tăng cường. Các thuật toán học tăng cường như Q-learning hiện được kết hợp với học sâu để tạo ra một mô hình DRL mạnh mẽ. Kỹ thuật này đã đạt được thành công lớn trong các lĩnh vực robot, trò chơi điện tử, tài chính và chăm sóc sức khỏe. Nhiều vấn đề nan giải trước đây đã được giải quyết bằng cách tạo các mô hình DRL. Có rất nhiều nghiên cứu đang diễn ra trong lĩnh vực này và điều này đang được các ngành theo đuổi rất tích cực.

Cho đến nay, bạn đã được giới thiệu ngắn gọn về các mô hình học máy khác nhau, bây giờ chúng ta hãy khám phá sâu hơn một chút về các thuật toán khác nhau có sẵn trong các mô hình này.

Học tập có giám sát là một trong những mô hình học tập quan trọng liên quan đến máy đào tạo. Chương này nói chi tiết về điều tương tự.

Các thuật toán cho việc học có giám sát

Có một số thuật toán có sẵn cho việc học có giám sát. Một số thuật toán được sử dụng rộng rãi của học có giám sát như được minh họa bên dưới:

  • k-Những người hàng xóm gần nhất
  • Cây quyết định
  • Naive Bayes
  • Hồi quy logistic
  • Hỗ trợ Máy Vector

Khi chúng ta tiếp tục chương này, chúng ta hãy thảo luận chi tiết về từng thuật toán.

k-Những người hàng xóm gần nhất

K-Nearest Neighbors, được gọi đơn giản là kNN là một kỹ thuật thống kê có thể được sử dụng để giải các bài toán phân loại và hồi quy. Chúng ta hãy thảo luận về trường hợp phân loại một đối tượng không xác định bằng kNN. Hãy xem xét sự phân bố của các đối tượng như trong hình dưới đây:

Nguồn:

https://en.wikipedia.org/wiki/K-nethers_neighbors_algorithm

Sơ đồ cho thấy ba loại đối tượng, được đánh dấu bằng các màu đỏ, xanh lam và xanh lục. Khi bạn chạy trình phân loại kNN trên tập dữ liệu trên, ranh giới cho từng loại đối tượng sẽ được đánh dấu như hình dưới đây:

Nguồn:

https://en.wikipedia.org/wiki/K-nethers_neighbors_algorithm

Bây giờ, hãy xem xét một đối tượng mới chưa biết mà bạn muốn phân loại là đỏ, lục hoặc lam. Điều này được mô tả trong hình bên dưới.

Như bạn thấy bằng mắt thường, điểm dữ liệu không xác định thuộc về một lớp các đối tượng màu xanh lam. Về mặt toán học, điều này có thể được kết luận bằng cách đo khoảng cách của điểm chưa biết này với mọi điểm khác trong tập dữ liệu. Khi bạn làm như vậy, bạn sẽ biết rằng hầu hết các hàng xóm của nó có màu xanh lam. Khoảng cách trung bình đến các đối tượng màu đỏ và xanh lá cây chắc chắn sẽ nhiều hơn khoảng cách trung bình đến các đối tượng màu xanh lam. Do đó, vật thể chưa biết này có thể được xếp vào loại màu xanh lam.

Thuật toán kNN cũng có thể được sử dụng cho các bài toán hồi quy. Thuật toán kNN có sẵn dưới dạng sẵn sàng để sử dụng trong hầu hết các thư viện ML.

Cây quyết định

Dưới đây là một cây quyết định đơn giản ở định dạng lưu đồ:

Bạn sẽ viết mã để phân loại dữ liệu đầu vào của mình dựa trên lưu đồ này. Lưu đồ tự giải thích và tầm thường. Trong trường hợp này, bạn đang cố gắng phân loại một email đến để quyết định thời điểm đọc nó.

Trên thực tế, các cây quyết định có thể lớn và phức tạp. Có một số thuật toán có sẵn để tạo và duyệt những cây này. Là một người đam mê Machine Learning, bạn cần hiểu và nắm vững các kỹ thuật tạo và duyệt cây quyết định này.

Naive Bayes

Naive Bayes được sử dụng để tạo bộ phân loại. Giả sử bạn muốn phân loại (phân loại) các loại trái cây từ một giỏ trái cây. Bạn có thể sử dụng các đặc điểm như màu sắc, kích thước và hình dạng của trái cây, Ví dụ: bất kỳ trái cây nào có màu đỏ, hình tròn và đường kính khoảng 10 cm đều có thể được coi là Apple. Vì vậy, để đào tạo mô hình, bạn sẽ sử dụng các tính năng này và kiểm tra xác suất để một tính năng nhất định phù hợp với các ràng buộc mong muốn. Xác suất của các tính năng khác nhau sau đó được kết hợp để đi đến xác suất một loại trái cây nhất định là Táo. Naive Bayes thường yêu cầu một số lượng nhỏ dữ liệu huấn luyện để phân loại.

Hồi quy logistic

Nhìn vào sơ đồ sau. Nó cho thấy sự phân bố của các điểm dữ liệu trong mặt phẳng XY.

Từ sơ đồ, chúng ta có thể kiểm tra trực quan sự tách biệt của các chấm đỏ khỏi các chấm xanh. Bạn có thể vẽ một đường ranh giới để tách các chấm này ra. Bây giờ, để phân loại một điểm dữ liệu mới, bạn sẽ chỉ cần xác định điểm đó nằm ở phía nào của đường thẳng.

Hỗ trợ Máy Vector

Nhìn vào sự phân bố dữ liệu sau đây. Ở đây ba lớp dữ liệu không thể được phân tách tuyến tính. Các đường cong biên là phi tuyến tính. Trong trường hợp như vậy, việc tìm phương trình của đường cong trở thành một công việc phức tạp.

Nguồn: http://uc-r.github.io/svm

Máy Véc tơ Hỗ trợ (SVM) rất hữu ích trong việc xác định ranh giới ngăn cách trong những tình huống như vậy.

May mắn thay, hầu hết thời gian bạn không phải viết mã các thuật toán đã đề cập trong bài trước. Có nhiều thư viện tiêu chuẩn cung cấp việc triển khai sẵn sàng để sử dụng các thuật toán này. Một trong những bộ công cụ được sử dụng phổ biến là scikit-learning. Hình bên dưới minh họa các loại thuật toán có sẵn để bạn sử dụng trong thư viện này.

Nguồn: https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html

Việc sử dụng các thuật toán này là không bình thường và vì chúng đã được kiểm tra tốt và thực địa, bạn có thể sử dụng chúng một cách an toàn trong các ứng dụng AI của mình. Hầu hết các thư viện này đều được sử dụng miễn phí ngay cả với mục đích thương mại.

Cho đến nay, những gì bạn thấy là làm cho cỗ máy học cách tìm ra giải pháp cho mục tiêu của chúng tôi. Trong hồi quy, chúng tôi huấn luyện máy để dự đoán giá trị trong tương lai. Trong phân loại, chúng tôi huấn luyện máy phân loại một đối tượng không xác định vào một trong các danh mục do chúng tôi xác định. Tóm lại, chúng tôi đã đào tạo máy móc để nó có thể dự đoán Y cho dữ liệu X. Với một tập dữ liệu khổng lồ và không ước tính các danh mục, chúng tôi sẽ khó đào tạo máy bằng cách sử dụng phương pháp học có giám sát. Điều gì sẽ xảy ra nếu máy có thể tra cứu và phân tích dữ liệu lớn chạy thành nhiều Gigabyte và Terabyte và cho chúng ta biết rằng dữ liệu này chứa rất nhiều danh mục riêng biệt?

Ví dụ, hãy xem xét dữ liệu của cử tri. Bằng cách xem xét một số đầu vào từ mỗi cử tri (chúng được gọi là các tính năng trong thuật ngữ AI), hãy để máy dự đoán rằng có rất nhiều cử tri sẽ bỏ phiếu cho đảng chính trị X và nhiều người sẽ bỏ phiếu cho Y, v.v. Do đó, nói chung, chúng tôi đang hỏi máy được cung cấp một tập hợp lớn các điểm dữ liệu X, “Bạn có thể cho tôi biết gì về X?”. Hoặc nó có thể là một câu hỏi như "Năm nhóm tốt nhất chúng ta có thể tạo ra từ X là gì?". Hoặc thậm chí có thể giống như "Ba đặc điểm nào xuất hiện cùng nhau thường xuyên nhất trong X?".

Đây chính xác là tất cả về Học tập không giám sát.

Các thuật toán cho học tập không giám sát

Bây giờ chúng ta hãy thảo luận về một trong những thuật toán được sử dụng rộng rãi để phân loại trong học máy không giám sát.

k-có nghĩa là phân cụm

Các cuộc bầu cử Tổng thống năm 2000 và 2004 ở Hoa Kỳ đã gần kề - rất gần. Tỷ lệ phiếu phổ thông lớn nhất mà bất kỳ ứng cử viên nào nhận được là 50,7% và thấp nhất là 47,9%. Nếu một phần trăm cử tri đã chuyển sang phe, kết quả của cuộc bầu cử sẽ khác. Có những nhóm nhỏ cử tri, khi được kháng cáo thích hợp, sẽ chuyển phe. Những nhóm này có thể không lớn, nhưng với những cuộc chạy đua gần như vậy, họ có thể đủ lớn để thay đổi kết quả của cuộc bầu cử. Làm thế nào để bạn tìm thấy những nhóm người này? Làm thế nào để bạn thu hút họ với một ngân sách hạn chế? Câu trả lời là phân cụm.

Hãy cho chúng tôi hiểu cách nó được thực hiện.

  • Đầu tiên, bạn thu thập thông tin về những người có hoặc không có sự đồng ý của họ: bất kỳ loại thông tin nào có thể cung cấp manh mối về điều gì quan trọng đối với họ và điều gì sẽ ảnh hưởng đến cách họ bỏ phiếu.

  • Sau đó, bạn đưa thông tin này vào một số loại thuật toán phân cụm.

  • Tiếp theo, đối với mỗi cụm (sẽ thông minh hơn nếu chọn cụm lớn nhất trước), bạn tạo ra một thông điệp sẽ thu hút những người bỏ phiếu này.

  • Cuối cùng, bạn phân phối chiến dịch và đo lường xem nó có hoạt động hay không.

Phân cụm là một loại học tập không giám sát tự động tạo thành các cụm những thứ tương tự nhau. Nó giống như phân loại tự động. Bạn có thể phân cụm hầu hết mọi thứ và các mục càng giống nhau trong cụm thì các cụm càng tốt. Trong chương này, chúng ta sẽ nghiên cứu một loại thuật toán phân cụm được gọi là k-mean. Nó được gọi là k-mean vì nó tìm thấy 'k' các cụm duy nhất và trung tâm của mỗi cụm là giá trị trung bình của các giá trị trong cụm đó.

Nhận dạng cụm

Nhận dạng cụm cho một thuật toán biết, “Đây là một số dữ liệu. Bây giờ hãy nhóm những thứ tương tự lại với nhau và cho tôi biết về những nhóm đó ”. Sự khác biệt chính so với phân loại là trong phân loại, bạn biết những gì bạn đang tìm kiếm. Trong khi đó không phải là trường hợp trong phân cụm.

Phân cụm đôi khi được gọi là phân loại không giám sát vì nó tạo ra kết quả giống như phân loại nhưng không có các lớp được xác định trước.

Giờ đây, chúng tôi cảm thấy thoải mái với cả việc học có giám sát và không giám sát. Để hiểu phần còn lại của các danh mục học máy, trước tiên chúng ta phải hiểu về Mạng thần kinh nhân tạo (ANN), chúng ta sẽ tìm hiểu trong chương tiếp theo.

Ý tưởng về mạng lưới thần kinh nhân tạo được bắt nguồn từ mạng lưới thần kinh trong não người. Bộ não con người thực sự phức tạp. Nghiên cứu kỹ lưỡng bộ não, các nhà khoa học và kỹ sư đã đưa ra một kiến ​​trúc có thể phù hợp với thế giới máy tính nhị phân kỹ thuật số của chúng ta. Một trong những kiến ​​trúc điển hình như vậy được thể hiện trong sơ đồ dưới đây -

Có một lớp đầu vào có nhiều cảm biến để thu thập dữ liệu từ thế giới bên ngoài. Ở phía bên phải, chúng tôi có một lớp đầu ra cho chúng tôi kết quả được dự đoán bởi mạng. Ở giữa hai lớp này, một số lớp được ẩn. Mỗi lớp bổ sung làm tăng thêm độ phức tạp trong việc đào tạo mạng, nhưng sẽ cung cấp kết quả tốt hơn trong hầu hết các tình huống. Có một số kiểu kiến ​​trúc được thiết kế mà chúng ta sẽ thảo luận ngay bây giờ.

Kiến trúc ANN

Sơ đồ dưới đây cho thấy một số kiến ​​trúc ANN được phát triển trong một khoảng thời gian và đang được thực hiện cho đến ngày nay.

Nguồn:

https://towardsdatascience.com/the-mostly-complete-chart-of-neural-networks-explained-3fb6f2367464

Mỗi kiến ​​trúc được phát triển cho một loại ứng dụng cụ thể. Do đó, khi bạn sử dụng mạng nơ-ron cho ứng dụng học máy của mình, bạn sẽ phải sử dụng một trong các kiến ​​trúc hiện có hoặc thiết kế của riêng bạn. Loại ứng dụng cuối cùng bạn quyết định tùy thuộc vào nhu cầu ứng dụng của bạn. Không có hướng dẫn nào cho bạn biết sử dụng một kiến ​​trúc mạng cụ thể.

Học sâu sử dụng ANN. Trước tiên, chúng ta sẽ xem xét một vài ứng dụng học sâu sẽ cho bạn ý tưởng về sức mạnh của nó.

Các ứng dụng

Deep Learning đã cho thấy rất nhiều thành công trong một số lĩnh vực ứng dụng máy học.

Self-driving Cars- Xe ô tô tự lái sử dụng kỹ thuật học sâu. Họ thường thích nghi với các tình huống giao thông luôn thay đổi và ngày càng lái xe tốt hơn trong một khoảng thời gian.

Speech Recognition- Một ứng dụng thú vị khác của Deep Learning là nhận dạng giọng nói. Tất cả chúng ta ngày nay đều sử dụng một số ứng dụng di động có khả năng nhận dạng giọng nói của chúng ta. Siri của Apple, Alexa của Amazon, Cortena của Microsoft và Trợ lý của Google - tất cả đều sử dụng các kỹ thuật học sâu.

Mobile Apps- Chúng tôi sử dụng một số ứng dụng di động và dựa trên web để sắp xếp ảnh của mình. Nhận diện khuôn mặt, nhận dạng khuôn mặt, gắn thẻ khuôn mặt, xác định đối tượng trong hình ảnh - tất cả đều sử dụng học sâu.

Cơ hội chưa được khai thác của Học sâu

Sau khi xem xét thành công lớn mà các ứng dụng học sâu đã đạt được trong nhiều lĩnh vực, mọi người bắt đầu khám phá các lĩnh vực khác mà cho đến nay máy học vẫn chưa được áp dụng. Có một số lĩnh vực mà kỹ thuật học sâu được áp dụng thành công và có nhiều lĩnh vực khác có thể được khai thác. Một số trong số này được thảo luận ở đây.

  • Nông nghiệp là một trong những ngành mà mọi người có thể áp dụng các kỹ thuật học tập sâu để nâng cao năng suất cây trồng.

  • Tài chính tiêu dùng là một lĩnh vực khác mà máy học có thể giúp ích rất nhiều trong việc phát hiện sớm các gian lận và phân tích khả năng thanh toán của khách hàng.

  • Kỹ thuật học sâu cũng được áp dụng trong lĩnh vực y học để tạo ra các loại thuốc mới và cung cấp đơn thuốc được cá nhân hóa cho bệnh nhân.

Khả năng là vô tận và người ta phải tiếp tục theo dõi khi các ý tưởng và phát triển mới xuất hiện thường xuyên.

Điều gì cần thiết để đạt được nhiều thành tích hơn bằng cách sử dụng Học sâu

Để sử dụng học sâu, sức mạnh siêu máy tính là một yêu cầu bắt buộc. Bạn cần cả bộ nhớ cũng như CPU ​​để phát triển các mô hình học sâu. May mắn thay, ngày nay chúng ta đã có sẵn HPC - Máy tính Hiệu suất Cao một cách dễ dàng. Do đó, sự phát triển của các ứng dụng học sâu mà chúng ta đã đề cập ở trên đã trở thành hiện thực ngày nay và trong tương lai chúng ta cũng có thể thấy các ứng dụng trong những lĩnh vực chưa được khai thác mà chúng ta đã thảo luận trước đó.

Bây giờ, chúng ta sẽ xem xét một số hạn chế của học sâu mà chúng ta phải xem xét trước khi sử dụng nó trong ứng dụng học máy của mình.

Nhược điểm của Học sâu

Một số điểm quan trọng mà bạn cần cân nhắc trước khi sử dụng học sâu được liệt kê dưới đây:

  • Cách tiếp cận Hộp đen
  • Thời gian phát triển
  • Số lượng dữ liệu
  • Đắt tiền

Bây giờ chúng ta sẽ nghiên cứu chi tiết từng hạn chế này.

Cách tiếp cận Hộp đen

ANN giống như một hộp đen. Bạn cung cấp cho nó một đầu vào nhất định và nó sẽ cung cấp cho bạn một đầu ra cụ thể. Sơ đồ sau đây cho bạn thấy một ứng dụng như vậy, nơi bạn cung cấp hình ảnh động vật vào một mạng thần kinh và nó cho bạn biết rằng hình ảnh đó là của một con chó.

Tại sao đây được gọi là cách tiếp cận hộp đen là bạn không biết tại sao mạng lại đưa ra một kết quả nhất định. Bạn không biết làm thế nào mà dân mạng kết luận đó là một con chó? Bây giờ, hãy xem xét một ứng dụng ngân hàng mà ngân hàng muốn quyết định mức độ tín nhiệm của khách hàng. Mạng chắc chắn sẽ cung cấp cho bạn câu trả lời cho câu hỏi này. Tuy nhiên, liệu bạn có thể biện minh cho khách hàng? Các ngân hàng cần giải thích cho khách hàng hiểu tại sao khoản vay không bị xử phạt?

Thời gian phát triển

Quá trình đào tạo một mạng nơ-ron được mô tả trong sơ đồ dưới đây:

Trước tiên, bạn xác định vấn đề mà bạn muốn giải quyết, tạo một đặc tả cho nó, quyết định các tính năng đầu vào, thiết kế mạng, triển khai nó và kiểm tra đầu ra. Nếu kết quả đầu ra không như mong đợi, hãy coi đây là phản hồi để cơ cấu lại mạng của bạn. Đây là một quá trình lặp đi lặp lại và có thể yêu cầu nhiều lần lặp lại cho đến khi mạng thời gian được huấn luyện đầy đủ để tạo ra các đầu ra mong muốn.

Số lượng dữ liệu

Các mạng học sâu thường yêu cầu một lượng lớn dữ liệu để đào tạo, trong khi các thuật toán học máy truyền thống có thể được sử dụng thành công rực rỡ ngay cả khi chỉ với vài nghìn điểm dữ liệu. May mắn thay, lượng dữ liệu dồi dào đang tăng lên 40% mỗi năm và sức mạnh xử lý của CPU đang tăng ở mức 20% mỗi năm như được thấy trong biểu đồ bên dưới -

Đắt tiền

Việc đào tạo một mạng nơ-ron đòi hỏi sức mạnh tính toán cao hơn nhiều lần so với sức mạnh cần thiết khi chạy các thuật toán truyền thống. Việc đào tạo thành công Mạng thần kinh sâu có thể yêu cầu thời gian đào tạo vài tuần.

Trái ngược với điều này, các thuật toán học máy truyền thống chỉ mất vài phút / giờ để đào tạo. Ngoài ra, lượng sức mạnh tính toán cần thiết để đào tạo mạng nơ-ron sâu phụ thuộc nhiều vào kích thước dữ liệu của bạn và mức độ sâu và phức tạp của mạng?

Sau khi có cái nhìn tổng quan về Học máy là gì, các khả năng, hạn chế và ứng dụng của nó, bây giờ chúng ta hãy đi sâu vào tìm hiểu “Học máy”.

Học máy có chiều rộng rất lớn và yêu cầu các kỹ năng trên một số lĩnh vực. Các kỹ năng bạn cần có để trở thành chuyên gia trong Học máy được liệt kê bên dưới:

  • Statistics
  • Lý thuyết xác suất
  • Calculus
  • Kỹ thuật tối ưu hóa
  • Visualization

Sự cần thiết của các kỹ năng khác nhau của Học máy

Để cung cấp cho bạn một ý tưởng ngắn gọn về những kỹ năng bạn cần có được, hãy để chúng tôi thảo luận về một số ví dụ -

Ký hiệu toán học

Hầu hết các thuật toán học máy chủ yếu dựa trên toán học. Trình độ toán học mà bạn cần biết có lẽ chỉ là trình độ sơ cấp. Điều quan trọng là bạn phải có thể đọc ký hiệu mà các nhà toán học sử dụng trong các phương trình của họ. Ví dụ - nếu bạn có thể đọc ký hiệu và hiểu ý nghĩa của nó, bạn đã sẵn sàng cho việc học máy học. Nếu không, bạn có thể cần phải học lại kiến ​​thức toán học của mình.

$$ f_ {AN} (net- \ theta) = \ begin {case} \ gamma & if \: net- \ theta \ geq \ epsilon \\ net- \ theta & if - \ epsilon <net- \ theta <\ epsilon \\ - \ gamma & if \: net- \ theta \ leq- \ epsilon \ end {case} $$

$$ \ displaystyle \\\ max \ limit _ {\ alpha} \ begin {bmatrix} \ displaystyle \ sum \ limit_ {i = 1} ^ m \ alpha- \ frac {1} {2} \ displaystyle \ sum \ limit_ { i, j = 1} ^ m label ^ \ left (\ begin {array} {c} i \\ \ end {array} \ right) \ cdot \: label ^ \ left (\ begin {array} {c} j \\ \ end {array} \ right) \ cdot \: a_ {i} \ cdot \: a_ {j} \ langle x ^ \ left (\ begin {array} {c} i \\ \ end {array} \ phải), x ^ \ left (\ begin {array} {c} j \\ \ end {array} \ right) \ rangle \ end {bmatrix} $$

$$ f_ {AN} (net- \ theta) = \ left (\ frac {e ^ {\ lambda (net- \ theta)} - e ^ {- \ lambda (net- \ theta)}} {e ^ { \ lambda (net- \ theta)} + e ^ {- \ lambda (net- \ theta)}} \ right) \; $$

Lý thuyết xác suất

Đây là một ví dụ để kiểm tra kiến ​​thức hiện tại của bạn về lý thuyết xác suất: Phân loại với xác suất có điều kiện.

$$ p (c_ {i} | x, y) \; = \ frac {p (x, y | c_ {i}) \; p (c_ {i}) \;} {p (x, y) \ ;} $$

Với những định nghĩa này, chúng ta có thể xác định quy tắc phân loại Bayes -

  • Nếu P (c1 | x, y)> P (c2 | x, y) thì hạng là c1.
  • Nếu P (c1 | x, y) <P (c2 | x, y) thì hạng là c2.

Vấn đề tối ưu hóa

Đây là một chức năng tối ưu hóa

$$ \ displaystyle \\\ max \ limit _ {\ alpha} \ begin {bmatrix} \ displaystyle \ sum \ limit_ {i = 1} ^ m \ alpha- \ frac {1} {2} \ displaystyle \ sum \ limit_ { i, j = 1} ^ m label ^ \ left (\ begin {array} {c} i \\ \ end {array} \ right) \ cdot \: label ^ \ left (\ begin {array} {c} j \\ \ end {array} \ right) \ cdot \: a_ {i} \ cdot \: a_ {j} \ langle x ^ \ left (\ begin {array} {c} i \\ \ end {array} \ phải), x ^ \ left (\ begin {array} {c} j \\ \ end {array} \ right) \ rangle \ end {bmatrix} $$

Tuân theo các ràng buộc sau:

$$ \ alpha \ geq0 và \: \ displaystyle \ sum \ limit_ {i-1} ^ m \ alpha_ {i} \ cdot \: label ^ \ left (\ begin {array} {c} i \\ \ end {array} \ right) = 0 $$

Nếu bạn có thể đọc và hiểu những điều trên, bạn đã sẵn sàng.

Hình dung

Trong nhiều trường hợp, bạn sẽ cần hiểu các loại biểu đồ trực quan khác nhau để hiểu phân phối dữ liệu của bạn và diễn giải kết quả đầu ra của thuật toán.

Bên cạnh những khía cạnh lý thuyết trên về học máy, bạn cần có kỹ năng lập trình tốt để viết mã các thuật toán đó.

Vậy để thực hiện ML cần những gì? Chúng ta hãy xem xét vấn đề này trong chương tiếp theo.

Để phát triển các ứng dụng ML, bạn sẽ phải quyết định về nền tảng, IDE và ngôn ngữ để phát triển. Có một số lựa chọn có sẵn. Hầu hết trong số này sẽ đáp ứng các yêu cầu của bạn một cách dễ dàng vì tất cả chúng đều cung cấp việc triển khai các thuật toán AI đã được thảo luận cho đến nay.

Nếu bạn đang tự phát triển thuật toán ML, bạn cần hiểu kỹ các khía cạnh sau:

Ngôn ngữ bạn chọn - điều này về cơ bản là bạn thành thạo một trong những ngôn ngữ được hỗ trợ trong phát triển ML.

IDE mà bạn sử dụng - Điều này sẽ phụ thuộc vào mức độ quen thuộc của bạn với các IDE hiện có và mức độ thoải mái của bạn.

Development platform- Có một số nền tảng có sẵn để phát triển và triển khai. Hầu hết trong số này là miễn phí để sử dụng. Trong một số trường hợp, bạn có thể phải trả phí bản quyền vượt quá số lượng sử dụng nhất định. Dưới đây là danh sách ngắn gọn về lựa chọn ngôn ngữ, IDE và nền tảng để bạn sẵn sàng tham khảo.

Lựa chọn ngôn ngữ

Đây là danh sách các ngôn ngữ hỗ trợ phát triển ML -

  • Python
  • R
  • Matlab
  • Octave
  • Julia
  • C++
  • C

Danh sách này về cơ bản không toàn diện; tuy nhiên, nó bao gồm nhiều ngôn ngữ phổ biến được sử dụng trong phát triển máy học. Tùy thuộc vào mức độ thoải mái của bạn, hãy chọn một ngôn ngữ để phát triển, phát triển các mô hình của bạn và thử nghiệm.

IDE

Đây là danh sách các IDE hỗ trợ phát triển ML -

  • R Studio
  • Pycharm
  • Máy tính xách tay iPython / Jupyter
  • Julia
  • Spyder
  • Anaconda
  • Rodeo
  • Google –Colab

Danh sách trên không phải là toàn diện về cơ bản. Mỗi người đều có những ưu điểm và phẩm chất riêng. Người đọc được khuyến khích thử các IDE khác nhau này trước khi thu hẹp lại thành một IDE duy nhất.

Nền tảng

Dưới đây là danh sách các nền tảng mà các ứng dụng ML có thể được triển khai -

  • IBM
  • Microsoft Azure
  • Google Cloud
  • Amazon
  • Mlflow

Một lần nữa danh sách này không đầy đủ. Người đọc được khuyến khích đăng ký các dịch vụ nói trên và tự mình dùng thử.

Hướng dẫn này đã giới thiệu cho bạn về Học máy. Bây giờ, bạn biết rằng Học máy là một kỹ thuật đào tạo máy móc để thực hiện các hoạt động mà bộ não con người có thể làm, mặc dù nhanh hơn và tốt hơn một chút so với con người bình thường. Ngày nay chúng ta đã thấy rằng những cỗ máy có thể đánh bại những nhà vô địch của con người trong các trò chơi như Cờ vua, AlphaGO, những trò chơi được coi là rất phức tạp. Bạn đã thấy rằng máy móc có thể được đào tạo để thực hiện các hoạt động của con người trong một số lĩnh vực và có thể hỗ trợ con người sống tốt hơn.

Học máy có thể là Học có giám sát hoặc Không được giám sát. Nếu bạn có lượng dữ liệu ít hơn và dữ liệu được gắn nhãn rõ ràng để đào tạo, hãy chọn Học có giám sát. Học không giám sát thường mang lại hiệu suất và kết quả tốt hơn cho các tập dữ liệu lớn. Nếu bạn có một bộ dữ liệu khổng lồ dễ dàng có sẵn, hãy sử dụng các kỹ thuật học sâu. Bạn cũng đã học được Học tăng cường và Học củng cố sâu. Bây giờ bạn đã biết Mạng thần kinh là gì, các ứng dụng và hạn chế của chúng.

Cuối cùng, khi nói đến việc phát triển các mô hình học máy của riêng bạn, bạn đã xem xét các lựa chọn của các ngôn ngữ phát triển khác nhau, IDE và Nền tảng. Điều tiếp theo mà bạn cần làm là bắt đầu học và thực hành từng kỹ thuật học máy. Môn học bao la nghĩa là có bề rộng, nhưng nếu xét theo chiều sâu, mỗi chuyên đề có thể học trong vài giờ. Mỗi chủ đề độc lập với nhau. Bạn cần xem xét từng chủ đề một, tìm hiểu, thực hành và triển khai / các thuật toán trong đó bằng cách sử dụng ngôn ngữ lựa chọn của bạn. Đây là cách tốt nhất để bắt đầu học Máy học. Thực hành từng chủ đề một, bạn sẽ sớm có được chiều rộng mà cuối cùng cần phải có của một chuyên gia về Máy học.

Chúc may mắn!