Deep Learning, wtf is it? (Part 1)

Gần đây ở các báo về công nghệ rộ lên các bài báo về trí tuệ nhân tạo (AI) đặc biệt là Deep Learning. Nhưng theo tôi thấy các báo toàn "dọa" người đọc là chính chứ không nêu ra một cách khái quát để người đọc dễ hình dung Deep Learning là gì. Nghe tới Deep Learning chắc hầu hết trong số các bạn sẽ bắt đầu tưởng tượng ra những thứ cao siêu mà người bình thường chẳng bao giờ với tới được. Nhưng không Deep Learning nói riêng và AI nói chung đều có rất nhiều thứ rất đỗi con người, theo tôi định nghĩa nó máy hóa quá trình học tập của con người. Bạn cần gì để hiểu được một cách tổng quan về AI và Deep Learning? Bạn chả cần tới những công thức toán học loằng ngoằng lắm giun lắm đĩa, bạn cũng chả cần biết viết một dòng code nào. Tất cả bạn cần là biết đọc và cộng trừ nhân chia. Ok, nếu bạn biết những thứ này chúng ta tiếp tục :]]

(Chú ý: Tất cả những gì trong bài được trình bày theo kiến thức mà tôi biết, nếu có sai sót vui lòng để lại lời nhắn)

 (Nguồn: Google Search)


1. Sự ra đời của Neutral Network

Bạn đã bao giờ bị hỏi học để làm gì chưa? Và nếu có bạn trả lời như thế nào - "Em học để làm cô giáo", "Em học để làm bác sỹ", "Em học để kiếm thật nhiều tiền".... Bạn có học cái gì đi nữa tôi tin rằng bạn luôn có mục đích riêng (Hãy gửi thông tin tới tôi nếu bạn tìm thấy một người học mà không cần mục đích gì hết :]]). Trong AI cũng vậy tất cả mọi việc nó làm cũng đều học có mục đích nhưng nó được phân thành 3 nhóm bởi cách thức hoạt động khác nhau, tôi sẽ nêu nó ra bằng ngôn ngữ của tôi kèm theo những ví dụ minh họa:

  1. Học có giáo viên (Supervised Learning): Đây là kiểu học mà bạn luôn có một giáo viên đi kèm dạy cho bạn, ra bài tập về nhà cho bạn mục tiêu của bạn là làm được các bài tập kiểm tra càng nhiều càng tốt. Ví dụ: bạn làm về marketing, giám đốc sút cho bạn một tá dữ liệu cũ  (kiến thức đã có, bài tập về nhà) về đầu tư cho quảng cáo trên 3 phương tiện: Báo chí, TV, Internet đối với sản lượng bán ra, bạn phải học từ đám dữ liệu cũ này để quyết định xem nên đầu tư vào phương tiện nào trong tương lai là hợp lý (Bài kiểm tra). Tiếp, bạn làm về y khoa, bạn có một tá dữ liệu cũ về bệnh nhân ung thư với kích cỡ khối u, nhóm máu, giới tính... nhiệm vụ của bạn là chuẩn đoán bệnh nhân mới có ung thư hay không dựa vào dữ liệu đã có.

  2. Học không có giáo viên (Unsupervised Learning): Bạn đã tán gái bao giờ chưa :]]? Đã rồi thì bạn cần có giáo viên nào không hay tự mò mẫm? Kiểu học này bạn không hề có một giáo viên đi kèm, bạn phải tìm ra cấu trúc ẩn trong đối tượng bạn quan sát. Ví dụ: Bạn là giám đốc của một công ty may mặc ở Hà Nội, bạn có dữ liệu về chiều cao và cân nặng của hầu hết dân cư trong Hà Nội, làm sao bạn quyết định cùng một loại áo may bao nhiêu cỡ khác nhau. Nếu bạn may quá ít cỡ khác nhau, bạn sẽ không phục vụ được toàn bộ nhu cầu khách hàng, nếu bạn may quá nhiều cỡ khác nhau bạn sẽ tốn kha khá chi phí để làm mà không hiệu quả.

  3. Học có phần thưởng (Reinforcement Learning): Bạn có thể bắt gặp kiểu học này trong mọi ngõ ngách trong cuộc sống từ khi bạn còn bé cho đến khi bạn to tướng. Nôm na bạn học làm sao kiếm được phần thưởng bạn muốn nhiều nhất. Cụ thể bạn chơi bi ve, lúc này bạn còn nhỏ và bạn chẳng biết quái gì về vật lý hay toán học, làm sao bạn bắn trúng được viên bi cách bạn tầm năm bước chân? Đơn giản phải không, đâu tiên bạn ném khá mạnh viên bi bay tới sáu bước chân, cú tiếp theo bạn lại ném nhẹ lại viên bi bay chỉ bốn bước chân, tiếp nữa bạn lại ném mạnh hơn một chút... cho tới khi bạn ném trúng viên bi. Có một thú vị điều lưu ý ở đây, con người có thể giữ lại được kinh nghiệm mà họ đã trải qua, như khi bạn gặp tiếp một viên bi tầm 4.5 bước chân bạn có thể ném gần trúng nó chỉ với phát đầu tiên. Đây là điểm khá quan trọng, sau khi bạn biết được neutral network là cái quái gì thì bạn có thể gần như hiểu được sơ bộ cách thức mà Alpha Go (cỗ máy chơi cờ vây đình đám xây dựng bởi Google chiến thằng kỳ thủ hàng đầu) làm việc.

(Video: Solving Flappy Bird by Reinforcement Learning - Youtube)

