2019/12/30

☕ Nhàn đàm ICT: Deep Learning

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 LearningDeep 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 LearningFake. 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.


2019/08/31

☕ Nhàn đàm ICT: Quantum Computing ⚛️

Phác họa bài post:

#0_Quantum Mechanics.

#1. Qubit.

#2_Quantum Computing.

#3_Quantum Computer Hardware.

#4_Qubit Technologies.

#5_Quantum Computer Software.

#6_Quantum Algorithms.

#7_Quantum R&D.

-

Tôi xin phép được bắt đầu với câu nói của nhà vật lý Richard Feynman như sau:

I’m not happy with all the analyses that go with just the classical theory, because Nature isn’t classical, dammit, and if you want to make a simulation of nature, you’d better make it quantum mechanical, and by golly it’s a wonderful problem, because it doesn’t look so easy.

 

It’s not a Turing machine, but a machine of a different kind.

Tạm dịch:

Tôi không hài lòng với tất cả các phân tích chỉ dựa trên lý thuyết cổ điển, bởi vì Thiên nhiên không phải là cổ điển, chết tiệt thế chứ, và nếu bạn muốn tạo ra một mô phỏng của tự nhiên, tốt hơn hết là bạn nên biến nó thành cơ học lượng tử, ôi trời, đó là một vấn đề tuyệt vời, bởi vì nó không hề dễ.

 

Đó không phải là một máy Turing, mà là một loại máy theo kiểu khác.

⚛️

#0_Quantum Mechanics.

Theo lý thuyết cơ học lượng tử, một đối tượng lượng tử thường không tồn tại ở trạng thái hoàn toàn xác định. Khi người ta quan sát một vật thể lượng tử, nó trông giống như một hạt, nhưng khi không quan sát, nó tồn tại dưới dạng sóng. Để anh/chị không bị “kéo” vào một lý thuyết khó hiểu với vô số các tranh luận của các nhà vật lý, tôi đề xuất chúng ta xem các tính chất sau của lượng tử giống như các “tiên đề”:

Wave-particle duality (lưỡng tính sóng-hạt). Vật thể lượng tử thường có cả hai tính chất sóng và hạt. Vật thể lượng tử vận động tuân theo một phương trình sóng, nhưng bất kỳ phép đo nào của hệ thống lại cho kết quả là hạt.

Superposition (trạng thái chồng chập). Một hệ thống lượng tử có thể tồn tại ở hai trạng thái trở lên cùng một lúc, được gọi là trạng thái chồng chập. Hàm sóng cho trạng thái chồng chập là tổ hợp tuyến tính của các trạng thái thành phần, với các hệ số phức. Ví dụ, một hệ thống lượng tử Q tổ hợp từ 2 trạng thái A và B thì có thể viết Q = Ca*A + Cb*B, trong đó Ca và Cb là các số phức với ràng buộc: |Ca|2 + |Cb|2 = 1. Khi “đo” hệ thống Q thì ta được kết quả hoặc là A, hoặc là B, chứ không bao giờ là trạng thái lơ lửng giữa A và B cả.

Coherence (tính liên kết). Khi một hệ lượng tử được tổ hợp từ các trạng thái thành phần cơ bản khác thì trạng thái của hệ thống tổ hợp được gọi là có tính liên kết (coherent). Việc giữ trạng thái liên kết (coherent) là cần thiết cho các hiện tượng lượng tử như giao thoa lượng tử (quantum interference), trạng thái chồng chập (superposition) và liên đới lượng tử (entanglement).

Entanglement (liên đới lượng tử). Nếu nhiều vật thể lượng tử liên đới với nhau thì khi “đo” một vật thể trong số đó, vật thể được đo sẽ chuyển từ trạng thái chồng chập (superposition) thành trạng thái hạt. Điểm đặc biệt ở chỗ các vật thể lượng tử liên đới khác cũng chuyển từ trạng thái chồng chập thành trạng thái hạt. Hiện tượng này xảy ra ngay cả khi các vật thể lượng tử ở cách xa nhau.

Measurement (đo / quan sát). Đo một hệ thống lượng tử, thực chất là thay đổi trạng thái hệ thống đó. Trong trường hợp phép đo mang lại giá trị được xác định rõ, trạng thái của hệ thống sau khi đo tương ứng với giá trị đo được. Việc đo hệ thống lượng tử đã làm sập (collapse) chức năng “sóng” – chuyển sang trạng thái “hạt”.

<Ngoài lề>

Nếu anh/chị thấy chưa thoải mái với các “tiên đề” trên, anh chị có thể tìm hiểu thêm về cơ học lượng tử. Trong nhiều tài liệu mà tôi đọc được trên Internet, tôi thấy tài liệu này dễ hiểu: https://hackernoon.com/quantum-computing-explained-a114999299ca

</Ngoài lề>

⚛️

#1. Qubit

#1.0_ Qubit. Các hệ thống điện toán hiện nay dựa vào nền tảng hệ nhị phân được xây dựng từ các bit. Một bit chỉ có hai giá trị là 0 và 1. Quantum computing cũng có ý tưởng tương tự: quantum bit, viết tắt là qubit. Qubit cũng có các giá trị là 0 và 1. Ngoài ra, qubit còn có thể ở trạng thái “superposition” (trạng thái chồng chập). Khi qubit ở trạng thái “superposition”, người ta nói là qubit ở 2 trạng thái đồng thời vừa bằng 0 vừa bằng 1. Nghe rất vô lý, đúng không ạ? Nhưng “đúng” là thế đấy 😊.

