Tìm hiểu tổng quan về trí tuệ nhân tạo -AI (Phần I)


-Tìm hiểu chung về Machine Learning, Deep Learning và Artificial Intelligence


Những năm gần đây, thế giới đang bùng nổ một trào lưu mới khi mà người người, nhà nhà, các công ty và các tập đoàn đang chạy đua với nhau trong việc phát triển trí tuệ nhân tạo. Từ những thứ nhỏ nhất, như các trợ lý ảo: Siri, Google Assistant, Cotana, đến các công trình lớn: máy tính chơi cờ Deep Blue của IBM hay robot Sophia.

AI đang là phong trào của thế giới
Có thể nói, con người đang có xu hướng làm mọi vật xung quanh ta thông minh lên từng ngày. Và để giúp các bạn nắm bắt được xu thế hiện nay, mình xin cung cấp cho các bạn một góc nhìn mới về lĩnh vực Trí tuệ nhân tạo hiện nay.

Giới thiệu chung

Ngày nay, có 3 khái niệm được nhắc tới khi nói đến cách để làm một công cụ thông minh hơn.
Đó là:
  • Máy học (Machine Learning)
  • Máy học sâu (Deep Learning)
  • Trí tuệ nhân tạo (Artificial Intelligence)
Có thể bạn đang tự hỏi "Hai cái trên thì liên quan gì đến trí tuệ nhân tạo?". Các bạn sẽ biết sớm thôi.

Lịch sử

Thật ra, con người đã cố gắng nghiên cứu tìm ra cách làm cho máy tính thông minh lên từ rất lâu rồi. Ứng dụng "thông minh" đầu tiên được áp dụng trong trò Ping Pong.
Đúng rồi đấy, cái trò huyền thoại này đấy
Trong trò chơi này, máy tính liên tục kiểm tra vị trí của quả bóng và điều chỉnh vị trí của mình sao cho tương ứng, khiến nó khá là... tù và hoàn toàn không thông minh một tí nào. Điều này dẫn tới việc trò chơi không sống động và có thể dễ dàng qua mặt khi biết cơ chế hoạt động.

Do những yếu điểm kể trên, các lập trình viên mong muốn cải thiện điều này,  sự thông minh của máy tính phải đến từ khả năng "suy nghĩ" thực sự, chứ không phải từ những dòng mã thô sơ và cứng nhắc. Từ đó, Machine Learning ra đời.

Máy học (Machine Learning):

Trước khi tìm hiểu về Machine Learning, ta hãy xem qua định nghĩa của nó trước nhé!
Theo Arthur Samuel, Machine Learning là:
"Lĩnh vực nghiên cứu giúp cho máy tính có khả năng học hỏi mà không cần được lập trình một cách có chủ đích"
 Hãy tưởng tượng máy tính như là một đứa trẻ cần tập đi và bạn-một lập trình viên-là cha/mẹ của đứa bé đó. Thay vì "cầm tay chỉ việc" cho đứa bé đó để nó đi khiến việc đi của đứa bé gắn liền với sự chỉ dẫn của cha/mẹ , bạn sẽ để đứa trẻ tự đi, tự vấp té và tự đứng dậy, bạn cho đứa bé biết đi thế nào là đúng và một chút hướng dẫn của bạn. Sau một thời gian, nó có thể tự đi mà không cần sự hướng dẫn của bạn nữa.

Vậy là bạn đã có một bức tranh để có thể hiểu về Machine Learning. Trong thực tế, các ứng dụng Machine Learning tạo ra để giải quyết một vấn đề cụ thể. Ví dụ như phân loại hoa, hay dự đoán giá nhà ở,... Và việc học yêu cầu phải thu thập số lớn dữ liệu về vấn đề đó.  

Vậy máy tính "học" như thế nào?

Có thể vài bạn sẽ thoát ngay từ đây khi mình nói điều đó phụ thuộc vào... toán. Nhưng đừng sợ, mình sẽ cố giải thích dễ hiểu hết sức có thể. Chúng ta sẽ xem qua ví dụ đơn giản cho Machine Learning, dự đoán giá của một căn nhà.

