Gửi lúc: 23/11/2017 10:49:05
Bookmark and Share

Giới thiệu một số nền tảng thư viện cho việc nghiên cứu ứng dụng học máy và khoa học dữ liệu

Bài báo này giới thiệu về một số nền tảng thư viện cần biết cho việc nghiên cứu ứng dụng học máy và khoa học dữ liệu.

Các nền tảng chung
1. Scikit-Learn 


Scikit-Learn là một thư viện học máy được xây dựng dựa trên việc sử dụng các gói Python có sẵn như: gói hỗ trợ tính toán các hàm phức tạp và đại số NumPy, gói hỗ trợ các tác vụ tính toán khoa học SciPy và gói xử lý minh họa đồ thị Matplotlib. Scikit-Learn là gói thư viện bao gồm các công cụ có thể sử dụng cho các tác vụ học máy tiêu chuẩn như phân cụm, phân lớp, hồi quy,... Dù chỉ hỗ trợ các tác vụ cơ bản, nhưng nó rất đầy đủ cho những người mới bắt đầu nghiên cứu. Nó có thể được sử dụng như một ứng dụng riêng lẻ hoặc tích hợp vào các ứng dụng khác. Tính linh hoạt khiến nó trở thành một trong các công cụ phổ biến nhất được biết đến. Một ưu điểm nữa là Scikit-Learn hoàn toàn là mã nguồn mở được cung cấp dưới dạng BSD license, do đó được phép tùy chỉnh và sử dụng lại một cách dễ dàng.

2. Apache Spark MLLib

Apache Spark là một hệ thống tính toán song song hoặc phân tán bao gồm nhiều máy tính kết nối thành một khối và được dùng như một tài nguyên tính toán duy nhất (cluster), cung cấp các API cho nhiều ngôn ngữ bậc cao như Java, Scala, Python hay R và hỗ trợ engien được tối ưu hóa cho việc thực thi trên đồ thị. Điểm đặc biệt của nó là cung cấp rất nhiều công cụ bậc cao cho các tác vụ khác nhau như: Spark SQL sử dụng cho việc xử lý các dữ liệu có cấu trúc, GraphX dùng cho việc xử lý đồ thị, còn MLlib sử dụng cho các bài toán học máy.

MLlib là thư viện học máy đòi hỏi hiệu năng và năng lực xử lý dữ liệu lớn. Nó cung cấp các thuật toán học máy cơ sở cho các bài toán phân lớp, phân cụm, hồi quy và lọc cộng tác. Ngoài ra, MLlib cung cấp các chức năng giúp xử lý trên dữ liệu lớn như: trích rút thuộc tính, biến đổi, giảm và chọn thuộc tính, giảm số chiều dữ liệu, tăng tốc xử lý, các thư viện đại số tuyến tính, thống kê và xử lý dữ liệu,…

3. Waikato Environment for Knowledge Analysis

Waikato Environment for Knowledge Analysis hay còn được biết đến là một bộ công cụ học máy viết trên nền tảng ngôn ngữ Java - Weka, được phát triển bởi Đại học Waikato, New Zealand. Đây là công cụ miễn phí được cung cấp dưới bản quyền Giấy phép Công cộng GNU. Weka là bộ công cụ phổ biến nhất được sử dụng trong học máy và khai phá dữ liệu. Nó chứa một số lượng rất lớn các thuật toán phân tích dữ liệu, các mô hình dự đoán và các công cụ mô phỏng phân bố dữ liệu. Thêm vào đó, Weka có giao diện đồ họa dễ sử dụng. Giống như hai công cụ trên, Weka cũng cung cấp rất nhiều các tác vụ khai phá dữ liệu tiêu chuẩn, đặc biệt là các chức năng tiền xử lý dữ liệu, phân cụm, phân lớp, hồi quy, mô phỏng dữ liệu và lựa chọn thuộc tính. Weka cũng cho phép tích hợp cơ sở dữ liệu SQL sử dụng Java Database Connectivity và có thể xử lý kết quả trả về thông qua các truy vấn cơ sở dữ liệu. Ngoài ra, việc được xây dựng như một nền tảng lõi giúp người dùng có thể thêm vào các môđun, các lược đồ học máy một cách tùy biến. Đặc biệt, nó cũng có thể được sử dụng để xử lý dữ liệu lớn.

