You are on page 1of 81

Mạng nơ ron nhân tạo

TS. NGUYỄN ĐÌNH HÓA


HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Nội dung
Giới thiệu chung về mạng nơ ron nhân tạo
Các cấu trúc của mạng nơ ron nhân tạo
Một số thuật toán huấn luyện cơ bản.
Các ứng dụng của mạng nơ ron nhân tạo
Một số mạng nơ ron nhân tạo đặc biệt
Giới thiệu
Mạng nơ ron là một công cụ
có thể học mối quan hệ giữa Nó là con
Con ếch ếch
nguyên nhân và kết quả
Mạng nơ ron có khả năng tổ
chức một lượng lớn dữ liệu Con sư tử
thành các cấu trúc có trật tự
và làm nổi bật thông tin chứa
Con chim
trong đó.

Con gì đây hả
ông?
Giới thiệu
Mạng nơ ron là một mô hình xử lý thông tin mô phỏng theo
hoạt động của các hệ thống thần kinh sinh học, chẳng hạn
như não con người.
Cấu trúc: bao gồm rất nhiều đơn vị xử lý thông tin (gọi là
các nơ ron) có kết nối chặt chẽ với nhau và làm việc cùng
nhau.
Mạng nơ ron học thông tin từ kinh nghiệm (thể hiện bằng
các mẫu dữ liệu đã có), giống như quá trình học của con
người.
Giới thiệu
Từ mạng nơ ron sinh học

Đến mạng nơ ron nhân tạo


Mô hình kết nối của mạng nơ ron
Hệ thống nơ ron của người:
◦ Thời gian kích hoạt ~ 0.001 second
◦ Số lượng nơ ron ~ 1010
◦ Số lượng kết nối của một nơ ron ~ 104-5
◦ Thơi gian nhận biết ~ 0.1 second
◦ Hơn 100 bước suy diễn
 khả năng tính toán song song lớn

Mạng nơ ron nhân tạo (ANN)


◦ Gồm nhiều đơn vị tính toán sử dụng hàm ngưỡng
◦ Nhiều kết nối có trọng số giữa các đơn vị tính toán
◦ Xử lý song song và phân tán
Nơ ron người và Nơ ron nhân tạo
Nơ ron người: tiếp nhận các tín hiệu Tiếp điểm, nơi nhận tín
Sợi nhánh
điện từ các nơ ron khác thông qua hiệu từ các nơ ron khác Đầu sợ thần kinh, nơi truyền
Sợi nhánh tìn hiệu đến các nơ ron khác

Tế bào Soma tổng hợp các thông tin


nhận được. Khi đã đủ thông tin, nó Tế bào
truyền tín hiệu qua sợi thần kinh để Soma
đưa thông tin đến các tế bào khác.

Sợi thần kinh


Hạt nhân
Nơ ron người và Nơ ron nhân tạo
Wa
X1

Y
X2
Wb
∑ f()

Wc
X3

Dữ liệu đầu vào Trọng số kết Hàm tổng Hàm tính toán
nối hợp

(Sợi nhánh) (Tiếp điểm (Sợi thần kinh)


(Tế bào soma)
thần kinh)
Nơ ron nhân tạo
Đầu vào xm ............
x2 x1

Hàm tổng hợp ∑ ∑= X1+X2 + ….+Xm = y

Đầu ra y
Nơ ron nhân tạo
Không phải tất cả các dữ liệu đầu vào đều có ý nghĩa như nhau

Đầu vào xm ............


x2 x1

Trọng số wm ..... w2 w1

Hàm tổng hợp ∑ ∑= X1w1+X2w2 + ….+Xmwm =y

Đầu ra y
Nơ ron nhân tạo
Thông tin không được Đầu vào xm ............
x2 x1
truyền nguyên bản từ
nơ ron này sang nơ ron
khác, mà thường được
xử lý bằng một hàm Trọng số wm ..... w2 w1
truyền đạt trong mỗi
nơ ron
Hàm tổng hợp ∑
Hàm truyền đạt
(hàm kích hoạt)
f(vk)

Đầu ra y
Nơ ron nhân tạo m

Bias (b) là w0
v wx j j

một tham số
x0 = +1 j0

bổ sung cho w0  b
mỗi nơ ron, x1 w1
tương đương Biến nội bộ
với một thông v
Input Đầu ra
 ()
