Phác họa bài post:
1. Quan hệ giữa
AI, Machine Learning, Deep Learning
2. Deep Learning networks
3. Deepfake
-
Từ “Deep Learning”
cách đây 3, 4 năm thì quả là “hot” trên tất cả các phương tiện truyền thông đại
chúng. Thời điểm cuối năm 2019 này mà còn đề cập đến từ này thì hơi bị “lạc hậu”.
Nhưng thôi, coi như chúng ta dành chút thời gian nhàn rỗi nhâm nhi cà phê ☕
để “ôn lại” một cụm từ mà cộng đồng ICT trên toàn thế giới “ồn ào” trong thập kỷ
qua.
1. ☕ AI => Machine Learning => Deep
Learning
Trí tuệ nhân tạo (Artificial
Intelligence - AI) đã trải qua nhiều cách tiếp cận. Một trong những cách tiếp
cận đó là xây dựng cơ sở dữ liệu tri thức (Knowledge Base). Tuy nhiên,
các dự án theo hướng này đã không thành công. Cái khó của cách tiếp cận này là
tri thức bị “cứng hóa” (hard-coded) và bản thân hệ thống đó không “tự tiếp
nhận tri thức mới” từ dữ liệu.
Trích xuất tri thức từ dữ liệu là cách tiếp cận
của Machine Learning. Khác với cách
tiếp cận Knowledge Base, Machine
Learning đã rất thành công.
Trong Machine Learning,
lập trình không phải là chìa khóa của vấn đề. Trên thực tế, lập trình cho Machine Learning là làm theo “framework”:
TensorFlow, Caffe, Microsoft Cognitive Toolkit/CNTK, Torch/PyTorch, MXNet, Chainer,
Keras, Deeplearning4j, … Theo quan điểm của Google thì trong một hệ thống tổng
thể của Machine Learning, phần lập
trình chỉ chiếm khoảng 5%. 95% còn lại là thu thập dữ liệu, kiểm tra dữ liệu,
quản trị nguồn lực hệ thống, cấu hình hệ thống, phân tích hệ thống, giám sát, …
và đặc biệt là trích xuất các đặc tính của dữ liệu (feature extraction).
Có thể nói trích xuất được đặc tính dữ liệu “đúng” thì việc huấn luyện hệ thống
gần như đảm bảo thành công.
Như vậy, then chốt là xác định được đặc tính (feature)
của dữ liệu. Tuy nhiên, trong nhiều trường hợp, việc xác định được đặc tính là
không hề dễ dàng. Đặc biệt, đối với trường hợp huấn luyện không giám sát (unsupervised
learning), tự quá trình huấn luyện sẽ trích xuất các đặc tính.
Deep Learning cho phép máy tính xây dựng các khái niệm phức tạp
từ các khái niệm đơn giản hơn. Nguyên tắc này được lặp đi lặp lại nhiều
lần. Nghĩa là: Một vấn đề phức tạp C được xây dựng từ các vấn đề đơn giản hơn
là D1, D2, …, Dn. Kế tiếp, vấn đề Di
lại được xây dựng từ các vấn đề đơn giản hơn nữa là E1, E2,
… Em, v.v.
Để có một cách nhìn tổng quan về mối quan hệ giữa AI, Machine Learning và Deep Learning, tôi xin phép được vẽ biểu đồ Venn như sau:
AI ⊃ Machine Learning ⊃ Deep Learning
Nghĩa là: Machine
Learning là tập con của Trí tuệ nhân tạo (AI); Deep Learning lại là tập con của Machine Learning.
Một trong những điểm hấp dẫn của Deep Learning là nó “mô phỏng” quy trình hoạt động của bộ não người.
Khi tư duy hay nhận dạng vấn đề, thường chúng ta học qua các trải nghiệm trước
đó (learning). Khi gặp một vấn đề phức tạp, thông thường chúng ta phân
tích vấn đề phức tạp đó thành tổ hợp các vấn đề đơn giản hơn.
Deep Learning không
đơn thuần là lập trình máy tính. Deep
Learning lấy ý tưởng từ các nghiên cứu sinh học, nghiên cứu quy trình hoạt
động của bộ não. Huấn luyện Deep Learning
thường liên quan đến toán học ứng dụng như đại số tuyến tính, xác suất, thống
kê, lý thuyết thông tin, tối ưu hóa. Nếu người Việt Nam có thế mạnh về tư duy
toán học (đấy là tôi nghe người Việt chúng ta tự khen nhau như thế) thì chúng
ta kỳ vọng sẽ tiếp cận Deep Learning
tốt hơn chăng!?
Để đơn giản hóa vấn đề, tôi mạnh dạn đưa ra một khái niệm về
Deep Learning. Deep Learning (DL) sử dụng các lớp thuật toán để xử lý dữ liệu (ví
dụ: hiểu lời nói của con người hoặc nhận dạng trực quan các đối tượng). Dữ liệu
được truyền qua từng lớp, với đầu ra của lớp trước cung cấp đầu vào cho lớp tiếp
theo. Lớp đầu tiên trong mạng được gọi là lớp đầu vào, còn lớp cuối cùng được gọi
là lớp đầu ra. Tất cả các lớp giữa hai lớp đầu vào và đầu ra được gọi là các lớp
ẩn. Mỗi lớp thường áp một thuật toán thống nhất, được gọi hàm kích hoạt. Đây là
mô hình chung của mạng nơ ron nhân tạo (Artificial Neural Network - ANN).
2. ☕ Deep Learning networks
Ai được coi là ông “trùm” về AI (Trí tuệ nhân tạo)? Tất
nhiên, quan điểm này còn tùy thuộc vào từng người. Tuy nhiên, nếu chúng ta lấy
sự kiện trao giải Turing Award năm 2018 làm điểm “chuẩn” thì có thể coi các ông
Yoshua Bengio, Geoffrey Hinton, Yann LeCun là “Godfathers of AI” (ông trùm về
trí tuệ nhân tạo). Thật ra, từ Godfather thường được dịch là “Bố già” nhưng từ
này nghe hơi găng-xì-tơ nên tôi tạm dịch là “ông trùm” nghe cho dịu hơn 😊.
Trong các ông này, Geoffrey Hinton được coi là ông trùm của Deep Learning.
2.1. 🍵 Deep Learning Breakthroughs
Ý tưởng về mạng nơ ron (neural network) được phôi
thai khá sớm, nhưng đã phải trải qua một số giai đoạn trầm lắng.
Chúng ta biết rằng khi huấn luyện mô hình tuyến tính, người
ta tìm ra điểm cực tiểu của sai số bằng phương pháp Gradient Descent (lấy đạo
hàm của biến thiên sai số, từ đó xác định được hướng tiệm cận đến điểm cực tiểu).
Thế còn huấn luyện mạng nơ ron đa lớp thì dùng phương pháp nào? Vấn đề này là một
ẩn số và cũng là một nút thắt cho đến năm 1986. Khi đó, Geoffrey Hinton cùng với
các đồng tác giả David Rumelhart và Ronald Williams xuất bản bài báo: “Learning
representations by back-propagating errors” (tạm dịch: huấn luyện bằng
phương pháp điều chỉnh sai số lan tỏa ngược). Đây được gọi là thuật toán backpropagation
(lan tỏa ngược). Đại ý của thuật toán này là khi tính lớp đầu ra thì thuật toán
lan tỏa xuôi: lớp đầu vào => các lớp ẩn => lớp đầu ra. Khi điều chỉnh các
hệ số để tìm điểm cực tiểu của sai số (đạo hàm của hàm kích hoạt) thì thuật
toán lan tỏa ngược: lớp đầu ra => các lớp ẩn => lớp đầu vào. Khi điều chỉnh
các hệ số thì vẫn dùng phương pháp “cổ điển” là lấy đạo hàm các sai số giống
như khi huấn luyện mạng tuyến tính.
Thuật toán backpropagation cởi được nút thắt về thuật
toán huấn luyện. Tuy nhiên, lúc đó mạng nơ ron lại gặp một rào cản khác: khi số
lớp tăng, số nút tăng, khối lượng tính toán trở nên khổng lồ và mô hình này trở
nên không thực tế vào thời điểm những năm 80, 90 của thế kỷ trước.
Từ sau năm 2000, đặc biệt là sau thời điểm bùng nổ điện thoại
thông minh (smartphone), GPU (Graphics Processing Unit) của NVIDIA và điện
toán đám mây (Cloud Computing) đi kèm với dữ liệu lớn (Big Data)
thì Deep Learning tăng tốc và trở
thành phổ biến.
Trong các loại hình mạng nơ ron thì loại nào đáng chú ý nhất?
Theo quan điểm cá nhân của tôi, đến thời điểm hiện nay thì chúng ta chỉ cần nhớ
2 từ khóa “hot” là CNN và RNN là đủ. 😊
2.2. 🍵 CNN (ConvNet)
CNN là viết tắt của Convolutional Neural Network – tạm
dịch là mạng nơ ron tích chập. CNN còn có một cách viết tắt khác là ConvNet.
CNN có nhiều ứng dụng trong nhận dạng hình ảnh và video, hệ thống tư vấn khuyến
nghị (recommendation system), phân loại hình ảnh, phân tích hình ảnh y tế, đọc
tài liệu giấy, ... Để cho dễ nhớ, CNN là nền tảng cho lĩnh vực thị giác máy
tính (computer vision). Một vấn đề lớn như thị giác máy tính, lại chủ yếu
chỉ dựa vào một cấu trúc đặc biệt của mạng nơ ron như CNN - đủ để thấy CNN “vĩ
đại” như thế nào.
Người đầu tiên đưa ra ý tưởng CNN là ông Kunihiko Fukushima,
người Nhật Bản vào năm 1980. Đến năm 1989, Yann LeCun tổ hợp ý tưởng CNN với
thuật toán Backpropagation để nhận dạng chữ số viết tay. Hệ thống này của Yann
LeCun được ứng dụng để đọc chữ số viết tay trên các tờ séc trong thời gian từ
những năm 1990 đến đầu những năm 2000.
Ngoài ra, có một số cột mốc đáng kể khác:
- Tăng tốc độ xử lý phải kể đến việc triển khai CNN trên các
bộ xử lý GPU vào năm 2004 (tăng tốc độ xử lý lên gấp 20 lần).
- Giảm sai số nhận dạng mang tính đột phá phải kể đến sự ra
đời của mạng AlexNet (Alex Krizhevsky và các đồng tác giả) vào năm 2012. Các
sai số trước AlexNet thấp nhất là 26%, còn AlexNet giảm sai số xuống còn 16%.
Sau này, người ta cải tiến dần các CNN để đạt đến sai số chỉ còn là 2.25%.
- Năm 2014, Facebook cho ra đời mạng DeepFace nhằm nhận dạng
khuôn mặt. Mạng này có 9 lớp (layers) và có 120 triệu kết nối. DeepFace có thể
nhận dạng đạt độ chính xác lên đến 97.35%, gần tương đương với chính chúng ta đấy
(mắt người có thể nhận dạng chính xác đến 97.5%).
2.3. 🍵 RNN
RNN là viết tắt của Recurrent Neural Network – tạm dịch
là mạng nơ ron tái phát. RNN có nhiều ứng dụng: Dịch máy, Điều khiển robot, Dự
đoán chuỗi thời gian, Nhận dạng giọng nói, Tổng hợp lời nói, Phát hiện dị thường
chuỗi thời gian, Nhịp điệu học, sáng tác âm nhạc, Học ngữ pháp, Nhận dạng chữ
viết tay, …
Năm 1982, ông John Hopfield đề xuất mạng Hopfield, là một dạng
đặc biệt của RNN. Tuy nhiên, theo Wikipedia thì ý tưởng đầu tiên về RNN lại dựa
vào công trình của ông David Rumelhart vào năm 1986. Có lẽ độc đáo nhất về một
dạng của RNN là Long Short-Term Memory (LSTM) do các ông Jürgen Schmidhuber và
Sepp Hochreiter đề xướng vào năm 1997. (<Ngoài lề>: cụm từ “Short-Term
Memory” thì có thể dịch là bộ nhớ ngắn hạn nhưng cả cụm từ “Long Short-Term Memory”
thì dịch sang tiếng Việt rất khó. Vì vậy, chúng ta cứ giữ nguyên từ LSTM, khỏi
phải dịch 😊. </Hết ngoài lề>) Có khá nhiều
bài báo nói rằng khi huấn luyện mạng LSTM, người ta đạt được kết quả tốt hơn
mong đợi. Còn vì sao lại đạt được kết quả tốt như vậy, thì chính tác giả bài
báo đó nói là phải đợi các nghiên cứu tiếp theo! 😊
Ý tưởng đằng sau RNN là sử dụng thông tin tuần tự, một chuỗi
các dữ liệu. Nếu chúng ta muốn dự đoán từ tiếp theo trong một câu, chúng ta cần
biết những từ nào đã xuất hiện trước đó. RNN được gọi là xử lý lặp (tái phát)
vì chúng thực hiện cùng một “phép toán” cho mọi phần tử của chuỗi, với đầu ra
phụ thuộc vào các tính toán trước đó. Nói một cách khác, RNN có bộ nhớ có thể nắm
bắt thông tin về những gì đã được xử lý.
Có lẽ một ví dụ về ứng dụng của RNN mà chúng ta hay bắt gặp
hàng ngày là tìm kiếm trên Google. Nếu anh/chị lười gõ từ khóa thì có thể bật
chế độ tìm kiếm bằng giọng nói (Search by voice). Sau đó, anh/chị chỉ việc đọc
các từ khóa để Google chuyển giọng nói thành văn bản và tìm kiếm. Nếu anh/chị
tìm kiếm bằng giọng nói thì sau khi tìm xong, Google còn phát ra bằng giọng nói
phần tóm tắt kết quả đầu tiên tìm được! Rất ấn tượng, đúng không ạ.
3. ☕ Deepfake
Từ Deepfake là ghép của Deep
Learning và Fake. Deepfake thường làm giả các video hoặc ảnh bằng
cách cách áp dụng autoencoder (bộ mã hóa tự động) hoặc mạng GAN (Generative
Adversarial Network – tạm dịch là mạng lưới nghịch cảnh).
Một ví dụ của Deepfake là “lồng” ảnh của 2 người khác nhau
thành một và ảnh mới trông hơi giống với cả 2 ảnh gốc. Một ví dụ khác là lấy một
đoạn video, cắt tiếng và lồng lời thoại. Một ví dụ khác nữa là lấy một đoạn
video và thay gương mặt của nhân vật chính trong video bằng một gương mặt khác.
Ngoài ra Deepfake còn có thể tạo ra các nhân vật “số hóa” trong phim, không giống
với bất cứ diễn viên nào ngoài đời thực.
Sử dụng công nghệ Deepfake người ta có thể làm các phim
khiêu dâm giả mạo nhân vật, làm các đoạn video giả và phát tán trong các cuộc vận
động tranh cử, hoặc làm giả các video trên các mạng xã hội – như thật.
Như vậy, Deep Learning, cũng giống như nhiều phát minh khác của loài người, gây phấn khích, hào hứng nhưng đồng thời cũng gây lo ngại.
Không có nhận xét nào:
Đăng nhận xét