Hiển thị các bài đăng có nhãn ML. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn ML. Hiển thị tất cả bài đăng

Chủ Nhật, 19 tháng 11, 2017

Machine Learning cho mọi người - 5: Học tăng cường (Reinforcement Learning)



5. Học tăng cường
(Reinforcement Learning)
Thăm dò và khai thác. Qui trình ra quyết định Markov. Học theo mô hình Q, học theo qui tắc, và học sâu tăng cường.

“Tôi chỉ ăn một ít sôcôla để hoàn thành phần cuối này.”
Trong học có giám sát, dữ liệu đào tạo đi theo một từ khóa trả lời từ đối tượng giống như “người giám sát”. Giá mà cuộc sống chỉ làm việc theo cách đó!

Trong học tăng cường (reinforcement learning – RL), không có từ khóa trả lời, nhưng agent học tăng cường của bạn vẫn phải quyết định cách vận hành tác vụ của nó. Khi vắng mặt dữ liệu đào tạo, agent sẽ học từ kinh nghiệm. Nó tập hợp các ví dụ đào tạo (“hành vi này tốt, hành vi kia xấu”) thông qua thử và sai khi cố gắng hoàn thành nhiệm vụ, với mục tiêu tối đa hóa lợi ích trong dài hạn.

Trong phần cuối này, chúng ta sẽ khám phá:
-          Đánh đổi thăm dò/khai thác
-          Qui trình ra quyết định Markov (Markov Decision Processes – MDP), cách xây dựng cổ điển các tác vụ RL
-          Học theo mô hình Q, theo qui tắc và học sâu tăng cường
-          Cuối cùng, bài toán học giá trị

Cuối cùng, luôn luôn vậy, chúng tôi sẽ tập hợp vài tài nguyên thú vị để khám phá sâu hơn.

Hãy đặt con chuột robot vào trong mê cung
Tình huống đơn giản nhất để nghĩ về học tăng cường là trong các trò chơi có mục tiêu rõ ràng và một hệ thống tính điểm.

Có thể nói chúng ta đang chơi một trò chơi trong đó con chuột của chúng ta đang tìm kiếm phần thưởng tối đa là miếng pho-mat ở cuối mê cung (+1000 điểm), hoặc phần thưởng nhỏ hơn là các giọt nước trên đường (+10 điểm). Đồng thời, con chuột robot muốn tránh các vị trí có điện giật (-100 điểm).


Phần thưởng là miếng pho-mat.

Sau một lúc thăm dò, con chuột có lẽ sẽ tìm thấy thiên đường mini với 3 giọt nước gần lối vào, rồi dùng toàn bộ thời gian để khai thác phát hiện này bằng cách tiếp tục tận thu những phần thưởng nhỏ là các giọt nước mà không bao giờ có thể tiến sâu hơn vào mê cung để theo đuổi phần thưởng lớn hơn.

Như bạn có thể thấy, con chuột có thể lỡ mất cơ hội tốt hơn để tiến sâu vào mê cung, với phần thưởng tuyệt đối là miếng pho-mat ở cuối đường.

Điều này gọi là sự đánh đổi thăm dò/thăm dò. Một chiến lược đơn giản là “thăm dò” - con chuột đã sử dụng trong hầu hết thời gian (80% thời gian), nhưng thường là thăm dò một hướng đi mới, ngẫu nhiên, dù có thể càng lúc càng xa phần thưởng lớn.

Chiến lược này còn được gọi là “epsilon tham lam”, trong đó epsilon là phần trăm thời gian agent sử dụng cho một hành động ngẫu nhiên chứ không phải là hành động để tối đa hóa lợi ích đã biết (trong trường hợp này, là 20%). Chúng ta thường bắt đầu với nhiều thăm dò (ví dụ, giá trị cao hơn cho epsilon). Theo thời gian, khi con chuột học được ngày càng nhiều về mê cung và hành động nào được phần thưởng dài hạn nhất, nó sẽ muốn giảm dần epsilon xuống 10% hoặc thậm chí thấp hơn khi nó đi vào khai thác những gì nó biết.

Quan trọng phải ghi nhớ rằng, phần thưởng không phải lúc nào cũng có tức thì: trong ví dụ con chuột robot, có một diện tích rộng của mê cung bạn phải thăm dò và vài điểm cần ra quyết định trước khi bạn tìm được miếng pho-mat.


Agent quan sát môi trường, hành động để tương tác với môi trường, và nhận được kết quả tích cực hay tiêu cực. Sơ đồ trích trong tài liệu CS 294: Deep Reinforcement Learning từ Berkeley, của John Schulman & Pieter Abbeel

