1. Trang chủ
  2. » Luận Văn - Báo Cáo

XÂY DỰNG MẠNG MULTI-LAYER PERCEPTRON SỬ DỤNG NGÔN NGỮ LẬP TRÌNH C++

43 133 2

Đ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

Thông tin cơ bản

Định dạng
Số trang 43
Dung lượng 1,91 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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ế An B17DCCN002 Đào Hoàng Mai B17DCCN411 Nguyễn Thành Long B17DCCN396 Nguyễn Hữu Long B17DCCN395 Phùng Hà My B17DCCN431 Hà Nội, 06/2021 LỜI NÓI ĐẦU Trong cuộc cách mạng công nghiệp 4.0 hiện nay, yếu tố quyết định thành công trong mọi lĩnh vực luôn gắn với dữ liệu và việc khai thác dữ liệu hiệu quả. Dữ liệu ngày càng trở nên dồi dào, phong phú đã đem lại lợi ích to lớn cho các doanh nghiệp và ý nghĩa lớn lao cho những nhà khoa học nghiên cứu dữ liệu. Tuy nhiên, điều đó cũng đem đến cho công cuộc khám phá ra những thông tin tiềm ẩn bên trong chúng những thách thức mới. 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ác bài toán cốt lõi của khai phá dữ liệu như phân loại dữ liệu, nhận dạng ảnh, nhận dạng giọng nói, v.v. Trong đó, Multi-layer Perceptron là một mạng thần kinh nhân tạo tuy đơn giản nhưng rất hiệu quả và có ý nghĩa trong các bài toán thực tế. Từ những kiến thức của môn học “Kho dữ liệu và khai phá dữ liệu”, cùng với những thông tin học hỏi từ Internet, chúng em đã tìm hiểu và quyết định chọn đề tài “Xây dựng Multi-layer Perceptron sử dụng ngôn ngữ lập trình C++” là đề tài cho bài tập lớn của nhóm. Mô hình đã được kiểm nghiệm với 3 tập dữ liệu khác nhau và so sánh với framework Tensorflow để kiểm chứng độ chính xác.

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA CÔNG NGHỆ THÔNG TIN I

Giảng viên: ThS Nguyễn Quỳnh Chi

Sinh viên: Nguyễn Thế An B17DCCN002

Hà Nội, 06/2021

Trang 2

LỜI NÓI ĐẦU

Trong cuộc cách mạng công nghiệp 4.0 hiện nay, yếu tố quyết địnhthành công trong mọi lĩnh vực luôn gắn với dữ liệu và việc khai thác

dữ liệu hiệu quả Dữ liệu ngày càng trở nên dồi dào, phong phú đãđem lại lợi ích to lớn cho các doanh nghiệp và ý nghĩa lớn lao chonhững nhà khoa học nghiên cứu dữ liệu Tuy nhiên, điều đó cũng đemđến cho công cuộc khám phá ra những thông tin tiềm ẩn bên trongchúng những thách thức mới 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 íchcủa mình khi đạt được những kết quả vượt trội trong các bài toán cốtlõi của khai phá dữ liệu như phân loại dữ liệu, nhận dạng ảnh, nhậndạng giọng nói, v.v Trong đó, Multi-layer Perceptron là một mạng thầnkinh nhân tạo tuy đơn giản nhưng rất hiệu quả và có ý nghĩa trongcác bài toán thực tế

Từ những kiến thức của môn học “Kho dữ liệu và khai phá dữliệu”, cùng với những thông tin học hỏi từ Internet, chúng em đã tìmhiểu và quyết định chọn đề tài “Xây dựng Multi-layer Perceptron sửdụng ngôn ngữ lập trình C++” là đề tài cho bài tập lớn của nhóm

Mô hình đã được kiểm nghiệm với 3 tập dữ liệu khác nhau và sosánh với framework Tensorflow để kiểm chứng độ chính xác

