You are on page 1of 12

Học viện công nghệ bưu chính viễn thông

Khoa công nghệ thông tin I


----------

Bộ môn: Thực tập cơ sở

Đề tài : Mô hình mạng Neuron nhân tạo

Báo cáo lần 2: Nội dung cơ sở của bài tập lớn

Các cơ sở lý thuyết, cơ sở toán học và các thành phần của mô hình.

Sinh viên thực hiện: Phan Thiên Hưng-B19DCCN329


I -Vấn đề giải quyết
1. Ý 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 nơ-
ron trong hệ thần kinh.
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ới
10.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ối vớ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.

Mạng Nơ-ron thần kinh

Dựa theo cách hoạt động của mạng Neuron thần kinh, mô hình mạng Neuron nhân
tạo (ANN) được viết ra nhằm giải quyết bài toán theo hướng học sâu (Deep
learning), khắc phục một số vấn đề về bộ nhớ và thời gian của Machine learning
hay một số bài toán khó có thể giải theo Machine learning.
2. Mạ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ình
toá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:
m
u=∑ wi x i +bias
i=1

Trước khi được đưa đến các nơron tiếp theo hoặc đầu ra, các tín hiệu được tổng hợp
sẽ được đưa qua hàm kích hoạt (activation function) hay Transfer function. Được ký
hiệu toán học như sau:

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

3. Thà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ác lớ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

3.1. 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ối u… để kết luận một trường hợp là ung thư lành tính hay ác tính…

3.2. Hidden layer

Các hidden layer gồm các nodes nhận dữ liệu input từ các nodes ở lớp (Layer) trước đó và chuyển đổi
các input này cho các lớp xử lý tiếp theo. Trong một ANN có thể không có hoặc có một hoặc nhiều lớp
ẩn. Các tầng này đóng vai trò như các logic, suy luận của mạng.

3.3. Output layer


Thể hiện kết quả đầu ra của mạng. Kết quả của một ANN là một giải pháp cho một vấn đề, ví dụ
như với bài toán xem xét chấp nhận cho khách hàng vay tiền hay không thì output là yes (cho vay) hoặc
no (không cho vay); hoặc kết luận cho việc khối u đã xét ở đầu vào có phải là khối u lành tính hay ác
tính?...

3.4. Trọ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ột ANN, 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ác trọng số (Weight) của các input data để có được kết quả mong muốn. Thường
w(ijk)

được 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ủa layer k

3.5. 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ào củ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 đến cho mỗi
node trong layer và truyền tổng trọng số đó cho một hàm kích hoạt. Hàm kí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?

Mộ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).

Đồ thị
hàm Sigmoid và hàm Tanh và đạo hàm của chúng

3.5.1 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ột
hà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:
1
f (x )=
1+e−x
Đồ thị của hàm số này được biểu biểu diễn như hình:

Đồ thị
của hàm Sigmoid

Đầu vào là số thực âm rất nhỏ sẽ cho đầu ra tiệm cận với 0, ngược lại, nếu đầu vào
là một số thực dương lớn sẽ cho đầu ra là một số tiệm cận với 1. Nếu coi điểm có
tung độ là 1/2 làm điểm phân chia thì các điểm càng xa điểm này về phía bên trái
có giá trị càng gần 0. Ngược lại, các điểm càng xa điểm này về phía phải có giá trị
càng gần 1.
Đạo hàm của hàm Sigmoid:
e− x 1 e−x
f ' (x )= = ∗ =f ( x )∗(1−f ( x ))
(1+e−x )2 1+e−x 1+ e−x

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.
3.5.2. Hà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:
x −x
e −e
tanh (x )= x −x
e +e

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:
x −x x −x x −x x −x x −x 2
( e +e )(e +e )−(e −e )(e −e ) (e +e )
tanh' ( x )= x −x 2
=1− x −x 2 =1−tanh 2 (x )
(e −e ) (e −e )

Nhược điểm: Cũng như Sigmoid, hàm Tanh bị bão hoà ở 2 đầu (gradient thay đổi
rất ít ở 2 đầu), khó khăn với việc sử dụng với các tham số lớn.
Để khắc phục các vấn đề của sigmoid function và tanh function, người ta đưa ra
một hàm kích hoạt khác có tên là Rectified Linear Unit (ReLU).
3.5.3. 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á đơn
giả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.
f (x )=max( 0 , x )
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ủa
ReLU 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 ReLU
4. Thuậ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
khả 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ới
nghiệ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

Trong 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 ' ( xt )>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:
x t+1=x t +delta .

Trong đó delta là một đại lượng ngược dấu với đạo hàm.

- x t càng xa điểm cực tiểu về phía bên phải thì f ' (x t ) càng lớn hơn 0 (và

ngược lại). Vậy, lượng di chuyển delta đơn giản là tỉ lệ thuận với −f ' (x t )
Hai nhận xét phía trên cho một cách cập nhật đơn giản là:
x t+1=x t −θ∗f ' ( x t )
Trong đó θ (theta) là một số dương được gọi là learning rate (tốc độ học). Dấu trừ
thể hiện việc chúng ta phải đi ngược với đạo hàm (Đây cũng chính là lý do phương
pháp này được gọi là Gradient Descent - descent nghĩa là đi ngược).

You might also like