Qui trình ra quyết định Markov (MDP)
Suy nghĩ của con chuột trong mê cung có thể mô hình hóa theo Qui trình ra quyết định Markov, là một qui trình xác định xác suất khi chuyển từ trạng thái này sang trạng thái kia. Chúng ta sẽ giải thích bằng ví dụ về con chuột robot. MDP gồm:
1.      Một tập trạng thái xác định. Đó là những vị trí con chuột có thể ở trong mê cung.
2.      Một tập hành động sẵn có cho mỗi trạng thái. Đó là tập {tiến, lùi} trên hành lang và {tiến, lùi, trái, phải} tại giao lộ.
3.      Chuyển trạng thái. Ví dụ, nếu bạn rẽ trái tại giao lộ, bạn sẽ kết thúc ở vị trí mới. Đó có thể là tập các xác suất gắn với nhiều hơn một trạng thái có thể xảy ra (ví dụ, khi bạn dùng một cú đấm trong trò Pokémon, bạn cũng có thể gây ra vài thiệt hại khác, hoặc có thể đủ để hạ knock out đối thủ).
4.      Phần thưởng đi kèm mỗi khi chuyển trạng thái. Trong ví dụ con chuột robot, hầu hết phần thưởng là 0, nhưng chúng sẽ là dương nếu bạn tới điểm có nước hay có phomat, và âm nếu bạn tới điểm bị điện giật.
5.      Hệ số chiết khấu y giữa 0 và 1. Con số này lượng hóa sự khác biệt về tầm quan trọng giữa phần thưởng tức thời và phần thưởng lâu dài trong tương lai. Ví dụ, y là 0,9 và có một phần thưởng 5 điểm sau 3 bước, giá trị hiện tại của phần thưởng là 0,93*5.
6.      Không có trí nhớ. Một khi trạng thái hiện tại được ghi nhận, lịch sử di chuyển của con chuột trong mê cung có thể bị xóa đi vì trạng thái Markov hiện tại đã chứa đựng mọi thông tin hữu ích trong lịch sử. Nói cách khác, “tương lai độc lập với quá khứ, trong khi hiện tại được cho đã biết.”

Giờ chúng ta đã biết MDP là gì, chúng ta có thể công thức hóa mục đích của con chuột. Chúng ta đang cố gắn tối đa hóa tổng số phần thưởng trong dài hạn:



Hãy nhìn từng thành phần của biểu thức trên. Đầu tiên, chúng ta đang tính tổng toàn bộ thời gian của các bước t. Hãy đặt y bằng 1 từ bây giờ và quên nó đi. Hàm r(x,a) là hàm phần thưởng. Với trạng thái x và hành động a (ví dụ rẽ trái tại giao lộ), nó cho bạn phần thưởng đi kèm. Trở lại biểu thức, chúng ta đang cố gắng tối đa hóa tổng các phần thưởng trong tương lai bằng cách hành động hợp lý nhất (tốt nhất) trong mỗi trạng thái.

Nào, chúng ta vừa xây dựng bài toán học tăng cường và công thức hóa mục tiêu, giờ hãy khám phá các giải pháp có thể xảy ra.

Q-learning: học hàm hành động – giá trị

Q-learning là kỹ thuật đánh giá hành động nào nên làm theo dựa trên một hàm hành động – giá trị. Hàm này xác định giá trị khi ở trong một trạng thái nhất định và làm theo một hành động nhất định trong trạng thái đó.

Chúng ta có hàm Q lấy đầu vào là một trạng thái và một hành động, rồi trả về phần thưởng kỳ vọng cho hành động đó (và toàn bộ các hành động kế sau đó) tại trạng thái này. Trước khi thăm dò môi trường, Q sẽ cho cùng một giá trị cố định (tùy ý). Nhưng sau đó, khi thăm dò được môi trường càng nhiều, Q sẽ cho chúng ta một xấp xỉ càng lúc càng tốt hơn về giá trị của hành động a tại trạng thái s. Chúng ta cập nhất hàm Q khi chúng ta di chuyển.

Biểu thức trên Wikipedia giải thích điều này rất rõ ràng. Nó cho thấy cách chúng ta cập nhật giá trị của Q dựa trên phần thưởng nhận được từ môi trường:



Hãy bỏ qua hệ số chiết khấu bằng cách lại đặt nó bằng 1. Đầu tiên, nhớ rằng đang giả thiết Q thể hiện tổng số phần thưởng khi lựa chọn hành động Q và các hành động này là tối ưu.
Giờ hãy tìm hiểu biểu thức từ trái sang phải. Khi chúng ta sử dụng hành động at ở trạng thái st, chúng ta cập nhật giá trị của Q(st,at) bằng cách thêm một biểu thức vào đó. Biểu thức này gồm:
-          Tỷ lệ học alpha: thể hiện bạn muốn tích cực thế nào khi cập nhật giá trị. Khi alpha gần tới 0, chúng ta sẽ không cập nhật tích cực. Khi alpha gần tới 1, chúng ta đơn giản chỉ thay giá trị cũ bằng giá trị mới cập nhật.
-          Phần thường: chính là phần thưởng chúng ta thu được khi hành động at tại trạng thái st. Vì thế chúng ta cộng cả phần thưởng này vào ước lượng cũ của mình.
-          Chúng ta cũng cộng thêm phần thưởng dự đoán trong tương lai, nó là phần thưởng tối đa có thể đạt được Q trước mọi hành động có thể làm tại xt+1.
-          Cuối cùng, chúng ta trừ đi giá trị của của Q để đảm bảo chênh lệch trong dự đoán chỉ có tăng hoặc giảm (tất nhiên chênh lệch này được nhân với alpha).

Giờ chúng ta đã có một ước lượng giá trị cho mỗi cặp trạng thái – hành động, chúng ta có thể chọn hành động nào để làm dựa theo chiến lược lựa chọn hành động của chúng ta (không cần chỉ chọn hành động có phần thưởng kỳ vọng lớn nhất mỗi lần, ví dụ với chiến lược thăm dò kiểu epsilon tham lam, chúng ta nên hành động ngẫu nhiên trong vài phần trăm thời gian).

