Trang chủ Công nghệ & Ứng dụng Công nghệ & Ứng dụng Phát triển nền tảng cho ứng dụng nhanh trí tuệ nhân tạo trong công nghiệp

Phát triển nền tảng cho ứng dụng nhanh trí tuệ nhân tạo trong công nghiệp

GIỚI THIỆU

Mục tiêu của bài báo này nhằm giới thiệu về một nền tảng trí tuệ nhân tạo (AI Platform), được xây dựng bởi TS. Nguyễn Tuấn Nghĩa, cựu SV K43, Tự động hóa, ĐHBách khoa Nội, hiện đang sống và làm việc tại thành phố Sydney, Úc.

Có lẽ mọi kỹ sư, đặc biệt là những người đang làm trong lĩnh vực Tự động hóa, Điều khiển, CNTT đều hiểu công nghệ AI là công nghệ bản lề trong cuộc cách mạng công nghiệp 4.0. Chính vì lẽ đó các tập đoàn lớn trên thế giới đều tự phát triển nền tảng AI cho riêng mình. Có thể kể vài tên tuổi lớn như Google phát triển Tensorflow, Mircosoft phát triển Microsoft Cognitive Toolkit (CNTK), Apache xây dựng MXNET, Berkeley AI Research phát triển Caffe, và Pytorch được xây dựng trên nền tảng của nhóm nghiên cứu AI của Facebook.

Phần lớn các nền tảng nêu trên đều sử dụng Python, như công cụ cho phép viết những đoạn mã (scripts) nhằm ra lệnh cho hệ thống hoạt động theo yêu cầu của người dùng. Trong một nỗ lực nhằm đơn giản hóa việc lập trình (coding), Keras đã được xây dựng với giao diện người dùng thân thiện và phần lõi (backend) sử dụng thư viện của Tensorflow và CNTK. Tuy nhiên, người thiết kế vẫn phải có kỹ năng lập trình Python nhất định, hiểu rõ các thư viện liên quan như numpy, pandas, opencv, cuda,… đồng thời phải có kiến thức sâu về học sâu (deep learning), học máy (machine learning) cũng như kỹ năng xử lý dữ liệu để thiết kế một hệ thống trí tuệ nhân tạo hoàn chỉnh. Điều này là một trở ngại lớn trong việc triển khai nhanh AI trong các ứng dụng thực tế.

Một điều cần quan tâm là việc triển khai hệ thống AI lên các phần cứng không hỗ trợ Python. Để giải quyết vấn đề này, các tập đoàn lớn đã xây dựng hệ thống điện toán đám mây (cloud computing servers) với dịch vụ web service nhằm mục đích tạo môi trường bao gồm Python và các thư viện liên quan để hỗ trợ cho việc triển khai AI. Các ứng dụng sẽ liên kết với cách dịch vụ này thông qua Web API để thực hiện triển khai AI. Tuy nhiên, phương pháp này sẽ kém khả thi cho các ứng dụng thời gian thực (real-time) như các hệ thống điều khiển robots, dây chuyền công nghiệp,…