Như tôi đã nói từ trước ba kiểu học được chia ra bởi cách thức hoạt động điều này nếu nói về khía cạnh khoa học máy tính nghĩa là nó được xây dựng theo những thuật toán khác nhau, nói dễ hiểu để xây dựng một con robot giống người thì nó phải xây dựng được một cỗ máy học đủ thứ, toán nè, vật lý nè, sinh học nè.... Câu hỏi đặt ra là có một phương thức chung nào để cho nó có thể học đủ mọi thứ như não người không? May mắn là có (theo tôi là vậy =]]), não người hoạt động bởi các neutron thần kinh tiếp giáp, trao đổi thông tin với nhau qua synapse, lấy cảm hứng từ đó các nhà khoa học xây dựng một mô hình neutron thần kinh trong máy tính - neutral network như hình sau:

(Ảnh: Google Search)

Về cơ bản neutral network bao gồm 1 lớp đầu vào, 1 lớp đầu ra và các lớp ẩn, những ô tròn tròn được gọi là các perceptron. Nó chứa cái gì? Tất cả đều chỉ là những con số, cụ thể hơn các perceptron (ngoại trừ lớp đầu vào) sẽ là một hàm toán học (được lựa chọn) của lớp trước cùng với hệ số của các cạnh nối với nó. Ví dụ đơn giản như sau:

(Ảnh: Tự vẽ)

Hình trên gồm lớp đầu vào với 2 số 1 và 2, một lớp ẩn với hầm số bình phương và lớp đầu ra gồm một số với hàm số là căn bậc hai. Bạn có thể dễ dàng thấy cách nó làm việc, (1x1 + 2x2) = 5 -> 5^2 = 25 -> 25x1 = 25 -> căn bặc hai của 25 = 5. Một Deep Network đơn giản là có nhiều hơn một lớp ẩn, và Deep Learning đơn giản là được xây dựng dựa vào Deep Network. Như vậy bạn đã biết phần nhân của Deep Learning là cái vẹo gì rồi đấy :]]. Bạn có thể tự hỏi vậy sức mạnh của mô hình đơn giản này nằm ở chỗ nào? Câu trả lời là "Lựa chọn các hàm phù hợp cho các perceptron và các hệ số của các cạnh, neutral network có thể xấp xỉ bất cứ hàm số nào với độ chính xác bất kỳ từ rời rạc đến liên tục, một biến hoặc nhiều biến anh xúc được tuốt".  Nghĩa là giả sử hàm số bạn muốn là với đầu vào là các từ ngữ và đầu ra là tiếng nói của từ đó hay hàm số với đầu vào ảnh khuôn mặt bạn bè của bạn trên facebook đầu ra là tên của người trong ảnh... thì lựa chọn phù hợp một neutral network nó có thể tạo thành hàm số như bạn muốn. Bạn lại thắc mắc tiếp làm sao nó có thể xấp xỉ được như vậy, bạn có thể hiểu đơn giản qua hình vẽ sau:

 (Ảnh: Google Search)

Việc xấp xỉ hàm trên có thể mô tả như sau, một lớp ẩn của neutral network có thể xấp xỉ được một hình chữ nhật, các lớp tiếp theo sẽ làm nhiệm vụ tạo ra các hình chữ nhật với độ rộng bằng nhau nhưng với các chiều cao khác nhau và cộng chúng lại với nhau. Nếu như độ rộng các hình chữ nhật càng nhỏ thì việc xấp xỉ càng chính xác. Tất nhiên nó không đơn giản như tôi nói, lý thuyết chứng minh cho việc xấp xỉ mọi hàm của nó khá phức tạp (tôi cũng chả biết chứng minh như nào=]]), tôi chỉ đưa ra một cách trực giác để bạn nắm được cơ bản sức mạnh của công cụ toàn năng neutral network. 

Bây giờ thử áp dụng sức mạnh của neutral network vào board game như cờ vây (đây cũng chính là phần nhân của AlphaGo). Các trò board game thông thường sẽ có hàng tỷ tỷ các trạng thái của board, rõ ràng mỗi trạng thái luôn gắn liền với một xác suất chiến thắng, cách máy tính chơi là dựa vào trạng thái hiện tại của board nó sẽ lựa chọn trạng thái có xác suất chiến thắng cao nhất để đi tiếp. Nhưng hiển nhiên nó không thể chứa được hàng tỷ tỷ các trạng thái với xác suất từng cái trong bộ nhớ rồi truy vấn ra, cách đơn giản xử lý vấn đề này là xây dựng một neutral network có thể xấp xỉ được xác suất chiến thắng cho các trạng thái, khi gặp một trạng thái bất kỳ sau lượt chơi của đối thủ, AlphaGo sẽ tự tạo ra hàng tỷ trạng thái tiếp theo và nhặt một trạng thái có xác suất xấp xỉ lớn nhất trong đó để quyết định bước đi (sử dụng độ trâu chó để đả bại trí thông minh) =]]. Bạn vẫn thắc mắc làm sao nó học được xác suất chiến thắng cho từng trạng thái, đây là một phần của reinforcement learning, cách thức học khá giống với neutral network mà tôi sẽ nói trong phần 2. Phần thứ 2 khá thú vị làm sao một neutral network có thể học được, cách chúng ta luyện chưởng cho nó? Hẹn gặp lại bạn vào một ngày đẹp trời mà tôi nổi hứng muốn chém gió =]].


(To be continued, pls wait for a miracle :]])

21
3889 lượt xem
21
10
10 bình luận