Trong ví dụ con chuột robot, chúng ta có thể sử dụng Q-learning để tìm ra giá trị của mỗi vị trí trong mê cung và giá trị của các hành động (tiến, lùi, trái, phải) tại mỗi vị trí. Sau đó chúng ta có thể dùng chiến lược lựa chọn hành động để chọn việc gì con chuột thực sự phải làm tại mỗi bước thời gian.

Học theo qui tắc (policy learning): ánh xạ từ trạng thái tới hành động

Trong cách Q-learning, chúng ta học hàm giá trị ước lượng giá trị của mỗi cặp trạng thái – hành động.

Policy learning là một lựa chọn rõ ràng minh bạch hơn, trong đó chúng ta học một hàm policy (qui tắc) π, là một ánh xạ trực tiếp từ mỗi trạng thái tới hành động phù hợp nhất (tốt nhất) tại trạng thái đó. Hãy coi đó là một qui tắc cư xử: “khi tôi quan sát trạng thái s, việc tốt nhất cần làm là sử dụng hành động a”. Ví dụ, một qui tắc của phương tiện tự lái có thể rất hiệu quả, đó là: “nếu tôi thấy đèn vàng và tôi đang cách giao lộ hơn 100 feet, tôi nên phanh lại. Ngược lại, cứ tiếp tục đi thẳng.”


Một qui tắc là một ánh xạ từ trạng thái tới hành động.

Chúng ta đang học một hàm sẽ tối đa hóa phần thưởng kỳ vọng. Chúng ta có biết cái gì thực sự giỏi trong việc học các hàm phức tạp không? Chính là các mạng neuron mức sâu!

Tài liệu Pong from Pixels của Andrej Karpathy cung cấp một hiểu biết tuyệt vời để sử dụng học sâu tăng cường vào việc học một qui tắc trong trò chơi Pong của Atari: lấy các pixel thô từ trò chơi làm đầu vào (trạng thái) và cho ra xác suất di chuyển mái chèo lên hoặc xuống (hành động).


Trong mạng tính đạo hàm qui tắc, agent sẽ học qui tắc tối ưu bằng cách điều chỉnh trọng số bằng đạo hàm giảm (gradient descent) dựa trên tín hiệu phần thưởng từ môi trường. Ảnh lấy từ http://karpathy.github.io/2016/05/31/rl/

Nếu bạn muốn nhúng tay bẩn vào học tăng cường sâu, hãy đọc bài viết của Andrej. Bạn sẽ dựng một mạng policy 2 lớp trong 130 dòng code, rồi sẽ học cách xài Gym của OpenAI – cho phép bạn nhanh chóng chạy được thuật toán học tăng cường đầu tiên, kiểm tra nó trên vô số game, và xem hiệu suất của nó thế nào khi so sánh với phần người khác làm.

DQN, A3C, và những tiến bộ trong học tăng cường sâu (deep RL)

Vào năm 2015, DeepMind dùng một phương pháp gọi là mạng Q sâu (deep Q-network hay DQN), cách này xấp xỉ các hàm Q nhờ dùng mạng neuron mức độ sâu, để đánh bại các tiêu chuẩn của con người trong nhiều trò game của Atari:
Chúng tôi minh họa một agent của mạng Q sâu, chỉ nhận các pixel và điểm game làm đầu vào, có khả năng vượt qua hiệu năng của toàn bộ các thuật toán trước đó và đạt được cấp độ tương đương với một game thủ chuyên nghiệp (là con người) trong tập 49 trò game, sử dụng cùng giải thuật, cùng kiến trúc mạng và cùng các siêu tham số. Nó hoạt động như cầu nối giữa những đầu vào và hành động sensor có số chiều cao, cho ra kết quả là một agent nhân tạo đầu tiên có khả năng học xuất sắc một dải rộng các tác vụ khó khăn. (Silver et al., 2015)

Đây là cái nhìn nhanh chóng về vị trí của DQN agent khi so sánh với máy học tuyến tính và con người trong nhiều lĩnh vực:


Các con số này được chuẩn hóa theo những người kiểm thử là các game thủ chuyên nghiệp: 0% - chơi ngẫu nhiên, 100% - hiệu năng của con người. Nguồn: tài liệu về DQN của DeepMind Human – level control through deep reinforcement learning.