Chúng em xin bày tỏ sự biết ơn sâu sắc của mình tới cô NguyễnQuỳnh Chi, giảng viên môn “Kho dữ liệu và Khai phá dữ liệu”, đãhướng dẫn, chỉ dạy tận tình và cho chúng em rất nhiều các bài họcquý giá về sự tìm tòi, tự học hỏi và chủ động trong học tập Thôngqua môn học của cô và báo cáo này, chúng em không chỉ tìm hiểuthêm được những kiến thức mới mà còn đào sâu hơn và củng cố cáckiến thức đã có, nâng cao khả năng làm việc nhóm để đạt được hiệuquả cao Trong suốt quá trình học tập và tìm hiểu, mặc dù đã cố gắnghết sức nhưng do kiến thức và kinh nghiệm còn non nớt nên báo cáocòn nhiều những thiếu sót và hạn chế Vì vậy chúng em rất mong côgóp ý để báo cáo của chúng em được hoàn thiện hơn

Chúng em xin chân thành cảm ơn cô!

Trang 3

Mục lục

LỜI NÓI ĐẦU

1.1 Tổng quan về bài toán phân loại 2

1.2 Mạng thần kinh nhân tạo 3

1.2.1 Tổng quan về mạng thần kinh nhân tạo 3

1.2.2 Mạng Multi-layer Perceptron 4

2 MULTI-LAYER PERCEPTRON 6 2.1 Các ký hiệu và khái niệm 7

2.1.1 Layer - Lớp 7

2.1.2 Unit - Đơn vị 7

2.1.3 Weights và Biases 8

2.1.4 Activation Function - Hàm kích hoạt 9

2.1.5 Loss Function - Hàm mất mát 11

2.2 Học trong MLP 12

2.2.1 Feedforward - Lan truyền thẳng 12

2.2.2 Backpropagation - Lan truyền ngược 12

Trang 4

3 LẬP TRÌNH VÀ MÃ NGUỒN 15

3.1 Lập trình 16

3.2 Mã nguồn C++ 18

3.2.1 Định nghĩa các hàm 18

3.3 Mã nguồn Python 20

4 KIỂM NGHIỆM 22 4.1 Bộ dữ liệu 23

4.1.1 Optical Recognition of Handwritten Digits Dataset 23 4.1.2 Spambase Dataset 24

4.1.3 Mushroom Dataset 25

4.2 Kết quả 26

4.2.1 Kết quả chính 27

4.2.2 Phân tích kết quả và đánh giá 29

Trang 5

Chương 1

TỔNG QUAN

Trong chương 1, báo cáo sẽ giới thiệu về bài toán phân loại, một bàitoán điển hình trong khai phá dữ liệu, đồng thời cũng trình bày tổngquan về mạng thần kinh nhân tạo thông qua các phần:

• Tổng quan về bài toán phân loại

• Mạng thần kinh nhân tạo

Trang 6

1.1 Tổng quan về bài toán phân loại

Phân loại (classification) là một dạng thuật toán dự đoán lớp của cácđối tượng dữ liệu đã cho với đầu ra là các giá trị rời rạc Các lớpnày đôi khi được gọi là mục tiêu, nhãn hoặc danh mục Thuật toánnày thường được gọi là phân loại nhị phân (binary classification) vớinhiệm vụ phân loại chỉ có 2 lớp, và phân loại nhiều lớp (multi-classclassification) với các bài toán có từ 3 lớp phân loại trở lên Phân loại

là một thuật toán nằm trong nhóm thuật toán học có giám sát, nghĩa

là bộ dữ liệu được sử dụng trong quá trình huấn luyện được gán sẵnnhãn đúng Thuật toán này có nhiệm vụ xấp xỉ hay mô hình một ánh

xạ (f) từ các biến đầu vào x đến các biến đầu ra rời rạc y bằngviệc sử dụng một bộ dữ liệu huấn luyện đã biết trước đầu ra (hay lớp/nhãn) Sau đó, trong quá trình thử nghiệm, mô hình có thể nhận biếtđược nhãn của các điểm dữ liệu chưa biết Một ví dụ điển hình choloại thuật toán này là bài toán phát hiện thư rác cho các nhà cungcấp dịch vụ email Khi đó, đầu vào của bài toán là các thư điện tử(bao gồm nội dung, tiêu đề, tài khoản người gửi, v.v) và đầu ra là mộttrong hai lớp “tích cực” hoặc lớp “tiêu cực” Lớp “tích cực” nghĩa làthư điện tử đầu vào là một thư rác và ngược lại với lớp “tiêu cực”.Đây là bài toán phân loại nhị phân (binary classification) vì chỉ có hailớp là “thư rác” và “không phải thư rác”