Khi mô tả qubit, người ta viết theo ký hiệu của Dirac. Giá trị 0 của qubit được viết là |0> (một vạch đứng, tiếp đến là giá trị và sau cùng là dấu lớn hơn). Tương tự, giá trị 1 của qubit được viết là |1>. Hai trạng thái |0> và |1> được gọi là các trạng thái cơ sở (basis state). Hàm sóng của qubit được viết là |ψ = a0 |0+ a1 |1 trong đó |a0|2 + |a1|2 = 1. Chú ý rằng a0 và a1 là các số phức. Khi đo qubit thì kết quả chắc chắn là 0 hoặc 1 chứ không bao giờ là giá trị khác. Nhưng lúc nào bằng 0, lúc nào bằng 1? Qubit bằng 0 với xác suất là |a0|2 và bằng 1 với xác suất là |a1|2. Sau khi “đo” thì trạng thái của qubit chính là trạng lúc đo được (bằng 0 hoặc bằng 1), còn các giá trị a0 và a1 bị hủy hoàn toàn. Đây là một điểm “đặc biệt” (và có phần kỳ lạ) của lượng tử.

Với cấu trúc trên, qubit không hẳn là số (digital) và càng không phải là nhị phân (binary). Các hệ số a0 và a1 là các giá trị tương tự (thực chất là số phức). Nhưng khi “đo” hệ thống thì kết quả bao giờ cũng là nhị phân.

 

#1.1_Multiqubit. Khi hệ thống lượng tử có nhiều hơn 1 qubit thì có 2 trường hợp xảy ra: các qubit độc lập với nhau hoặc các qubit liên đới với nhau (entangled).

Trường hợp các qubit độc lập với nhau: số trạng thái cơ sở tỷ lệ thuận với số qubit. Một qubit có 2 trạng thái cơ sở nên n qubit sẽ có 2 * n trạng thái cơ sở.

Trường hợp các qubit liên đới (entangled) thì số trạng thái cơ sở tăng theo cấp số mũ. Ví dụ, nếu hệ thống có 2 qubit thì sẽ có 4 trạng thái cơ sở (basis state) là |00>, |01>, |10>, |11>.  Để mô tả đầy đủ hàm sóng của hệ thống 2 qubit, chúng ta cần 4 hệ số phức: |ψ = a0|00> + a1|01> + a2|10> + a3|11>, trong đó |a0|2 + |a1|2  + |a2|2 + |a3|2   = 1

Một cách tổng quát, khi hệ thống có n qubit thì hệ thống này sẽ có 2n trạng thái cơ sở và cần 2n hệ số phức để thiết lập hàm sóng. Như vậy, khi tăng số qubit thì số các trạng thái cơ sở và số các hệ số phức tăng theo cấp số mũ.

 

#1.3_Qubit Operations. Điện toán lượng tử hiện nay có 2 dòng chính: là điện toán lượng tử tương tự (analog quantum computing) khi các qubit độc lập với nhau và điện toán lượng tử số (gate-based quantum computing) khi các qubit liên đới với nhau (entangled). Bài này tôi chủ yếu chỉ nhàn đàm về điện toán lượng tử số.

Đối với bit, như chúng ta đều biết, có các mạch điều khiển cơ bản nguyên thủy gồm AND, OR, XOR, NOT. Các mạch này được gọi là gate (cổng). Từ các mạch nguyên thủy này người ta có thể lập các mạch tổ hợp với mức độ phức tạp cao hơn để thực hiện các phép tính trong các máy tính mà chúng ta vẫn đang sử dụng.

Đối với qubit thì sao, liệu có các mạch tương tự như thế hay không? Câu trả lời là các qubit có tập hợp các mạch điều khiển cơ bản nguyên thủy khác hẳn. Lý do là các qubit vận hành theo nguyên lý cơ học lượng tử nên phải tuân thủ các ràng buộc như sau:

Ràng buộc 1: Các mạch khi thiết kế không được mất thông tin vì mất thông tin có nghĩa là hệ thống lượng tử bị phá vỡ tính liên kết (coherence). Điều này cũng đồng nghĩa với: các phép toán phải đảo ngược được (reversible). Trong các phép toán cổ điển, chỉ có NOT thỏa mãn điều kiện này. Chú ý rằng ràng buộc này cũng đồng nghĩa với số qubit đầu vào phải bằng số qubit đầu ra. Chú ý thêm là sau khi “đo” (measurement) qubit thì trạng thái ngay trước đó bị hủy – vì vậy phép “đo” là phép toán không đảo ngược được.

Ràng buộc 2: Tổng bình phương các giá trị tuyệt đối của các hệ số phải luôn luôn bằng 1 (|ai|2 = 1). Dưới góc độ toán học, người ta gọi biên độ của véc tơ luôn luôn bằng 1. Các hệ số phức của trạng thái của qubit có thể thay đổi nhưng biên độ không đổi.

Từ các ràng buộc trên người ta lập ra các phép toán (gate) để tác động lên các qubit (nghĩa là chuyển các qubit từ trạng thái này sang trạng thái khác). Ví dụ về các gate: Hadamart (1 qubit), T (1 qubit), CNOT (2 qubit), Toffoli (3 qubit), Pauli-Z (1 qubit), Z-Rotation (1 qubit), NOT (1 qubit).

Ngoài ra, người ta chứng minh được rằng mọi mạch điều khiển qubit đều có thể được tổ hợp từ 3 gate là T, HadamardCNOT. Như vậy, các gate T, HadamardCNOT được gọi là tập hợp các gate cơ bản.

Về mặt toán, các gate được viết dưới dạng các ma trận. Hơn nữa, các ma trận này đều là các ma trận đơn vị (unitary matrix). Các mạch tổ hợp từ các gate cơ bản là các phép toán trên ma trận.

⚛️

#2_Quantum Computing.

Muốn có điện toán lượng tử (quantum computing), cần có phần cứng (thiết bị) và phần mềm. Khi tìm hiểu sâu hơn, cả phần cứng và phần mềm của điện toán lượng tử khác nhiều so với điện toán hiện nay chúng ta đang sử dụng – tạm gọi là điện toán “cổ điển”. Vậy điện toán lượng tử phải có một cái gì đó hơn hẳn điện toán cổ điển thì người ta mới “lao đầu” vào chứ?