Để giúp bạn xây dựng vài trực giác về cách các tiến bộ trong nghiên cứu RL làm được, đây là vài ví dụ về những cải tiên của bộ xấp xỉ dùng hàm Q phi tuyến giúp nâng cao hiệu năng và độ ổn định:
-          Lặp lại trải nghiệm: học bằng cách ngẫu nhiên hóa theo một chuỗi dài hơn các quan sát trước đó và phần thường đi kèm để tránh overfiting với các trải nghiệm hiện tại. Ý tưởng này lấy cảm hứng từ bộ não sinh học: ví dụ chuột chạy trong mê cung, sẽ “lặp lại” các mẫu trong hoạt động của tế bào thần kinh khi ngủ để tối ưu hóa hành vi tương lai trong mê cung.
-          Mạng neuron tái phát (RNN): tăng cường DQN. Khi một agent chỉ có thể nhìn thấy môi trường tức thời ngay xung quanh nó (ví dụ con chuột robot chỉ thấy một đoạn mê cung nhất định – so với con chim có thể nhìn được toàn bộ mê cung), agent cần nhớ bức tranh lớn hơn, vì thế nó mới biết các thứ đang ở đâu. Tương tự với cách trẻ con phát triển tình trạng bất biến của đồ vật để biết mọi thứ đang tồn tại, ngay cả khi chúng đã rời khỏi tầm nhìn của đứa trẻ. RNN là “tái phát”, ví dụ chúng cho phép thông tin duy trì lâu hơn. Có một đoạn video ấn tượng về một mạng Q tái phát sâu (DQRN) chơi trò Doom. Xem trong Simple Reinforcement Learning with Tensorflow của Arthur Juliani.
Năm 2016, chỉ một năm sau DQN, DeepMind lại thông báo về một thuật toán khác, gọi là Asynchronous Advantage Actor – Critic (A3C), có thể vượt qua hiệu năng tuyệt vời của các trò game Atari trong khi chỉ mất thời gian đào tạo bằng một nửa (Mnih et al, 2016). A3C là một giải thuật actor – critic kết hợp tốt nhất cả hai cách chúng ta vừa tìm hiểu trước đó: nó sử dụng một actor (một mạng qui tắc để quyết định hành động thế nào) và một critic (một mạng Q để quyết định các thứ đáng giá thế nào). Arthur Juliani có một bài viết tuyệt vời về các A3C vận hành. A3C bây giờ là Universe Starter Agent của OpenAI.

Từ đó, đã có vô số đột phá lý thú – từ việc các cỗ máy AI phát minh ra ngôn ngữ của riêng chúng cho tới việc chúng tự học cách đi vào vô vàn lãnh địa khác. Đấy mới chỉ là dạo trên bề mặt RL, hi vọng đây là điểm bắt đầu cho các khám phá lớn hơn!

Chúng tôi muốn chia sẻ đoạn video khó tin về các agent của DeepMind đã học cách đi bộ… có thêm âm thanh. Hãy cầm bắp rang bơ, bật loa lên, và chứng kiến giây phút vinh quang của trí tuệ nhân tạo:

Tài liệu để thực hành và tìm hiểu sâu hơn
Code:
-          Pong from Pixels của Andrej Karpathy sẽ giúp bạn nhanh chóng chạy được agent tăng cường đầu tiên. Như mô tả “chúng ta sẽ học cách chơi game ATARI (Pong!) bằng PG, từ đầu, với các pixel, và một mạng neuron mức sâu, và toàn bộ chỉ 130 dòng code Python có sử dụng một số hàm phụ thuộc. (Gist link)
-          Tiếp theo, chúng tôi đặc biệt khuyên đọc tài liệu Simple Reinforcement Learning with Tensorflow của Arthur Juliani. Nó bàn từ DQN, mô hình học theo qui tắc, học theo actor – critic tới các chiến lược thăm dò dùng TensorFlow. Hãy cố gắng hiểu và áp dụng các phương pháp trong đó.

Bài giảng, bài viết
-          Reinforcement Learning: An Introduction của Richard Sutton, một cuốn sách rất đáng đọc.
-          CS 294: Deep Reinforcement Learning của John Schulman (Berkeley)
-          Reinforcement Learning của David Silver (UCL)

XONG!




Vishal Maini
Samer Sabri


Machine Learning cho mọi người - 4: Các mạng neuron & Học sâu (Deep Learning)



4. Các mạng neuron & Học sâu
(Deep Learning)
Các mạng neuron hoạt động ở đâu, tại sao, và sâu đến mức nào. Mô phỏng lấy cảm hứng từ bộ não. Các mạng neuron xoắn (CNN) và các mạng neuron tái phát (RNN), các ứng dụng thế giới thực.

Với học sâu, chúng ta sẽ vẫn học một hàm f liên kết đầu vào X với đầu ra Y với sai số tối thiểu trên dữ liệu kiểm thử, giống như chúng ta đã làm ở các phần trước. Hãy nhớ “phát biểu bài toán” ban đầu của chúng ta từ phần 2.1 về học có giám sát:

Y = f(X) + ϵ
Đào tạo: máy học f từ dữ liệu đào tạo đã gán nhãn
Kiểm thử: máy tiên đoán Y từ dữ liệu kiểm thử chưa gán nhãn

Thế giới thực rất hỗn độn, vì thế đôi khi f rất phức tạp. Trong các bài toán về ngôn ngữ tự nhiên, kích cỡ từ vựng lớn có nghĩa là nhiều đặc điểm. Các bài toán về thị giác thường chứa nhiều thông tin thị giác về các pixel. Tham gia trò chơi đòi hỏi ra quyết định dựa trên các ngữ cảnh phức tạp với nhiều khả năng có thể xảy ra trong tương lai. Các kỹ thuật máy học mà chúng ta đã tìm hiểu làm việc tốt khi dữ liệu của chúng ta không phức tạp đến phát điên, dù cũng không rõ cách thức chúng khái quát hóa các ngữ cảnh kiểu đó.

Học sâu (deep learning) thực sự rất giỏi trong việc học hàm f, đặc biệt trong những tình huống dữ liệu phức tạp. Thực tế, các mạng neuron nhân tạo thường được gọi là các bộ xấp xỉ hàm tổng quan, vì chúng có khả năng học bất kỳ hàm nào, bất kể nó có uốn éo thế nào, chỉ với một lớp ẩn đơn.