Thuật toán phân loại là một thuật toán quan trọng, được ứng dụngrộng rãi trong khai phá dữ liệu do nó có khả năng tự động phân loại

dữ liệu vào các nhóm khác nhau, đặc biệt là với các bộ dữ liệu lớn,

mà không cần lập trình cụ thể Việc phân loại dữ liệu sẽ giúp cho quátrình trích xuất các thông tin từ các điểm dữ liệu thuộc các nhóm khácnhau trở nên dễ dàng và hiệu quả hơn Có tương đối nhiều các thuậttoán thuộc lớp thuật toán phân loại, có thể kể đến điển hình như K-mean, Naive Baysian Network, Support Vector Machines, Decision Tree,Neural Network, Trong thực tế, người ta thường sử dụng các thuậttoán thuộc họ Neural Network do chúng có khả năng phân loại chínhxác vượt trội so với các thuật toán cổ điển

Trang 7

1.2 Mạng thần kinh nhân tạo

1.2.1 Tổng quan về mạng thần kinh nhân tạo

Mạng thần kinh nhân tạo (ANN) [11], thường được gọi đơn giản làmạng neural (NN), là các hệ thống tính toán được lấy cảm hứng từcác mạng neuron sinh học cấu thành não động vật Trong hình 1.1 ta

có thể thấy một tế bào thần kinh sinh học có thể nhận nhiều tín hiệuđầu vào và cho một tín hiệu đầu ra duy nhất

Hình 1.1: Một neuron thần kinh trong bộ não sinh học

Các neuron thần kinh nhân tạo cũng có cơ chế nhận và truyềnthông tin tương tự như vậy, được thể hiện trong hình 1.2

Hình 1.2: Một neuron nhân tạo - hay một perceptron

Trang 8

Như vậy, dựa trên ý tưởng về bộ não, ANN là một tập hợp các đơn

vị hoặc nút kết nối với nhau được gọi là tế bào thần kinh nhân tạohay perceptron, mô hình hóa các cấu trúc mạng lưới thần kinh trong

bộ não sinh học Mỗi kết nối, giống như khớp thần kinh trong nãođộng vật, có thể truyền tín hiệu từ tế bào thần kinh này đến tế bàothần kinh khác Một tế bào thần kinh nhân tạo nhận một tín hiệu sau

đó xử lý nó và có thể phát tín hiệu cho các tế bào thần kinh kếtnối với nó “Tín hiệu” đi vào một kết nối là một số thực và đầu racủa mỗi nơ-ron được tính bằng một số hàm phi tuyến của tổng cácđầu vào của nó Các kết nối thường đi kèm các trọng số, có nhiệm

vụ làm tăng hoặc giảm cường độ của tín hiệu, được điều chỉnh trongquá trình học tập Tế bào thần kinh có thể có ngưỡng sao cho tín hiệuđược gửi đi chỉ khi tín hiệu tổng hợp vượt qua ngưỡng đó Các mạngthần kinh nhân tạo còn được biến thể thành nhiều dạng khác nhau,

ví dụ như Multi-layer Perceptron (mạng neural nhiều lớp), ConvolutionalNeural Network (mạng neural tích chập) [8] - thường được sử dụng vớicác dữ liệu dạng ảnh, Recurrent Neural Network (mạng neural hồi quy)[6] - thường áp dụng cho các dữ liệu dạng chuỗi như văn bản, video,

âm thanh, v.v

1.2.2 Mạng Multi-layer Perceptron

Multi-layer Perceptron (MLP) là một mô hình mạng nơ-ron được tạo

ra từ sự liên kết của các perceptron chia làm nhiều nhóm, mỗi nhómtương ứng với một lớp Các mạng MLP đôi khi còn được gọi là “vanilla”neural network, đặc biệt là khi mạng này chỉ có một lớp ẩn duy nhất.Một MLP bao gồm ít nhất ba loại lớp: lớp đầu vào, lớp ẩn và lớpđầu ra Ngoại trừ các nút đầu vào, mỗi nút là một neuron sử dụnghàm kích hoạt phi tuyến MLP sử dụng một kỹ thuật học tập có giámsát được gọi là backpropagation để đào tạo Đặc điểm có nhiều lớp và