4. Mlpack

Mlpack là một thư viện học máy xây dựng trên nền tảng ngôn ngữ C++ từ năm 2011 với tiêu chí “hiệu năng cao, xử lý được dữ liệu lớn và dễ sử dụng”. mlpack cung cấp các thuật toán học máy cho phép thực thi thông qua giao diện dòng lệnh và cho phép tích hợp vào các giải pháp học máy lớn hơn thông qua các API được cung cấp. 

5. Accord.NET Framework

Accord.NET Framework là một nền tảng học máy xây dựng dựa trên .NET, được kết hợp với các thư viện xử lý hình ảnh và âm thanh được viết bằng ngôn ngữ C#. Đây là một nền tảng hoàn thiện được xây dựng cho các sản phẩm xử lý hình ảnh, âm thanh, xử lý tín hiệu và các ứng dụng thống kê. Nó được sử dụng cho cả các ứng dụng thương mại và cho kết quả khá tốt.



Nền tảng Deep Learning

1. TensorFlow

TensorFlow™ là một thư viện mã nguồn mở phục vụ cho tính toán số học sử dụng đồ thị luồng dữ liệu. TensorFlow thực thi dựa trên các đối tượng là các node trên đồ thị, mỗi node biểu diễn các thuật toán hoặc toán tử toán học, các cạnh chứa các khối dữ liệu là các mảng đa chiều (tensor). Các tensor có thể được xử lý bằng một chuỗi các thuật toán được mô tả bởi đồ thị. Các dữ liệu di chuyển qua hệ thống được gọi là các “flows”. Các đồ thị có thể được viết bằng C++ hay Python và được thực thi trên CPU hoặc GPU, trên destop, máy chủ, thậm chí các thiết bị di động có hỗ trợ API tensor. TensorFlow được sử dụng khá nhiều trong các sản phẩm thương mại hoặc miễn phí khác nhau, có thể cung cấp các tác vụ học phức tạp cho hiệu quả và độ chính xác khá cao.

2. MXNet

MXNet được thiết kế với tính mềm dẻo và hiệu quả. Nền tảng này chứa một bộ lập lịch phụ thuộc động để tự động song song hóa các hoạt động mang tính tượng trưng và các hoạt động bắt buộc. Trong đó, một lớp tối ưu hóa đồ thị làm cho việc thực thi các biểu tượng nhanh và tiết kiệm bộ nhớ. MXNet có kích thước nhỏ và có tính khả chuyển cao, có thể hoạt động hiệu quả trên dữ liệu lớn khi sử dụng chip đa lõi hoặc GPU.

3. Caffe

Caffe hướng đến tốc độ xử lý và tính tách rời trong thiết kế. Được phát triển bởi trung tâm BVLC và nhóm cộng tác. Các mô hình và sự tối ưu được định nghĩa bằng các tham số cấu hình mà không được cố định trong mã nguồn. Người dùng có thể sử dụng được Caffe trên cả nền tảng CPU và GPU. Ưu điểm lớn nhất của Caffe so với các nền tảng deep learning khác là tốc độ thực thi. Do đó, nó được sử dụng khá nhiều trong các nghiên cứu thực nghiệm và triển khai thực tế trong công nghiệp. Caffe có thể xử lý trên 60M ảnh/ngày với một chip GPU NVIDIA K40.

4. CNTK

Microsoft Cognitive Toolkit (CNTK) là một bộ công cụ phục vụ cho nghiên cứu deep learning. CNTK mô tả các mạng nơ-ron như một chuỗi các bước tính toán trên một đồ thị có hướng. Trong đồ thị có hướng này, các node lá biểu diễn các giá trị đầu vào, hay các tham số mạng và các node khác biểu diễn các toán tử ma trận tác động lên các đầu vào. CNTK cho phép nhận dạng và kết hợp các kiểu mô hình một cách dễ dàng như: DNN lan truyền thẳng, mạng CNN và các mạng phản hồi (RNN/LSTM). Nó thực thi các phép toán đạo hàm gradient ngẫu nhiên (SGD, lan truyền ngược lỗi) một cách song song thông qua các chip đa lõi, GPU hoặc các hệ thống cụm máy chủ. CNTK trở thành nền tảng mã nguồn mở từ tháng 4/2015 nhằm thu hút các ý tưởng và xây dựng của cộng đồng.