Hãy nhìn vào bài toán phân loại ảnh. Chúng ta lấy một bức ảnh làm đầu vào, và đầu ra là một lớp nào đó (ví dụ: chó, mèo, xe ô tô…)

Về mặt đồ họa, mạng neuron sâu sẽ giải quyết việc phân loại ảnh kiểu này:


Hình ảnh từ bài post “Deep Learning Overview” của Jeff Clune trên YouTube

Nhưng thực tế, đó là một lượng tính toán khổng lồ với hàng triệu thuật ngữ và rất nhiều biến số. Đầu vào X là một bức ảnh theo thang độ xám được biểu diễn bằng một ma trận độ sáng của pixel w-by-h. Đầu ra Y là một vector chứa các xác suất xuất hiện của các lớp có thể xảy ra. Có nghĩa là chúng ta sẽ có đầu ra là khả năng xuất hiện của mỗi lớp có thể là nhãn đúng của bức ảnh. Và các lớp ở giữa chỉ đang làm phép nhân ma trận bằng cách tính tổng activations x weights của các phép chuyển đổi phi tuyến (các hàm activation) sau khi mỗi lớp ẩn cho phép mạng học được một hàm phi tuyến.

Thật khó mà tin nổi, bạn có thể dùng đạo hàm giảm (gradient descent) theo chính xác cùng một kiểu với hồi qui tuyến tính trong phần 2.1 để đào tạo các tham số này theo cách tối thiểu hóa sai số. Như thế, với rất nhiều ví dụ và nhiều đạo hàm giảm, mô hình có thể học được cách phân loại các bức ảnh động vật chính xác. Và vỏ hạt trong vỏ hạt, kiểu đó gọi là “học sâu”.

Học sâu vận hành tốt ở chỗ nào?

Các mạng neuron nhân tạo thực ra đã xuất hiện đâu đó từ khá lâu. Trong lịch sử, ứng dụng của chúng được gọi là cybernetics (điều khiển học – xuất hiện trong những năm 1940-1960), rồi connectionism (liên kết học – những năm 1980-1990), sau đó theo trào lưu gọi là deep learning (học sâu – từ năm 2006) khi các mạng neuron bắt đầu trở nên “sâu hơn” (theo Goodfellow et al, 2016). Nhưng chỉ gần đây chúng ta mới thực sự bắt đầu đi sơ qua bề mặt tiềm năng phong phú của chúng.

Như Andrej Karpathy (Giám đốc AI tại Tesla, người mà chúng tôi coi là Pháp sư của Học sâu) đã mô tả, nói chung có “4 yếu tố riêng biệt tạo nên AI:
1.      Tính toán (thời gian đầu có Định luật Moore, GPU, ASIC)
2.      Dữ liệu (theo dạng thức đẹp đẽ, nó ở đâu đó trên internet – ví dụ ImageNet)
3.      Các giải thuật (các nghiên cứu và ý tưởng, ví dụ như cột chống nghiêng, CNN, LSTM)
4.      Cơ sở hạ tầng (phần mềm bên dưới – Linux, TCP/IP, Git, ROS, PR2, AWS, AMT, TensorFlow…) (Karpathy, 2016)

Trong khoảng hơn một thập kỷ trước, tiềm năng phong phú của học sâu được mở khóa nhờ các tiến bộ của (1) và (2), tới lượt nó đã dẫn tới những đột phá trong (3) và (4) – và cứ thế chu trình lại tiếp tục theo cấp số nhân, trở nên con người hơn là việc chỉ tập trung vào các mặt trận nghiên cứu về học sâu (tức chỉ nghĩ về những gì bạn sẽ làm ngay bây giờ thôi!)


Hình minh họa của NVIDIA, nhà sản xuất bộ xử lí đồ họa (GPU) hàng đầu, các GPU vốn dĩ được xây dựng để chơi game nhưng đã biến đổi trở nên cực kỳ phù hợp với loại hình tính toán song song mà các mạng neuron sâu đòi hỏi.

Trong phần còn lại của phần này, chúng tôi sẽ cung cấp một số nền tảng cơ bản từ sinh học và thống kê để giải thích chuyện gì xảy ra bên trong các mạng neuron, sau đó sẽ nói tới vài ứng dụng thú vị của học sâu. Cuối cùng, chúng ta sẽ kết nối tới một số tài nguyên để bạn có thể tự sử dụng học sâu, ngay cả khi bạn đang ngồi trên giường với bộ đồ ngủ và chiếc laptop, vẫn nhanh chóng đạt được hiệu năng lớn hơn mức con người bình thường khi giải quyết một vài kiểu bài toán nhất định.

Lấy cảm hứng từ bộ não (hay chỉ là một kiểu thống kê chăng?) – điều gì diễn ra bên trong các mạng neuron

Các neuron, học theo đặc điểm, và các lớp trừu tượng

Khi bạn đọc những từ này, bạn sẽ không kiểm tra từng chữ cái trong mỗi từ, hoặc mỗi pixel tạo nên mỗi chữ cái, mới có thể hiểu được nghĩa của các từ. bạn đang trừu tượng hóa từ các chi tiết và nhóm các thứ theo những khái niệm mức cao hơn: các từ, các cụm từ, các câu, các đoạn văn.

Khả năng nyà kểim tra ccá đặc đểim cấp độ coa hnơ, cho phpé bnạ hiuể điuề gì đagn xảy ra trnog cuâ nyà khnôg qáu kóh khnă.

