Sự khác biệt cơ bản giữa phát triển mô hình ML và phần mềm doanh nghiệp truyền thống

03:27 PM 10/06/2019 In bài viết

Software Development

Bài viết này sẽ phân tích rõ những điểm khác biệt chính giữa phát triển phần mềm doanh nghiệp truyền thống với xây dựng mô hình ML và cùng tìm hiểu một số mẹo quản lý vòng đời ML (chủ yếu liên quan đến chuẩn bị dữ liệu và kỹ thuật thuộc tính) giúp người sử dụng có thể khai thác AI của mình tốt hơn.

Phát triển phần mềm doanh nghiệp so với xây dựng mô hình ML

Trong phát triển phần mềm truyền thống, các kỹ sư viết phần mềm thường viết ra các hướng dẫn rõ ràng để máy tính tuân theo, do vậy, các ứng dụng này đưa ra kết quả có tính cố định và biết trước.

Học máy, về bản chất có tính xác suất. Chúng ta dựa vào dữ liệu để viết các câu lệnh nếu-thì, cung cấp dữ liệu đầu vào cho các thuật toán để giúp các mô hình tìm thấy những mẫu cơ bản trong bộ dữ liệu và công thức để ánh xạ đầu vào thành đầu ra.

Quản lý dữ liệu trong ML thường bao gồm việc lấy dữ liệu, kiểm tra chất lượng của dữ liệu, làm sạch và thử nghiệm. Trong một số trường hợp, nó còn áp dụng các quy trình tăng cường như tổng hợp dữ liệu. Các giai đoạn này đều có vòng đời riêng và để có thể triển khai chúng đúng cách, các công ty cần phải quản lý chặt chẽ, tích hợp các công cụ cụ thể (cho quản trị dữ liệu, quản lý dòng dữ liệu v.v...) với các giải pháp dữ liệu lớn hiện đang được sử dụng trong tổ chức để không phải nhận lấy kết quả là các mô hình hỗn loạn.

Làm thế nào để các doanh nghiệp khai thác được sức mạnh của học máy

# 1 Xác định mục tiêu

Sau khi vấn đề được xác định một cách rõ ràng và chúng ta biết chắc chắn rằng các kỹ thuật ML có thể giải quyết nó, các nhà khoa học dữ liệu sẽ bắt đầu quá trình bằng cách đề xuất một số tùy chọn thiết kế mô hình để thử nghiệm.

Thông thường, các chuyên gia IT sẽ bắt đầu với một mô tả rõ ràng về những gì mô hình dự kiến ​​sẽ làm và cố gắng biên dịch, một cách cụ thể nhất có thể, các yêu cầu kinh doanh thành các yêu cầu dữ liệu.

Việc có những mục tiêu tập trung và đo lường được sẽ giúp tất cả mọi người trong tổ chức đi đúng hướng. Cụ thể, các nhà khoa học dữ liệu của bạn sẽ hiểu rõ hơn về loại dữ liệu sẽ được thu thập và cách thiết lập/phân tách/đào tạo/phát triển/thử nghiệm chúng.

# 2 Chuẩn bị dữ liệu

Mục tiêu của bước này là để có được một bộ dữ liệu đa dạng, đại diện và không thiên vị.

Sẽ có một người trong tổ chức chịu trách nhiệm xác định các nguồn dữ liệu phù hợp, đảm bảo tính hợp pháp của dữ liệu và thực hiện những cuộc đàm phán với nhà cung cấp dữ liệu để đảm bảo quy trình diễn ra hợp lý.

Các quy trình lựa chọn dữ liệu và làm sạch dữ liệu, những công việc thiết yếu cho việc chuẩn bị dữ liệu, có thể làm giảm đáng kể bộ dữ liệu ban đầu của bạn nhưng chúng sẽ giúp ngăn các mô hình của bạn chọn (và khuếch đại) các sai lệch không mong muốn từ dữ liệu.

Khi nói về việc gắn thẻ (quá trình ghi nhãn dữ liệu trên hình ảnh có chứa những đối tượng cụ thể như con người, phương tiện, vật thể để làm cho chúng dễ nhận biết đối với máy móc), hãy xem xét việc tìm kiếm sự giúp đỡ từ bên ngoài. Việc gắn thẻ đúng cho từng đối tượng dữ liệu trong tập dữ liệu của bạn khi tất cả những gì bạn có là một nguồn lực nội bộ hạn chế có thể khiến cho nhiệm vụ này trở thành quá tải. Sử dụng quy trình tự động gắn thẻ (được hỗ trợ bằng học máy) về cơ bản có thể tăng tốc quá trình.