5. Nervana Neon 

Neon là một nền tảng deep learning của Intel Nerana, được thiết kế để hoạt động tối ưu nhất trên mọi nền tảng phần cứng với mục đích dễ sử dụng và mở rộng. Nó hỗ trợ hầu hết các kiến trúc mạng phổ biến như: CNN, RNN, LSTM, GRU, BatchNorm,... hỗ trợ tốt các mô hình học tăng cường, mạng dư sâu, VGG, gắn nhãn ảnh, phân tích cảm xúc,... và hoạt động tốt trên cả CPU, GPU và phần cứng chuyên dụng Nervana.

6. Apache Singa 

Apache Singa là một nền tảng deep learning phân tán, dùng cho bài toán huấn luyện các mô hình deep learning lớn trên các bộ dữ liệu có kích thước lớn, được thiết kế với mô hình ngôn ngữ cố định dựa trên các lớp trừu tượng. Apache Singa hỗ trợ hầu hết các mô hình deep learning phổ biến như mô hình truyền thẳng, các mạng CNN, mô hình năng lượng như máy Boltmann (RBM), và mạng nơ-ron hồi quy (RNN).

Các nền tảng đám mây 

1. Amazon Machine Learning là dịch vụ cho phép sử dụng các công nghệ học máy mà không đòi hỏi những kỹ năng về lập trình ở trình độ cao. Nền tảng cung cấp các công cụ mô phỏng trực quan và các hướng dẫn để tạo ra các mô hình học máy mà không cần phải học các thuật toán và công nghệ học máy phức tạp. Nền tảng liên kết với dữ liệu Amazon S3, Redshift hoặc RDS và có thể thực thi các bài toán phân lớp nhị phân, phân lớp đa lớp, hồi quy hoặc tạo các mô hình dựa trên dữ liệu sẵn có.

2. Google Cloud Machine Learning là dịch vụ quản lý cho phép xây dựng các mô hình học máy một cách dễ dàng, làm việc trên bất kỳ kiểu dữ liệu nào được đưa vào với kích thước dữ liệu bất kỳ. Nền tảng tích hợp với các dịch vụ khác của Google bao gồm cả TensorFlow, Google Photos, và Google Cloud Speech. Nó có thể nhận bất cứ mô hình TensorFlow nào, thực hiện huấn luyện mạng kích thước lớn một cách trực tuyến và đưa ra các dự đoán. Google Cloud Machine Learning Engine cũng được tích hợp với Google Cloud Dataflow để thực hiện việc tiền xử lý dữ liệu và cho phép lấy dữ liệu từ nhiều nguồn dữ liệu khác nhau của Google như Google Cloud Storage, Google BigQuery,… 

3. Azure ML Studio cho phép người dùng của Microsoft Azure tạo ra các mô hình huấn luyện và chuyển thành các API cung cấp cho những dịch vụ khác. Người dùng có thể sử dụng 10GB lưu trữ đối với mỗi tài khoản cho dữ liệu mô hình hoặc có thể kết nối trực tiếp đến dịch vụ lưu trữ Azure để xây dựng các mô hình kích thước lớn hơn. Nền tảng này cung cấp rất nhiều thuật toán học máy được phát triển bởi chính Microsoft hoặc bên thứ ba. Người dùng có thể dùng thử dịch vụ này trong 8 giờ mà không cần đăng ký tài khoản.

Ngoài các nền tảng, thư viện phổ biến nói trên, còn có rất nhiều các thư viện, nền tảng khác mà bạn đọc có thể tham khảo như: H2O, Massive Online Analysis (MOA), Pattern, Shogun, Theano, Torch, Veles,... 

Anh Tú