Trong mạng nơ-ron nhân tạo, một loạt các thuật toán được sử dụng để xác định và nhận ra các mối quan hệ trong các tập dữ liệu.. Phần tổng hợp trên mỗi nút của mạng nơron nhân tạo chính l
Trang 1Họ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 hiện: Phan Thiên Hưng
MSV: B19DCCN329
Trang 2Mục Lục
I – Lý thuyết về Neural Network và các vấn đề liên quan 3
Ý tưởng của Neural Network 3
Mạng Neural nhân tạo 4
Thành phần của một mạng Neural nhân tạo 5
Input layer 5
Hidden layer 6
Output layer 6
Trọng số liên kết – Weights 6
Hàm kích hoạt (activation functions) 6
Hàm sigmoid 8
Hàm Tanh 10
Rectified Linear Unit (ReLU function) 11
Thuật toán Gradient Descent 11
II – Quá trình học của model 13
Feedforward 14
Backpropagation 15
III – Xây dựng model 16
Tiền xử lý dữ liệu 16
Xây dựng các hàm kích hoạt cho các layer 17
Khởi tạo mô hình và các giá trị ban đầu cho mỗi tham số trong mô hình 17
Huấn luyện mô hình với tập dữ liệu Train_data 18
Tính giá trị đầu ra dự đoán 19
Tính Loss (độ sai lệch của model) 19
Lặp lại quá trình fit model 20
Thử lại với tệp dữ liệu Test_data 20
IV – Áp dụng với bài toán toán tử XOR 20
Phép toán XOR 20
Giải quyết bà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 dữ liệu, fit model, tính toán sai số và thử nghiệm dự đoán mô hình 26
Trang 3Tài liệu tham khảo 29
Trang 4I – Lý thuyết về Neural Network và các vấn đề liên quan
Ý tưởng của Neural Network
Neural là tính từ của neuron (nơ-ron), network chỉ cấu trúc đồ thị nên neural
network (NN) là một hệ thống tính toán lấy cảm hứng từ sự hoạt động của các ron trong hệ thần kinh
nơ-Nơ- ron là đơn vị cơ bản cấu tạo hệ thống thần kinh và là một phần quan trọng nhất của não Não chúng ta gồm khoảng 10 triệu nơ-ron và mỗi nơ-ron liên kết với10.000 nơ-ron khác Ở mỗi nơ-ron có phần thân (soma) chứa nhân, các tín hiệu đầu vào qua sợi nhánh (dendrites) và các tín hiệu đầu ra qua sợi trục (axon) kết nốivới các nơ-ron khác Hiểu đơn giản mỗi nơ-ron nhận dữ liệu đầu vào qua sợi nhánh và truyền dữ liệu đầu ra qua sợi trục, đến các sợi nhánh của các nơ-ron khác Mỗi nơ-ron nhận xung điện từ các nơ-ron khác qua sợi nhánh Nếu các xung điện này đủ lớn để kích hoạt nơ-ron, thì tín hiệu này đi qua sợi trục đến các sợi nhánh của các nơ-ron khác
Trang 5Mạng Neural nhân tạo
Neural network hay còn gọi là Mạng nơ-ron nhân tạo là mạng sử dụng các mô hìnhtoán học phức tạp để xử lý thông tin Trong mạng nơ-ron nhân tạo, một loạt các thuật toán được sử dụng để xác định và nhận ra các mối quan hệ trong các tập dữ liệu
Mỗi nút trong mạng được tổng hợp từ tất cả các nodes ở layer trước nó, đồng thời
là input để tổng hợp thành các nodes ở layer sau thông qua các hệ số Weight tươngứng Phần tổng hợp trên mỗi nút của mạng nơron nhân tạo chính là tổng trọng số của các đầu vào, cộng thêm với hệ số bias:
y=f (u)
Các hàm này sẽ được giới thiệu chi tiết ở phần sau
Quá trình xử lý thông tin của một ANN
Trang 6Thành phần của một mạng Neural nhân tạo
Kiến trúc chung của một mạng Neural nhân tạo gồm 3 thành phần, chia thành cáclớp (layers): Input layer – lớp đầu vào, Hidden layer – các lớp ẩn và Output layer –lớp đầu ra Dữ liệu sẽ được truyền qua các lớp thống qua các trọng số liên kết(Weights) và hàm kích hoạt (activation functions)
Mô hình của một mạng Neural nhân tạo
Input layer
Mỗi node của Input layer tương ứng với 1 thuộc tính (attribute) của dữ liệu (data)
Ví dụ như trong ứng dụng của ngân hàng xem xét có chấp nhận cho khách hàng vay tiền hay không thì mỗi Input là một thuộc tính của khách hàng như thu nhập, nghề nghiệp, tuổi, số con,…; hoặc dựa vào các yếu tố như bán kính, tuổi của khốiu… để kết luận một trường hợp là ung thư lành tính hay ác tính…
Trang 7Trọng số liên kết – Weights
Connection Weights (Trọng số liên kết): Đây là thành phần rất quan trọng của mộtANN, nó thể hiện mức độ quan trọng (độ mạnh) của dữ liệu đầu vào đối với quátrình xử lý thông tin (quá trình chuyển đổi dữ liệu từ Layer này sang layer khác).Quá trình học (Learning Processing) của ANN thực ra là quá trình điều chỉnh cáctrọng số (Weight) của các input data để có được kết quả mong muốn Thường được
w(ij k )
kí hiệu là , nghĩa là hệ số nối từ node thứ i của layer k-1 tới node thứ j củalayer k
Hàm kích hoạt (activation functions)
Trong mạng neural nhân tạo, một hàm kích hoạt là một hàm ánh xạ các đầu vàocủa một nút với đầu ra tương ứng của nó Ta lấy tổng trọng số của mỗi kết nối đếncho mỗi node trong layer và truyền tổng trọng số đó cho một hàm kích hoạt Hàmkích hoạt thực hiện một số loại hoạt động để biến đổi tổng thành một số Phép biếnđổi này thường là một phép biến đổi phi tuyến tính
node output = activation(weighted sum of inputs)
Tại sao lại cần các hàm kích hoạt phi tuyến?
Trang 8Một đặc điểm quan trọng của hàm tuyến tính là hợp của hai hàm tuyến tính cũng làmột hàm tuyến tính Điều này có nghĩa là, ngay cả trong các mạng neural rất sâu, nếu chỉ có các phép biến đổi tuyến tính các giá trị dữ liệu trong quá trình chuyển tiếp, thì ánh xạ đã học trong mạng từ đầu vào đến đầu ra cũng sẽ là tuyến tính Thông thường, các loại ánh xạ với mạng neural sâu phức tạp hơn các ánh xạ tuyến tính đơn giản Đây là nơi các hàm kích hoạt xuất hiện Hầu hết các hàm kích hoạt
là phi tuyến tính và chúng được chọn theo cách có chủ đích Việc có các hàm kích hoạt phi tuyến tính cho phép các mạng neural tính toán các chức năng phức tạp tùyý
Một số activation function nổi bật và thường được sử dụng nhất là hàm Tanh,ReLU, Sigmoid và Softmax
Trong đó Sigmoid, Softmax được sử dụng ở các nơron đầu ra, tương ứng cho bài toàn phân loại (classification) hay hồi quy (regression) Các hàm kích hoạt
(activation function) Sigmoid, Tanh và ReLU và được dùng trong kết nối giữa các nơron với nhau Trong số các hàm kích hoạt trên, ReLU là hàm kích hoạt thường được sử dụng hơn cả, do hiện tượng tiêu biến độ dốc (vanishing gradient) ở hàm kích hoạt (activation function) Sigmoid và Tanh Hiện tượng tiêu biến độ dốc (vanishing gradient) xảy ra đối với các giá trị ở những điểm bão hòa của hàm số Tanh và Sigmoid, lúc này đạo hàm (derivative) trở nên rất nhỏ, hậu quả làm cho việc thay đổi các trọng số (weight) trong quá trình huấn luyện (training) gần như bằng 0, việc huấn luyện (training) của model gần như không có tác dụng Với hàm kích hoạt (activation function) ReLU, các giá trị dương giờ đây được giữ nguyên giá trị, không còn những điểm bão hòa nữa, đạo hàm (derivative) luôn có độ lớn đủtốt cho việc huấn luyện (training)
Trang 9Đồ thị hàm Sigmoid và hàm Tanh và đạo hàm của chúng
Hàm sigmoid
Sigmoid có thể được coi là một hàm được sử dụng để làm trơn dữ liệu và nó là mộthàm khả vi và bị chặn Sigmoid rất hữu ích để chuyển đổi bất kỳ giá trị nào thành xác suất và có thể được sử dụng để phân lớp nhị phân - binary classification Hàm Sigmoid ánh xạ dữ liệu đầu vào thành giá trị trong khoảng [0;1] Có thể viết công thức toán học của nó như sau:
f (x )= 1
Đồ thị của hàm số này được biểu biểu diễn như hình:
Trang 10Đạo hàm của hàm Sigmoid:
Công thức đạo hàm khá đơn giản nên Sigmoid function được sử dụng rộng
rãi trong các model
Nhược điểm: khi giá trị tuyệt đối của x quá lớn, giá trị Gradient tiệm cận đến 0, đồng nghĩa với việc các hệ số đang xét trong model không được cập nhật, và điều đó sẽ dẫn đến hiện tượng mạng không thể học được gì tốt hơn Hiện tượng này được gọi là biến mất đạo hàm hay vanishing gradients
Trang 11Hàm Tanh
Hàm tiếp tuyến hyperbol, hay còn gọi là hàm tanh là một phiên bản thu nhỏ của sigmoid Giống như hàm sigmoid, tanh là một hàm liên tục và khả vi Hàm này sẽánh xạ dữ liệu input vào trong khoảng từ -1 đến 1 Công thức toán học của nó như sau:
tanh (x )= ex − e − x
e x +e−x
Hoặc có thể biểu diễn bằng hàm sigmoid:
tanh (x )=2 σ (2 x )−1 với σ ( x ) là hàm sigmoid
Hàm tanh được thể hiện ở biểu đồ sau:
Đồ thị hàm tanhĐạo hàm của hàm tanh:
tanh' ( x )=( e x + e − x )( e x + e −x )−( e −x e − x )( e x − e− x ) =1− (e x +e −x )2 =1−tanh 2 (x )
Nhược điểm: Cũng như Sigmoid, hàm Tanh bị bão hoà ở 2 đầu (gradient thay đổirất ít ở 2 đầu), khó khăn với việc sử dụng với các tham số lớn
Trang 12Để khắc phục các vấn đề của sigmoid function và tanh function, người ta đưa ramột hàm kích hoạt khác có tên là Rectified Linear Unit (ReLU).
Rectified Linear Unit (ReLU function).
ReLU function dựa trên tư tưởng của việc loại bỏ bớt những tham số không quan trọng trong quá trình training và điều đó là cho mạng trở nên nhẹ hơn và việc training cũng nhanh chóng và có hiệu quả hơn Hàm này thực hiện cơ chế khá đơngiản: giữ nguyên những giá trị đầu vào lớn hơn 0, nếu giá trị đầu vào nhỏ hơn 0 thì coi là 0
Bởi vì hàm ReLU trả về dữ liệu khác 0 trong mọi trường hợp > 0 nên điều đó làm mạng không phải training những dữ liệu không cần thiết và hơn nữa công thức củaReLU rất đơn giản khiến cho việc tính toán cũng trở nên dễ dàng hơn Ngoài ra, sửdụng hàm ReLU giúp tính toán trong mạng cực kì nhanh do đạo hàm của nó luôn bằng 1 với mọi x>0 Ngoài ra, nó có tốc độ hội tụ và độ ổn định ưu việt hơn so với
2 hàm đã nêu ở trên
Đồ thị hàm ReLUThuật toán Gradient Descent.
Trong các bài toán về Học máy, ta thường xuyên phải tìm giá trị nhỏ nhất (hoặc đôi khi là lớn nhất) của một hàm số nào đó Ví dụ như các hàm mất mát của các activation function Nhìn chung, việc tìm giá trị cực tiểu toàn cục - global
minimum của các hàm mất mát trong một mô hình là rất phức tạp, thậm chí là bất
Trang 13khả thi Thay vào đó, người ta thường cố gắng tìm các điểm cục tiểu - local
minimum, và ở một mức độ nào đó, coi đó là nghiệm cần tìm của bài toán
Các điểm local minimum là nghiệm của phương trình đạo hàm bằng 0 Nếu bằng một cách nào đó có thể tìm được toàn bộ (hữu hạn) các điểm cực tiểu, ta chỉ cần thay từng điểm local minimum đó vào hàm số rồi tìm điểm làm cho hàm có giá trị nhỏ nhất Tuy nhiên, trong hầu hết các trường hợp, việc giải phương trình đạo hàm bằng 0 là bất khả thi Nguyên nhân có thể đến từ sự phức tạp của dạng của đạo hàm, từ việc các điểm dữ liệu có số chiều lớn, hoặc từ việc có quá nhiều điểm
dữ liệu
Hướng tiếp cận phổ biến nhất là xuất phát từ một điểm mà chúng ta coi là gần vớinghiệm của bài toán, sau đó dùng một phép toán lặp để tiến dần đến điểm cần tìm,tức đến khi đạo hàm gần với 0 Gradient Descent (viết gọn là GD) và các biến thể của nó là một trong những phương pháp được dùng nhiều nhất Trong mô hình mạng neural nhân tạo, phương pháp này được sử dụng để có thể tối ưu các
Weights, Bias và Loss, từ đó ta dần cải thiện độ chính xác của model lên
Đồ thị vềthuật toán Gradient Descent
Trang 14Trong hình trên, ta có thể thấy:
- Nếu đạo hàm của hàm số ở thời điểm t: tại x
t : f ' ( x
t )>0 thì x
t nằm bên phải so với điểm cực trị, và ngược lại Tại lần xét kế tiếp, để điểm tiếp theo
x
t+1 gần với điểm cực trị hơn, ta cần di chuyển x
t về phía bên trái, tức về phía âm Nói các khác, ta cần di chuyển ngược dấu với đạo hàm:
ngược lại) Vậy, lượng di chuyển delta đơn giản là tỉ lệ thuận với −f ' (x
Một số loại Gradient Descent cơ bản: Batch Gradient Descent,
Mini-batch Gradient Descent và Stochastic Gradient Descent
II – Quá trình học của model
Quá trình học (Learning Processing) của một mạng Neural nhân tạo:
ANN được huấn luyện (Training) hay được học (Learning) theo 2 kỹ thuật cơ bản
đó là học có giám sát (Supervised Learning) và học không giám sát(Unsupervised Learning)
Trang 15- Supervised learning: Quá trình Training được lặp lại cho đến kết quả (output) của ANN đạt được giá trị mong muốn (Desired value) đã biết Điển hình cho kỹ thuật này là mạng Neuron lan truyền ngược (Backpropagation).
- Unsupervised learning: Không sử dụng tri thức bên ngoài trong quá trình học (Learning), nên còn gọi là tự tổ chức (Self – Organizing) Mạng Neuron điển hình được huấn luyện theo kiểu Unsupervised là Sefl – Organizing Map (SOM).Trong bài tập lần này, em chỉ nghiên cứu về kỹ thuật Supervised Learning.Feedforward
Như đã đề cập ở các phần trên, ở các layers ẩn, các nodes ở layer trước là input củacác node ở layer sau
Số node trong hidden layer thứ i là l (i)
Ma trận w (k) kích thước l (k−1)∗ l (k ) là ma trận biểu diễn hệ số giữa layer (k-1) và layer
k, trong đó w (k)[i][j] là hệ số kết nối từ node thứ i của layer k-1 đến node thứ j của layer k
Vector b (k) kích thước l k ∗1 là hệ số bias của các node trong layer k, trong đó b (k)
[i] là bias của node thứ i trong layer k
Với node thứ i trong layer l có bias b (l) ¿i] thực hiện 2 bước:
Sau khi xử lí qua hết tất cả các layer, ta thu được kết quả ở output layer là giá trị
dự đoán của model y^
Trang 16Feedforward trong mạng Neural nhân tạoBackpropagation
Sự lan truyền ngược (Backpropagation) là một cơ chế thiết yếu mà mạng nơ-ron được đào tạo Nó là một cơ chế được sử dụng để tinh chỉnh trọng số của model mạng Neural nhân tạo, liên quan đến tỷ lệ lỗi được tạo ra trong lần lặp trước Sự lan truyền ngược trong mạng nơ- ron là về truyền tải thông tin và liên hệ thông tin này với lỗi do mô hình tạo ra khi thực hiện dự đoán (quá trình Feedforward) Phương pháp này tìm cách giảm lỗi, còn được gọi là hàm mất mát
Ban đầu khi mạng nơ ron được thiết kế, các giá trị ngẫu nhiên được gán dưới dạng trọng số Ta không chắc liệu các giá trị trọng lượng được chỉ định có chính xác hoặc phù hợp với mô hình hay không Kết quả là, mô hình xuất ra giá trị khácvới đầu ra thực tế hoặc dự kiến, đó là một giá trị lỗi
Để có được kết quả đầu ra phù hợp với sai số tối thiểu, mô hình cần được đào tạotrên một tập dữ liệu hoặc các thông số thích hợp và theo dõi tiến trình của nó mỗikhi nó dự đoán Mạng nơron có mối quan hệ với lỗi, do đó, bất cứ khi nào các tham số thay đổi, lỗi cũng thay đổi theo Sự lan truyền ngược sử dụng kỹ thuật Gradient Descent để thay đổi các tham số trong mô hình
Để áp dụng gradient descent ta cần tính được đạo hàm của các hệ số W và bias
b với hàm loss function
Trang 17Khi hàm f ( x , y ) là hàm nhiều biến, ví dụ f ( x , y ) = x2 + y2 Đạo hàm f với biến
x kí hiệu là ∂ ∂ x f
Quá trình này tính đạo hàm ngược lại với chiều Feedforward Với mỗi activationfunction, ta sẽ sử dụng đạo hàm của nó để thực hiện quá trình Backpropagation
Vì Loss function được tính bởi các Weights và Bias, nên muốn cải thiện độ
chính xác (giảm giá trị mất mát) thì ta phải giảm độ sai lệch của các Weights và Bias đúng theo công thức chung của thuật toán Gradient Descent:
L=L- θ *dLdL W=W-θ *dLdW B=B- θ*dLdB
Sau nhiều lần lặp lại 2 quá trình trên với nhiều điểm dữ liệu được xét, model
dần được hoàn thiện (fit) trở nên chính xác hơn
III – Xây dựng model
-Input layer: dataset
-Các layers ẩn: mỗi layer là 1 ma trận ứng với mỗi feature của dataset
-Output layer: kết quả của các phép biến đổi là label của từng dòng của datasetTiền xử lý dữ liệu
-Chuẩn bị data: chuẩn bị các tệp dữ liệu có nhãn và chia thành 2 phần: tập dữ liệudùng để huấn luyện mô hình (Train_data) và tập dữ liệu để kiểm tra tính chính xáccủa mô hình (Test_data)
-Chuyển đổi các dữ liệu đầu vào (thường là các features gồm ngôn ngữ tự nhiên) thành dữ liệu mà máy có thể đọc được (thường là dạng array)
Trang 18Xây dựng các hàm kích hoạt cho các layer.
Tùy vào giá trị đầu ra của mỗi layer thì dùng hàm kích hoạt tương ứng; Xây dựngcông thức tính đạo hàm với mỗi activation function
#derivative of ReLU function with x>0 always is 1
Khởi tạo mô hình và các giá trị ban đầu cho mỗi tham số trong mô hình
- Khởi tạo mô hình Neural network với các layers và learning rate
- Gán giá trị ban đầu cho các Weight và Bias trong 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