Trong một số trường hợp khi mà việc thu thập dữ liệu quá khó khăn, kỹ thuật mở rộng tổng hợp (kỹ thuật gia tăng kích thước tệp dữ liệu bằng cách tạo ra dữ liệu đào tạo mới dựa trên dữ liệu đào tạo hiện có) có thể được thực hiện. Ví dụ, đối với nhận dạng hình ảnh, xoay, nghiêng hoặc thay đổi màu sắc của hình ảnh cho phép chúng ta tạo các mẫu dữ liệu đào tạo mới.

Điều quan trọng là duy trì dòng dữ liệu: tất cả các biến đổi mà dữ liệu của bạn trải qua phải được ghi lại cũng như các quá trình di chuyển hoặc sửa đổi dữ liệu.

# 3 Miêu tả dữ liệu

Sau khi lựa chọn, làm sạch, chuyển đổi và làm phong phú dữ liệu của mình, chúng ta có thể bắt đầu quá trình xây dựng và lựa chọn các thuộc tính được lấy từ dữ liệu để các thuật toán ML hoạt động.

Lựa chọn thuộc tính cho phép chúng ta tìm ra các thuộc tính hữu ích nhất (đối với một nhiệm vụ cụ thể) trong dữ liệu đào tạo và loại bỏ những thuộc tính không cần thiết. Việc có ít thuộc tính giúp đơn giản hóa việc học tập và cho phép chúng ta tránh được sự phân tán trong tập dữ liệu và việc tăng dung lượng lưu trữ cũng như thời gian xử lý không cần thiết cho thuật toán.

Nói chung, các thuật toán được sử dụng để giải quyết vấn đề lựa chọn thực hiện một trong những điều dưới đây:

  • Lọc - khi chúng ta nhập một tập hợp các thuộc tính vào một thuật toán có thể tối đa hóa một số tiêu chí và đưa ra kết quả là một số lượng thuộc tính được giảm thiểu mà không tương tác với người học, tức là tiêu chí về tính hữu dụng được xây dựng bên trong thuật toán tìm kiếm.
  • Gói - khi một thuật toán tìm kiếm gửi tập hợp các thuộc tính mà chúng ta đã đưa vào cho một thuật toán học tập, thứ sau đó thông báo cho nó về hiệu suất của chúng. Trong trường hợp này, các tiêu chí được xây dựng bên trong người học và hai thuật toán hoạt động kết hợp với nhau.

Các phương pháp gói có xu hướng thực hiện tốt hơn nhưng chúng đắt hơn nhiều. Mặt khác, các thuật toán lọc thường không thể cung cấp kết quả chính xác cao, nhưng cách tính toán chúng lại dễ dàng hơn.

Kỹ thuật thuộc tính đề cập đến việc xây dựng hay tạo ra các thuộc tính mới từ các thuộc tính hiện có (được trích xuất từ ​​dữ liệu thô) để nâng cao hiệu suất mô hình. Nói cách khác, đó là một quá trình áp dụng những kiến ​​thức đặc thù sâu sắc để tìm ra các cách sáng tạo có thể giải thích rõ ràng vấn đề chúng ta đang cố gắng giải quyết cho mô hình dự đoán (điều này có thể có nghĩa là thay vì các biến đơn giản a, b chúng ta sẽ sử dụng một cái gì đó như log(a) - sqrt(b) )

Lợi ích chính của việc sử dụng các thuộc tính được tạo ra bởi các chuyên gia là chúng có thể giúp các mô hình đơn giản và nhẹ hơn nhưng vẫn đảm bảo đưa ra kết quả tốt. Hơn thế nữa chúng giúp các mô hình gần giống nhau nhanh hơn và do đó giúp chúng ta tiết kiệm cả thời gian và tiền bạc.

Tuy nhiên, cách tiếp cận này cũng có một số nhược điểm:

  • Đòi hỏi phải có các chuyên gia hiểu cách các thuộc tính tương tác với nhau;
  • Có thể cực kỳ tốn thời gian do quá trình này thường bao gồm hàng ngàn thí nghiệm để kiểm tra các giả thuyết khác nhau;
  • Các thuộc tích tự tạo thủ công rất dễ gặp vấn đề và thường không mở rộng tốt trong các tình huống thực tế; chúng chỉ có thể được áp dụng trong một bối cảnh cụ thể;

# 4 Đào tạo và kiểm tra mô hình