tin bổ sung
cho đầu vào. signal x2 w2 y

Hàm tổng hợp Hàm kích hoạt


…………..

xm wm Trọng số kết nối


Hàm truyền (hàm kích hoạt)

Hard-limiter Piecewise linear Sigmoid Hyperbolic tangent

1 if v  0 1 if v  1 2
 v      v   tanhv 
 v   v if 1 2  v   1 2  v  
1
0 if v  0 0 1  exp(av)
 if v  1 2
Hàm truyền (hàm kích hoạt)
step function:

ramp function:

sigmoid function với các tham số x, y, z

Gaussian function:

Rectified Linear Unit (ReLU) function: relu(x) = max(0, x)


Nơ ron một đầu vào
Nơ ron nhiều đầu vào
Cấu trúc lớp nơ ron
Mạng nơ ron nhiều lớp
Mạng nơ ron nhiều lớp – ký hiệu
Huấn luyện mạng nơ ron
Các quy tắc huần luyện mạng nơ ron:
◦ Huấn luyện có giám sát: mạng nơ ron được huấn luyện bằng một tập dữ liệu có đầy đủ đầu vào và đầu
ra
◦ Huấn luyện tăng cường (reinforcement learning): mạng nơ ron được huấn luyện dựa trên các chỉ số biểu
thị hiệu năng của mạng.
◦ Huấn luyện không giám sát: mạng nơ ron được huấn luyện dựa trên bộ dữ liệu chỉ có đầu vào. Mạng sẽ
tự điều chỉnh tham số để biểu diễn mối liên quan về mặt cấu trúc của dữ liệu đầu vào.
Huấn luyện mạng nơ ron
T
Mạng nơ ron một lớp, sử dụng hàm truyền hard-limit: ai = hardlimn i  = hardlim i w p + bi 

w 1 1 w 1 2  w 1 R
Input Hard Limit Layer
W = w 2 1 w 2 2  w 2 R
p a w S 1 w S 2  w S R
Rx1
W Sx1
SxR
n
T
Sx1 w i 1 1w
1 b T
w i 2 w
Sx1 iw = W = 2
R S
w i R T
a = hardlim (Wp + b) Sw
Huấn luyện mạng đơn nơ ron một lớp
w 1 1 = 1 w 1 2 = 1 b = -1
Inputs Two-Input Neuron
p2
a=1
p1 w1,1 w
1w p +b= 0
1
n a T 1
p2

w1,2 b
p1
1
a=0 1
a = hardlim (Wp + b)
T
a = hardlim 1 w p + b = hardlimw 1  1 p1 + w1 2 p2 + b
Ranh giới quyết định
Tất cả các điểm trên đường ranh giới đều có cùng giá trị tích nội với vector trọng số
Vì vậy, các điểm này đều chiếu xuống cùng một vị trí trên vector trọng số, và các điểm này đều
thuộc đường thẳng vuông góc với vector trọng số
T T
1w .p+b = 0 1w .p=-b
Ví dụ về ranh giới quyết định
Ví dụ về ranh giới quyết định
Vector trọng số cần phải vuông góc với đường ranh giới
0.5
1w =
0.5

Chọn một điểm bất kỳ trên đường ranh giới để xác định bias

T 0 + b = 0.25 + b = 0
1w p + b = 0.5 0.5  b = –0.25
0.5
Mạng nhiều nơ ron
Mỗi nơ ron có một đường ranh giới quyết định riêng
T
iw p + bi = 0

Một nơ ron có thể chia dữ liệu đầu vào thành 2 loại


Nhiều nơ ron có thể chia dữ liệu đầu vào thành 2S loại.
Ví dụ
Khởi tạo trọng số
Khởi tạo ngẫu nhiên các giá trị trọng số
1.0
1w =
–0.8

Cho đầu vào p1


T  1 
a = hardlim 1w p 1 = hardlim  1.0 –0.8 
 2 
a = hardlim–0.6 = 0

Kết quả không chính xác


Cập nhật trọng số
Cộng p1 vào vector trọng số 1w
Quy tắc:
Nếu t = 1 và a = 0, thì wn e w = wo l d + p
1 1

w new = w old + p = 1.0 + 1 = 2.0


1 1 1
–0.8 2 1.2
Cập nhật trọng số
Cho đầu vào là p2
−1
a = hardlim 1w T p 2 = ℎ������ 2 1.2
2

