đồ án tìm hiểu microsoft ML net và minh họa với bài toán phát hiện bình luận phản cảm

31 63 1
đồ án tìm hiểu microsoft ML net và minh họa với bài toán phát hiện bình luận phản cảm

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN Báo Cáo Đồ Án Đề Tài: Tìm Hiểu Microsoft ML.Net Và Minh Họa Với Bài Tốn Phát Hiện Bình Luận Phản Cảm GVHD: TS Đỗ Thị Thanh Tuyền Lớp: SE310.M21 Nhóm sinh viên thực hiện: Trần Đặng Hoàng Anh MSSV: 19521213 Nguyễn Văn Huấn MSSV: 19521556 Tp Hồ Chí Minh, 17/06/2022 Lời cảm ơn Đầu tiên, nhóm xin gửi lời cảm ơn chân thành đến tập thể quý Thầy Cô Trường Đại học Công nghệ thông tin – Đại học Quốc gia TP.HCM quý Thầy Cô khoa Công nghệ phần mềm giúp cho em có kiến thức làm tảng để thực đề tài Đặc biệt, em xin gửi lời cảm ơn lòng biết ơn sâu sắc tới cô Đỗ Thị Thanh Tuyền Cô trực tiếp hướng dẫn tận tình, sửa chữa đóng góp nhiều ý kiến q báu giúp em hồn thành tốt báo cáo mơn học Trong thời gian học đề tài, em vận dụng kiến thức tảng tích lũy đồng thời kết hợp với việc học hỏi nghiên cứu kiến thức Từ đó, em vận dụng tối đa thu thập đểhồn thành báo cáo đồ án tốt Tuy nhiên, q trình thực hiện, em khơng tránh khỏi thiếu sót Chính vậy, em mong nhận góp ý từ phía nhằm hồn thiện kiến thức mà em học tập hành trang để em thực tiếp đề tài khác tương lai Xin chân thành cảm ơn quý Thầy Cô! MỤC LỤC Tổng quan đề tài Windows Machine Learning ML Net 2.1 Machine Learning 2.2 Windows Machine Learning (Windows ML) 2.3 Supervised learning (Học có giám sát): 2.4 Unsupervised learning (Học không giám sát) 2.5 ML.NET gì? 2.6 Ưu điểm ML.NET 2.7 Cách sử dụng ML.NET 2.8 ML.NET workflow 12 2.9 ML.NET tasks 13 2.10 ML NET Algorithms 13 2.11 Hàm mục tiêu (Objective functions) 13 2.12 Trainer (ML.NET) 14 2.13 Phân loại nhị phân (Binary Classification) 14 2.14 Phân loại đa lớp (Multiclass Classification) 16 2.15 SdcaLogisticRegressionBinaryTrainer SdcaMaximumEntropyMulticlassTrainer 17 Microsoft ML Net so với framework khác 18 3.1 ML.NET vs TensorFlow 18 3.2 ML.NET vs CNTK 18 3.3 ML.NET vs Pytorch 18 Áp dụng ML NET vào “bài toán phát bình luận phản cảm” (Sentiment analysis problem) 19 4.1 Đặt vấn đề 19 4.2 Giải toán 19 Minh họa “bài tốn phát bình luận phản cảm” với liệu Fox News comments 27 5.1 Về ngữ liệu Fox News comments: 27 5.2 Huấn luyện đánh giá mơ hình với liệu Fox News comments 27 Kết luận đề tài 30 7.1 Kết đạt 30 7.2 Mặt hạn chế 30 7.3 Định hướng phát triển 30 DANH MỤC TÀI LIỆU THAM KHẢO 31 Tổng quan đề tài Ngày nay, Machine Learning (ML) phần thiếu sống lĩnh vực công nghệ xử lý ngôn ngữ tự nhiên, dự đoán số liệu hay gần gũi hệ thống khuyến nghị (suggestion) ứng dụng Nhờ có Machine Learning, hệ thống trở nên vơ thơng minh có khả tự tiến theo thời gian, ứng dụng có sử dụng Machine Learning vơ thu hút người dùng từ tạo bùng nổ ngành công nghiệp IT Trong thập kỷ qua, công nghệ Machine Learning mang lại cho ô tơ tự lái, khả nhận dạng giọng nói thực tế, tìm kiếm web hiệu hiểu biết cải thiện đáng kể gen người Machine Learning ngày phổ biến đến mức bạn sử dụng hàng chục lần ngày mà không hay biết Nhiều nhà nghiên cứu cho cách tốt để đạt tiến AI cấp độ người Trong việc xây dựng hệ thống máy học có nhiều ngơn ngữ lập trình cơng cụ giúp làm việc này, kể đến ngơn ngữ lập trình Python, Java, LISP, số có Microsoft ML.NET với lợi ngôn ngữ C# thân thuộc với thư viện tiện dụng dễ sử dụng Windows Machine Learning ML Net 2.1 Machine Learning Machine Learning (ML) hay máy học nhánh trí tuệ nhân tạo (AI), lĩnh vực nghiên cứu cho phép máy tính có khả cải thiện thân chúng dựa liệu mẫu (training data) dựa vào kinh nghiệm (những học) Machine learning tự dự đốn đưa định mà khơng cần lập trình cụ thể Machine Learning giải tốn liên quan đến nhận dạng nhận dạng hình ảnh, âm thanh, từ ngữ, Và toán dự đoán dự đoán thị trường, dự đoán liệu, dự báo thời tiết, Quy trình chung ứng dụng sử dụng Machine Learning, gồm có bốn bước sau Data collection (thu thập liệu), Preprocessing (tiền xử lý), Trainning model (huấn luyện mơ hình), Evaluating model (đánh giá mơ hình), Improve (cải thiện), cụ thể: - Data collection – thu thập liệu: để máy tính học bạn cần có liệu (dataset), bạn tự thu thập chúng lấy liệu cơng bố trước Lưu ý bạn phải thu thập từ nguồn thống, có liệu xác máy học cách đắng đạt hiệu cao - Preprocessing – tiền xử lý: bước dùng để chuẩn hóa liệu, loại bỏ thuộc tính khơng cần thiết, gán nhãn liệu, mã hóa số đặc trưng, trích xuất đặc trưng, rút gọn liệu đảm bảo kết quả… Bước tốn thời gian tỉ lệ thuận với số lượng liệu bạn có Bước thường chiếm 70% tổng thời gian thực - Training model – huấn luyện mơ hình: bước bước bạn huấn luyện cho mơ hình cho học liệu bạn thu thập xử lý hai bước đầu - Evaluating model – đánh giá mơ hình: sau huấn luyện mơ hình xong, cần dùng độ đo để đánh giá mơ hình, tùy vào độ đo khác mà mơ hình đánh giá tốt hay khơng khác Độ xác mơ hình đạt 80% cho tốt - Improve – cải thiện: sau đánh giá mơ hình, mơ hình đạt độ xác khơng tốt cần train lại, lặp lại từ bước 3, đạt độ xác kỳ vọng Tổng thời gian bước cuối rơi vào khoảng 30% tổng thời gian thực Khi xây dựng ứng dụng ML, cần có yêu cầu như: - Xác định toán cần giải quyết, đầu vào đầu - Xác định tập liệu để sử dụng chia tập huấn luyện tập đánh giá - Xác định mơ hình dùng để huấn luyện, loại mơ hình thuật tốn triển khải - Thực huấn luyện đánh giá mơ hình 2.2 Windows Machine Learning (Windows ML) Windows Machine Learning API dùng để xây dựng, huấn luyện đánh giá mơ hình máy học Microsoft phát triển Windows ML cài đặt sẵn Windows 10 Windows Server 2019, Windows ML có điểm mạnh sau: - Dễ dàng triển khai, với việc cài đặt sẵn Windows 10 Windows Server 2019 - Hỗ trợ đa dạng phần cứng, giúp tích hợp GPUs CPUs vào việc huấn luấn mơ hình - Độ trễ thấp, kết thời gian thực - Linh động việc sử dụng, hỗ trợ đánh giá mơ hình máy tính khơng có kết nối internet - Giảm chi phí vận hành với việc hỗ trợ huấn luyện mơ hình cloud 2.3 Supervised learning (Học có giám sát): Là thuật tốn tạo nên mơ hình dự đốn đầu (output) liệu (new input) dựa cặp input output có sẵn từ trước Ta hiểu nơm na nhiệm vụ mơ hình thuộc loại tìm liên hệ input output, từ dùng liên hệ để dự đoán liệu Giả sử ta huấn luyện (train) mơ hình dự đốn hình có chứa mèo hay khơng, liệu đưa vào nhiều hình kèm theo nhãn (có mèo khơng có mèo) Nhiệm vụ mơ hình từ liệu đó, tìm điểm chung hình có mèo từ đưa dự đốn cho hình chưa biết nhãn Supervised learning chia thành loại chính: phân loại (classification) hồi quy (regression) 2.4 Unsupervised learning (Học khơng giám sát) Trong thuật tốn này, có liệu đầu vào (input) mà khơng biết trước đầu (ouput) Thuật tốn dựa liệu tìm cấu trúc, liên quan chúng để từ thực cơng việc ví dụ như: phân nhóm (clustering), giảm số chiều liệu (demension reduction) để thuận tiện tính tốn Phân nhóm (clustering) khác với phân loại (classification), phân loại số nhóm quy định trước (biết trước) cịn phân nhóm số nhóm thuật tốn tự suy (khơng biết trước) 2.5 ML.NET gì? ML.NET tảng Machine Learning mã nguồn mở Microsoft phát triển ML.NET cung cấp khả để thêm công nghệ Machine Learning vào ứng dụng NET Với khả này, ta có dự đốn đưa tự động cho ứng dụng cách sử dụng liệu có Ứng dụng với Machine Learning có khả tận dụng hình mẫu liệu để đưa dự đốn thay phải lập trình cách rõ ràng Trọng tâm ML.NET mơ hình máy học (Machine Learning Model) Mơ hình định bước cần thiết để chuyển đổi liệu đầu vào thành dự đoán Với ML.NET, ta đào tạo mơ hình tùy chỉnh cách định thuật tốn ta cho nhập mơ hình đào tạo sẵn từ trước TensorFlow hay ONNX • TensorFlow thư viện mã nguồn mở dành cho Machine Learning Google phát triển • ONNX (Open Neural Network Exchange) framework trung gian dành cho Machine Learning sử dụng để chuyển đổi framework Machine Learning khác ML.NET chạy nhiều hệ điều hành Windows, Linux, macOS 2.6 Ưu điểm ML.NET • Dễ dàng áp dụng cho hệ thống NET • Hỗ trợ nhiều kịch đa dạng khác • Dễ dàng tùy chỉnh mơ hình Machine Learning • Hỗ trợ tích hợp với framework khác • Hiệu suất cao 2.7 Cách sử dụng ML.NET a Công cụ Model Builder ML.NET Model Builder extension trực quan Visual Studio để xây dựng, đào tạo triển khai mơ hình Machine Learning tùy chỉnh theo ý người dùng Model Builder sử dụng automated machine learning (AutoML) để tìm hiểu thuật tốn cài đặt khác để giúp tìm kiếm, chọn lọc phù hợp cho kịch cụ thể Ta không cần chuyên gia Machine Learning để sử dụng Model Builder Tất ta cần vài liệu vấn đề để giải Model Builder tự động tạo code để đưa mô hình vào ứng dụng NET b Cài đặt Yêu cầu: • VS 2019 VS 2022 Preview lớn • NET Core 3.1 lớn Cài đặt: Mở VS Installer Chọn nút Modify để chỉnh sửa phiên VS Chọn mục Indiviual components Trong danh sách chọn tích vào ML.NET Model Builder (Preview) c Mơi trường (Environment) Bạn train mơ hình Machine Learning cách Local máy bạn cloud Azure, tùy thuộc vào kịch Khi bạn train local, bạn làm việc giới hạn tài nguyên máy tính (CPU, nhớ đĩa) Khi train cloud, bạn mở rộng quy mơ tài nguyên để đáp ứng nhu cầu kịch bản, đặc biệt liệu lớn Train CPU Local hỗ trợ cho tất kịch ngoại trừ Object Detection Train GPU Local hỗ trợ cho Image Classification Train Azure hỗ trợ cho Image Classification Object Detection d Dữ liệu (Data) Sau chọn scenario, Model Builder yêu cầu cung cấp dataset Dữ liệu sử dụng để tập luyện, đánh giá chọn mơ hình phù hợp với scenario Model Builder hỗ trợ dataset định dạng tsv, csv, txt định dạng sở liệu SQL Nếu ta có file txt cột nên cách bởi: • Dấu “,” • Dấu “;” • Hoặc ký tự “\t” (tab) Nếu liệu hình ảnh hỗ trợ định dạng jpg png Chọn cột đầu ra: Một dataset bảng liệu có cột dịng Trong dịng có cột đặt tên: • label: thuộc tính mà ta muốn dự đốn • feature: thuộc tính đầu vào, cung cấp để dự đoán label 10 2.15 SdcaLogisticRegressionBinaryTrainer SdcaMaximumEntropyMulticlassTrainer Điểm chung: - Cả trainer sử dụng thuật toán Stochastic Dual Coordinate Ascent (SDCA) để tối ưu hàm mục tiêu - Như nói mục trước, loại dùng cho toán phân loại nhị phân Điểm khác nhau: SdcaLogisticRegressionBinaryTrainer SdcaMaximumEntropyMulticlassTrainer ML Task Binary classification Multiclass classification Key type Trước train cần chuyển label sang dạng key Transformer Input Boolean type labels type 17 Microsoft ML Net so với framework khác 3.1 ML.NET vs TensorFlow TensorFlow framework học máy mã nguồn mở phổ biến phát triển Google TensorFlow viết C ++ hỗ trợ tăng tốc GPU TPU Hiện tại, ML.NET không hỗ trợ tăng tốc GPU DNN, bổ sung tương lai Điểm bậc TensorFlow học sâu cách cung cấp cho người dùng cách trực quan để tính tốn độ dốc (gradients) biểu đồ phức tạp Trong TensorFlow chủ yếu sử dụng với Python, có cách triển khai ngôn ngữ khác TensorFlowJS triển khai mạnh mẽ TensorFlow cho phép tạo mơ hình học sâu bên trình duyệt Mặc dù TensorFlow vượt trội số tình định, nhà phát triển không quen thuộc với Python JavaScript lại tiếp cận ML.NET cung cấp nhiều kỹ thuật khác cho việc học máy đồng thời làm cho kỹ thuật truy cập nhà phát triển NET Trọng tâm ML.NET không học sâu, ML.NET sử dụng TensorFlow cho số triển khai học sâu 3.2 ML.NET vs CNTK Microsoft’s Cognitive Toolkit (CNTK) framework máy học mã nguồn mở phổ biến khác Trong ML.NET giúp nhà phát triển NET tiếp cận máy học, CNTK khuôn khổ học máy chuyên học sâu sử dụng API python để đào tạo mô hình CNTK Tuy nhiên, sau đào tạo, mơ hình chạy qua nhiều ngơn ngữ khác nhau, bao gồm C # / NET Ngược lại, ML.NET cung cấp nhiều kỹ thuật học máy khác đào tạo đánh giá bên C # / NET Có thể có tương lai mà ML.NET hỗ trợ thêm cho học sâu cách sử dụng khung học sâu có Microsoft 3.3 ML.NET vs Pytorch Pytorch framework Machine vơ tiếng, phát triển nhằm mục đích đẩy nhanh đường từ nghiên cứu đến triển khai sản xuất So sánh ML.NET Pytorch ta dễ dàng nhận thấy Pytorch sử dụng phổ biến nhiều Cịn performance, ML.NET đánh giá mơ hình học sâu với tốc độ nhanh PyTorch sử dụng CPU Với ML.NET, bạn có tất lợi hệ sinh thái NET, máy chủ web nhanh Kestrel mã hướng đối tượng dễ bảo trì Tuy nhiên dùng GPU Pytorch lại thể đối thủ mạnh hơn, sử dụng ML.NET cho số tác vụ phụ thuộc nhiều vào tính tốn GPU chậm hơn, trước đánh giá mô hình, bạn thường cần phải xử lý trước liệu Mặc dù ML.NET có thư viện phong phú gồm transformer khác để xử lý trước liệu, việc task phức tạp để tạo lại trình tiền xử lý phần mềm NET bạn 18 Áp dụng ML NET vào “bài tốn phát bình luận phản cảm” (Sentiment analysis problem) 4.1 Đặt vấn đề Xây dựng mơ hình có khả dự đốn bình luận khách hàng tiêu cực hay tích cực Chúng ta sử dụng liệu gọi wikipedia-detox-dataset, chia làm tập, tập train tập test, nhãn cảm xúc bình luận là: – Không phản cảm – Phản cảm Bên vài ví dụ liệu Bình luận Nhãn cảm xúc ==You're cool== You seem like a really cool guy *bursts out laughing at sarcasm* ==RUDE== Dude, you are rude upload that carl picture back, or else " Please stop If you continue to vandalize Wikipedia, you will be blocked from editing | " Oooooh thank you Mr DietLimeCola Once again, nice job trying to pretend you have some authority over anybody here You are a wannabe admin, which is even sadder than a real admin 4.2 Giải toán Để giải toán sử dụng phân loại nhị phân (Binary classification) Tiến hành thực bước toán ML gồm xây dựng, huấn luyện, đánh giá sử dụng 19 Bài toán tuân theo sơ đồ bên Đặc điểm toán bước Feature Extraction (Trích xuất đặc trưng) giai đoạn train test, có Extracted features (đặc trưng trích xuất) áp dụng để train test mơ hình Điều có nghĩa câu bình luận chuyển thành Feature Vectors (Vector đặc trưng) để mơ hình nhận dạng Một ví dụ đơn giản cho Feature Vectors phương pháp Bag of Words, Giả sử có hai văn đơn giản: (1) John likes to watch movies Mary likes movies too (2) John also likes to watch football games Dựa hai văn này, ta có danh sách từ sử dụng, gọi từ điển với 10 từ sau: 20 ["John", "likes", "to", "watch", "movies", "also", "football", "games", "Mary", "too"] Với văn bản, ta tạo vector đặc trưng có số chiều 10, phần tử đại diện cho số từ tương ứng xuất văn Với hai văn trên, ta có hai vector đặc trưng là: (1) [1, 2, 1, 1, 2, 0, 0, 0, 1, 1] (2) [1, 1, 1, 1, 0, 1, 1, 1, 0, 0] Như ta nắm vector đặc trưng sang bước để tiến hành xây dựng mơ hình a Xây dựng mơ hình (build model): Các thư viện sử dụng: Microsoft.ML, NuGet Package Tạo schema ánh xạ tới liệu để load wikiDetoxAnnotated40kRows.tsv sử dụng TextLoader Chia datasets với tỉ lệ train/test 80/20 Tạo Estimator chuyển đổi liệu thành dạng vectors đặc trưng để thuật toán ML “học” (với FeaturizeText) Chọn thuật tốn để huấn luyện SdcaLogisticRegression, thuật toán Logistic Regression sử dụng phương pháp Stochastic Dual Coordinate Ascent Code demo: IDataView dataView = mlContext.Data.LoadFromTextFile(DataPath, hasHeader: true); TrainTestData trainTestSplit = mlContext.Data.TrainTestSplit(dataView, testFraction: 0.2); IDataView trainingData = trainTestSplit.TrainSet; IDataView testData = trainTestSplit.TestSet; var dataProcessPipeline = mlContext.Transforms.Text.FeaturizeText(outputColumnName: "Features", inputColumnName: nameof(SentimentIssue.Text)); var trainer = mlContext.BinaryClassification.Trainers.SdcaLogisticRegression(label ColumnName: "Label", featureColumnName: "Features"); var trainingPipeline = dataProcessPipeline.Append(trainer); b Huấn luyện mơ hình 21 ITransformer trainedModel = trainingPipeline.Fit(trainingData); c Đánh giá mơ hình Percision, Recall, F1 score: Để hiểu rõ Percision, Recall, F1 score, xét ví dụ sau: Predict/Actual Predict Positive Actual Positive Negative (True Positive) (False Positive) Negative (False Negative) 998 (True Negative) Nếu theo thông thường tính Accuracy mơ hình dễ dàng tính Accuracy vơ cao ( True Positive + True Negative Total = 0.99), toán yêu cầu xác định người nhiễm covid(positive) chẳng hạn, số False Negative(âm tính giả) True Positive(dương tính thật) số trọng yếu, hình dung thực tế số lượng True Positive khơng sao? Liệu mơ hình có nên sử dụng? Đồng thời việc số âm tính thật q lớn (998) việc đánh giá mơ hình dựa Accuracy rõ ràng khơng hiệu Thế nên Percision, Recall F1 score áp dụng nhằm đánh giá mơ hình trường hợp - Percision(P): tỉ lệ số điểm Positive mơ hình dự đốn tổng số điểm mơ hình dự đốn Positive, Percision cho biết tỉ lệ Positive thật tổng số Posivite mô hình dự đốn 𝑃𝑒𝑟𝑐𝑖𝑠𝑖𝑜𝑛 = - Recall(R): tỉ lệ số điểm Positive mơ hình dự đốn tổng số điểm thật Positive (hay tổng số điểm gán nhãn Positive ban đầu), Recall cho biết tỉ lệ Positive thật mà mô hình dự đốn tổng số Positive thực tế 𝑅𝑒𝑐𝑎𝑙𝑙 = - True Positive True Positive + False Positive True Positive True Positive + False Negative F1 score: trung bình diều hịa percision (P) recall(R) mơ hình dự đốn để tạo thành thơng số, F1 score phù hợp muốn có cân Recall Percision có cân liệu (số lượng lớn True Negative) 22 𝐹1 = ∗ Precision ∗ Recall Percision + Recall Các thông số khác(Area Under ROC Curve, Area under Precision recall Curve, Positive Precision, Positive Recall, Negative Recall, Log Loss, Log Loss Reduction): - Area Under ROC Curve(AUC): để hiều AUC ta cần biết ROC gì, ROC viết tắt Receiver Operator Characteristic đường cong biểu diễn True Positive Rate theo False Positive Rate ngưỡng(threshold) nhằm xác định có tín hiệu nhiễu Area Under ROC Curve diện tích đường cong ROC Chỉ số AUC cao khả phân biệt Posivite Negative mơ hình tốt 23 Khi AUC = 1, mơ hình hồn hảo khơng có sai sót dự đốn Khi 0.5

Ngày đăng: 17/08/2022, 21:18

Tài liệu cùng người dùng

Tài liệu liên quan