sử dụng hàm kích hoạt phi tuyến tính giúp MLP phân biệt với mộtperceptron tuyến tính Cũng vì vậy, MLP có thể phân biệt các lớp dữliệu không thể phân tách tuyến tính Hình 1.3 là ví dụ cho một mạng

Trang 9

và nhiều hidden layers (lớp ẩn).

Hình 1.3: Một ví dụ về mạng Multi-layer Perceptron

Hiện nay, với cú pháp đơn giản và có nhiều framework hỗ trợ,Python đang là ngôn ngữ được sử dụng nhiều nhất trong lĩnh vực họcmáy và khai phá dữ liệu Tuy nhiên, so với các thư viện sử dụng ngônngữ Python, C++ cũng sở hữu các điểm mạnh rõ ràng như là một ngônngữ được nhập tĩnh, vì vậy đoạn mã sẽ không có lỗi nhập xuất hiệntrong thời gian chạy, các đoạn mã nhỏ gọn và có thời gian chạy nhanhhơn, cho phép hiệu suất tính toán cao so với các thuật toán được thựchiện hoàn toàn bằng Python hoặc MATLAB [3] Vì vậy, trong báo cáonày, chúng em sẽ xây dựng một mô hình mạng Multi-layer Perceptron

sử dụng ngôn ngữ C++ để giải quyết bài toán phân loại với các bộ dữliệu khác nhau Ở các phần tiếp theo, báo cáo sẽ trình bày chi tiết về

cơ sở lý thuyết của mạng MLP trong chương 2, quá trình xây dựng môhình và mã nguồn C++ trong chương 3, đồng thời cũng sử dụng cácphương pháp định lượng để kiểm nghiệm lại các đoạn mã do nhóm lậptrình trên các bộ dữ liệu khác nhau trong chương 4

Trang 11

2.1 Các ký hiệu và khái niệm

2.1.1 Layer - Lớp

Ngoài input layer (lớp đầu vào) và output layer (lớp đầu ra), mạngMLP có thể có nhiều hidden layers (lớp ẩn) ở giữa Các hidden layerstrong mạng tính từ lớp đầu vào đến lớp đầu ra lần lượt được đánh thứ

tự là lớp ẩn 1, lớp ẩn 2, Hình 2.1 là ví dụ cho một mạng MLP có

một input layer , một output layer và hai hidden layers Số lượng layertrong một MLP, được ký hiệu là L, được tính bằng số lớp ẩn cộng vớimột Tức là khi đếm số lượng lớp của một mạng MLP, ta không tínhlớp đầu vào Trong hình 2.1, L= 3

Hình 2.1: Mạng perceptron nhiều tầng với 2 hidden layers

2.1.2 Unit - Đơn vị

Trong hình 2.2, một node hình tròn màu cam trong một layer đượcgọi là một unit Unit ở các input layer, hidden layers, và output layerđược lần lượt gọi là input unit, hidden unit, và output unit Trong đó,đầu vào của các hidden layer được ký hiệu bởi z, đầu ra của mỗi unitthường được kí hiệu là a (thể hiện activation, tức là giá trị của mỗiunit sau khi ta áp dụng activation function lên z) Đầu ra của unit thứ

Trang 12

i trong layer thứ l được kí hiệu là a(l)i Giả sử thêm rằng số unit tronglayer thứ l (không tính bias) là d(l) thì vector biểu diễn đầu ra củalayer thứ l được ký hiệu là a(l) ∈Rd(l).

Hình 2.2: Các ký hiệu sử dụng trong mạng Multi-layer Perceptron

2.1.3 Weights và Biases

Các ký hiệu cho weight và bias của mạng MLP được ký hiệu như ởhình 2.2 Theo đó, có L ma trận trọng số cho một MLP có L layers.Các ma trận này được ký hiệu là W(l) ∈ Rd(l−1)×d(l), l = 1,2, , L trong

đó W(l) thể hiện các kết nối từ layer thứ l −1 tới layer thứ l (nếu tacoi input layer là layer thứ 0) Cụ thể hơn, phần từ w(l)ij thể hiện kếtnối từ node thứ i của layer thứ (l −1) tới node thứ j của layer thứ (l).Các bias của layer thứ (l) được ký hiệu là b(l) ∈ Rd(l) Tập hợp cácweight và bias lần lượt được ký hiệu là W và b