Điều tương tự cũng diễn ra với thị giác, không chỉ ở con người mà cả ở hệ thống thị giác của động vật nói chung.

Bộ não được tạo thành từ các neuron. Neuron bắn ra các tín hiệu điện tới các neuron khác sau khi đã bị “kích hoạt” đủ. Các neuron này đều rất dẻo dai, khi một tín hiệu từ các neuron khác tới nó lớn bao nhiêu sẽ làm tăng mức độ bị kích hoạt của neuron lên bấy nhiêu (tức là khối lượng liên kết các neuron với nhau có thể đào tạo được để tạo ra các liên kết neuron hữu ích hơn, giống như các tham số trong hồi qui tuyến tính có thể được đào tạo để cải thiện ánh xạ từ đầu vào tới đầu ra).


Minh họa từng khía cạnh của các neuron sinh học và nhân tạo, dựa trên CS231n của Stanford. Tính tương tự này không thể thực hiện theo nghĩa đen – các neuron sinh học có thể làm những việc mà các neuron nhân tạo không thể, và ngược lại – nhưng hiểu được việc lấy cảm hứng từ sinh học cũng rất có ích. Hãy xem mô tả của Wikipedia về các neuron sinh học so với các neuron nhân tạo để biết thêm chi tiết.

Các mạng neuron sinh học của chúng ta được sắp xếp theo kiểu phân cấp, vì thế các neuron nhất định sẽ làm công việc phát hiện không chỉ những đặc điểm cực kỳ cụ thể của thế giới quanh ta mà cả những đặc điểm trừu tượng hơn nhiều, ví dụ các mẫu hoặc các phân nhóm của những đặc điểm ở cấp độ thấp hơn nhiều. Chẳng hạn, vùng mặt dạng nấm trong hệ thống thị giác của con người được chuyên biệt hóa cho nhận dạng khuôn mặt.


Ảnh trên: Minh họa việc học các đặc điểm trừu tượng tăng dần qua NVIDIA. Ảnh dưới: sơ đồ cách thức một mạng neuron nhân tạo lấy đầu vào là các pixel thô, phát triển các “neuron” trung gian để phát hiện các đặc điểm cấp độ cao hơn (ví dụ sự hiện diện của cái mũi), và kết hợp các đầu ra tạo thành kết quả cuối cùng. Minh họa này từ Neural Networks and Deep Learning của Nielsen, 2017.

Cấu trúc phân cấp này do các mạng neuron sinh học thể hiện, đã được phát hiện trong những năm 1950 khi 2 nhà nghiên cứu David Hubel và Torsten Wiesel đang nghiên cứu về các neuron trong vỏ não thị giác của loài mèo. Họ không thể quan sát sự kích hoạt neuron sau khi cho con mèo tiếp xúc với nhiều kích thích: các đốm đen, các đốm sáng, vẫy tay, và thậm chí các những bức hình phụ nữ trên tạp chí. Nhưng trong khi họ đang thất vọng, ngay lúc họ rời một slide khỏi máy chiếu ở góc chéo, họ nhận thấy một hoạt động thần kinh! Họ phát hiện ra rằng các đường chéo ở một góc độ rất đặc biệt đã khiến một số neuron nhất định bị kích hoạt.

Điều này có ý nghĩa cách mạng vì các môi trường trong tự nhiên nói chung đều lắm nhiễu và ngẫu nhiên (hãy tưởng tượng về một cánh đồng đầy cỏ dại hoặc một vùng đất toàn sỏi đá). Vì thế khi loài mèo trong tự nhiên nhận thức được một “cạnh”, ví dụ một đường thẳng nổi bật tương phản với nền, điều này có thể là chỉ dấu cho một đối tượng hoặc một tạo vật đang nằm trong vùng thị giác. Khi một nhóm neuron cạnh nào đó bị kích hoạt, các kích hoạt này sẽ kết hợp để tạo ra một kích hoạt còn trừu tượng hơn nữa, và cứ thế tiếp diễn, cho tới khi sự trừu tượng cuối cùng là một khái niệm có nghĩa, chẳng hạn như “con chim” hay “con sói”.

Ý tưởng phía sau một mạng neuron cấp độ sâu chính là bắt chước để tạo thành một hệ thống tương tự bằng các lớp neuron nhân tạo.

Tại sao các mô hình tuyến tính không hoạt động được

Để hiểu được khóa học tuyệt vời về deep learning của Stanford, trong cuốn CS231n: Convolutional Neural Networks and Visual Recognition, hãy tưởng tượng chúng ta đang muốn đào tạo một mạng neuron biết phân loại các bức ảnh theo đúng nhãn: [“máy bay”, “ô tô”, “chim”, “mèo”, “nai”, “chó”, “ếch”, “ngựa”, “cừu”, “xe tải”].

Có một cách là xây dựng một “mẫu”, hay một bức ảnh trung bình của mỗi lớp trong các bức ảnh được dùng làm ví dụ đào tạo, sau đó sử dụng thuật toán các hàng xóm gần nhất trong khi kiểm thử để đo khoảng cách giữa các giá trị pixel của mỗi ảnh chưa được phân loại, theo mỗi mẫu. Cách này không có các lớp trừu tượng. Đó là một mô hình tuyến tính kết hợp toàn bộ các chiều khác nhau của mỗi kiểu ảnh vào thành một hình dạng mập mờ sau khi được tính trung bình.