Trước khi luyện cho máy tính học thì chúng ta cần thật nhiều dữ liệu minh họa (examples), thường là trên 200 dữ liệu. Tổng hợp tất cả các dữ liệu dành cho việc "học" của máy tính được gọi là Dataset. Dataset trong ví dụ của ta chứa nhiều thông tin của các căn nhà, như giá cả, số phòng ngủ, diện tích,... và giá của ngôi nhà trên thực tế.
Ví dụ về một Dataset


Nguyên lý để một máy tính có thể đưa ra một dự đoán đều dựa vào một hàm dự đoán (hay còn gọi là Hypothesis Function). Nó trông như thế này
OK, hơi quá tải thông tin một chút đúng không? . Hàm này lấy đầu vào X (input) là các đặc điểm của ngôi nhà (diện tích, số phòng ngủ, số phòng tắm,...) đứng trước là một loạt các tham số. Chúng ta sẽ gọi những tham số này là theta (ký hiệu là 𝜭), các tham số này góp phần "biến hóa" đầu vào của ta thành đáp án chính xác. Kết quả của phương trình trên cũng chính là kết quả dự đoán của máy tính (giá dự đoán của nhà). 

Vậy câu hỏi tiếp theo là, theta sẽ được cài đặt như thế nào để những dự đoán luôn đúng hoặc sai số nhỏ ở mức có thể chấp nhận được. Để làm được điều đó, ta cần một phương tiện để nói cho máy tính biết là nó đang làm sai. Phương tiện này được gọi là hàm sai (Cost Function)

Giải thích một cách đơn giản, hàm sai tính sự sai lệch giữa kết quả của hàm dự đoán và kết quả thực tế đối với tất cả các dữ liệu minh họa trong dataset mà ta cung cấp. Máy tính của chúng ta học càng tệ thì giá trị của hàm sai càng cao và ngược lại. Hàm sai của chúng ta coi những giá trị theta như là một biến số (là các giá trị có thể thay đổi được) và những thứ còn lại như là hằng số(các giá trị không thay đổi được). Điều này giúp đơn giản hóa bài toán đi rất nhiều, công việc bây giờ ta cần làm là làm cho giá trị của hàm này nhỏ nhất có thể. Đồng nghĩa với việc điều chỉnh các giá trị theta sao cho dự đoán của ta càng gần với dự đoán thật đối với từng dữ liệu minh họa và ta đã tìm được cài đặt đúng của các giá trị theta.

Vậy là đã xong, chúng ta đã hoàn thành hàm dự đoán của ta, bây giờ máy tính sẽ sử dụng nó để dự đoán cho các căn nhà trong tương lai mà nó chưa từng được học trước đó.


Các cách học của máy tính trong Machine Learning

Có 2 cách học phổ biến là:
  • Học có giám sát (Supervised Learning): Dataset có kết quả thực để kiểm tra 
  • Học không giám sát (Unsupervised Learning): Dataset không có kết quả thực để kiểm tra, để máy tính tự nhìn thấy các mối quan hệ tiềm ẩn trong dữ liệu

Ứng dụng của Machine Learning và một số điều khác

Machine Learning được sử dụng trong việc phân loại thư spam, hệ thống đề xuất phim, nhận diện ảnh và giọng nói,... Thêm nữa là một kỹ thuật trong Machine Learning rất được ưa chuộng hiện nay là Neural Network.

Tạm kết phần I

Ở phần này ta đã tìm hiểu về lịch sử của trí tuệ nhân tạo, lĩnh vực Máy học (Machine Learning) và ý tưởng đơn giản về cách máy móc học tập

Phần sau, mình sẽ nói về Neral Network từ đó mở rộng sang Deep Learning và Artificial Intelligence. 

Mọi bình luận và nhận xét về bài này xin để lại ở dưới
Cảm ơn các bạn đã đọc


Nhận xét

Bài đăng phổ biến từ blog này

Phép phân tích ma trận A=LU

Hướng dẫn đăng ký khóa học trên Coursera và edX miễn phí

Độc lập tuyến tính và phụ thuộc tuyến tính