Trang 13

2.1.4 Activation Function - Hàm kích hoạt

Mỗi output của một layer (trừ input layer) sẽ được tính toán dựa vàocông thức 2.1:

a(l) =f(l)(W(l)Ta(l−1)+b(l)) (2.1)Trong đó f(l)(.) là một hàm kích hoạt phi tuyến Nếu hàm kích hoạttại một layer là một hàm tuyến tính, layer này và layer tiếp theo có thể

rút gọn thành một layer vì hợp của các hàm tuyến tính là một hàm tuyến

tính Hàm kích hoạt thường là một hàm số áp dụng lên từng phần tửcủa ma trận hoặc vector đầu vào, nói cách khác, hàm kích hoạt thường

là element-wise (trừ hàm Softmax) Trong báo cáo này, chúng em sẽ sử

dụng hàm kích hoạt ReLU cho các hidden layers và hàm Softmax chooutput layer

Trang 14

thức rất đơn giản và có lợi về mặt tính toán Đạo hàm của nó bằng 0tại các điểm âm, bằng 1 tại các điểm dương ReLU được chứng minhgiúp cho việc huấn luyện các multilayer neural network và deep network(rất nhiều hidden layer) nhanh hơn rất nhiều so với các hàm kích hoạtkhác như hàm tanh [5], hàm sigmoid Hình 2.4 so sánh tốc độ hội tụcủa hàm mất mát khi sử dụng hai hàm kích hoạt ReLU và tanh Rõràng có thể nhận thấy, tốc độ hội tụ khi sử dụng hàm ReLU cho kếtquả nhanh hơn nhiều lần so với hàm tanh Điều này có thể giải thíchđược là vì ReLU được tính toán gần như tức thời và gradient của nócũng được tín rất nhanh Mặc dù cũng có nhược điểm đạo hàm bằng 0với các giá trị đầu vào âm, ReLU được chứng minh bằng thực nghiệmrằng có thể khắc phục việc này bằng cách tăng số hidden units 1.

Hình 2.4: So sánh tốc độ hội tụ của ReLU và tanh sau các epoch

Softmax

Với các bài toán phân loại, ta cần một mô hình xác suất sao cho vớimỗi input x, ta có đầu ra là vector a ∈ RM với M là số lượng lớpcủa bài toán và ai đại diện cho xác suất để input đó rơi vào lớp thứ

i Điều kiện cần là các ai phải dương và tổng của chúng phải bằng 1

Trang 15

Đồng thời, ta cũng cần một quan hệ đồng biến giữa z i và a i, nghĩa lànếu zi càng lớn, xác suất để điểm dữ liệu x rơi vào lớp thứ i càngcao Như vậy, ta có hàm Softmax có thể đảm bảo được các điều kiện

đã nêu trên, đồng thời đơn giản về mặt tính toán như sau:

ai= exp(zi)

PC j=1 exp(z j), ∀i= 1,2 , C (2.2)Lúc này, ta có thể coi xác suất để một điểm dữ liệu x rơi vào lớpthứ i nếu biết tham số mô hình là ma trận trọng số W bằng a i:

p(yk =i|xk;W) =ai (2.3)

2.1.5 Loss Function - Hàm mất mát

Quan hệ giữa phép đánh giá mô hình (tốt hay không tốt) và các trọng

số của mô hình thường được mô tả thông qua một hàm số gọi là hàmmất mát Hàm mất mát đo độ chênh lệch giữa đầu ra dự đoán và đầu

ra thực sự để đánh giá mô hình được huấn luyện có hiệu quả haykhông Việc đi tìm các trọng số của mạng sao cho việc huấn luyện làhiệu quả nhất đồng nghĩa với việc đi tối thiểu hàm mất mát Trong báocáo này, chúng em sử dụng hàm mất mát cross-entropy do nó có thờigian huấn luyện ít hơn và cho khả năng tổng quát hóa cao hơn so vớisai số tổng bình phương (mean squared error) [4] Trong phân loại nhịphân, tức là số lượng lớp phân loại C = 2, hàm mất mát cross-entropy

có thể được tính toán như sau:

