Phần dưới đây sẽ giới thiệu lại các khái niệm quan trọng được ứng dụng trong nghiên
cứu này
3.1. Công nghệ Máy học
3.1.1. Học cục bộ
Mô hình học cục bộ không có khái niệm cụ thể, mà chỉ dùng để chỉ các mô hình máy học trước khi có sự ra đời của mô hình học phi tập trung và học liên kết [9]. Theo Mitchell (1997), machine learning được định nghĩa như sau: một phần mềm máy tính được cho là học từ trải nghiệm E về việc thực thi tác vụ T được đo lường hiệu quả bởi P, nếu nó thực thi tác vụ T và đo lường P cho thấy có sự cải thiện khi phần mềm
được trải nghiệm E [10].
Với các tiếp cận của việc lập trình truyền thống, người lập trình sẽ tìm hiểu vấn đề, viết các luồn xử lý logic, kiểm thử phần mềm và triển khai phần mềm. Ở phần xử lý logic, thông thường sẽ được lập trình một cách tường minh, phần mềm sẽ tính toán
từ dữ liệu đầu vào và trả ra kết quả đầu ra tương ứng.
Data Lập trình
truyền thống
Rules
Tìm hiểu vấn Lập trình Đánh giá Pas— Triển khai
đề truyền thống s phần mầm
Phân tích lỗi Không pass
Hình 3-1: Lưu đồ lập trình truyền thống
12
Tuy nhiên, khi gặp các van đề phức tạp, việc xử lý logic tường minh sẽ trở nên phức tạp dẫn đến khó khăn trong việc bao trì, cải tiến phần mềm. Do đó, machine learning
ra đời với hướng tiếp cận khác. Đầu vào của các thuật toán ML sẽ là Data và Label,
từ đó các thuật toán sẽ cho ra các Rules và tiếp tục cải thiện bằng việc cập nhật dataset
dau vào.
ML
Cập nhật
‘ data Trién khai
có thể tự
động hóa Dao tạo thuật
toán ML Đánh giá
Hình 3-2: Lưu đồ lập trình theo hướng ML
3.1.2. Mạng neuron nhân tạo
Mang neuron nhân tao (ANN — Artificial Neural Network), một trong những khái
niệm quan trọng trong ML, là một mô hình toán hoc dựa trên cấu trúc của neuron
sinh học được giới thiệu vào năm 1943 bởi Warren McCulloch va Walter Pitts [11].
Ở neuron sinh học, các neuron cơ bản sẽ có hạt nhân (nucleus), các sợi nhánh neuron (dendrites) có vai trò truyền đi kích thích điện hóa nhận từ các tế bào thần kinh khác đến thân tế bào, và sợi nhánh dài nhất gọi là axon dùng dé kết nối đến các neuron khác để truyền tín hiệu. Khi một neuron nhận được một lượng tín hiệu từ các neuron
khác thì nó sẽ phát ra tín hiệu của riêng nó.
13
Cell body
Telodendria
Axon hillock Synaptic terminals
Golgi apparatus
Endoplasmic
reticulum
Mitochondrion Dendrite
7 N Dendritic branches
(Nguồn: neurosciencenews)
Hình 3-3: Cấu tạo của neuron
ANN là một mô hình đơn giản dựa trên mang neuron sinh học, một neuron cell sẽ có
một hoặc nhiều inputs hệ nhị phân (0/1) và một output nhị phân, neuron sẽ kích hoạt
và phát ra output của nó khi nhận được một lượng inputs nhất định, từ cơ chế này ta
có thé tính toán được bat kỳ mệnh dé logic nào.
neuron
' liên kết
od neuron
| LS a Va TcÝýcrcÈx ---
(¢) h C) h é) Gì [Arend |
h -! jor Ị
C=A C=A^B C=AvB C=A^-B
Hình 3-4: ANN thực hiện các phép logic đơn giản
Trên cơ sở ANN, Frank Rosenblatt vào năm 1957 đã phát triển ra perceptron được xem là một trong các cấu trúc ANN đơn giản nhất [12] [13]. Perceptron dựa trên
neuron nhân tạo gọi là TLU (threshold logic unit), với các inputs va output dưới dang
số thay vi là hệ nhị phân. TLU sẽ tính toán tổng trọng số các input (z = wx, + W2x; + + Wax„ = x?w), sau đó dùng ham step tính toán cho kết quả z ở bước trên, kết qua output là h„(x) = step(z). Thông thường hàm Heaviside step va Sign
function sẽ được sử dụng ở ham step có công thức như sau.
0 nếu z < 0 —1 nếu z < 0
heaviside(z) = lh nếu z > 0 sgn(z) = pneu Zz ọ
Tiếu Z
Z = tổng trọng số
Weights
Xn Input
Hinh 3-5: Neuron TLU 3.1.3. Mang neuron sâu (DNN - deep neural network) va Ham kích hoạt
(Activation function)
Mang Perceptron đa tầng (MLP — Multi-Layer Perceptron) là tô hợp gồm một tang vào (input layer), một hoặc nhiều tầng chứa TLUs còn được gọi là tầng an (hidden layer), và tang cuối cùng là tang ra (output layer). Khi một mang neuron nhân tạo có nhiều tang ấn thì còn được gọi là mạng neuron sâu (DNN), tầng càng gần với tang ra gọi là tầng trên, và ngược lại tầng càng gần với tang vào gọi là tầng thấp.
15
Output layer
Hình 3-6: Mạng Perceptron đa tầng Tuy nhiên, với phép tính tuyến tính đơn thuần như Heaviside step hoặc Sign Function, ANN sẽ khó xử lý các dữ liệu có mối quan hệ phức tạp, làm giảm đi đáng kể khả năng dự đoán của neuron. Vì nếu ta có thêm vào hidden layers thì phép biến đổi cũng đơn thuần chỉ tiếp tục nhân đầu ra với trọng số. Do đó, hàm kích hoạt (Activation Function) được đưa ra dé giải quyết vấn đề trên. Hàm kích hoạt được dùng dé biến đổi các tính hiệu inputs thành tính hiệu outputs và truyền tính hiệu đó cho tầng layer
kế tiếp trong mạng MLP, và thông thường các hàm kích hoạt này là các hàm phi tuyến
tính [14]. Trong ML, ta thường gặp các hàm kích hoạt sau:
1
1+e#
Hàm Sigmoid: sigmoid(x) =
Hàm Tanh: tanh(x) =
eX+ex
Hàm ReLu: relu(x) = max (0,x)
16
Activation functions 1.00
— Sigmoid
— Tanh
— Relu 0.75
0.50
0.25
0.00
~0.25
~0.50
~0.75
-1.00
Hình 3-7: Đồ thị ham các ham Activation Functions
3.1.4. Mạng neuron chap (CNN - Convolutional neural networks)
Mang neuron chap (CNN) được xây dựng dựa trên nghiên cứu của David H. Hubel
và Torsten Wiesel khi thực hiện các thí nghiệm về vùng não liên quan đến thị giác [15]. Nghiên cứu chi ra một số neurons thị giác phản ứng với hình ảnh theo các đường ngang, một số khác phản ứng theo đường dọc, sau đó các vùng nhận thức này chập lên nhau và tạo nên hình ảnh toàn cảnh. Một cách cụ thể hơn, một bức hình sẽ được phân tích thành ba yếu tố: chiều cao (height), chiéu ngang (width) va kénh mau (RGB
channels) [16].
Ngoài ra nghiên cứu cũng chỉ ra neuron có trường tiếp nhận lớn sẽ có kha năng phản ứng lại với các họa tiết phức tạp được tạo nên từ các họa tiết đơn giản, nghĩa là neurons ở tang cao hơn có thé sử dụng kết qua của các neurons tang thấp hơn. Chính hai phát hiện trên đã làm tiền đề dé phát triển mô hình Neocognitron, va sau này phát triển thành CNN [17].
Cấu trúc của CNN gồm bốn thành phần chính: đầu tiên là lớp input chứa giá trị của các pixels hình ảnh, các lớp tích chập (convolutional layers), các lớp tổng hợp (pooling layers), lớp kết nói đầy đủ dùng dé chuyền matrix kết quả từ các tang trước thành vector xác xuất của đối tượng dự đoán.
17
Input Convolution Convolution
Pooling Pooling
fully-
° | Ì| h connected |
\Y | layers with
Relu
Hình 3-8: Cấu trúc CNN thông thường
3.1.4.1. Lớp tích chập (convolutional layers)
Lớp tích chập được xem là thành phần quan trọng nhất trong CNN, các neurons trong lớp tích chập đầu tiên sẽ không liên kết với tất cả các điểm ảnh, mà chỉ liên kết với các điểm đặt trưng nằm trong trường tiếp nhận. Tương tự neurons ở lớp tích chập thứ hai cũng chỉ liên kết với neurons đặc trưng của lớp tích chập đầu nằm trong trường tiếp nhận. Kiến trúc này giúp mang neurons tập trung vào các điểm đặt trưng ở tang thấp nhất, sau đó kết hợp với các điểm đặt trưng ở tầng cao hơn và tiếp tục như thế đến lớp tích chập cuối cùng sẽ cho ra matrix đặc trưng, từ matrix đặc trưng này lớp kết nói đầy đủ sẽ cho ra output là vector dự đoán của chủ thé cần dự đoán.
Lớp tích chập có các tham số đầu vào là matrix ba chiều (height * width * RGB
channels), bộ lọc filter (còn được gọi là convolution kernel) và bước nhảy (stride).
Bộ lọc này sẽ trượt qua các trường tiếp nhận trên ảnh đề tính ra điểm đặt trưng trên
vị trí đó và kết quả cho ra matrix đặc trưng. Bước nhảy là số điểm ảnh dịch chuyển
bộ lọc từ trường tiếp nhận này sang trường tiếp nhận kế tiếp.
Vi dụ, một hình ảnh có matrix là 3 x 4, bộ lọc có kích thước 2 x 2, bước nhảy là 1, thì
tích chập sẽ được diễn ra như hình 2-9. Ban đầu filter sẽ bắt đầu ở góc trên bên trái của image input, ta sẽ tính đc tích chap đầu tiên của matrix đặt trưng là: (1 x 1) + (1x2) + (1x4) + (1x5) = 12. Sau đó di chuyền filter qua trái một cột ứng với bước nhảy là 1. Sau khi đi hết hàng ngang, filter trở về ria trái và dịch chuyển xuống một hàng ứng với bước nhảy là 1. Sau khi đi hết image input ta sẽ ra được matrix đặc
trưng.
18
Convolution kernel
2x2 Image input Feature matrix
Hinh 3-9: M6 ta phép tinh tich chap
Các filters khác nhau kết hợp với hình ảnh sẽ cho ra các matrix đặc trưng khác nhau
để thực hiện các hoạt động như phát hiện cạnh, làm mờ, làm nét...
Input image Convolution Feature map
= Kemel
TF
-1 -1 -—I -1 8 -1 -1 -1 -1l
(Nguon: Nvidia)
Hình 3-10: Dùng tích chập dé phát hiện cạnh Thông thường để có matrix đặc trưng cùng kích thước với matrix input, ta thường
thêm giá tri 0 bao quanh matrix input, kỹ thuật này gọi là zero padding
3.1.4.2. Lớp tổng hợp (pooling layers)
Lớp tổng hợp có chức năng tạo ra mẫu phụ có kích thước nhỏ hơn so với input ban đầu giúp giảm lượng công việc tính toán, số lượng tham số và bộ nhớ nhưng vẫn giữ
lại các thông tin quan trọng. Các loại pooling layers thường gặp như Max Pooling
dùng để lấy phần tư lớn nhất, Average Pooling để lấy giá trị trung bình của các phần
tử, Sum Pooling dé lấy tổng các phan tử... trong đó Max Pooling là được dùng thông dụng nhất [10].
19
Vi dụ, một hình anh có matrix là 4 x 4, bộ lọc có kích thước 2 x 2, bước nhảy là 2, thì
max pooling sẽ được diễn ra như hình 2-11.
Max pool 2x2 Stride 2
oằ|Ịto|ư|E
Hình 3-11: Mô tả phép tổng hợp max pooling 3.1.5. Các thuật toán tối ưu
3.1.5.1. Gradient Descent
Trong học máy, bài toán tìm điểm cực tiểu rat phổ biến, tuy nhiên việc này không phải lúc nào cũng dễ dàng và khả thi, do đó thay vì xác định điểm cực tiểu chính xác chúng ta tìm một điểm gần cực tiểu nhất và xem đó là cực tiểu. Từ ý tưởng đó, thuật toán tối ưu Gradient Descent được phát trién với ý tưởng là sử dụng phép lặp dé thay đổi các thông số của mô hình sao cho đạt được kết quả cost function! tối ưu nhất.
Thuật toán của Gradient Descent dùng dé tìm cực tiêu một hàm cost function J(8),
với ỉ là một vector dựng để ký hiệu cỏc tham số của hàm J.Cụ thể, chỳng ta sẽ bắt
đầu với Oy cú giỏ trị ngẫu nhiờn và tinh giỏ trị đạo hàm J’ tại ỉạ. Sau đú, ta điều chỉnh
6 ngược hướng với đạo hàm:
â J'(@) > 0, ham số đang ở pha tăng, ỉạ dang nằm bờn phải điểm cực tiểu, do
đú phải dich 6, về phớa bờn trỏi của Op, nghĩa là ỉ, < ỉạ
 J'(ỉạ) < 0, hàm số đang ở pha giảm, 4) đang nằm bờn trỏi điểm cực tiểu, do
đú phải dich ỉ; về phớa bờn phải của ỉạ, nghĩa là 0, > ỉạ Nguyờn tắc dịch chuyền ỉ sẽ là:
1 Cost function (còn được gọi là loss function) của mang neuron sẽ đo lường hiệu quả của mô hình bằng cách
định lượng sự khác biệt giữa ket qua mong đợi và ket quả do mô hình học máy tạo ra.
20
9 9— *VạjJ(6).
Tiếp tục dịch chuyền ỉ, theo quy tắc trờn đến khi J'(ỉ,) = 0, ta sẽ cú được điểm cực tiểu của J(ỉ). Một tham số quan trọng trong Gradient Descent là bước nhảy khi dịch chuyền 6, ta gọi tham số r này là learning rate. Nêu learning rate quá nhỏ, thì tốn rat nhiều thời gian đề thuật toán tìm được điểm cực tiểu. Nếu learning rate quá lớn, thuật toán có thể nhảy qua phía bên kia của điểm cực tiểu,
Gradient Descent Learning rate quá nhỏ Learning rate quá lớn
10) tô
Hình 3-12: Mô tả Gradient Descent
Tuy nhiên, trong thực tế, hàm cost function có thề sẽ không có dạng hình parabol như trên minh họa mà sẽ có hình dạng khác. Ngoài ra, hàm số cũng có thể có nhiều điểm cực trị dẫn đến việc chọn 09 khác nhau sẽ cho ra các kết quả khác nhau. Vì vậy độ chớnh xỏc của Gradient Descent phụ thuộc rất lớn vào việc chọn ỉạ và chọn learning rate [10]. Vớ dụ như ở hỡnh 2-13, nếu ỉạ xuất phỏt phớa bờn trỏi biểu đồ, Gradient Descent sẽ đến cực tiểu cục bộ (local minimum) trước khi đến cực tiểu toàn cục (global minimum) và sẽ cho ra kết quả không tối ưu. Trường hợp Oy xuất phat từ phía bên phải biểu đồ, và có learning rate thấp, Gradient Descent sẽ tốn nhiều thời gian để
tìm được global minium
21
Cost
Plateau
Global Local minimum _..
minimum
(Nguon: Hands-on Machine Learning with Scikit-Learn, Keras, and TensorFlow [10])
Hình 3-13: Nhược điểm của Gradient Descent
3.1.5.2. Gradient Descent với Momentum
Để giải quyết bài toán khi Gradient Descent di qua đoạn đồ thị có hệ số góc nhỏ, ta
sử dụng Gradient Descent với Momentum. Ý tưởng của thuật toán dựa trên hiện tượng vật lý, ví dụ một trái bowling sẽ lăn từ từ trên một mặt phẳng có độ dốc thoải, ban đầu sẽ có vận tốc nhỏ, nhưng khi có quán tính nó sẽ tăng tốc và lăn nhanh hơn.
Ở thuật toỏn Gradient Descent, ta cập nhật ỉ bằng cụng thức ỉ ỉ — ?VạJ(6), thuật toỏn này khụng quan tõm đến cỏc giỏ tri VạJ (ỉ) trước đú (giỏ trị đạo hàm J'(8)), nếu VạJ(ỉ) cú giỏ trị nhỏ thuật toỏn sẽ tốn rất nhiều thời gian.
Thuật toán Gradient Descent với Momentum thì quan tâm đến các giá trị Va) (@) trước
đó. Trong mỗi vòng lặp, thuật toán sẽ lấy vector momentum m trừ VạJ(), và giá trị
6 được cập nhật bằng cách cộng với vector momentum m. Vector momentum m dùng
để điều chỉnh gia tốc chứ không phải tốc độ của Gradient Descent.
m< Bm— nVoJ(@)
0c 0+m
22
Ở cụng thức trờn ỉ gọi là hệ số momentum cú giỏ trị trong khoảng [0, 1] và thường lấy 0.9 là giá trị mặc định.
3.1.5.3. Thuật toán AdaGrad, RMSProp và Adam
AdaGrad thay vì coi learning rate là một hằng só, thuật toán nhận learning rate là một tham số và thay đổi tham số này. Với đồ thị càng dốc, thuật toán điều chỉnh learning rate càng mạnh, và ngược lại với đồ thị có hệ số góc nhỏ. Đầu tiên, thuật toán tính tổng bình phương các gradients vào vector s. Với mỗi phần tử s; của vector s là tổng
của bỡnh phương dao hàm J(@) theo biờn ỉ;: s; s; + () . Bước hai, thuật toỏn, 2
i
tương tự như Gradient Descent, nhưng gradient vector sẽ chia cho Vs + € (€ dùng
97)
để trỏnh việc chia cho khụng (0)): 6; ỉ;Ă — 7 = =
Tổng quát hóa ta có công thức sau:
s —s+ VạJ(6) ® VạJ(0) @: nhân hai vector
9 0— nVeJ(@) © Vs+e @: chỉa hai vector
Thuật toán giúp cập nhật kết quả gần với cực tiểu toàn cục hơn và ít phải điều chỉnh tham số learning rate. AdaGrad thường cho kết quả tốt với các bài toán bậc hai, tuy nhiên trong việc dao tạo ANNs thì thuật toán thường kết thúc sớm hơn trước khi tìm được điểm tối ưu toàn cục.
Để khắc phục điểm yếu của AdaGrad trong việc không tiến tới được điểm cực tiểu toàn cục, RMSProp điều chỉnh bằng cách chỉ tích lũy các gradient từ các lần lặp lại gan nhất thông qua hệ số / (thông thường / có giá trị mặc định là 0.9).
s âỉs+ (1-8) VạJ(0) đ VạJ(0)
9 c0— 1VạJ(0) O vs+ e
Thuật toán Adam kết hợp ý tưởng của Momentum và thuật toán RMSProp, thuật toán theo dõi trung bình sự giảm dần của các gradients trước nhưng trong cách vận hành
23
của Momentum, và theo dõi sự trung bình căn bật hai của các gradient trong quá khứ. [18].
3.2. Học liên kết
3.2.1. Khái niệm học liên kết (mô hình client-server)
Trong mô hình máy học liên kết (FL — Federated Learning), mỗi client sẽ có dit liệu dao tao (dataset) riêng không cần phải truyền tải lên máy server. Thay vào đó, mỗi
clients sẽ nhận mô hình toàn cục (global model) được gửi từ server, sau đó sẽ đào tạo
mô hình với dataset của mình và cập nhật thông số cho mô hình và gửi về cho server. Server sau khi nhận các thông số từ các clients sẽ thực hiện tính toán và cập nhật thông số toàn cục mới cho mô hình và gửi mô hình cập nhật cho clients đề thực hiện
đào tạo ở các rounds sau.
Mô hình máy học liên kết cho phép nhiều clients tham gia mà không cần chia sẻ data
và tài nguyên, mà chỉ chia sẻ với nhau thông số của mô hình toàn cục và cục bộ giữa từng client và server. Do đó, server và các clients không hề tiếp cận được data của
nhau, đảm bảo tính riêng tư và bảo mật dữ liệu. Bên cạnh đó, mô hình toàn cục có
thông số được tổng hợp từ các mô hình cục bộ được huấn luyện từ nhiều nguồn, do
đó mô hình toàn cục đảm bảo được tính tổng quát hóa và có độ chính xác tốt hơn so
với các mô hình cục bộ [19].
24
Aggregated model
— tr
| ae --
Local update Local update
AW1 | AWn
Local update
AW2
E> > E> -
=R ` LJ —=&E
= =
Client 1 Client 2 Client n
Hinh 3-14: M6 hinh Federated learning
Trong mô hình học liên kết có hai thành phần chính là (1) các thiết bị tham gia gọi là clients và (2) máy chủ gọi là server, các clients sẽ kết nói với server mà không cần kết nói với nhau. Mô hình client-server này còn được gọi là master-worker. Trong hê thống này sẽ có n clients có dữ liệu riêng dùng dé đào tạo model nhưng cấu trúc dữ liệu phải giống nhau, và model huấn luyện phải đồng nhất với mô hình của cả hệ thống. Server sẽ thực hiện nhiệm vụ tông hợp thông số model toàn cục thông qua các
25