Điện toán lượng tử có tiềm năng năng giải quyết một số vấn đề tính toán mà kể cả những siêu máy tính mạnh nhất hiện nay và bất kỳ máy tính cổ điển nào trong tương lai không giải được. Ví dụ tiêu biểu nhất là khả năng phá khóa các loại mật mã trên nền RSA dùng thuật toán phân tích thành thừa số nguyên tố của Peter Shor (tham khảo https://en.wikipedia.org/wiki/Shor%27s_algorithm). Ngoài ra, cần phải kể đến các ứng dụng trong mô phỏng các hệ thống hóa học, vật liệu, sinh học, đặc biệt là các ứng dụng tiềm năng để phát triển vật liệu mới. Người ta thấy điện toán lượng tử có “tiềm năng” tính toán nhanh hơn điện toán cổ điển theo cấp số mũ. Nói theo ngôn ngữ của độ phức tạp tính toán: nếu điện toán cổ điển có độ phức tạp là O(2^n) thì điện toán lượng tử có độ phức tạp là O(n). Để cho dễ hình dung, nếu n = 100 thì điện toán cổ điển cần đến 2^100 bước trong khi điện toán lượng tử chỉ cần vài trăm bước để tính. Chú ý rằng 2^100 là một số có 30 chữ số thập phân. Nghĩa là đối với điện toán cổ điển đây là vấn đề bất khả thi còn đối với điện toán lượng tử nó chỉ diễn ra trong tích tắc.

Tôi để từ “tiềm năng” trong nháy vì đó mới chỉ là tiềm năng. Còn chuyện biến tiềm năng đó thành thực tế còn rất nhiều thách thức cả về phần cứng lẫn phần mềm.

⚛️

#3_Quantum Computer Hardware.

Phần cứng của máy tính lượng tử có cấu trúc chia thành 4 tầng (plane):

a. Quantum Data Plane (tầng dữ liệu lượng tử): Đây là phần “hạt nhân” của máy tính lượng tử, là cấu trúc vật lý của qubit.

b. Control and Measurement Plane (tầng điều khiển và đo): Chuyển tín hiệu số sang tín hiệu tương tự để điều khiển các qubit. “Đọc/đo” các tín hiệu sập (collapse) của qubit (tầng a. và chuyển đến bộ xử lý tín hiệu số.

c. Control Processor Plane (tầng xử lý điều khiển): Chuyển thuật toán thành các chuỗi điều khiển để chuyển xuống cho tầng dưới (tầng b.) và chuyển đo sang tầng d.

d. Host Processor (bộ xử lý điều phối): Là một máy tính thông thường chịu trách nhiệm kết nối mạng, kết nối với lưu trữ dữ liệu và giao diện người dùng.

Trên đây là hệ sinh thái của hệ thống lượng tử bao gồm cả các máy tính cổ điển. Tầng a. được bảo quản trong buồng lạnh gần với nhiệt độ 0 tuyệt đối (vài chục mili độ Kelvin), nhiệt độ ở tầng b. khoảng 77 độ Kelvin.

 

Để dễ hình dung: giả thiết chúng ta viết một chương trình điều khiển các qubit bằng ngôn ngữ Q# (Q Sharp). Mã nguồn của chương trình và bản biên dịch mã nguồn nằm ở tầng d. Sau đó sẽ được chuyển xuống tầng c. Tại đây các thuật toán sẽ được chuyển thành các chuỗi điều khiển. Chuỗi điều khiển về thực chất là một loạt các gate (cổng) sắp xếp theo tuần tự. Sau đó chuỗi này sẽ được chuyển xuống tầng b. và tại đây sẽ chuyển các tín hiệu số thành các tín hiệu tương tự để điều khiển các qubit (các qubit nằm ở tầng a.).

⚛️

#4_Qubit Technologies.

Nói đến máy tính lượng tử là phải nói đến công nghệ chế tạo các qubit. Không giống như các bóng bán dẫn tích hợp quy mô rất lớn (VLSI), việc xây dựng một máy tính lượng tử dựa trên các qubit đòi hỏi phải tích hợp các công nghệ từ nhiều lĩnh vực, bao gồm chân không, laser, hệ thống quang học, radio tần số (RF), công nghệ vi sóng và bộ điều khiển điện tử kết hợp. Hiện nay có 2 công nghệ triển vọng nhất là công nghệ siêu dẫn và bẫy ion.

Số lượng qubit được tạo ra là một chỉ số quan trọng. Càng nhiều qubit thì độ phức tạp về công nghệ càng cao và nhiễu lượng tử càng lớn. Người ta chia máy tính lượng tử thành 2 loại chính là Gate-based Quantum Computer (máy tính lượng tử số) và Quantum Annealer (máy ủ lượng tử).

Gate-based Quantum Computer: Đây là trường hợp các qubit liên đới với nhau (entangled). Loại máy tính lượng tử này rất khó để tạo ra được số qubit lớn. Một số công ty công nghệ hàng đầu của thế giới đang nghiên cứu phát triển loại máy tính này, xin kể ra một vài trong số đó:

Google đã chế tạo ra máy tính lượng tử 72 qubit sử dụng công nghệ siêu dẫn;

IBM đã chế tạo ra máy tính lượng tử 40 qubit sử dụng công nghệ siêu dẫn;

Intel đã chế tạo ra máy tính lượng tử 49 qubit sử dụng công nghệ spin qubit;

Các công ty dẫn đầu về loại máy tính lượng tử này gồm Google, IBM, Intel, Ion Q, Microsoft và Rigetti.

 

Quantum Annealer:

Trong khi máy tính lượng tử số (gate-based quantum computer) có thể dùng cho hầu hết các vấn đề thì máy ủ lượng tử (quantum annealer) lại chỉ thích hợp cho một số vấn đề về tối ưu hóa và lấy mẫu (sampling). Công ty D-Wave đã sản xuất được máy ủ lượng tử có số qubit đến 2000.

⚛️

#5_Quantum Computer Software.

Ngoài phần cứng, hiển nhiên là chúng ta cần có phần mềm vì nếu không có phần mềm thì máy tính lượng tử chả có tác dụng gì. Phần mềm bao gồm ngôn ngữ lập trình (ngôn ngữ lập trình này phải cho phép lập các thuật toán lượng tử), bộ biên dịch/thông dịch (dịch từ ngôn ngữ lập trình ra ngôn ngữ điều khiển các qubit), công cụ phân tích, tối ưu hóa, gỡ rối và kiểm tra.

Ngôn ngữ lập trình lượng tử bậc cao: Có thể kể ra như:

QCL (Quantum Computation Language): tương tự như ngôn ngữ C;

Q# (Q Sharp): ngôn ngữ do Microsoft phát triển: https://docs.microsoft.com/en-us/quantum/?view=qsharp-preview

Một số ngôn ngữ khác: Quipper, Quafl, LIQuI|> (Liquid).

Trong số các ngôn ngữ lập trình bậc cao, tôi thấy Q# tương đối dễ tiếp cận.

Nếu tính ngôn ngữ nhúng cũng là bậc cao thì có thể kể đến Cirq do Google phát triển. Cirq thực chất là một gói trong ngôn ngữ Python. Nếu ai đã lập trình Python rồi thì việc lập trình cho máy tính lượng tử dễ như một nốt nhạc! Đương nhiên người lập trình phải hiểu bản chất của điện toán lượng tử.

Ngôn ngữ lập trình lượng tử bậc thấp (tương tự như ngôn ngữ Assembly trong máy tính cổ điển): Có thể kể ra như: QASM, OpenQASM, QcoDeS, ARTIQ. Các ngôn ngữ này có các câu lệnh trực tiếp điều khiển các qubit.

 

Mô phỏng: Đây là dùng máy tính cổ điển để mô phỏng máy tính lượng tử. Việc này đặc biệt hữu ích trong quá trình phát triển các phần mềm lượng tử. Tuy nhiên, câu hỏi đặt ra là các máy tính cổ điển có thể mô phỏng đến mức độ nào của máy tính lượng tử? Người ta tính ra là siêu máy tính hiện nay có thể mô phỏng đến máy tính lượng tử cỡ 50 qubit.

 

Kiểm tra, gỡ rối: Đối với máy tính lượng tử, đây là các vấn đề cực kỳ khó: độ phức tạp của hệ thống lượng tử, giới hạn của khả năng mô phỏng bằng máy tính cổ điển, và bản chất của lượng tử: không đọc được giá trị của các hệ số khi hệ thống lượng tử ở trạng thái chồng chập (superposition) – vì nếu đọc thì hệ thống sẽ tự động chuyển từ trạng thái chồng chập sang trạng thái nhị phân và hủy toàn bộ các hệ số trước đó.

 

Cách tiếp cận hiện nay chủ yếu là dựa vào mô phỏng và thông qua điện toán đám mây. Nghĩa là chúng ta – những người lập trình – có thể viết code trong các ngôn ngữ như Q#, trong Python, … Sau đó gửi mã qua đám mây đến một hệ sinh thái lượng tử (Google, Microsoft, IBM, …) để hệ sinh thái đó cho “chạy” chương trình trên máy tính lượng tử.

⚛️

#6_Quantum Algorithms.

Muốn biến máy tính lượng tử hơn hẳn máy tính cổ điển bắt buộc phải có thuật toán riêng cho điện toán lượng tử. Với các đặc tính riêng của lượng tử, có cảm giác rằng với một máy tính lượng tử có n qubit thì một nhịp tính của máy này có thể thực hiện 2n phép tính. Mặt khác, khi kết thúc quá trình tính toán, kết quả quan sát thấy chỉ là một dãy n bit thông thường. Đây chính là điểm rất thách thức khi thiết kế các thuật toán lượng tử.

Đâu là những viên gạch nền tảng cho các thuật toán lượng tử với đặc điểm vừa nêu trên? Một trong số đó là biến đổi Fourier lượng tử (Quantum Fourier Transform, viết tắt là QFT – tham khảo: https://en.wikipedia.org/wiki/Quantum_Fourier_transform).

Có thể coi thuật toán phân tích thành thừa số nguyên tố của Peter Shor là một ứng dụng thông minh của biến đổi Fourier lượng tử.

Ngoài các thuật toán trên cần phải kể đến một số thuật toán khác như thuật toán Grover, các thuật toán lượng tử mô phỏng Hamilton, các thuật toán lượng tử giải phương trình đại số tuyến tính, …

Tuy nhiên, nhìn chung thuật toán lượng tử vẫn đang là mảnh đất vỡ hoang.

⚛️

#7_Quantum R&D.

Theo báo cáo của công ty McKinsey năm 2015 thì vào thời điểm đó thế giới đã chi 1,5 tỷ euro cho nghiên cứu khoa học và công nghệ lượng tử (Quantum Science and Technology) trong đó lớn nhất là Hoa Kỳ (360 triệu euro), tiếp đến là Trung Quốc (220 triệu euro), Đức (120 triệu euro), Canada (100 triệu euro), Australia (75 triệu euro). Trong khu vực Đông Nam Á, chỉ thấy có Singapore (44 triệu euro).

Ở Việt Nam, trong Quyết định 3685/QĐ-BKHCN về Danh mục các công nghệ chủ chốt của công nghiệp 4.0 ban hành ngày 3/12/2018) tôi thấy có điện toán lượng tử đứng thứ 8 trong tổng số 43 công nghệ chủ chốt. Tuy nhiên, tôi không có thông tin về nhóm nào đã nghiên cứu về vấn đề này. Theo chủ quan của tôi, thuật toán lượng tử vẫn còn là vấn đề còn nhiều cái để mày mò và có thể “chạy thử” thuật toán trên các platfform mà các công ty công nghệ hàng đầu cung cấp dưới dạng open source và/hoặc miễn phí.

 

Nhân sắp đến ngày khai giảng, xin phép anh/chị nhàn đàm về một vấn đề ICT mà tôi nghĩ là còn mới mẻ.

2019/06/20

☕ Nhàn đàm ICT: Libra (≋) vs. Bitcoin (₿) vs. Ethereum (Ξ)

Phác họa bài post:

1. Libra Association.

2. Ví tiền ảo.

3. Libra Blockchain.

4. Libra Node (Validator).

5. Đúc (hủy) tiền ảo.

6. Proof-of-Work vs. Proof-of-Stake.

7. Lập trình trên Blockchain.

-

Hôm 18/06/2019, trên mạng xã hội Facebook, Mark Zuckerberg thông báo sự ra đời của Hiệp hội Libra (Libra Association) và đồng tiền ảo Libra (https://www.facebook.com/zuck/posts/10107693323579671). Nhiều tờ báo mô tả đây là thông tin “địa chấn”, rất nóng (“hot”). Nhân sự kiện này, xin gửi tới anh/chị tóm lược so sánh Libra với 2 đồng tiền ảo đi trước là Bitcoin và Ethereum trong lúc anh/chị nhâm nhi cà phê. Đảm bảo với anh/chị hết cà phê là hết nhàn đàm!

Trong bài viết này tôi chỉ bàn về “kỹ thuật”, còn các tác động khác của đồng Libra thì xin không đề cập. Dù sao thì đồng Libra chưa tồn tại mà, hãy để đến đầu năm 2020 anh/chị sẽ có dịp trải nghiệm xem nó thế nào!

Còn về mặt “công nghệ”, rất dễ nhận thấy Libra mượn ý tưởng chính từ Bitcoin và Ethereum. Tất nhiên, trong quá trình tiến hóa, người đi sau mượn ý tưởng của người đi trước là chuyện bình thường (bản thân Ethereum cũng mượn ý tưởng từ Bitcoin).

≋|₿|Ξ

1. Libra Association.

Mọi người cứ mặc nhiên gán Facebook đưa ra tiền ảo Libra, nhưng trên thực tế đây là Hiệp hội Libra đưa ra đấy chứ 😊. Không tin anh/chị đọc “Sách Trắng Libra” - Libra White Paper (https://libra.org/en-US/white-paper/) mà xem! Đáng kể nhất về các thành viên của hiệp hội này có 2 tên tuổi mà chắc anh/chị ai cũng biết, đó là MastercardVisa.

- Điểm này Libra khác hẳn Bitcoin. Libra làm rầm rộ, lôi kéo đủ các loại đối tác. Còn Bitcoin? Chỉ một mình Satoshi Nakamoto lặng lẽ tạo ra Bitcoin và Blockchain, rồi sau đó cũng lặng lẽ rút lui và “biến mất”.

- Libra khởi động có vẻ hơi giống cách Ethereum. Năm 2014 khi công bố ra mắt Ethereum có một danh sách dài các thành viên sáng lập. Đến năm 2017, Ethereum lập liên minh Enterprise Ethereum Alliance (EEA) với 150 thành viên.

<Ngoài lề>

Chữ “Libra” đọc na ná như chữ “Libre” trong tiếng Pháp. Nghĩa của từ “Libre” trong tiếng Pháp là “Tự do”. Có lẽ họ hàm ý đây là đồng tiền “Tự do” chăng?

</Ngoài lề>

≋|₿|Ξ

2. Ví tiền ảo.

Cũng trong thông báo trên, Mark Zuckerberg cho biết Facebook sẽ cấp ví điện tử cho người dùng với tên gọi là Calibra. Libra giống Bitcoin ở điểm là đều sử dụng công nghệ Blockchain. Blockchain lưu “tài khoản” là cặp khóa Public – Private (mỗi tài khoản giữ một cặp chìa khóa gồm chìa khóa bí mật: private key và chìa khóa công khai: public key). Tất nhiên, một người dùng có thể có nhiều ví điện tử. Khái niệm trên được đưa ra bởi Satoshi Nakamoto. Về điểm này thì Libra đồng nhất với Bitcoin và cả Ethereum: không lưu định danh người dùng trong blockchain, chỉ lưu “địa chỉ tài khoản” – mời anh/chị tham khảo thêm: https://developers.libra.org/docs/life-of-a-transaction

≋|₿|Ξ

3. Libra Blockchain.

Chúng ta còn nhớ là Satoshi Nakamoto tạo ra blockchain sau mỗi 10 phút và khối sau là hàm số “băm” (hàm hashcash) của khối trước ghép với độc số nonce. Blockchain của Libra chọn một cách tiếp cận khác: mỗi một giao dịch sẽ tạo ra một “lá” (leaf) mới của Cây Merkle (xem https://en.wikipedia.org/wiki/Merkle_tree: cấu trúc Cây Merkle giống cấu trúc Cây thông thường chỉ đặc biệt ở chỗ là tất cả các nút và lá đều là kết quả các hàm băm – hash function.) Có thể nói Satoshi Nakamoto tạo ra blockchain là một cấu trúc “List”, còn Libra tạo ra blockchain là một cấu trúc “Tree”. Cách tiếp cận này Libra giống Ethereum, cải tiến hơn “một tẹo” so với Bitcoin. (Độ phức tạp tính toán của cấu trúc “List” là O(N), trong khi độ phức tạp tính toán của cấu trúc “Tree” là O(log(N)) – trong đó N là số block.)

≋|₿|Ξ

4. Libra Node (Validator).

Trong Bitcoin của Satoshi Nakamoto, sổ cái (Ledger) được lưu giống hệt nhau ở hàng chục ngàn nút (Node). Mỗi một giao dịch mới sẽ được “đại đa số” các nút cùng xác nhận. (“Đại đa số”, theo hệ thống Byzantine Fault Tolerance, là đạt được trên 2/3 tổng số nút.) Các nút ở trong Bitcoin hoàn toàn tự do được tạo ra, miễn là phải có Proof-of-Work. Libra phân biệt hai loại nút (Node - còn được gọi là Validator): loại Permissioned (đã được cấp phép) và loại Permissionless (không được cấp phép). Hiện tại chỉ có loại nút đã được cấp phép mới có quyền xác nhận giao dịch. Mỗi một nút được cấp phép là “cơ sở dữ liệu phân tán” do một thành viên của hiệp hội Libra vận hành! Trong tương lai, Libra sẽ chuyển dần sang nút Permissionless. Nhưng đó là tương lai. Đây là điểm còn “kém” của Libra so với hệ thống Bitcoin của Satoshi Nakamoto: tất cả ngay từ đầu là Permissionless! Cách tiếp cận này Libra giống Ethereum, khác “một tẹo” so với Bitcoin.

≋|₿|Ξ

5. Đúc (hủy) tiền ảo.

Chúng ta biết rằng cả hai hệ thống Bitcoin và Ethereum, người dùng phải “đào mỏ” (mining) mới “khai quật” được tiền ảo. Libra thì sao? Người dùng muốn có tiền phải đổi tiền “thật” sang đồng Libra. Libra có cả Ngân hàng Trung ương Libra (Libra Reserve) anh/chị ạ! Đổi tiền “thật” với tiền ảo “Libra” giống như đổi tiền lúc đi du lịch nước ngoài vậy (chắc trong tương lai phải có quầy phục vụ đổi tiền Libra chứ nhỉ 😊). Khi đổi tiền “thật” sang đồng Libra thì Libra Reserve sẽ nhập một lượng tiền tương đương và ghi vào ví điện tử của người dùng đúng bằng lượng tiền Libra Reserve nhập vào. Quá trình này gọi là đúc tiền (minted). Ngược lại, khi người dùng đổi tiền Libra ra tiền “thật” thì một lượng Libra tương đương sẽ bị hủy (burned).

Hiện nay các thành viên của Hiệp hội Libra đóng góp một khoản tương đương 10 triệu đô la Mỹ. Sau khi đóng góp mỗi thành viên nhận được Libra Investment Token (một dạng chứng nhận đầu tư vào Libra). Đây là điểm khác biệt rõ nhất của Libra so với Bitcoin và Ethereum.

≋|₿|Ξ

6. Proof-of-Work vs. Proof-of-Stake.

Để bảo vệ blockchain, chống lại việc kẻ gian có thể tấn công, Satoshi Nakamoto đã tạo ra một khái niệm có tên gọi là Proof-of-Work: Để tạo ra khối tiếp theo, người đào mỏ phải tạo ra một kết quả “băm” (hàm hashcash tác động lên khối ngay đằng trước và độc số nonce) và phải nhỏ hơn một ngưỡng quy định. Vì hàm số băm không có hàm giải ngược nên người “đào mỏ” chỉ mỗi một cách là biến đổi dần số nonce và kiểm tra từng kết quả. Việc này đòi hỏi rất nhiều tính toán. Đây là điểm bị chỉ trích của Bitcoin: lãng phí về lượng tính toán (hàng chục nghìn hệ thống cùng làm một việc giống nhau và độc lập với nhau) và không có cơ chế hợp tác của những người “đào mỏ”.

- Hệ thống Ethereum lúc đầu cũng cùng nguyên tắc với Bitcoin (nghĩa là sử dụng Proof-of-Work). Nhưng Ethereum sẽ chuyển sang một khái niệm mới gọi là Proof-of-Stake. Trong hệ thống Proof-of-Stake, người “đào mỏ” sẽ được thay bằng “Validator” (người xác nhận). Trong hệ thống này người xác nhận không cần giải bài “đánh đố” hàm hashcash, nhưng phải đặt cược một lượng tiền ảo (Ether). Nếu có hành vi gian lận thì lượng tiền này sẽ bị mất. Tiền thưởng cho Validator là phí giao dịch. Người chuyển tiền phải trả phí giao dịch (cái này giống ngân hàng 😊). Phí giao dịch và lưu trữ trong Ethereum được gọi là Gas Price (Gas là khái niệm ảo, không có thật trong đời thường).

- Hệ thống Libra sử dụng Proof-of-Stake và nhiều khái niệm của hệ thống Ethereum. Chú ý rằng Proof-of-Stake kém an toàn hơn Proof-of-Work, dễ bị tấn công. Và đã gọi là có “người xác nhận” thì hệ thống này chưa thực sự “phân tán” theo đúng nghĩa của nó.

≋|₿|Ξ

7. Lập trình trên Blockchain.

Để thực hiện các giao dịch trên blockchain, mỗi một hệ thống có “ngôn ngữ lập trình” riêng.  

- Bitcoin sử dụng ngôn ngữ kịch bản Bitcoin Script. Công việc chính của lập trình trên blockchain của Bitcoin là xử lý giao dịch: chuyển Bitcoin từ A đến B.

- Ethereum sử dụng Ethereum Virtual Machine bytecode (EVM). Hệ thống Ethereum đã mở rộng tính năng của blockchain, không đơn thuần chỉ dùng trong thanh toán. Hệ thống Ethereum đưa Smart Contract vào để lập trình trên blockchain. Ngôn ngữ EVM có nhiều tính năng hơn Bitcoin Script: có thể tạo cấu trúc dữ liệu, có vòng lặp, có định nghĩa các thủ tục (user-defined procedure) và gọi hàm. Tuy nhiên, tính “mở” của EVM lại vô tình có thể tạo ra nhiều lỗi lập trình, thiếu tính tự kiểm duyệt logic giữa đầu vào và đầu ra như của Bitcoin Script.

- Libra sử dụng ngôn ngữ lập trình trên blockchain có tên là Move: first-class assets, flexibility, safety, and verifiability. Lập trình trên Libra tương tự như trên Ethereum: xử lý giao dịch và Smart Contract. Trong ngôn ngữ Move, Smart Contract được đặt tên là Module.

Nói gọn lại, Libra có vẻ như tích hợp các ưu điểm của Bitcoin và Ethereum, nhưng kém “ảo” hơn, chưa thoát ra khỏi hoàn toàn … a middleman.

Tôi tin là anh/chị đã hoàn tất tách cà phê của mình.

 

2019/05/04

☕ Nhàn đàm ICT: 5G 📶

Phác họa bài post:

1. Tốc độ - Milimeter Waves

2. Small Cells (tạm dịch: trạm nhỏ)

3. Massive MIMO (multiple-input multiple-output - tạm dịch: nhiều đầu ra đa đầu vào)

4. Beamforming (tạm dịch: chùm tia)

5. Full Duplex (tạm dịch: song công hoàn toàn)

6. Khai thác mạng 5G

7. IoT và 5G

-

Thấy chủ đề 5G có vẻ “hot”, nên xin phép nhàn đàm bằng cách Google từ khóa “5G” và báo cáo anh/chị kết quả tìm thấy, góp phần hâm nóng giữ nhiệt cà phê của anh/chị!

Đi ngược dòng thời gian chúng ta trải qua các thế hệ di động từ 1G đến 4G:

* 1G (thế hệ thứ nhất - analog mobile phone system –chỉ thu phát trong phạm vi một thành phố),

* 2G (thế hệ thứ hai – số hóa các tín hiệu tương tự và lập mạng lưới các trạm thu phát trên quy mô quốc gia),

* 3G (thế hệ thứ ba – tăng tốc độ truyền lên 3Mbps và cùng với smartphones, điện thoại di động trở thành một máy tính cá nhân có chức năng truyền tải đa phương tiện – multimedia) và gần đây nhất là

* 4G LTE (LTE: Long Term Evolution) – có thế đạt đến tốc độ 86Mbps (về mặt lý thuyết là như thế nhưng trên thực tế chỉ đạt khoảng 8.4Mbps). LTE có giao thức tương thích với giao thức Internet (TCP/IP), chấp nhận Multi-band, Multi-mode (đa dải băng tần, đa chế độ).

Một cách ngắn gọn:

1G: thoại,

2G: thoại + tin nhắn,

3G: thoại + tin nhắn + dữ liệu,

4G: là 3G … nhưng nhanh hơn.

Lẽ tự nhiên, sau 4G sẽ là 5G. 5G thấy nói có thể nhanh hơn 4G đến 100 lần! Tôi, cũng giống như anh/chị, tò mò sẽ tự đặt câu hỏi: bằng cách nào?

1. Tốc độ - Milimeter Waves

Về mặt nguyên tắc, muốn tăng tốc độ truyền thì phải chọn dải tần cao. Mà dải tần cao cũng đồng nghĩa với bước sóng ngắn. 5G sử dụng dải tần có bước sóng chỉ cỡ mili mét (trong khoảng từ 1 đến 10 mili mét). Theo Wikipedia thì 5G có 2 dải tần chính:

Dải tần 1 (< 6 GHz): Người ta thường chọn dải tần xung quanh 3.5 GHz;

Dải tần 2 (> 24 GHz): Một số nhà mạng chọn 28 GHz và 39 GHz;

Trước 5G, dải tần cao thường chỉ dùng cho truyền thông tin trên vệ tinh và các hệ thống ra-đa.

Truyền dải tần cao có một điểm bất lợi: sóng truyền ở dải tần này bị cản bởi các tòa nhà, bị cây cối hấp thụ sóng, chỉ truyền ở khoảng cách gần - không truyền được xa. Như vậy các trạm thu/phát (Base Station – gọi là trạm gốc) thế hệ cũ không đáp ứng được. Cách làm là các trạm gốc truyền tín hiệu đến các trạm chuyển tiếp đến các trạm nhỏ (small cell) và các trạm nhỏ có nhiệm vụ kết nối với thiết bị di động của người dùng. Một cách ngắn gọn: Trạm gốc – Trạm nhỏ – Thiết bị người dùng.

2. Small Cells (tạm dịch: trạm nhỏ)

Các Small Cells là các trạm thu nhỏ với công suất tối thiểu đặt cách nhau khoảng 250 mét làm trung gian truyền tín hiệu từ các “trạm gốc” đến các thiết bị di động. Để ngăn tín hiệu bị rơi, các nhà mạng có thể cài đặt hàng ngàn trạm này trong thành phố để tạo thành một mạng lưới dày đặc hoạt động như một nhóm chuyển tiếp, nhận tín hiệu từ các trạm gốc và gửi dữ liệu tới người dùng ở bất kỳ vị trí nào. Như vậy, một trạm gốc truyền tín hiệu đến các “trạm nhỏ” và các “trạm nhỏ” truyền tín hiệu đến thiết bị của người dùng. Ngược lại, thiết bị người dùng truyền tín hiệu đến các “trạm nhỏ” và các “trạm nhỏ” lại chuyển tiếp tín hiệu đến các trạm gốc. Các trạm nhỏ cũng có ăng ten nhưng ăng ten nhỏ hơn nhiều so với ăng ten của trạm gốc.

Bên lề

Tháng 4/2019 Hàn Quốc đã triển khai 5G: SK Telecom đã thiết lập 38.000 trạm, KT Corporation 30.000 và LG U Plus 18.000. 85% số các trạm này nằm ở sáu thành phố lớn.

Bên lề

Việc thiết lập các “small cells – trạm nhỏ” ở nông thôn, vùng sâu, vùng xa sẽ gặp nhiều khó khăn hơn.

3. Massive MIMO (multiple-input multiple-output - tạm dịch: nhiều đầu ra đa đầu vào)

Hiểu một cách đơn giản của khái niệm này là tăng số ăng ten thu-phát của trạm gốc.

Các trạm 4G có 12 cổng cho ăng ten xử lý tất cả lưu lượng di động: tám cổng cho máy phát và bốn cổng cho máy thu. Nhưng các trạm gốc 5G có thể hỗ trợ trên 100 cổng - nghĩa là nhiều ăng ten hơn có thể nằm trên một mảng. Điều đó có nghĩa là một trạm gốc có thể gửi và nhận tín hiệu với nhiều người dùng hơn cùng một lúc, tăng dung lượng của mạng lên gấp hơn 22 lần trong lúc vẫn sử dụng cùng một dải băng tần.

Công nghệ này có tên gọi là MIMO (multiple-input multiple-output). MIMO phỏng theo các hệ thống vô tuyến sử dụng hai hoặc nhiều máy phát và máy thu để gửi và nhận nhiều dữ liệu cùng một lúc. MIMO đã được đưa vào 4G nhưng MIMO loạt lớn (Massive MIMO) trong 5G nâng lên một tầm mới: hàng trăm.

Bản thân MIMO cũng phát sinh vấn đề. Khi có nhiều ăng ten thu – phát cùng một lúc, hiện tượng can nhiễu chéo xuất hiện.

4. Beamforming (tạm dịch: chùm tia)

Beamforming là hệ thống truyền tín hiệu bằng cách định tuyến tối ưu từ trạm đến thiết bị người dùng, vì vậy giảm mức nhiễu chéo từ các thiết bị gần đấy. Hiểu một cách đơn giản là trạm xác định ăng ten nào sẽ phát đến người dùng nào và hướng chùm tia phát theo hướng của người dùng đó. Bằng cách này, các ăng ten không phát đẳng hướng, phát theo hướng nhằm tới người dùng và vì vậy giảm gây nhiễu lẫn nhau.

5. Full Duplex (tạm dịch: song công hoàn toàn)

Theo cách thông thường nếu gửi và nhận trên cùng một tần số thì phải thay lượt nhau: gửi – nhận – gửi – nhận … Hoặc gửi trên một tần số và nhận trên một tần số khác (cách này phải dùng 2 tần số cho một đường truyền).

Với công nghệ Full Duplex việc gửi và nhận nằm trên cùng một tần số và xảy ra “đồng thời”. Nghĩa là với cách này, người ta tăng gấp đôi tốc độ truyền và chỉ sử dụng một tần số. Trong quân sự, người ta thực hiện công nghệ này sử dụng các tấm mạch có kích cỡ khá lớn. Cái khó trong 5G là phải cấy được các công tắc đảo mạch (switch) trong con chíp đủ nhỏ nằm trong các điện thoại di động cầm tay.

Một cách ngắn gọn, 5G tăng tốc độ nhờ:

1 - sử dụng dải tần có bước sóng cực ngắn,

2 - sử dụng mạng lưới dày đặc các trạm gốc – trạm nhỏ,

3 - tăng số ăng ten trên mỗi trạm,

4 - tối ưu hóa bằng định tuyến chùm tia và

5 - truyền thông tin với công nghệ song công hoàn toàn.

6. Khai thác mạng 5G

Muốn mạng 5G có tác dụng thì các thiết bị đầu cuối, ví dụ như smartphone, phải có chức năng 5G chứ! 😊 Không rõ máy của anh/chị thế nào chứ máy của tôi không có lựa chọn nào là 5G cả. Nếu anh/chị có món tiền nhàn rỗi để đổi đời smartphone, có lẽ chúng ta vẫn cần điểm qua trên mạng xem họ nói hãng nào có smartpone hỗ trợ 5G và vào lúc nào nhé:

APPLE: iPhone, phỏng đoán là năm 2020

GOOGLE: Snapdragon 855, phỏng đoán là cuối năm 2019

HMD GLOBAL (NOKIA): Không thấy nói gì đến 5G cả!

HONOR: Hình như là nửa cuối năm 2019.

HTC: Hình như là nửa cuối năm 2019.

HUAWEI: Huawei Mate X

LG: LG V50 ThinQ

MOTOROLA/LENOVO: Moto Z3

ONEPLUS: Chỉ biết là trong năm 2019, chưa biết lúc nào

OPPO: Oppo Find X 5G, Oppo R15

SAMSUNG: Samsung Galaxy S10 5G, Samsung Galaxy Fold

SONY: Có thể là năm 2019!

XIAOMI: Xiaomi Mi Mix 3

ZTE: Axon 10 Pro 5G

Như vậy, để có trải nghiệm 5G trên smartphone, phần lớn trong chúng ta phải đợi đến năm 2020. Nhân tiện, anh/chị trải nghiệm luôn thực tại ảo Formula 1 tại Mỹ Đình, Hà Nội vào tháng 4 năm sau 😊

7. IoT và 5G

Người ta nói 5G mở đường cho các ứng dụng IoT. Tại sao vậy?

IoT (Internet of Things – Internet vạn vật) cần môi trường truyền dẫn vô tuyến trên diện rộng. Nếu chỉ dừng ở diện rộng thì chỉ cần 2G, 3G, 4G thôi chứ, đâu cần 5G? Vấn đề là các mạng 2G, 3G, 4G có sức tải bao nhiêu thiết bị trên một đơn vị diện tích, ví dụ 1 km vuông? Thời gian đáp ứng như thế nào?

Mạng 4G có sức tải khoảng 4000 thiết bị di động / km vuông. Mạng 5G có sức tải 1.000.000 thiết bị di động / km vuông. Chúng ta tưởng tượng khi các ứng dụng IoT trở nên phổ biến (xe tự lái, các thiết bị y tế kết nối, các thiết bị trong đô thị thông minh, kết nối trong các kho hàng, …) thì lượng các sensors (cảm biến) trên một km vuông sẽ tăng đột biến. Lúc đó chỉ có mạng 5G (trở lên) mới chịu được.

Các lĩnh vực ứng dụng IoT gắn liền với 5G bao gồm Ô tô tự lái, y tế, hậu cần (logistics), đô thị thông minh, hệ thống bán lẻ.

---

Báo cáo với anh/chị kết quả Google search còn dài lắm, nhưng tôi phải dừng để anh/chị còn nhâm nhi cà phê, không nó nguội mất.

 

☕ Nhàn đàm S&T: Humanoid Robots 🤖

Phác họa bài post: Đề dẫn. ❶. Humanoid Robots hoạt động thế nào? ❷. Lắp ghép một Humanoid Robot như thế nào? ❸. Huấn luyện Humano...