Ví dụ, người ta có thể lấy tất cả các loại xe ô tô – không cần biết chúng đang quay trái, phải, ở giữa thế nào và không quan tâm tới màu sắc của chúng – rồi tính trung bình toàn bộ. Mẫu thu được trông rất lờ mờ và không rõ ràng.


Ví dụ trong tài liệu từ Stanford CS231n: Convolutional Neural Networks and Visual Recognition, bài giảng số 2.

Dễ nhận thấy mẫu cho loài ngựa ở trên đã xuất hiện tới 2 cái đầu. Cách này không thực sự giúp gì cho chúng ta: chúng ta muốn có khả năng phát hiện được con ngựa đang quay mặt phải hay đang quay mặt trái rõ ràng, rồi nếu có một đặc điểm nào trong số đó được phát hiện, ta sẽ nói ta đang thấy một con ngựa. Sự linh hoạt này được các mạng neuron mức độ sâu cung cấp, mà chúng ta sẽ thấy ở phần sau.

Các mạng neuron mức sâu định hướng bài toán phân loại ảnh theo cách sử dụng các lớp trừu tượng

Nhắc lại những gì chúng tôi đã giải thích trước đó trong phần này: lớp đầu vao sẽ lấy độ sáng các pixel của bức ảnh ở dạng thô. Lớp cuối cùng sẽ là một vector đầu ra chứa các xác suất của các lớp có thể gán nhãn cho bức ảnh (ví dụ xác suất để bức ảnh là “mèo”, “ô tô”, “ngựa”…)

Nhưng thay vị học một mô hình tuyến tính đơn giản thể hiện quan hệ đầu vào và đầu ra, chúng ta sẽ xây dựng các lớp ẩn trung gian trong mạng để học dần dần các đặc điểm ngày một trừu tượng, điều đó cho phép chúng ta không làm mất sắc thái đối với dữ liệu phức tạp.


Nguồn: Analytics Vidhya

Chúng ta vừa mô tả rằng não động vật có thể phát hiện được các đặc điểm trừu tượng, các neuron nhân tạo trong các lớp ẩn cũng thế, có thể học để phát hiện các khái niệm trừu tượng – bất kể khái niệm nào, miễn sao hữu ích nhất để thu được thông tin đầu ra nhiều nhất và tối thiểu hóa sai số đảm bảo tính chính xác của đầu ra (đây là một thể hiện của kiểu học không giám sát xuất hiện trong mạng neuron).

Điều đó đi kèm với chi phí cho khả năng có thể giải thích được của mô hình, vì khi bạn thêm vào càng nhiều lớp ẩn, các neuron sẽ bắt đầu biểu diễn theo hướng ngày càng trừu tượng hơn, thậm chí các đặc điểm hoàn toàn không thể hiểu nổi – tới lúc bạn có lẽ đã nghe tới trong học sâu, người ta gọi là “tối ưu hộp đen” (black box optimization), tức bạn cơ bản chỉ ngẫu nhiên đưa vào cái gì đó rồi xem nó cho ra thứ gì, mà không cần thực sự phải hiểu chuyện gì xảy ra bên trong.

Hồi qui tuyến tính có thể giải thích được vì bạn đã quyết định đặc điểm nào sẽ có trong mô hình. Các mạng neuron mức sâu khó mà giải thích nổi vì các đặc điểm được học và không được giải thích ở đâu đó bằng tiếng Anh, tiếng Pháp hay tiếng nào đó. Toàn bộ đều nằm trong sự tưởng tượng của chính cỗ máy.

Một số khái niệm sâu hơn cần chú ý
-          Các gói phần mềm về học sâu: bạn hầu như không cần làm toàn bộ các phần của mạng neuron từ đầu vì nhiều thư viện và công cụ sẵn có đã và đang giúp cho việc xây dựng học sâu trở nên dễ dàng hơn. Có thể kể tới: TensorFlow, Caffe, Torch, Theano…
-          Các mạng neuron xoắn (CNN): CNN được thiết kế đặc biệt dành cho việc dùng các hình ảnh làm đầu vào, rất hiệu quả với các tác vụ liên quan tới thị giác máy tính. Chúng cũng hữu dụng với học sâu tăng cường (deep reinforcement learning). CNN đặc biệt lấy cảm hứng từ cách thức bộ não thị giác động vật làm việc, và chúng là trọng tâm của các bài giảng học sâu mà chúng ta vừa tham khảo, tài liệu CS231n của Stanford.
-          Các mạng neuron tái phát (RNN): RNN dùng bộ nhớ built-in và rất phù hợp với các bài toán ngôn ngữ. Chúng cũng quan trọng trong học tăng cường (reinforcement learning) vì chúng cho phép agent theo dõi kịp thời mọi thứ đang ở đâu và chuyện gì xảy ra đã xảy ra theo thời gian, ngay cả khi các phần tử hoàn toàn không thể nhìn thấy được. Christopher Olah đã viết một bài đánh giá tuyệt vời về RNN và LSTM trong lĩnh vực các bài toán ngôn ngữ.
-          Học sâu tăng cường (deep reinforcement learning): đây là một trong những lĩnh vực thú vị nhất của nghiên cứu về deep learning, là trung tâm các thành tựu gần đây như OpenAI đánh bại 2 tay chơi Dota chuyên nghiệp, hay AlphaGo của DeepMind vượt qua con người trong trò Go (cờ vây). Chúng ta sẽ đào sâu hơn trong phần 5, nhưng về cơ bản, mục đích là ứng dụng mọi kỹ thuật vào bài toán dạy một agent tối đa hóa lợi ích. Lĩnh vực này có thể ứng dụng trong bất kỳ ngữ cảnh có tính ăn thua nào – từ các trò game trong thực tế như Counter Strike hay Pacman, tới xe tự lái, chứng khoán, hay tới đời thực và thế giới thực (hoàn toàn thực).