Để giải quyết các vấn đề trên, TS. Nguyễn Tuấn Nghĩa và các cộng sự tại ANSCENTER (https://www.anscenter.com) đã phát triển nền tảng AI mới. Hệ thống bao gồm hai thành phần chính ANNHUB (machine learning) và DLHUB (deep learning). Tư tưởng xuyên suốt của thiết kế này là người dùng hoàn toàn thiết kế mô hình AI bằng giao diện kéo thả với hệ thống trợ giúp xác thực tính khả thi của mô hình AI (model verfication).  

Bên cạnh đó, cả ANNHUB và DLHUB đi kèm với các giao diện lập trình ứng dụng Application Programming Interface (API) cho các ngôn ngữ lập trình thông dụng như LabVIEW, C, C++, C#, Java,… Vì thế, sau khi cấu trúc AI được huấn luyện trên ANNHUB hoặc DLHUB, cấu trúc đó có thể dễ dàng triển khai trực tiếp xuống các hệ thống phần cứng mà không cần viết mã cho riêng các thiết bị vi xử lý đó. Điều này là ưu điểm vượt trội trong triển khai ứng dụng so với các nền tảng AI khác như Tensorflow, CNTK, MXNET,…

Trong phần tiếp theo, công việc triển khai hệ thống AI cơ bản sẽ được trình bày gồm 5 bước. Tiếp theo là việc áp dụng 5 bước trên ứng dụng bộ công cụ ANNHUB để xây dựng. Các bước hướng dẫn chi tiết cũng có thể được tham khảo thông qua kênh Youtube ANS CENTER.

QUY TRÌNH THIẾT KẾ AI

Để hiểu về quy trình thiết kế hệ thống AI, trước tiên chúng ta cần phải hiểu cấu trúc của hệ thống AI như sau:

alt

Hình 1: Mô hình không xác định (trên) và cấu trúc mạng của hệ thống AI (dưới).

Hệ thống AI có thể coi như một mạng lưới neurons có cấu trúc riêng, nhằm mô tả một mô hình không xác định (unknown model) (hình 1-trên). Về mặt toán học, hệ thống AI có thể được coi như là một mô hình toán học gồm nhiều đầu vào và nhiều đầu ra. Các hàm toán học đó được mô tả như một cấu trúc mạng (hình 1 - dưới). Cấu trúc mạng này bao gồm các lớp neuron (layer) liên kết với nhau theo một cấu trúc đặc biệt, và mỗi layer sẽ bao gồm mối liên kết giữa các neurons và các neuron đầu ra (output neuron) thường đi qua một hàm kích hoạt (activation function). Dựa vào các mối liên kết khác nhau, các dạng layer khác nhau sẽ được hình thành. Các layer thông dụng bao gồm Fully-Connected layer (Dense layer), Convolution layer, Pooling layer, Dropout layer, Flatten layer, ResNet layer, Recurrent LSTM layer, và Embedding layer,

Ứng dụng của AI thường được dùng cho các bài toán mà, mô hình toán học tường minh cho đối tượng là chưa xác định. Thay vào đó, các phản ứng đầu ra của mô hình đó (outputs) đối với tác động đầu vào (inputs) được thu thập dựa trên quá trình thu thập dữ liệu. Tập hợp các dữ liệu này tạo thành tập liệu (dataset) cho mô hình đó. Nói cách khác, tập dữ liệu này mô tả đặc tính của mô hình. Để học được đặc tính của mô hình đó, hệ thống AI sẽ được huấn luyện dựa trên tập dataset. Quá trình huấn luyện thực chất là quá trình tối ưu hóa nhằm tìm các tham số của hệ thống AI sao cho sau khi kết thúc quá trình huấn luyện, hệ thống AI có đặc tính gần nhất với đặc tính của mô hình không xác định.

Trong thực tế, quy trình thiết kế AI này được thực hiện theo 5 bước như hình 2 sau:

alt

Hình 2: Quy trình thiết kế hệ thống AI

Bước 1: Chuẩn bị dữ liệu (Data preparation)

Ở bước này, mô hình không xác định được kích hoạt bằng các tín hiệu đầu vào khác nhau và phản ứng đầu ra được thu thập. Tín hiệu đầu vào là input và phản ứng đầu ra gọi là target hoặc actual output. Tập hợp input-target sẽ tạo thành dataset. Dataset này sẽ được xử lý bằng các phương pháp xử dữ liệu trước khi chia ra làm 2 tập: training dataset và test dataset.

Bước 2: Thiết kế hệ thống AI

Dựa vào cấu trúc của dataset mà cấu trúc của một hệ thống AI được thiết kế sao cho tối ưu và đạt độ chính xác cao nhất. Quá trình này đòi hỏi người thiết kế phải có kiến thức sâu rộng về AI.

Bước 3: Huấn luyện hệ thống AI

Các thuật toán tối ưu hóa (optimisation algorithms) được sử dụng để huấn luyện hệ thống AI. Trong quá trình này, tập training dataset sẽ được chia nhỏ thành 3 tập gồm có: training set được sử dụng để điều chỉnh tham số của hệ thống AI, tập validation set dùng để giám sát quá trình học của hệ thống nhằm tránh hiện tượng dữ liệu bị trùng lặp (overfitting), và tập test set đánh giá hệ thống AI (chi tiết ở bước 4).

Bước 4: Đánh giá và kiểm tra hệ thống AI đã được huấn luyện (trained AI model)

Các phương pháp đánh giá như Confusion Matrix, ROC curve, Regression curve,… được sử dụng để đánh giá độ ổn định và độ chính xác của hệ thống AI (đã được huấn luyện) trên bộ test set. Bộ dữ liệu này hoàn toàn không được sử dụng trong quá trình huấn luyện mạng. Nói cách khác, hệ thống AI hoàn toàn không có thông tin gì về bộ dữ liệu này trong quá trình huấn luyện. Trong bước này, hệ thống AI có thể được huấn luyện lại nếu nó không đạt yêu cầu về độ chính xác và độ ổn định.

Bước 5: Triển khai hệ thống AI

Sau khi hệ thống AI được huấn luyện để học đặc tính của mô hình không xác định, nó sẽ được sử dụng để thay thế mô hình đó trong các ứng dụng nhận dạng, dự đoán và điều khiển thực tế.

ANNHUB -NỀN TẢNG MACHINE LEARNING

ANSCENTER phát triển nền tảng học máy (ANNHUB) với mục đích đơn giản hóa việc thiết kế hệ thống đồng thời dễ dàng triển khai hệ thống đó xuống các phần cứng cho trước. ANNHUB chỉ tập trung vào cấu trúc mạng truyền thẳng 3 lớp (3 layer Multi Perceptron Neural Network). Trong thực tế, hầu hết các bài toán về AI có lượng đầu vào vừa và nhỏ (number of inputs <1000) đề có thể sử dụng cấu trúc mạng truyền thẳng 3 lớp.

Ưu điểm của ANNHUB khi tập trung vào cấu trúc 3 lớp trên gồm có:

-Hỗ trợ các thuật toán huấn luyện cấp cao như là Scaled-Conjugate Gradient, Quasi-Newton, Levenberg-Marquardt, và Bayesian Regularization.

-Áp dụng được vào hầu hết các bài toán có lượng đầu vào không quá lớn

-Dễ dàng triển khai xuống bất kỳ phần cứng nào, kể cả vi điều khiển có bộ nhớ rất nhỏ.

ANNHUB thiết kế mạng truyền thẳng theo quy trình 5 bước như sau:

Bước 1: Nhập dữ liệu vào ANNHUB

ANNHUB hỗ trợ dữ liệu định dạng “CSV”, có cấu trúc bảng (table). Dòng đầu tiên của bảng dữ liệu định nghĩa tên các biến đầu vào (inputs) và đầu ra (outputs) của dữ liệu. Tên của biến đầu ra được phân biệt với biến đầu vào bởi từ khóa “output”, “target” hoặc “class”. Các dòng tiếp theo (row) của bảng dữ liệu mô tả một mẫu (sample or observation) của dữ liệu.

Khi dữ liệu được nhập vào ANNHUB bằng cách chọn đúng tệp tin dữ liệu (training dataset file) ở hình 3, ANNHUB sẽ hiện thị một phần thông tin của dữ liệu để đảm bảo dữ liệu được nhập đúng. Nhưng quan trọng hơn, ANNHUB sẽ dựa vào cấu trúc của dữ liệu mà gợi ý cấu trúc tối ưu của mạng neuron (Neural Network) được thiết kế ở bước tiếp.

alt

Hình 3: Nhập dữ liệu vào ANNHUB

(1): Chọn đúng đường dẫn tới tệp tin chứa dữ liệu

(2): Chuyển sang bước thiết kế mạng neuron

Bước 2: Thiết kế cấu trúc mạng neuron

Thông thường đây là bước khó nhất vì nó yêu cầu người thiết kế phải hiểu rõ lý thuyết học máy nói chung và mạng nơ ron nói riêng. Tuy nhiên, ANNHUB có tính năng tự động gợi ý (auto suggestion/recommendation) cấu trúc tối ưu dựa vào cấu trúc dữ liệu được nhập vào (Hình 4). Vì thế, việc thiết kế hệ thống mạng neuron trở nên đơn giản và dễ dàng. Bên cạnh đó, người thiết kế vẫn có thể tùy chỉnh các tham số mạng theo thiết kế của mình nhằm đạt được kết quả tốt nhất.

alt

Hình 4: Thiết kế cấu trúc mạng trên ANNHUB

(1): Chọn thuật toán huấn luyện,

(2): Chọn hàm kích hoạt (activation function) cho lớp ẩn (hidden layer) và lớp ra (outoput layer)

(3) & (4): Chọn phương pháp xử lý dữ liệu đầu vào và đầu ra

(5): Chọn tỉ lệ chia dữ liệu ra làm training set, validation set và test set

(6): Chọn số lượng neuron trong hidden layer

(7): Chọn hàm cost function cho quá trình tối ưu hóa.

Bước 3: Huấn luyện mạng neuron

Sau khi cấu trúc mạng được thiết kế, mạng neuron đó sẽ được huấn luyện để học những đặc điểm quan trọng (key features) trong tập dữ liệu, từ đó có thể thực hiện việc dự đoán hoặc nhận dạng đối với các dữ liệu mới.

Trong quá trình này, các tham số huấn luyện (training parameters) và điều kiện để quá trình huấn luyện kết thúc (stopping criteria) là các tham số quan trọng. Chúng quyết định kết quả của quá trình huấn luyện mạng, ảnh hưởng trực tiếp đến độ chính xác, độ ổn định của mạng neuron. Tương tự như quá trình thiết kế, ANNHUB cũng gợi ý các tham số tối ưu nhằm đơn giản hóa quá trình huấn luyện.

Trong quá trình huấn luyện, hiện tượng overfitting thường xuyên xảy ra. Hiện tượng này xảy ra khi mạng neuron học tốt tập tranining set, nhưng cho kết quả sai ở các tập dữ liệu khác (validation set và test set). Nói cách khác, kết quả huấn luyện ở tập training set rất tốt, tuy nhiên mạng neuron đó lại không cho kết quả đúng trong ứng dụng thực tế.

Để giải quyết vấn đề này, có hai kỹ thuật phổ biến thường được áp dụng trong quá trình huấn luyện. Kỹ thuật dừng sớm (early stopping technique) là kỹ thuật dùng 3 tập dữ liệu: training dataset dùng để huấn luyện tham số mạng, validation dataset dùng để giám sát thời điểm overfitting (điểm 3 trong hình 5), và test dataset dùng để kiểm tra kết quả huấn luyện. Tự động điều chỉnh (auto regularization), là kỹ thuật sử dụng lý thuyết xác xuất (Bayes theorem) nhằm giới hạn sự thay đổi các tham số mạng neuron trong quá trình huấn luyện, từ đó sẽ tránh được hiện tượng overfitting. Phương pháp tự động điều chỉnh thường được sử dụng trong các bài toán có tập dữ liệu nhỏ hoặc rất nhỏ vì phương pháp này không cần đến tập validation dataset và toàn bộ tập dữ liệu có thể được dùng cho tập training dataset.

ANNHUB hỗ trợ cả 2 phương pháp trên một cách tự động giúp đơn giản hóa quá trình huấn luyện mạng đến mức tối đa. Hơn thế nữa, bằng cách thiết lập tham số Max Fails (điểm 1 trong hình 5), ANNHUB cho phép quá trình huấn luyện được lặp lại nhiều lần và tự động tìm được bộ tham số tối ưu đem lại độ chính xác và độ ổn định cao nhất cho mạng neuron được huấn luyện (trained Neural Network).

alt

Hình 5: Huấn luyện mạng neuron trong ANNHUB

(1): Chọn tham số điều khiển quá trình kết thúc huấn luyện

(2): Chọn tham số huấn luyện

(3): Kỹ thuật early stopping giúp tìm ra điểm tối ưu

Bước 4: Đánh giá độ ổn định và độ chính xác của trained Neural Network.

Sau khi mạng neuron được huấn luyện, độ chính xác và độ ổn định của mạng được đánh giá bằng các phương pháp đánh giá như Confusion Matrix, ROC curves, hoặc Regression Curves trên các tập dữ liệu.

ANNHUB hỗ trợ tất cả các phương pháp đánh giá đó. Hơn thế nữa, ở phương pháp Confusion Matrix, ANNHUB còn cung cấp các thông số cụ thể như là độ nhậy (Sensitivity) và độ chính xác (Specificiy) (HÌnh 6) nhằm giúp người thiết kế có cái nhìn toàn diện hơn về độ chính xác và độ ổn định của quá trình huấn luyện. Từ đó sẽ có quyết định sẽ dùng hoặc huấn luyện lại mạng hay thu thập lại dữ liệu huấn luyện.

alt

Hình 6: Đánh giá độ chính xác và độ ổn định của trained Neural Network trên ANNHUB

(1): Confusion Matrix trên tập training dataset

(2): Confusion Matrix trên tập Validation dataset

(3): Confusion Matrix trên tập Test dataset

Bước 5 - Kiểm tra: Kiểm tra mô hình với tập dữ liệu mới.

Trước khi triển khai mô hình xuống phần cứng cho trước, ANNHUB cho phép kiểm tra độ chính xác và độ ổn định với tập dữ liệu hoàn toán mới trong Test Interface. Các phương pháp đánh giá độ ổn định và độ chính xác đều được tích hợp trong Test Interface này. Thông tin về phản ứng của trained Neural Network với bộ dữ liệu mới này được mô tả chi tiết (Hình 7). Điều này giúp người thiết kế có những kết luận chính xác trước khi quyết định sử dụng mô hình (model) trong các ứng dụng cụ thể.

alt

Hình 7: Kiểm tra độ chính xác và độ ổn định của trained Neural Network trên tập dữ liệu mới.

(1): Chọn đường dẫn tới tập dữ liệu dữ liệu mới

(2): Kiểm tra độ chính xác.

Bước 6 - Triển khai: Triển khai mô hình đã huấn luyện xuống phần cứng.

Sau khi mạng neuron được huấn luyện, đánh giá và kiểm tra trên tập dữ liệu mới, ANNHUB cho phép trích xuất (export) cấu trúc mạng đó dưới định dạng tập tin (text file structure) cho một ngôn ngữ lập trình cụ thể. Tập tin này sẽ lưu trữ thông tin của mạng neuron đã được huấn luyện, cũng như các tham số của nó (Hình 8)

Để sử dụng mạng neuron này trong các ngôn ngữ lập trình khác nhau, ANNHUB cung cấp giao diện lập trình cho các ngôn ngữ này (API). Bằng cách sử dụng các API này, người thiết kế có thể dễ dàng thiết kế chương trình AI để thực hiện các thuật toán thông minh như nhận dạng hay dự báo trong ngôn ngữ lập trình cho phần cứng cụ thể nào đó. Các chương trình AI đó sẽ được biên dịch và tải trực tiếp xuống phần cứng.

Điểm đặc biệt là các hàm API này không cần bao gồm các thuật toán tối ưu để huấn luyện mạng, nên các API này rất tối ưu về bộ nhớ và gọn nhẹ. Chính vì thế mà ANNHUB cho phép triển khai mạng neuron xuống vi xử lý Andruino với bộ nhớ chỉ có 20kB (hình 9). Điều này là không thể đối với các nền tảng AI khác.

alt

Hình 8: Export trained Neural Network cho các ngôn ngữ lập trình khác nhau.

(1): Chọn Export Neural Network để hiện thị của sổ export

(2): Chọn ngôn ngữ lập trình/môi trường để export trained Neural Network

Để minh hoạ sự đơn giản của quá trình triển khai AI xuống phần cứng, vi xử lý STM32F103C8 với bộ nhớ Flash là 64kB và bộ nhớ RAM là 20kB, speed Clock là 72Mhz và không hỗ trợ floating point unit được sử dụng. Vi xử lý này được nạp sẵn firmware để có thể hoạt động như một con chíp Arduino, và nó được gọi là Blue Pill hay STM32duino. ANNHUB cho phép export cấu trúc mạng neuron sang chương trình có định dạng Arduino một cách trực tiếp mà không cần bất cứ thư viện ngoài nào. Chương trình này được mở trực tiếp trên môi trường tích hợp phát triển Arduino Integrated Development Enviroment (IDE). Người dùng có thể chỉnh sửa chương trình theo ý muốn và gọi hàm Predict(Input, Output) để thực hiện thuật toán AI về nhận dạng hoặc dự báo. Chương trình này sau đó được dịch và tải xuống bộ nhớ flash của chip Arduino (hình 9).

alt

Hình 9: Dịchvà tải mô hình đã huấn luyện vào bộ nhớ của vi xử lý STM32 (Arduino)

KẾT LUẬN

Mặc dù là bài mang tính tổng quan, nhưng các tác giả đã cố gắng trình bày tương đối chi tiết các bước trong quá trình thiết kế hệ thống AI hoàn chỉnh sử dụng công cụ ANNHUB. Phần tiếp theo của bài báo này là bài khác về hệ thống DLHUB - Nền tảng Deep Learning. Các công cụ giới thiệu trên có thể hoàn toàn tải về miễn phí từ trang Web https://www.anscenter.com/. Người đọc quan tâm tới tìm hiểu sâu hơn về công cụ này cũng có thể tìm thấy các ví dụ hướng dẫn, các ứng dụng AI trong thực tế triển khai trong công nghiệp tại trang Web trên. Mong muốn của các tác giả là xây dựng điểm khởi đầu cho các nhà nghiên cứu, kỹ sư, sinh viên trong quá trình làm quen với ứng dụng AI và áp dụng trong công việc thường ngày của mình. Cuộc cách mạng công nghiệp 4.0 thực sự đã gây áp lực chuyển đổi năng lực cho rất nhiều người. Các kiến thức cũ đã bị lấn át bởi sử phát triển vũ bão của kiến thức trên nền công nghiệp chuyển đổi số, và nếu không bắt đầu sớm, chúng ta sẽ dần bị tụt hậu và sẽ trở nên lạc hậu hoàn toàn trong thế giới số mới. Thông qua tạp chí Tự động hóa, chúng tôi hy vọng sẽ xây dựng series các bài viết của các chuyên gia về các lĩnh vực rất nóng hiện nay như, nhà máy thông minh (smart factory), dây chuyền thông minh trong nhà máy nông nghiệp thông minh, giám sát bằng camera, trường học thông minh,… Chúng tôi cũng hy vọng tạp chí sẽ là đầu mối đề các kỹ sư đang cùng làm việc lĩnh vực này có điều kiện trao đổi, trình bày sản phẩm mới nhất của mình trong lĩnh vực công nghiệp 4.0 hiện nay tại Việt Nam.

Trong bài báo, có khá nhiều các thuật ngữ tiếng Anh, chúng tôi chưa thể dịch sát sang từ tiếng Việt tương đương. Vì thế, cũng thông qua tạp chí Tự động hóa, chúng tôi cũng mong muốn cộng đồng công nghệ Việt Nam, cùng chung sức trong việc xây dựng từ điển tiếng Anh chuyên ngành trong lĩnh vực AI, nhằm phục vụ cho các ấn bản tiếp sau.

Theo TS. Nguyễn Tuấn Nghĩa - CEO ANSCENTER; PGS. Nguyễn Hồng Quang - ĐH Bách khoa Hà Nội

Tạp chí Tự động hóa ngày nay, số tháng 8/2019


Older news items:

 

Hỗ trợ online

Hỗ trợ Web
Mr Phương: 0988906030

Liên kết & Quảng cáo


 
 
 






 


 

Nhà tài trợ


Sửa biến tần

Mới cập nhật

Tìm kiếm

Quảng cáo&Liên kết