J(y, yˆ) =−(ylog(ˆy) + (1− y)log(1− yˆ)) (2.4)Nếu C > 2 (phân loại nhiều lớp), hàm cross-entropy lúc này sẽ đượcgọi là categorical cross-entropy Cụ thể, ta sẽ tính độ mất mát cho từnglớp riêng biệt và cộng tổng các kết quả như sau:

J(y, ˆ y) =−

CXi=1

y i log(ˆy i) (2.5)

Trang 16

2.2 Học trong MLP

2.2.1 Feedforward - Lan truyền thẳng

Quá trình lan truyền thẳng chính là quá trình tính toán ra output củamạng với một input sample Trong lan truyền thẳng, một sample đi quainput layer để trở thành input của mạng, sau đó đầu ra của các hiddenlayers được tính toán bởi các trọng số và các hàm kích hoạt lần lượtcho đến khi ta có được output của hidden layer cuối cùng Lúc này,vector output của hidden layer cuối cùng sẽ được truyền vào outputlayer, được tính toán lại bởi hàm kích hoạt softmax và cho ra outputcuối cùng Sau đó, hàm mất mát sẽ được tính toán để phục vụ cho quátrình lan truyền ngược tiếp ngay sau đó Giai đoạn lan truyền thẳng sẽđược tóm tắt bằng các công thức sau đây:

• Gán input cho input layer:

2.2.2 Backpropagation - Lan truyền ngược

Trong báo cáo này, chúng em sử dụng thuật toán gradient descent (GD),

cụ thể là mini-batch gradient descent để tối ưu mạng MLP do đây là

Trang 17

được sử dụng Mini-batch ở đây được hiểu là các weights và biases sẽđược cập nhật sau một tập các điểm dữ liệu GD có thể được sử dụng

để tính gradient cho các ma trận trọng số và biases dựa trên một cặpđiểm dữ liệu huấn luyện x, y, tức là các trọng số được cập nhật lại saumỗi một cặp điểm dữ liệu Để áp dụng được thuật toán SGD, chúng

ta cần tính được đạo hàm của hàm mất mát theo từng ma trận trọng

số W(l) và vector bias b(l)

Giả sử J(W, b, X, Y) là một hàm mất mát của bài toán, trong đó

W, b là tập hợp tất cả các ma trận trọng số giữa các layer và vectorbias của mỗi layer X, Y là cặp dữ liệu huấn luyện với mỗi cột tươngứng với một điểm dữ liệu Để có thể áp dụng các phương pháp gra-dient descent, chúng ta cần tính được các ∇W( l ) J;∇(l)b J, ∀l = 1,2, , L.Tuy nhiên, việc tính toán trực tiếp các giá trị đạo hàm là cực kỳ phứctạp vì hàm mất mát không phụ thuộc trực tiếp vào các ma trận hệ

số và vector bias Phương pháp phổ biến nhất được sử dụng để giảiquyết vấn đề này có tên là backpropagation - thuật toán cho phép tatính đạo hàm ngược từ layer cuối cùng đến layer đầu tiên Layer cuốicùng được tính toán trước vì nó gần gũi với đầu ra dự đoán và hàmmất mát nhất Việc tính toán đạo hàm của các ma trận hệ số trongcác layer trước được thực hiện dựa trên một quy tắc chuỗi quen thuộccho đạo hàm của hàm hợp

Hình 2.5: Mô phỏng cách tính lan truyền ngược

Trang 18

Đạo hàm của hàm mất mát theo một thành phần của ma trận trọng

số của output layer:

∂J

∂wij(L)

= ∂J

∂z(l)j. ∂z

(l) j

∂J

∂b(L)j

= ∂J

∂zj(L).∂z

(L) j

2 Với mỗi unit j ở output layer, tính:

Trang 19

• Lập trình

• Mã nguồn C++

• Mã nguồn Python

Trang 20

3.1 Lập trình

Cấu trúc dự án xây dựng mô hình mạng neural MLP sử dụng ngônngữ C++ của chúng em bao gồm các phần chính như sau:

• data: folder lưu trữ dữ liệu

Hình 3.1: Folder data chứa dữ liệu cho quá trình huấn luyện và thử

Trang 21

• lib: folder chứa các module để xây dựng model

Hình 3.2: Các module được sử dụng để xây dựng mô hình