a = hardlim0.4 = 1

Kết quả phân loại sai


Quy tắc điểu chỉnh trọng số
new
Nếu t = 0 và a = 1, thì w = wo l d - p
1 1

– p 2 = 2.0 - -1 = 3.0
new old
1
w = 1
w
1.2 2 –0.8
Cập nhật trọng số
Cho đầu vào p3
0
a = hardlim 1 w T p 3  = ℎ������ 3 − 0.8
−1
a = hardlim0.8 = 1
Kêt quả phân loại sai
Cập nhật trọng số
w new = w old – p = 3.0 – 0 = 3.0
1 1 3
–0.8 -1 0.2

Kết quả phân loại đúng


Nếu t = a, thì 1w = 1 wo l d
new
Quy tắc cập nhật trọng số đơn giản
Nếu t = 1 và a = 0, thì w n e w = w o l d + p
1 1

Nếu t = 0 và a = 1, thì w n e w = w o l d - p
1 1

Nếu t = a, thì 1w = 1 wo l d
new

Đặt e = t – a
Nếu e = 1, thì 1w n e w = 1 w o l d + p
Nếu e = - 1, thì 1w n e w = 1 w o l d - p
Nếu e = 0, thì 1w n e w = 1 w o l d

Bias là trọng số cho đầu vào là 1


Cập nhật trọng số - mạng nhiều nơ ron
Cập nhật trọng số ở hàng thứ i của ma trận trọng số
new
1w = 1 wo l d + e i p
binew = biold + ei
Dạng ma trận
Wnew = Wold + e.pT
bnew = bold + e
Ví dụ với đầu vào 3 thuộc tính
Dữ liệu huấn luyện:

Khởi tạo trọng số:


Vòng lặp thứ nhất

Cập nhật tham số:


Ví dụ với đầu vào 3 thuộc tính
Vòng lặp thứ hai
Ví dụ với đầu vào 3 thuộc tính
Kiểm chứng kết quả
Nhược điểm của mạng đơn nơ ron
Chỉ tạo được các ranh rới phẳng
Không giải được các bài toán có ranh giới phi tuyến
Mạng nơ ron nhiều lớp
Lớp đầu ra y

Lớp ẩn a1 a2 … aD
D=M

Dữ liệu vào x1 x2 … xM
Mạng nơ ron nhiều lớp
Lớp đầu ra y

Lớp ẩn a1 a2 … aD
D<M

Dữ liệu vào x1 x2 x3 … xM
Mạng nơ ron nhiều lớp
Lớp đầu ra y

b1 b2 … bE
Lớp ẩn 2

a1 a2 … aD
Lớp ẩn 1

x1 x2 x3 … xM
Dữ liệu vào
Ranh giới phân lớp
Mạng nơ ron 1 lớp Y

X1 X2

Y
Mạng nơ ron 2 lớp

X1 X2
Ranh giới phân lớp
Mạng nơ ron 3 lớp
Y

X1 X2
Mạng nơ ron nhiều đầu ra
Lớp đầu ra y1 … yK

Lớp ẩn a1 a2 … aD

Dữ liệu vào x1 x2 x3 … xM
Nguyên tắc huấn luyện mạng nơ ron
1. Cho tập dữ liệu huấn 3. Xác định hàm mục tiêu:
luyện:

2. Xác định các thông số: 4. Huấn luyện theo Steepest gradient
– Hàm quyết định: descent: (tiến các bước nhỏ theo
hướng ngược với dấu đạo hàm)
– Hàm mất mát:

45
Ví dụ
Các trọng số và bias của nơ ron được khởi tạo ngẫu nhiên

3.7
2.9 4.5
3.7
-5.2
2.9
.5
-1
-4.6 -2.0
1 1

• Giá trị của bias tương ứng với đầu vào là 1


Ví dụ
3.7
1.0 .90
2.9 4.5
3.7
-5.2
0.0 .17
2.9
.5
-1
-4.6 -2.0
• Cho các dữ liệu đầu vào 1 1
• Tính giá trị đầu ra của nơ ron lớp ẩn:

1
sigmoid (1.0 × 3.7 + 0.0 × 3.7 + 1 × −1.5) = sigmoid(2.2) = = 0.90
1 + e−2.2