Tiếp theo, chúng ta chuyển sang bước đánh giá các mô hình ML khác nhau để tìm ra mô hình nào phù hợp nhất mục tiêu của mình. Đây là lúc chúng ta đưa ra quyết định về việc sử dụng khung phần mềm nào (PyTorch, Keras, v.v...) và thử nghiệm với các kiến ​​trúc khác nhau. Nếu học sâu có liên quan, chúng ta phải quyết định có bao nhiêu lớp ẩn trong mạng lưới thần kinh và loại hoạt động tổng hợp và chức năng kích hoạt nào chúng ta sẽ đưa vào đó.

Trong quá trình đào tạo, việc áp dụng một phương pháp thống kê được gọi là kiểm chứng chéo K-Fold để tìm ra mô hình hoạt động tốt nhất và tránh tình trạng mô hình quá khớp với một tập hợp dữ liệu cụ thể dẫn đến có thể không phù hợp dữ liệu bổ sung hoặc dự đoán các quan sát trong tương lai. Phần quan trọng nhất của quy trình là chia tập dữ liệu đào tạo ra thành k tập con không có phần tử chung có kích thước gần bằng nhau. Tại mỗi lần kiểm thử, một trong số k tập con được lấy ra làm tập dữ liệu kiểm tra và k-1 tập con còn lại được sử dụng là dữ liệu đào tạo cho mô hình. Việc này được lặp lại một cách tuần tự liên tục cho đến khi mỗi tập con đều được sử dụng một lần là dữ liệu kiểm tra. Sau đó, chúng ta sẽ ước tính lỗi bằng cách lấy trung bình các kết quả trong tất cả các thử nghiệm.

Sau khi đào tạo, mô hình hoàn thiện của chúng ta sẽ được thử nghiệm trên các bộ dữ liệu khác nhau và hiệu suất của nó (thời gian chạy và chất lượng đầu ra) sẽ được so sánh với các đối thủ cạnh tranh (nếu có). Mỗi trường hợp không thành công sẽ được phân tích kỹ lưỡng lại để tìm ra cách giảm lỗi trong các lần phát triển sau đó.

# 5 Triển khai mô hình

Cho đến thời điểm này, việc đầu tư thời gian và nguồn lực vào việc xây dựng, thử nghiệm mô hình chưa hề mang lại lợi nhuận. Giờ đây, cuối cùng chúng ta đã có thể triển khai nó vào sản xuất và tạo tính hữu ích cho doanh nghiệp. Các nhà khoa học dữ liệu và nhóm phát triển ứng dụng phải làm việc cùng nhau để tìm ra cấu hình triển khai tối ưu (các yếu tố cơ sở hạ tầng, bộ nhớ, ổ đĩa, sức mạnh GPU/CPU, v.v...) Mục tiêu cuối cùng là tích hợp mô hình ML vào cơ sở hạ tầng của tổ chức theo cách các ứng dụng khác có thể truy vấn nó cho các dự đoán mà không xảy ra bất kỳ sự chậm trễ không đáng có nào.

Mặc dù một số công ty thích chuyển các mô hình ML, hầu hết được viết bằng Python, sang C ++ (ví dụ) và triển khai lại chúng để đảm bảo giao tiếp liền mạch, quá trình viết lại mọi thứ có thể mất vài tuần sẽ tạo ra một khoảng cách lớn giữa giai đoạn thử nghiệm và triển khai. Một cách tiếp cận nhanh hơn là triển khai mô hình dưới dạng một ứng dụng Python hỗ trợ API REST.

Bạn cũng nên lưu mô hình vào cơ sở dữ liệu để bảo tồn dòng chảy của nó. Điều đó có nghĩa là chúng ta phải ghi lại thời gian triển khai và phiên bản mô hình.

Kết luận

Vòng đời ML là độc nhất và điển hình. Những hướng dẫn thường được sử dụng trong kỹ thuật phần mềm doanh nghiệp như SLDC, CMM, ALM không thể giúp chúng ta quản lý hiệu quả việc phát triển các dịch vụ AI.

Các công ty đang tìm cách tận dụng AI cần phải áp dụng các công cụ, quy trình và bộ kỹ năng mới; họ phải đầu tư vào công nghệ thu thập dữ liệu và quản trị dữ liệu nền tảng, tuyển dụng các nhóm làm việc không chỉ có khả năng đào tạo, thử nghiệm và triển khai các mô hình ML mà còn có thể xử lý sự cải tiến liên tục của chúng.

Thùy Linh