• train.cpp: chương trình xây dựng và huấn luyện mô hình

• test.cpp: chương trình thử nghiệm và đánh giá mô hình

Hình 3.3: Các chương trình huấn luyện và thử nghiệm mô hình

Đối với mã nguồn Python (dùng để kiểm chứng), chúng em sử dụngframework Tensorflow 2.0 cùng một số thư viện hỗ trợ của Python baogồm:

Ngày đăng: 05/12/2021, 23:46

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[4] B ISHOP , C. M. Pattern recognition and machine learning. Springer, 2006 Sách, tạp chí
Tiêu đề: Pattern recognition and machine learning
[5] K RIZHEVSKY , A., S UTSKEVER , I., AND H INTON , G. E. Imagenet classi- fication with deep convolutional neural networks. Advances in neural information processing systems 25 (2012), 1097–1105 Sách, tạp chí
Tiêu đề: Advances in neuralinformation processing systems 25
Tác giả: K RIZHEVSKY , A., S UTSKEVER , I., AND H INTON , G. E. Imagenet classi- fication with deep convolutional neural networks. Advances in neural information processing systems 25
Năm: 2012
[6] M EDSKER , L. R., AND J AIN , L. Recurrent neural networks. Design and Applications 5 (2001) Sách, tạp chí
Tiêu đề: Designand Applications 5
[7] O PITZ , J., AND B URST , S. Macro f1 and macro f1. arXiv preprint arXiv:1911.03347 (2019) Sách, tạp chí
Tiêu đề: arXiv preprintarXiv:1911.03347
[8] O’S HEA , K., AND N ASH , R. An introduction to convolutional neural networks. arXiv preprint arXiv:1511.08458 (2015) Sách, tạp chí
Tiêu đề: arXiv preprint arXiv:1511.08458
[9] T ALATHI , S. S., AND V ARTAK , A. Improving performance of re- current neural network with relu nonlinearity. arXiv preprint arXiv:1511.03771 (2015) Sách, tạp chí
Tiêu đề: arXiv preprintarXiv:1511.03771
[10] T IỆP , V Ũ H ỮU . Machine learning cơ bản. Nhà xuất bản Khoa học và Kỹ thuật (2018) Sách, tạp chí
Tiêu đề: Nhà xuất bản Khoa học vàKỹ thuật
Nhà XB: Nhà xuất bản Khoa học vàKỹ thuật" (2018)
[11] Y EGNANARAYANA , B. Artificial neural networks. PHI Learning Pvt.Ltd., 2009 Sách, tạp chí
Tiêu đề: Artificial neural networks
[12] Z HANG , Y.-D., P AN , C., S UN , J., AND T ANG , C. Multiple sclerosis iden- tification by convolutional neural network with dropout and para- metric relu. Journal of computational science 28 (2018), 1–10 Sách, tạp chí
Tiêu đề: Journal of computational science 28
Tác giả: Z HANG , Y.-D., P AN , C., S UN , J., AND T ANG , C. Multiple sclerosis iden- tification by convolutional neural network with dropout and para- metric relu. Journal of computational science 28
Năm: 2018
[2] A GARAP , A. F. Deep learning using rectified linear units (relu) Khác

HÌNH ẢNH LIÊN QUAN