1
sigmoid (1.0 × 2.9 + 0.0 × 2.9 + 1 × −4.5) = sigmoid (−1.6) = = 0.17
1 + e1.6
Ví dụ
3.7
1.0 .90
2.9 4.5
3.7
-5.2
0.0 .17 .76
2.9
.5
-1
-4.6 -2.0
1 1

• Tính giá trị đầu ra

1
sigmoid(.90 × 4.5 + .17 × −5.2 + 1 × −2.0) = sigmoid(1.17) = = 0.76
1 + e−1.17
Ví dụ
3.7
1.0 .90
2.9 4.5
3.7
-5.2
0.0 .17 .76
2.9
.5
-1
-4.6 -2.0
1 1
• Giá trị đầu ra: y = .76

• Đầu ra mong muốn: t = 1.0

⇒ Cần điều chỉnh trọng số của mạng nơ ron thế nào để đạt đầu ra mong muốn?
Khái niệm về Gradient Descent
Sai số đầu ra là một hàm của các trọng số Hàm sai số
f(λ)
Cần giảm sai số: bài toán tối thiểu hóa sai số
Gradient descent: điểu chỉnh biến số để hàm số
biến đổi theo hướng ngược với dấu của đạo hàm
◦ Tính đạo hàm: xác định hướng để đạt được giá trị tối
thiểu = 1
nt
◦ Điều chỉnh biến số để hàm số đạt giá trị nhỏ hơn die
a
gr λ

Giá trị tối Giá trị hiện tại


ưu của λ của λ
Gradient descent

Điểm hiện tại


Gradient for w1
Điểm tối ưu
dient

Gradient for w2
G r a
i ned
Comb
Steepest gradient descent
Nguyên tắc tìm điểm tối ưu:

pk là hướng cập nhật giá trị của biến số


�� là tốc độ cập nhật
Steepest gradient descent
Chọn hướng cập nhật giá trị biến số để hàm số giảm dần:
Với mỗi sự thay đổi nhỏ của biến số sẽ dẫn đến sự thay đổi giá trị hàm số

trong đó gk là đạo hàm của hàm số tại điểm xk

Để hàm số mang giá trị giảm dần:


Đặt
Giá trị tham số được cập nhật là:
Steepest gradient descent – ví dụ
Cho hàm số gồm 2 biến số:
Khởi tạo điểm xuất phát và lựa chọn tốc độ cập nhật:

Tính đạo hàm theo từng biến số:

Lần lượt tính các giá trị cập nhật của biến số:
Steepest gradient descent – ví dụ
Minh họa về quá trình tìm điểm tối ưu
Thuật toán Lan truyền ngược
Từ dữ liệu đầu vào, thực hiện tính toán lan truyền thuận để có kết quả đầu ra.
Lan truyền thông tin sai số từ lớp cuối cùng về dần lớp đầu tiên
Điều chỉnh trọng số và bias của các nơ ron của từng lớp theo thứ tự từ sau về trước.
Thuật toán lan truyền ngược
Mạng nơ ron nhiều lớp
Kí hiệu các lớp:
Thuật toán lan truyền ngược

Giá trị đầu ra của mạng nơ ron là hàm số của toàn bộ trọng số và bias có trong mạng
Đầu ra của một lớp là hàm số của đầu ra lớp trước đó:
Thuật toán lan truyền ngược
Quá trình xuất luyện xuất phát từ tập dữ liệu huấn luyện
Hàm mục tiêu thường được chọn là bình phương sai số trung bình:

Biểu diễn dưới dạng vector cho nhiều giá trị đầu ra:
Với mỗi mẫu giá trị đầu vào, tính sai số bình phương trung bình của đầu ra

Cập nhật giá trị trọng số và bias theo thuật toán Steepest descent:
Thuật toán lan truyền ngược
Quy tắc tính đạo hàm theo chuỗi

Ứng dụng vào tính đạo hàm cho nhiều lớp trọng số

Trong đó:
Thuật toán lan truyền ngược
Một số ký hiệu để đơn giản hóa:
Độ nhạy:

Đạo hàm:
Thuật toán lan truyền ngược
Cập nhật trọng số và bias:
Biểu diễn dạng vector:

Trong đó:
Thuật toán lan truyền ngược
Ma trận đạo hàm (ma trận Jacobian)
Thuật toán lan truyền ngược
Ma trận Jacobian
Thuật toán lan truyền ngược
Công thức lan truyền độ nhạy:

