(Tiểu luận) bài tập lớn xây dựng mạng multi layerperceptron sử dụng ngôn ngữlập trình c++

38 6 0
(Tiểu luận) bài tập lớn xây dựng mạng multi layerperceptron sử dụng ngôn ngữlập trình c++

Đ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

Lúc này, các mạng thần kinh nhân tạo được lấy cảm hứng từ bộ nào sinh họcđã chứng minh được sự hữu ích của mình khi đạt được những kết quả vượt trội, trong cácbài toán cốt lõi của khai p

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG KHOA CƠNG NGHỆ THÔNG TIN - BÁO CÁO BÀI TẬP LỚN XÂY DỰNG MẠNG MULTI-LAYER PERCEPTRON SỬ DỤNG NGÔN NGỮ LẬP TRÌNH C++ Giảng viên: ThS Nguyễn Quỳnh Chi Sinh viên: Nguyễn Thị Minh Châu B18DCCN075 Vũ Đình Cơng B18DCCN062 Phùng Minh Đức B18DCCN181 Đỗ Đăng Mạnh B18DCCN394 Vũ Cao Sơn B18DCCN522 Hà Nội - 05/2022 Lời nói đầu Trong cách mạng công nghiệp 4.0 nay, yếu tố định thành công lĩnh vực gắn với liệu việc khai thác liệu hiệu Dữ liệu ngày trở nên dồi dào, phong phú đem lại lợi ích to lớn cho doanh nghiệp ý nghĩa lớn lao cho nhà khoa học nghiên cứu liệu Tuy nhiên, điều đem đến cho công khám phá thông tin tiềm ẩn bên chúng thách thức Lúc này, mạng thần kinh nhân tạo lấy cảm hứng từ sinh học chứng minh hữu ích đạt kết vượt trội, toán cốt lõi khai phá liệu phân loại liệu, nhận dạng ảnh, nhận dạng giọng nói,… Trong đó, Multi-layer Perceptron mạng thần kinh nhân tạo đơn giản hiệu có ý nghĩa toán thực tế Từ kiến thức môn học “Kho liệu khai phá liệu”, với thông tin học hỏi từ Internet, nhóm chúng em tìm hiểu định chọn đề tài “Xây dựng Multi-layer Perceptron sử dụng ngôn ngữ lập trình C++” đề tài cho tập lớn nhóm Chúng em xin bày tỏ biết ơn sâu sắc tới Nguyễn Quỳnh Chi, giảng viên môn “Kho liệu khai phá liệu” hướng dẫn, dạy tận tình cho chúng em nhiều học quý giá tìm tịi, tự học hỏi chủ động lớp học Thông qua môn học cô báo cáo này, chúng em khơng tìm hiểu thêm kiến thức mà đào sâu củng cố kiến thức có, nâng cao khả làm việc nhóm để đạt hiệu cao Trong suốt trình học tập tìm hiểu, cố gắng kiến thức kinh nghiệm hạn chế nên báo cáo nhiều thiếu sót Vì nhóm chúng em mong góp ý để báo cáo chúng em hồn thiện Chúng em xin chân thành cảm ơn cô! MỤC LỤC TỔNG QUAN 1.1 Tổng quan toán phân loại 1.2 Mạng thần kinh nhân tạo 1.2.1 Tổng quan mạng thần kinh nhân tạo 1.2.2 Mạng Multi-layer Perceptron .4 MULTI-LAYER PERCEPTRON 2.1 Các kí hiệu khái niệm .7 2.1.1 Layer – Lớp 2.1.2 Unit – Đơn vị 2.1.3 Weights Biases 2.1.4 Activation Function - Hàm kích hoạt .9 2.1.5 Loss Function - Hàm mát 11 2.2 Học MLP 12 2.2.1 Feedforward – Lan truyền thẳng 12 2.2.2 BackPropagation – Lan truyền ngược 12 LẬP TRÌNH VÀ MÃ NGUỒN 15 3.1 Lập trình 16 3.2 Mã nguồn C++ 17 3.2.1 Định nghĩa hàm 17 3.3 Mã nguồn Python 21 KIỂM NGHIỆM 23 4.1 Bộ liệu 24 4.2 Kết kiểm nghiệm 25 4.2.1 Kết 26 4.2.2 Phân tích kết đánh giá .27 TÀI LIỆU THAM KHẢO 29 Chương TỔNG QUAN VỀ BÀI TOÁN PHÂN LOẠI VÀ MẠNG THẦN KINH NHÂN TẠO Trong chương 1, báo cáo giới thiệu toán phân loại, toán điển hình khai phá liệu, đồng thời trình bày tổng quan mạng thần kinh nhân tạo thơng qua phần:  Tổng quan tốn phân loại  Mạng thần kinh nhân tạo Recommended for you Document continues below 19 W1 Sample Test tieng anh Kỹ thuật vi xử lý 100% (1) Correctional Administration Criminology 96% (113) English - huhu 10 10 Led hiển thị 100% (3) Preparing Vocabulary FOR UNIT Led hiển thị 100% (2) 1.1 Tổng quan toán phân loại Phân loại (classification) dạng thuật toán dự đoán lớp đối tượng liệu cho với đầu giá trị rời rạc Các lớp gọi mục tiêu, nhãn danh mục Thuật toán thường gọi phân loại nhị phân (binary classification) với nhiệm vụ phân loại có lớp, phân loại nhiều lớp (multi-class classification) với tốn có từ lớp phân loại trở lên Phân loại thuật tốn nằm nhóm thuật tốn học có giám sát, nghĩa liệu sử dụng trình huấn luyện gán sẵn nhãn Thuật tốn có nhiệm vụ xấp xỉ hay mơ hình ánh xạ (f) từ biến đầu vào x đến biến đầu rời rạc y việc sử dụng liệu huấn luyện biết trước đầu (hay lớp/ nhãn) Sau đó, q trình thử nghiệm, mơ hình nhận biết nhãn điểm liệu chưa biết Một ví dụ điển hình cho loại thuật tốn tốn nhận dạng chữ số viết tay Khi đó, đầu vào tốn hình ảnh chữ số viết tay đầu chữ số chứa ảnh đầu vào Thuật toán phân loại thuật toán quan trọng, ứng dụng rộng rãi khai phá liệu có khả tự động phân loại liệu vào nhóm khác nhau, đặc biệt với liệu lớn, mà không cần lập trình cụ thể Việc phân loại liệu giúp cho q trình trích xuất thơng tin từ điểm liệu thuộc nhóm khác trở nên dễ dàng hiệu Có tương đối nhiều thuật tốn thuộc lớp thuật tốn phân loại, kể đến điển K-mean, Naive Baysian Network, Support Vector Machines, Decision Tree, Neural Network, Trong thực tế, người ta thường sử dụng thuật toán thuộc họ Neural Network chúng có khả phân loại xác vượt trội so với thuật tốn cổ điển 1.2 Mạng thần kinh nhân tạo 1.2.1 Tổng quan mạng thần kinh nhân tạo Mạng thần kinh nhân tạo (ANN), thường gọi đơn giản mạng neural (NN), hệ thống tính tốn lấy cảm hứng từ mạng neuron sinh học cấu thành não động vật Trong hình 1.1 ta thấy tế bào thần kinh sinh học nhận nhiều tín hiệu đầu vào cho tín hiệu đầu Các neuron thần kinh nhân tạo có chế nhận truyền thơng tin tương tự vậy, thể hình 1.2 Hình 1.2: Một neuron nhân tạo - hay perceptron Như vậy, dựa ý tưởng não, ANN tập hợp đơn vị nút kết nối với gọi tế bào thần kinh nhân tạo hay perceptron, mơ hình hóa cấu trúc mạng lưới thần kinh não sinh học Mỗi kết nối, giống khớp thần kinh não động vật, truyền tín hiệu từ tế bào thần kinh đến tế bào thần kinh khác Một tế bào thần kinh nhân tạo nhận tín hiệu sau xử lý phát tín hiệu cho tế bào thần kinh kết nối với “Tín hiệu” vào kết nối số thực đầu nơ-ron tính số hàm phi tuyến tổng đầu vào Các kết nối thường kèm trọng số, có nhiệm vụ làm tăng giảm cường độ tín hiệu, điều chỉnh q trình học tập Tế bào thần kinh có ngưỡng cho tín hiệu gửi tín hiệu tổng hợp vượt qua ngưỡng Các mạng thần kinh nhân tạo biến thể thành nhiều dạng khác nhau, ví dụ Multi-layer Perceptron (mạng neural nhiều lớp), Convolutional Neural Network (mạng neural tích chập) [8] - thường sử dụng với liệu dạng ảnh, Recurrent Neural Network (mạng neural hồi quy) - thường áp dụng cho liệu dạng chuỗi văn bản, video, âm thanh, v.v 1.2.2 Mạng Multi-layer Perceptron Multi-layer Perceptron (MLP) mơ hình mạng nơ-ron tạo từ liên kết perceptron chia làm nhiều nhóm, nhóm tương ứng với lớp Một MLP bao gồm ba loại lớp: lớp đầu vào, lớp ẩn lớp đầu Ngoại trừ nút đầu vào, nút neuron sử dụng hàm kích hoạt phi tuyến MLP sử dụng kỹ thuật học tập có giám sát gọi backpropagation để đào tạo Đặc điểm có nhiều lớp sử dụng hàm kích hoạt phi tuyến tính giúp MLP phân biệt với perceptron tuyến tính Cũng vậy, MLP phân biệt lớp liệu phân tách tuyến tính Hình 1.3 ví dụ cho mạng MLP có input layer (lớp đầu vào), output layer (lớp đầu ra) nhiều hidden layers (lớp ẩn) Trong báo cáo chúng em sử dụng hai loại activation function hàm ReLU (cho đầu hidden layer) hàm Sigmoid (cho cuối mơ hình) Mỗi hàm coi có lớp riêng có hàm xử lý sau: - Function – tính lan truyền thẳng - Derivative – tính đạo hàm  Layer Mơ hình MLP có ba loại layer giới thiệu chương bao gồm: input-layer, hidden-layer output-layer Mỗi layer coi lớp riêng có hàm sau: - Hàm khởi tạo: Constructor - Khởi tạo weight: Initialize - Lưu layer file liệu: SaveMode 18  Matrix 19 Các hàm xử lý ma trận - Matrix: hàm constructor để khởi tạo ma trận - Toán tử *: nhân hai ma trận - ElementWise: Nhân hai ma trận theo phần tử  Loss Function Chúng em lập trình hàm mát categorical cross-entropy tổng quát cho trường hợp phân loại nhị phân phân loại nhiều lớp - getLoss: tính loss cho mơ hình điểm liệu - getDerivative: tính đạo hàm hàm categorical cross-entropy theo hàm softmax  Model Trong lớp Model chúng em lập trình hàm xây dựng xử lý mơ hình như: - AddRow: Thêm layer vào kiến trúc mơ hình - GetRow: Lấy row data 20 - Initialize: Khởi tạo weight bias cho mơ hình - SaveMode: lưu checkpoint mơ hình - LoadModel: load mơ hình pretrained - Feedforward: Hàm tính tốn lan truyền thẳng - Backpropagation: Hàm tính tốn lan truyền ngược cập nhật weight - Eval: Hàm đánh giá độ xác mơ hình tập liệu đầu vào - Valid: tính độ mát mơ hình tập liệu đầu vào 3.3 Mã nguồn Python Các thư viện cần thiết from tensorflow.keras.models import Model, Sequential, load_model from tensorflow.keras.layers import Input, Dense 21 from tensorflow.keras.optimizers import SGD from tensorflow.keras.callbacks import ModelCheckpoint Xây dựng model model = Sequential() model.add(Input(shape=X_train.shape[1:])) model.add(Dense(512, activation='relu')) model.add(Dense(128, activation='relu')) model.add(Dense(32, activation='relu')) model.add(Dense(10, activation='softmax')) model.compile(loss='categorical_crossentropy', optimizer=SGD(lr=0.01), metrics=['acc']) history = model.fit(X_train, y_train, batch_size=64, epochs=50, # class_weight=class_weights, validation_data=(X_valid, y_valid), shuffle=True, callbacks=[ModelCheckpoint( 'check_points/digit.hdf5', monitor='val_loss', save_best_only=True)]) 22 CHƯƠNG KIỂM NGHIỆM Chương trình bày giai đoạn kiểm ngiệm lại mơ hình mà chúng em xây dựng phương pháp so sánh với mơ hình lập trình sử dụng thư viện Tensotflow, sâu vào phân tích đánh giá kết đạt được, qua phần:  Bộ liệu  Kết kiểm nghiệm 23 4.1 Bộ liệu Optical Recognition of Handwritten Digits Dataset1 (ORHD) liệu nhận dạng chữ số viết tay quang học bao gồm ảnh bitmap kích thước 32 x 32 chứa chữ số viết tay thu thập từ 43 người Bộ liệu sử dụng chương trình tiền xử lý NIST cung cấp để trích xuất ảnh bitmap chuẩn hóa chữ số viết tay từ mẫu in sẵn Bộ liệu có tất 10 nhãn để phân biệt chữ số từ đến Các thông số thống kê cho liệu (đã chia nhỏ để phục vụ cho trình huấn luyện) trình bày chi tiết bảng 4.1 Hình 4.1 minh họa điểm liệu tập liệu Do liệu ảnh ma trận có chiều, chúng em sử dụng kỹ thuật flattering chuyển ảnh thành dạng vector để phù hợp với đầu vào mạng MLP Đây kỹ thuật đơn giản sử dụng rộng rãi để khớp liệu nhiều chiều thành liệu chiều nhờ việc xếp cột ảnh nối tiếp Vì vậy, ảnh có kích thước 32 x 32 trở thành vector có 1024 chiều Tập Tổn g Tập train 189 198 195 199 186 187 195 201 180 204 1934 Tập valid 51 52 51 52 55 50 43 49 51 46 500 Tập test 36 45 41 33 59 58 44 47 40 43 446 Tổng 2880 Bảng 4.1: Thống kê liệu ORHD 24 Hình 4.1: Một ví dụ ảnh 32 x 32 bit liệu ORHD 4.2 Kết kiểm nghiệm Trong báo cáo này, chúng em sử dụng độ đo Accuracy để đánh giá độ xác mơ hình mạng neural Độ đo Accuracy tính tốn theo cơng thức: Acc (4.1) Trong NCP “Number of Correct Prediction” – số điểm liệu dự đốn đúng, cịn N tổng số điểm liệu dự đoán 25 4.2.1 Kết Chúng em sử dụng mơ hình mạng MLP với hidden layers, số unit layer cài đặt 512 – 128 – 32 Ngoài ra, siêu tham số khác chúng em tinh chỉnh sử dụng grid-search trình bày bảng 4.2 Từ bây giờ, để tiện cho việc trình bày, chúng em gọi mơ hình MLP lập trình ngơn ngữ C++ vắn tắt MLP C++ tương tự với mơ hình MLP Python Bảng 4.2: Các siêu tham số sử dụng mơ hình MLP Kết thu sau: 26 4.2.2 Phân tích kết đánh giá Để giải thích cho kết thu trên, lý chúng em đưa mơ hình MLP có độ nhạy cảm cao với liệu đầu vào Chúng em trực quan hóa so sánh q trình hội tụ hàm loss tập train hai mơ hình MLP C++ MLP Python Theo đó, hai hàm loss giảm đặn tương đối giống Điều cho thấy mơ hình MLP C++ mà chúng em lập trình khớp với lý thuyết giống với mơ hình sử dụng framework Hình 4.2: Sự hội tụ hàm loss tập test qua mơ hình MLP C++ MLP Python 27 28 Hình 4.3: Sự hội tụ hàm loss tập validation qua mô hình MLP C++ MLP Python Qua biểu đồ mà chúng em cung cấp, thấy mơ hình lập trình C++ cho đồ thị giống với mơ hình lập trình Python Nhưng dễ thấy rằng, hội tụ hàm loss MLP C++ khơng ổn định mơ hình lập trình sử dụng Python Lý cho việc thuật tốn tối ưu chúng em lập trình C++ mơ cách đơn giản cho thuật tốn Gradient Descent Còn Python, cụ thể framework Tensorflow 2.0, nghiên cứu triển khai thuật toán Gradient Descent ổn định phương pháp decay hay momentum Hơn hàm tính toán ma trận tối ưu ổn định so với phiên triển khai C++ chúng em 29 TÀI LIỆU THAM KHẢO 30 31 Recommended for you 19 W1 Sample Test tieng anh Kỹ thuật vi xử lý 100% (1) Correctional Administration Criminology 96% (113) English - huhu 10 10 Led hiển thị 100% (3) Preparing Vocabulary FOR UNIT Led hiển thị 100% (2)

Ngày đăng: 26/12/2023, 04:55

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

  • Đang cập nhật ...

Tài liệu liên quan