Các ứng dụng của học sâu

Học sâu đang định hình lại thế giới trong mọi khía cạnh ảo. Dưới đây là một số ví dụ về những thứ không thể tin nổi mà học sâu có thể làm…
·         Facebook đã đào tạo một mạng neuron tăng cường bằng bộ nhớ ngắn hạn để trả lời rất thông minh các câu hỏi về tình tiết trong tác phẩm Chúa tể của Những chiếc nhẫn.


Nghiên cứu từ FAIR (Facebook AI Research) sử dụng các mạng neuron mức sâu được tăng cường bộ nhớ ngắn hạn riêng biệt để trả lời các câu hỏi về câu chuyện Chúa tể của Những chiếc nhẫn. Đây là định nghĩa về sử thi.

·         Xe tự lái dùng học sâu cho các tác vụ thị giác như hiểu được tín hiệu trên đường, phát hiện làn đường, và nhận diện các chướng ngại vật.


Nguồn: Business Insider

·         Học sâu có thể dùng theo cách hài hước hơn như tạo ra các tác phẩm nghệ thuật. Một công cụ có tên Neural Style có thể băt chước phong cách của một nghệ sĩ nào đó cực kỳ ấn tượng và dùng điều đó để pha trộn tạo ra bức ảnh khác.

Phong cách trong tác phẩm Starry Night (đêm đầy sao) của Van Gogh được áp dụng vào bức ảnh khuôn viên đại học Stanford, bằng ứng dụng neural style của Justin Johnson. Tham khảo https://github.com/jcjohnson/neural-style

Các ví dụ đáng chú ý khác:
-          Tiên đoán hoạt tính sinh học cấp phân tử trong việc nghiên cứu chế tạo thuốc
-          Nhận dạng khuôn mặt và nhận dạng đối tượng để gắn thẻ cho ảnh và video
-          Tăng cường khả năng tìm kiếm của Google
-          Hiểu và tạo ra ngôn ngữ tự như, ví dụ Google Translate
-          Robot thám hiểm Sao Hỏa Curiosity tự động lựa chọn các mẫu đất đá có giá trị thí nghiệm dựa trên khả năng tự kiểm tra bằng thị giác…
Và còn nhiều, rất nhiều nữa.

Thế là đã xong!
Chúng ta không đi sâu vào cách tạo mạng neuron trong thực hành vì bạn có thể dễ dàng tự làm điều đó. Dưới đây là một số tài nguyên thú vị để bắt đầu:
-          Dạo chơi với kiến trúc của các mạng neuron để xem cấu hình khác nhau ảnh hưởng tới hiệu năng mạng thế nào với Neural Network Playground của Google.
-          Dậy và chạy thật nhanh với hướng dẫn này của Google: TensorFlow and Deep learning without a PhD. Phân loại chữ viết tay chính xác >99%, làm quen với TensorFlow, và học các khái niệm học sâu chỉ trong 3 giờ.
-          Sau đó, đi tìm hiểu ít nhất vài bải giảng trong cuốn tài liệu CS231n của Stanford và tự xây dựng một mạng neuron 2 lớp đầu tiên từ đầu để nắm vững các khái niệm trong bài viết.

Các tài nguyên mức độ sâu hơn
Học sâu là một lĩnh vực rộng. Theo đó, chúng tôi cũng đã dùng những tài nguyên tốt nhất tìm được cho chủ đề này, trong trường hợp bạn muốn tìm hiểu sâu hơn:
-          Deeplearning.ai: bài giảng mới về học sâu của Andrew Ng với giáo trình rất dễ hiểu.
-          CS231n: Convolutional Neural Networks for Visual Recognition: bài giảng về học sâu của Stanford. Một trong những tài liệu hay nhất chúng tôi từng thấy, với các bài giảng tuyệt vời và các bài toán minh họa tốt nhất.
-          Deep Learning & Neural Networks – có thể truy cập được nhưng rất nghiêm ngặt.
-          Deep Learning Book – cơ bản, nhiều kiến thức toán học
-          Fast.ai – ít lý thuyết, nhiều ứng dụng và mang tính hộp đen nhiều hơn
-          Xem câu trả lời của Greg Brockman (CTO của OpenAI) cho câu hỏi “What are the best ways to pick up Deep Learning skills as an engineer?” trên Quora.

Kế tiếp: đến lúc chơi vài game rồi!
Cuối cùng, nhưng cực kỳ chắc chắn rằng chưa phải kết thúc, là phần 5: Học tăng cường.



Vishal Maini
Samer Sabri

Chuẩn bị cho một khóa thiền Vipassana 10 ngày như thế nào?

Vì liên tục có nhiều bạn hỏi về các khóa thiền Vipassana mà mình thi thoảng tham gia, để không phải giải thích lại nhiều lần, mình viết các ...