Công thức dạng ma trận:

Độ nhạy được tính toán bắt đầu từ lớp cuối cùng, sau đó lan truyền ngược về các lớp trước đó
đến lớp đầu tiên.
Thuật toán lan truyền ngược
Tính độ nhạy bắt đầu từ lớp cuối cùng:

Trong đó:

Công thức rút gọn:


Thuật toán lan truyền ngược – tóm lược
Lan truyền thuận các thông tin đầu vào

Lan truyền ngược giá trị độ nhạy từ lớp cuối cùng về lớp đầu tiên

Cập nhật trọng số và bias bắt đầu từ lớp cuối cùng


Thuật toán lan truyền ngược – ví dụ
Huấn luyện mạng nơ ron để mô phỏng giá trị hàm số:
Chọn cấu trúc mạng nơ ron 1-2-1
Thuật toán lan truyền ngược – ví dụ
Khởi tạo các trọng số và bias
Thuật toán lan truyền ngược – ví dụ
Giả sử lấy giá trị đầu vào là 1:
Lan truyền thuận để tính giá trị đầu ra

Tính sai số:


Thuật toán lan truyền ngược – ví dụ
Truyền giá trị của đạo hàm
Thuật toán lan truyền ngược – ví dụ
Tính độ nhạy:
Thuật toán lan truyền ngược – ví dụ
Chọn tốc độ cập nhật:
Cập nhật trọng số và bias:
Thuật toán lan truyền ngược – ví dụ
Chọn các hàm số khác nhau, cùng các cấu trúc mạng khác nhau

Mạng 1-3-1
Thuật toán lan truyền ngược – ví dụ
Sự hội tụ qua từng vòng lặp
Khả năng tổng quát hóa
Trở lại bài toán cũ
3.7
1.0 .90
2.9 4.5
3.7
-5.2
0.0 .17 .76
2.9
.5
-1
-4.6 -2.0
1 1
Giả sử toàn bộ các hàm truyền đều là hàm sigmoid
da = d sigmoid(n) = sigmoid(n)(1 − sigmoid(n)) = a(1 − a)
dn dn
de d e da dn
=
dw k da dn dw k
Cập nhật trọng số
de d e da dn
=
dw k da dn dw k
= −(t − a k ).a k (1 − a k ).a k - 1

• Trọng số được cập nhật với tốc độ µ

∆ wk = µ (t − a k ) a k ′ a k - 1
Cập nhật trọng số cho lớp thứ 2
A D
3.7
1.0 .90
2.9 4.5
3.7 E G
B -5.2
0.0 .17 .76
2.9
.5
-1
C
-4.6
F -2.0
• Tính đầu ra: a 2 = .76 1 1
• Đầu ra mong muốn: t = 1.0
A D
3.7
• Cập nhật lớp thứ 2 (chọn µ = 10) 1.0
2.9
.90 4.89
1—
4.5
– δG = (t − a 2 ) a 2 ′ = (1 − .76) 0.181 = .0434 B 3.7 E G
-5.126 -—5—
.2
– ∆ wGD = µ δG a D = 10 × .0434 × .90 = .391 0.0
2.9
.17 .76
.5
– ∆ wGE = µ δG a E = 10 × .0434 × .17 = .074 C -1 F -2.—0

-4.6 56 6
– ∆ wGF = µ δG a F = 10 × .0434 × 1 = .434 1 1 -1.
Cập nhật trọng số cho lớp thứ 1
Cập nhật cho nơ ron D:
δD = 4.5 × .0434 ×.0898 = .0175 A 3.7
D
∆ wDA = µ δD h A = 10 × .0175 × 1.0 = .175 1.0 .90 4.89
2.9 1—
4.5
∆ wDB = µ δD h B = 10 × .0175 × 0.0 = 0 B 3.7 E G
-5.126 -—5.—2
∆ wDC = µ δD h C = 10 × .0175 × 1 = .175 0.0
2.9
.17 .76
.5
Cập nhật cho nơ ron E: C -1 F —-2.—0
-4.6 6 6
δE = −5.2 × .0434 × 0.2055 = −.0464 1 1 -1 .5

∆ wEA = µ δE h A = 10 × −.0464 × 1.0 = −.464


You might also like