(Tiểu luận) báo cáo bài tập lớn bộ môn thực tập cơ sở đề tài mô hình mạng neuron nhân tạo

30 0 0
(Tiểu luận) báo cáo bài tập lớn bộ môn thực tập cơ sở đề tài  mô hình mạng neuron nhân tạo

Đ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

Học viện công nghệ bưu chính viễn thông Khoa công nghệ thông tin I  Báo cáo Bài tập lớn Bộ môn Thực tập cơ sở Đề tài Mô hình mạng Neuron nhân tạo GV hướng dẫn TS Nsguyễn Văn Thủy Sinh viên thực h[.]

Học viện cơng nghệ bưu viễn thơng Khoa cơng nghệ thông tin I - - Báo cáo Bài tập lớn Bộ môn: Thực tập sở Đề tài : Mơ hình mạng Neuron nhân tạo GV hướng dẫn: TS Nsguyễn Văn Thủy Sinh viên thực hiện: Phan Thiên Hưng MSV: B19DCCN329 h Mục Lục I – Lý thuyết Neural Network vấn đề liên quan Ý tưởng Neural Network Mạng Neural nhân tạo Thành phần mạng Neural nhân tạo Input layer Hidden layer Output layer Trọng số liên kết – Weights .6 Hàm kích hoạt (activation functions) Hàm sigmoid Hàm Tanh 10 Rectified Linear Unit (ReLU function) 11 Thuật toán Gradient Descent 11 II – Quá trình học model 13 Feedforward 14 Backpropagation 15 III – Xây dựng model 16 Tiền xử lý liệu 16 Xây dựng hàm kích hoạt cho layer 17 Khởi tạo mơ hình giá trị ban đầu cho tham số mô hình 17 Huấn luyện mơ hình với tập liệu Train_data 18 Tính giá trị đầu dự đoán 19 Tính Loss (độ sai lệch model) 19 Lặp lại trình fit model 20 Thử lại với tệp liệu Test_data 20 IV – Áp dụng với toán toán tử XOR 20 Phép toán XOR .20 Giải toán sử dụng mạng Neural nhân tạo 22 Input layer – hidden layer: .23 Hidden layer – Output .24 Tổng hợp mạng 25 Tạo liệu, fit model, tính tốn sai số thử nghiệm dự đốn mơ hình 26 h Tài liệu tham khảo 29 h I – Lý thuyết Neural Network vấn đề liên quan Ý tưởng Neural Network Neural tính từ neuron (nơ-ron), network cấu trúc đồ thị nên neural network (NN) hệ thống tính tốn lấy cảm hứng từ hoạt động nơron hệ thần kinh Nơ-ron đơn vị cấu tạo hệ thống thần kinh phần quan trọng não Não gồm khoảng 10 triệu nơ-ron nơ-ron liên kết với 10.000 nơ-ron khác Ở nơ-ron có phần thân (soma) chứa nhân, tín hiệu đầu vào qua sợi nhánh (dendrites) tín hiệu đầu qua sợi trục (axon) kết nối với nơ-ron khác Hiểu đơn giản nơ-ron nhận liệu đầu vào qua sợi nhánh truyền liệu đầu qua sợi trục, đến sợi nhánh nơ-ron khác Mỗi nơron nhận xung điện từ nơ-ron khác qua sợi nhánh Nếu xung điện đủ lớn để kích hoạt nơ-ron, tín hiệu qua sợi trục đến sợi nhánh nơ-ron khác Mạng Nơ-ron thần kinh Dựa theo cách hoạt động mạng Neuron thần kinh, mơ hình mạng Neuron nhân tạo (ANN) viết nhằm giải toán theo hướng học sâu (Deep learning), khắc phục số vấn đề nhớ thời gian Machine learning hay số tốn khó giải theo Machine learning h Mạng Neural nhân tạo Neural network hay gọi Mạng nơ-ron nhân tạo mạng sử dụng mơ hình tốn học phức tạp để xử lý thông tin Trong mạng nơ-ron nhân tạo, loạt thuật toán sử dụng để xác định nhận mối quan hệ tập liệu Mỗi nút mạng tổng hợp từ tất nodes layer trước nó, đồng thời input để tổng hợp thành nodes layer sau thông qua hệ số Weight tương ứng Phần tổng hợp nút mạng nơron nhân tạo tổng trọng số đầu vào, cộng thêm với hệ số bias: m u=∑ wi x i +bias i=1 Trước đưa đến nơron đầu ra, tín hiệu tổng hợp đưa qua hàm kích hoạt (activation function) hay Transfer function Được ký hiệu toán học sau: y=f (u) Các hàm giới thiệu chi tiết phần sau Quá trình xử lý thông tin ANN h Thành phần mạng Neural nhân tạo Kiến trúc chung mạng Neural nhân tạo gồm thành phần, chia thành lớp (layers): Input layer – lớp đầu vào, Hidden layer – lớp ẩn Output layer – lớp đầu Dữ liệu truyền qua lớp thống qua trọng số liên kết (Weights) hàm kích hoạt (activation functions) Mơ hình mạng Neural nhân tạo Input layer Mỗi node Input layer tương ứng với thuộc tính (attribute) liệu (data) Ví dụ ứng dụng ngân hàng xem xét có chấp nhận cho khách hàng vay tiền hay khơng Input thuộc tính khách hàng thu nhập, nghề nghiệp, tuổi, số con,…; dựa vào yếu tố bán kính, tuổi khối u… để kết luận trường hợp ung thư lành tính hay ác tính… h Hidden layer Các hidden layer gồm nodes nhận liệu input từ nodes lớp (Layer) trước chuyển đổi input cho lớp xử lý Trong ANN khơng có có nhiều lớp ẩn Các tầng đóng vai trị logic, suy luận mạng Output layer Thể kết đầu mạng Kết ANN giải pháp cho vấn đề, ví dụ với toán xem xét chấp nhận cho khách hàng vay tiền hay khơng output yes (cho vay) no (không cho vay); kết luận cho việc khối u xét đầu vào có phải khối u lành tính hay ác tính? Trọng số liên kết – Weights Connection Weights (Trọng số liên kết):  Đây thành phần quan trọng ANN, nó thể mức độ quan trọng (độ mạnh) liệu đầu vào trình xử lý thơng tin (q trình chuyển đổi liệu từ Layer sang layer khác) Quá trình học (Learning Processing) ANN thực trình điều chỉnh trọng số (Weight) input data để có kết mong muốn Thường w(ijk) kí hiệu layer k , nghĩa hệ số nối từ node thứ i layer k-1 tới node thứ j Hàm kích hoạt (activation functions) Trong mạng neural nhân tạo, hàm kích hoạt hàm ánh xạ đầu vào nút với đầu tương ứng Ta lấy tổng trọng số kết nối đến cho node layer truyền tổng trọng số cho hàm kích hoạt Hàm kích hoạt thực số loại hoạt động để biến đổi tổng thành số Phép biến đổi thường phép biến đổi phi tuyến tính node output = activation(weighted sum of inputs) Tại lại cần hàm kích hoạt phi tuyến? h Một đặc điểm quan trọng hàm tuyến tính hợp hai hàm tuyến tính hàm tuyến tính Điều có nghĩa là, mạng neural sâu, có phép biến đổi tuyến tính giá trị liệu trình chuyển tiếp, ánh xạ học mạng từ đầu vào đến đầu tuyến tính Thơng thường, loại ánh xạ với mạng neural sâu phức tạp ánh xạ tuyến tính đơn giản Đây nơi hàm kích hoạt xuất Hầu hết hàm kích hoạt phi tuyến tính chúng chọn theo cách có chủ đích Việc có hàm kích hoạt phi tuyến tính cho phép mạng neural tính tốn chức phức tạp tùy ý Một số activation function bật thường sử dụng hàm Tanh, ReLU, Sigmoid Softmax Trong Sigmoid, Softmax sử dụng nơron đầu ra, tương ứng cho toàn phân loại (classification) hay hồi quy (regression) Các hàm kích hoạt (activation function) Sigmoid, Tanh ReLU dùng kết nối nơron với Trong số hàm kích hoạt trên, ReLU hàm kích hoạt thường sử dụng cả, tượng tiêu biến độ dốc (vanishing gradient) hàm kích hoạt (activation function) Sigmoid Tanh Hiện tượng tiêu biến độ dốc (vanishing gradient) xảy giá trị điểm bão hòa hàm số Tanh Sigmoid, lúc đạo hàm (derivative) trở nên nhỏ, hậu làm cho việc thay đổi trọng số (weight) trình huấn luyện (training) gần 0, việc huấn luyện (training) model gần khơng có tác dụng Với hàm kích hoạt (activation function) ReLU, giá trị dương giữ ngun giá trị, khơng cịn điểm bão hịa nữa, đạo hàm (derivative) ln có độ lớn đủ tốt cho việc huấn luyện (training) h Đồ thị hàm Sigmoid hàm Tanh đạo hàm chúng Hàm sigmoid Sigmoid coi hàm sử dụng để làm trơn liệu hàm khả vi bị chặn Sigmoid hữu ích để chuyển đổi giá trị thành xác suất sử dụng để phân lớp nhị phân - binary classification Hàm Sigmoid ánh xạ liệu đầu vào thành giá trị khoảng [0;1] Có thể viết cơng thức tốn học sau: f (x )= 1+e−x Đồ thị hàm số biểu biểu diễn hình: h hàm Sigmoid Đồ thị Đầu vào số thực âm nhỏ cho đầu tiệm cận với 0, ngược lại, đầu vào số thực dương lớn cho đầu số tiệm cận với Nếu coi điểm có tung độ 1/2 làm điểm phân chia điểm xa điểm phía bên trái có giá trị gần Ngược lại, điểm xa điểm phía phải có giá trị gần Đạo hàm hàm Sigmoid: f ' (x )= e− x e−x = ∗ =f ( x )∗(1−f ( x )) (1+e−x )2 1+e−x 1+ e−x Công thức đạo hàm đơn giản nên Sigmoid function sử dụng rộng rãi model Nhược điểm: giá trị tuyệt đối x lớn, giá trị Gradient tiệm cận đến 0, đồng nghĩa với việc hệ số xét model khơng cập nhật, điều dẫn đến tượng mạng khơng thể học tốt Hiện tượng gọi biến đạo hàm hay vanishing gradients h Feedforward mạng Neural nhân tạo Backpropagation Sự lan truyền ngược (Backpropagation) chế thiết yếu mà mạng nơ-ron đào tạo Nó chế sử dụng để tinh chỉnh trọng số model mạng Neural nhân tạo, liên quan đến tỷ lệ lỗi tạo lần lặp trước Sự lan truyền ngược mạng nơ-ron truyền tải thông tin liên hệ thông tin với lỗi mơ hình tạo thực dự đốn (q trình Feedforward) Phương pháp tìm cách giảm lỗi, gọi hàm mát Ban đầu mạng nơ ron thiết kế, giá trị ngẫu nhiên gán dạng trọng số Ta không liệu giá trị trọng lượng định có xác phù hợp với mơ hình hay khơng Kết là, mơ hình xuất giá trị khác với đầu thực tế dự kiến, giá trị lỗi Để có kết đầu phù hợp với sai số tối thiểu, mơ hình cần đào tạo tập liệu thơng số thích hợp theo dõi tiến trình nó dự đốn Mạng nơron có mối quan hệ với lỗi, đó, tham số thay đổi, lỗi thay đổi theo Sự lan truyền ngược sử dụng kỹ thuật Gradient Descent để thay đổi tham số mơ hình Để áp dụng gradient descent ta cần tính đạo hàm hệ số W bias b với hàm loss function h Khi hàm f ( x , y ) hàm nhiều biến, ví dụ f ( x , y ) = x 2+ y Đạo hàm f với biến x kí ∂f hiệu ∂ x Q trình tính đạo hàm ngược lại với chiều Feedforward Với activation function, ta sử dụng đạo hàm để thực q trình Backpropagation Vì Loss function tính Weights Bias, nên muốn cải thiện độ xác (giảm giá trị mát) ta phải giảm độ sai lệch Weights Bias theo cơng thức chung thuật tốn Gradient Descent: L=L- θ *dL W=W-θ *dW B=B- θ*dB Sau nhiều lần lặp lại trình với nhiều điểm liệu xét, model dần hoàn thiện (fit) trở nên xác III – Xây dựng model - Input layer: dataset - Các layers ẩn: layer ma trận ứng với feature dataset - Output layer: kết phép biến đổi label dòng dataset Tiền xử lý liệu - Chuẩn bị data: chuẩn bị tệp liệu có nhãn chia thành phần: tập liệu dùng để huấn luyện mơ hình (Train_data) tập liệu để kiểm tra tính xác mơ hình (Test_data) - Chuyển đổi liệu đầu vào (thường features gồm ngôn ngữ tự nhiên) thành liệu mà máy đọc (thường dạng array) h Xây dựng hàm kích hoạt cho layer Tùy vào giá trị đầu layer dùng hàm kích hoạt tương ứng; Xây dựng cơng thức tính đạo hàm với activation function import numpy as np #build activation functions and derivative of per activation function #sigmoid def sigmoid(x):   return 1/(1+np.exp(-x)) #derivative of sigmoid function def sigmoid_derivative(x):   return x*(1-x) #tanh function def tanh(x):   return np.tanh(x) #derivative of tanh function def tanh_derivative(x):   return 1-x**2 #ReLU function: def ReLU(x):   return max(0,x); #derivative of ReLU function with x>0 always is 1 Khởi tạo mơ hình giá trị ban đầu cho tham số mơ hình - Khởi tạo mơ hình Neural network với layers learning rate - Gán giá trị ban đầu cho Weight Bias mơ hình class NeuralNetwork:   def  init (self,layers,theta):     #layers[] is an array, per value is number of nodes on that layer     #theta is learning rate     self.layers=layers     self.theta=theta     #define Weights and bias is array     self.W=[]     self.b=[] h     # Create the first value for layers on model      for i in range(0, len(layers)-1):       w_ = np.random.randn(layers[i], layers[i+1])       b_ = np.zeros((layers[i+1], 1))       self.W.append(w_/layers[i])       self.b.append(b_) Huấn luyện mơ hình với tập liệu Train_data - Với thông số đầu vào giá trị Weight, bias khởi tạo, thực q trình Feedforward tính toán giá trị nodes hidden layers - Sau thực trình Feedforward, tiếp tục với Backpropagation: Tính giá trị đạo hàm nodes đầu Weights bias; sau sử dụng thuật toán Gradient Descent để cập nhật lại giá trị Weights bias # Train model per eposch   def fit_partial(self, x, y):     A = [x]     # feedforward     out = A[-1]     # keep the input layer values, caculate values of hidden layers and output     for i in range(0, len(self.layers) - 1):       out = sigmoid(np.dot(out, self.W[i]) + (self.b[i].T))       A.append(out)     # backpropagation     y = y.reshape(-1, 1)     dA = [-(y/A[-1] - (1-y)/(1-A[-1]))]     dW = []     db = []     #caculate derivative of per node on layers     #this model I use sigmoid function, the others are same     for i in reversed(range(0, len(self.layers)-1)):       dw_ = np.dot((A[i]).T, dA[-1] * sigmoid_derivative(A[i+1]))       db_ = (np.sum(dA[-1] * sigmoid_derivative(A[i+1]), 0)).reshape(-1,1) h       dA_ = np.dot(dA[-1] * sigmoid_derivative(A[i+1]), self.W[i].T)       dW.append(dw_)       db.append(db_)       dA.append(dA_)     # Reverse dW, db     dW = dW[::-1]     db = db[::-1]     # Gradient descent : update values of Weights, bias     for i in range(0, len(self.layers)-1):       self.W[i] = self.W[i] - self.alpha * dW[i]       self.b[i] = self.b[i] - self.alpha * db[i] Tính giá trị đầu dự đốn - Sau có đầu vào thơng số mạng, ta hồn tồn tính giá trị đầu dự đốn liệu: #predict y: output value   def predict(self, X):     for i in range(0, len(self.layers) - 1):       X = sigmoid(np.dot(X, self.W[i]) + (self.b[i].T))     return X Tính Loss (độ sai lệch model) Hàm Loss tổng quát model độ chênh lệch giá trị đầu dự đoán giá trị đầu thực tế liệu Thơng thường, hàm mát có dạng: n Loss= ∑ ( y− ^y )2 i−1 với n số hàng tập liệu huấn luyện Trong đó, số 1/2 để đơn giản hóa biểu thức đạo hàm (khi đạo hàm bậc trở thành 1); Bình phương hiệu yy_predict để tránh tình trạng xuất giá trị âm   # Loss caculate   def calculate_loss(self, X, y):     y_predict = self.predict(X)     return np.sum((y_predict-y)**2)/2 h

Ngày đăng: 10/05/2023, 15:16

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

Tài liệu liên quan