Hình 1.1: Một neuron thần kinh trong bộ não sinh học - XÂY DỰNG MẠNG MULTI-LAYER PERCEPTRON SỬ DỤNG NGÔN NGỮ LẬP TRÌNH C++
Hình 1.1 Một neuron thần kinh trong bộ não sinh học (Trang 7)
Hình 1.2: Một neuron nhân tạo - hay một perceptron - XÂY DỰNG MẠNG MULTI-LAYER PERCEPTRON SỬ DỤNG NGÔN NGỮ LẬP TRÌNH C++
Hình 1.2 Một neuron nhân tạo - hay một perceptron (Trang 7)
Hình 1.3: Một ví dụ về mạng Multi-layer Perceptron - XÂY DỰNG MẠNG MULTI-LAYER PERCEPTRON SỬ DỤNG NGÔN NGỮ LẬP TRÌNH C++
Hình 1.3 Một ví dụ về mạng Multi-layer Perceptron (Trang 9)
Hình 2.1: Mạng perceptron nhiều tầng với 2 hidden layers - XÂY DỰNG MẠNG MULTI-LAYER PERCEPTRON SỬ DỤNG NGÔN NGỮ LẬP TRÌNH C++
Hình 2.1 Mạng perceptron nhiều tầng với 2 hidden layers (Trang 11)
Hình 2.2: Các ký hiệu sử dụng trong mạng Multi-layer Perceptron - XÂY DỰNG MẠNG MULTI-LAYER PERCEPTRON SỬ DỤNG NGÔN NGỮ LẬP TRÌNH C++
Hình 2.2 Các ký hiệu sử dụng trong mạng Multi-layer Perceptron (Trang 12)
Hình 2.3: Đồ thị hàm ReLU - XÂY DỰNG MẠNG MULTI-LAYER PERCEPTRON SỬ DỤNG NGÔN NGỮ LẬP TRÌNH C++
Hình 2.3 Đồ thị hàm ReLU (Trang 13)
Hình 2.4: So sánh tốc độ hội tụ của ReLU và tanh sau các epoch - XÂY DỰNG MẠNG MULTI-LAYER PERCEPTRON SỬ DỤNG NGÔN NGỮ LẬP TRÌNH C++
Hình 2.4 So sánh tốc độ hội tụ của ReLU và tanh sau các epoch (Trang 14)
Hình 2.5: Mô phỏng cách tính lan truyền ngược - XÂY DỰNG MẠNG MULTI-LAYER PERCEPTRON SỬ DỤNG NGÔN NGỮ LẬP TRÌNH C++
Hình 2.5 Mô phỏng cách tính lan truyền ngược (Trang 17)
Hình 3.1: Folder data chứa dữ liệu cho quá trình huấn luyện và thử nghiệm - XÂY DỰNG MẠNG MULTI-LAYER PERCEPTRON SỬ DỤNG NGÔN NGỮ LẬP TRÌNH C++
Hình 3.1 Folder data chứa dữ liệu cho quá trình huấn luyện và thử nghiệm (Trang 20)
Hình 3.2: Các module được sử dụng để xây dựng mô hình - XÂY DỰNG MẠNG MULTI-LAYER PERCEPTRON SỬ DỤNG NGÔN NGỮ LẬP TRÌNH C++
Hình 3.2 Các module được sử dụng để xây dựng mô hình (Trang 21)
Bảng 4.1: Thống kê bộ dữ liệu ORHD - XÂY DỰNG MẠNG MULTI-LAYER PERCEPTRON SỬ DỤNG NGÔN NGỮ LẬP TRÌNH C++
Bảng 4.1 Thống kê bộ dữ liệu ORHD (Trang 27)
Hình 4.1: Một ví dụ về ảnh 32x32 bit trong bộ dữ liệu ORHD - XÂY DỰNG MẠNG MULTI-LAYER PERCEPTRON SỬ DỤNG NGÔN NGỮ LẬP TRÌNH C++
Hình 4.1 Một ví dụ về ảnh 32x32 bit trong bộ dữ liệu ORHD (Trang 28)
Hình 4.2: Phân phối dữ liệu trong bộ Spambase dataset - XÂY DỰNG MẠNG MULTI-LAYER PERCEPTRON SỬ DỤNG NGÔN NGỮ LẬP TRÌNH C++
Hình 4.2 Phân phối dữ liệu trong bộ Spambase dataset (Trang 29)
Hình 4.3: Phân phối dữ liệu trong bộ Mushroom Dataset - XÂY DỰNG MẠNG MULTI-LAYER PERCEPTRON SỬ DỤNG NGÔN NGỮ LẬP TRÌNH C++
Hình 4.3 Phân phối dữ liệu trong bộ Mushroom Dataset (Trang 30)
Bảng 4.3 trình bày các kết quả chính của mô hình MLP C++ khi được kiểm nghiệm trên 3 bộ dữ liệu khác nhau so sánh với mô hình MLP Python - XÂY DỰNG MẠNG MULTI-LAYER PERCEPTRON SỬ DỤNG NGÔN NGỮ LẬP TRÌNH C++
Bảng 4.3 trình bày các kết quả chính của mô hình MLP C++ khi được kiểm nghiệm trên 3 bộ dữ liệu khác nhau so sánh với mô hình MLP Python (Trang 32)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w