HÌNH
Trong chương này, tôi sẽ giới thiệu về phương pháp mã hóa (encoder) và giải
mã (decoder) mô hình được áp dụng các thuật toán tiền hóa trong quá trình tìm kiếm mô hình nơ-ron tích chập.
3.1 Depthwise Separable Convolution
Tích chập tách biệt chiều sâu (Depthwise Separable Convolution) được giới
thiệu trong kiến trúc mạng MobileNet V1 (1). Chung ta nhan dinh rang, độ sâu la
một trong những nguyên nhân chính dẫn tới sự gia tăng số lượng tham số của mô hình. Tích chập tách biệt chiều sâu sẽ tìm cách loại bỏ sự phụ thuộc vào độ sâu
khi tích chập mà vẫn tạo ra được một output shape có kích thước tương đương
so với tích chập thông thường.
Depthwise Separable Convolution được chia làm hai bước tuần tự:
e_ Tích chập chiều sâu (Depthwise Convolution): Chia khối input thành những
lát cắt ma trận theo độ sâu và thực hiện tích chập trên từng lắt cắt đó.
Mỗi một channel sẽ áp dụng một bộ lọc khác nhau và hoàn toàn không chia
sẻ tham số. Điều này có tác dụng:
— Quá trình học và nhận diện đặc trưng sẽ được tách biệt theo từng bộ
lọc.
Chương 3. CƠ CHẾ MA HÓA, GIẢI MA MÔ HÌNH 30
Depthwise Pointwise
HÌNH 3.1: Depthwise Convolution (bên phải) so với Convolution
thông thường (bên trái), ảnh từ
- Giảm thiểu khối lượng tính toán.
— Giảm thiểu số lượng tham số.
© Tích chập điểm (Pointwise Convolution): Thay đổi độ sâu của đầu ra bằng
việc áp dụng c bộ lọc kích thước 1x1xc, kích thước width va height không
đổi.
Với một tensor 3D có kích thước HxWxC, kích thước dau ra sau khi thực hiện
tích chập trên kernel KxK là H'!xW'xC’, thì ta có:
?> 1A _k LỆ ,
¢ Tỷ lệ số lượng tham số: €*K+KM 5 KxK+C
? 1A hk ⁄ ⁄ x VÀ 7
s Tỷ lệ so phép toán can thực hiện: ewe
Việc áp dụng Depthwise Separable Convolution sẽ giúp chúng ta giảm một
lượng lớn số lượng tham số cần tối ưu cũng như số lượng phép tính toán.
3.2 Inverted Residual Block
Inverted Residual Block được giới thiệu trong kiến trục mang MobileNet V2
[18]. Theo đó, một cơ chế mới được giới thiệu là kết nói tat( Skip Connection) cho
phép các khối ở layer trước được cộng trực tiếp vào layer liền sau. Nếu coi layer
Chương 3. CƠ CHẾ MÃ HÓA, GIẢI MÃ MÔ HÌNH 31
liền trước là X, sau khi đi qua các xử lý tích chập hai chiều ta thu được F(X), đầu
ra cuối cùng là một residual block có giá trị X + F(X).
6x1ôx32 16x16x16 1x1x160
HINH 3.2: Residual Block trong Mobilenet V2, anh từ
Skip Connection ở MobileNet V2 được điều chỉnh sao cho số kênh (chiều sâu)
ở input và output của mỗi block residual được thắt hẹp lại. Chính vì thế, cơ chế
này được gọi là Bottleneck Layer (thuật ngữ Bottleneck được sử dụng trong học
sâu ám chỉ các kiến trúc thu hẹp kích thước theo một chiều nào đó).
weight layer
x
identity
HINH 3.3: Inverted Residual Block trong Mobilenet V2, anh từ
Kiến trúc Residual được miêu ta trong hình |3.3|ngược lại so với các kiến trúc
Residual truyền thống CÓ SỐ lượng kênh ở input và output của một block lớn hơn
so với các Layer trung gian nên được gọi là Inverted Residual Block. Các Layer
Chương 3. CƠ CHẾ MÃ HÓA, GIẢI MÃ MÔ HÌNH 32
trung gian trong một Block sẽ làm nhiệm vụ biến đổi phi tuyến nên cần dày hơn
để tạo ra nhiều phép biến đổi hơn. Cơ chế Skip Connection được thực hiện ở Bot- tleneck Input và Ouput nên chỉ cần ghi nhận kết quả và không thực hiện biến đổi phi tuyến.
Tai các Residual Block, các phép biến đổi phi tuyến (như ReLu hay Sigmoid) tại Input và Output sẽ làm cho các thông tin bị mất mát. Chính vì thế, trong kiến trúc Residual Block chỉ sử dụng phép chiếu tuyến tính tại Layer Input và Output.
3.3 Bottleneck Block
SE-Resnet là một cải tiến so với mô hình Resnet thông thường. Theo đó, việc thêm Squeeze và Excitation (SE) vào Block Residual để tạo thành một kiến trúc
có độ chính xác cao hơn.
(+)
|x
ResNet Module
HINH 3.4: SE Resnet Block
Chương 3. CƠ CHẾ MÃ HÓA, GIẢI MÃ MÔ HÌNH 33
Hình |3.4| cho ta thấy sự khác biệt giữa kiến trúc Residual của mạng Resnet
thông thường và SE-Resnet. SE-Resnet áp dụng thêm một nhánh Global Pooling
có tác dụng ghi nhận bối cảnh của toàn bộ Layer trước đó. Đầu ra của nhánh này
là một Vector Global Context và được dùng để Scale đầu vào X.
Trong MobileNet V3 bì, SE được tích hợp vào kiến trúc của một Residual
Block sẽ như hình 3.5]
HINH 3.5: Residual block MobilenetV2 + Squeeze and Excitation
(Bottleneck Block)
Tai Layer thứ 3 trong hình [3.5]có một nhánh Squeeze and Excitation có kích thước (widthxheight) bằng 1x1 có tác dụng tổng hợp Global Context, lần lượt đi
qua FC -> ReLu -> FC -> Hard Sigmoid.
3.4 Identity block va Convolutional block
Khối xác định (Identity block) được giới thiệu trong kiến trúc mạng Resnet
[13]. Giả sử x là đầu vào của khối xác định, chúng ta cần ánh xạ đầu vào x thành
ham f(x). Dé tìm ra ánh xạ chuẩn xác tương đương với hàm f(x) là một việc khá khó. Nhưng nếu cộng thêm ở đầu ra thành x + f(x) thì chúng ta sẽ quy về tham
số hóa độ lệch, tức cần tham số hóa phan dư f(x). Tìm ánh xạ theo phan du sẽ
dé hơn nhiều vì chỉ cần tìm giá trị f(x) sao cho nó gần bằng 0 là có thể thu được một ánh xạ chuẩn xác. Tại một khối xác định, chúng ta sẽ áp dụng một Layer Activation ReLU sau mỗi xen kẽ giữa những tang trọng số.
Chương 3. CƠ CHẾ MÃ HÓA, GIẢI MÃ MÔ HÌNH 34
Ce 8 fw
Ea] |. l[ E3]
Batch norm
HINH 3.6: Identity block với ba Layer tích chập
Theo hình B.6| đường nối được gọi là đường tắt (shortcut path hay skip con-
nection) tương ứng với f (x), x sau khi qua hai Layer tích chập thì được cộng trực
tiếp vào f(x) trước khi đi qua Layer kích hoạt ReLU.
Khi kích thước đầu ra của kết nói tắt không khớp với đầu ra sau khi qua BatchNorm tại đường chính (main path), ta cần sử dụng thêm một Layer tích chập cho kết nối tắt, việc này giúp giảm kích thước của x xuống các kích thước
khác nhau.
Thông thường việc tăng độ sâu của các kiến trúc mạng sẽ làm tăng độ chính xác dự đoán của mô hình. Nhưng thực nghiệm cho thay, đến một ngưỡng độ sâu
nào đó thì độ chính xác của mô hình sẽ bão hòa và thậm chí phản tác dụng và
làm cho mô hình kém chính hơn. Khi đi qua quá nhiều tầng độ sâu có thể làm cho thông tin gốc mất đi. Như vậy cơ chế Skip Connection sẽ giúp giữ thông tin không bị mat khi kết nồi từ Layer trước đó đến Layer sau và bỏ qua một số Layer
trung gian.
Chương 3. CƠ CHẾ MÃ HÓA, GIẢI MÃ MÔ HÌNH 35
3.5 Cơ chế mã hóa
3.5.1 Kiến trúc mô hình mã hóa
Để thực hiện được điều này, tôi đã sử dụng ý tưởng của Lingxi Xie va Alan
Yuille trong bai báo Genetic CNN được giới thiệu tai hội nghị CVPR 2017.
Theo đó, kiến trúc mô hình chung cho quá trình mã hóa sẽ như hình |3.7|
ịe ole 1 \ | offe @ °.
o @
Stage | Stage Il Stage III
Code: 1-10 Code: 1-10-111 Code: 0-10
HINH 3.7: Kiến trúc mô hình mã hóa
Hiện nay, bàn về xu hướng thiết kế mô hình, ta sẽ dễ dàng nhận ra một điều là các mô hình như GoogleNet, ResNet,... đều chia mô hình thành nhiều giai đoạn khác nhau, trong mỗi giai đoạn sẽ bao gồm các khối (Block), ở mỗi khối sẽ thực hiện một chức năng riêng mà chúng sẽ có cách sắp xếp các Layer tích chập khác
nhau. Theo đó, tôi thực hiện thiết kế mô hình mã hóa trong khóa luận này như
hinh[3.7|sé bao gom ba giai đoạn chính, mỗi giai đoạn sẽ được tách biệt nhau bởi
Layer Pooling.
Ở giai đoạn thứ nhất, mỗi Node sẽ là một khối Identity Block (3.4), riéng hai
Node nam ngoài vung mã hóa được gọi la Node đầu vào/ra mặc định, là hai Convolution Block (3.4), tôi cũng mang thiết kế tương tự cho giai đoạn thứ ba, để mang tính đối xứng, ở giai đoạn ba tôi đã sắp xếp vị trí khác đi.
Chương 3. CƠ CHẾ MÃ HÓA, GIẢI MÃ MÔ HÌNH 36
Tại giai đoạn thứ hai, hai Node vào ra mặc định không còn là Convolution
Block mà được thay bằng hàm Add() trong Tensorflow với mục tiêu kết hợp một hoặc nhiều Tensor lại với nhau. Bên cạnh đó, các Node trong giai đoạn hai bây
giờ là các khối Bottleneck Block (3.3).
Node đầu vào có nhiệm vụ nhận input của giai đoạn trước đó và gửi output cho tất cả các Node mà không nhận input từ Node khác. Node đầu ra sẽ làm nhiệm vụ nhận input từ các node không có dau ra với các Node khác, tổng hợp
và gửi output cho lớp Pooling. Việc xuất hiện hai Node đặc biệt này cùng với nhiệm vụ của chúng nhằm đảm bảo đầu ra, đầu vào cho từng giai đoạn để dữ liệu luôn được thông suốt. Trong trường hợp một Node tích chập không có liên kết với bất kỳ Node nào, hay nói cách khác là kiến trúc mạng của ta không cần Node đó, điều này giúp ta thầy rằng các kiến trúc ít phức tạp hơn vẫn có thể mô phỏng được các kiến trúc mạng phức tạp.
Kiến trúc mô hình mã hóa được thiết kế sao cho kích thước hình học của các Feature Map sẽ giảm dan và độ sâu của mô hình là tăng dần. Mục đích của việc thiết kế này, tại những Layer đầu tiên chủ yếu được sử dụng để học các đặc trưng
cơ bản, càng về sau số Layer càng nhiều với mục đích học sâu hơn với các đặc trưng cấp cao, kích thược hình học của các Feature Map giảm dần để giảm thiểu chi phí tính toán cũng như số lượng tham số cần tối ưu cho mô hình.
FULLY
HÌNH 3.8: Mô hình mã hóa tổng thé
Hình|8.8llà mô hình mã hóa tổng thể, trước khi vào quá trình tiến hóa, tôi thực
hiện Conv2D, mục đích khi tôi xây dựng khối này để thay đổi kích thước của đặc trưng MFCC ở Input cho phù hợp hơn với khối Genetic phía sau đó đồng thời
làm giảm kích thước feature map, giảm chỉ phí tính toán của model.
Chương 3. CƠ CHẾ MÃ HÓA, GIẢI MÃ MÔ HÌNH 37
3.5.2 Cơ chế mã hóa mô hình
t IN
i ` x>eE
|
Stage II
Code: 1-01-000
HINH 3.9: Minh họa mô hình mã hóa với code: 1-01-000
Quá trình mã hóa mô hình là quá trình biến đổi một kiến trúc mô hình thành một chuỗi nhị phân (các phần tử trong chuỗi mang một trong hai giá trị: hoặc là
0, hoặc là 1) có độ dài L cố định.
Ở mỗi giai đoạn seS, ta có K; Node, ký hiệu là V;¿, với k;ạ € Ks, ví dụ: S = 2, mỗi
giai đoạn có (Kj = 2,K2 = 3) Node, thì Vị „, sẽ là node thứ kì trong giai đoạn 1. Việc
sắp xếp theo thứ tự các node nhằm mục đích chỉ cho phép các kết nối từ node được đánh số thấp hơn đến node được đánh số cao hơn. Phần Fully Connection
chúng tôi không thực hiện mã hóa.
Trong mỗi giai đoạn, chúng tôi sử dụng 1 + 2+... + (Ks — 1) = 3K; (Ks — 1) bits để mã hóa cho liên kết giữa các node. Bit đầu tiên biểu diễn liên kết giữa hai Node (0ứ;1,ứ; 2), hai bits tiếp theo sẽ là liờn kết giữa (0;1„ứ;,3) and (vs2, 53), etc. Quá trình này tiếp tục cho đến khi các bit K; — 1 cuối cùng được sử dụng để thể hiện kết nối giữa ỉ;1,ỉ;2,...,ỉsk,_1 và 0k,. Với 1 <i < j < Ks, nếu Code tương ứng với (ứ;¿,ứs„) là 1, thỡ cú một cạnh nối ứ,Ă và ứ;„Ă, i.e., tức là ứ; ; lay đầu ra của
Chương 3. CƠ CHẾ MÃ HÓA, GIẢI MÃ MÔ HÌNH 38
vs, như một phan của phép tính tổng element-wise và ngược lại.
Trong hình|3.9| ta có code là 1 — 01 — 000 được hiểu là:
® 1: tương ứng với Node I có kết nối với Node II.
* 01: tương ứng với Node I không có liên kết với Node III và Node II liên kết
với Node III.
* 000: tương ứng với Node I không có liên kết với Node IV, Node II không có
liên kết với Node IV và Node III cũng không có liên kết với Node IV.
Nhu vậy, một kiến trúc mạng có S giai đoạn, mỗi giai đoạn có K; nodes thì
chiều dài chuỗi nhị phân mã hóa cho kiến trúc đó là L = $};K; (Ks — 1). Điều đó đồng nghĩa với việc, có tổng cộng 2! kiến trúc mạng kha thi. Như vậy, khi S=3, với (Ki, Kz, K3) = (3,4,5) thì L = 19, tương ứng với 2!? = 524,288 kiến trúc mạng
kha thi.
3.6 Co chế giải mã mô hình~
M kx X M
› | | / : x >b
Code: 1-01
HINH 3.10: Minh họa giải mã mô hình với mã: 1-01
Cơ chế giải mã mô hình là quá trình biến đổi từ chuỗi nhị phân thành kiến trúc model tương ứng với những quy tắc được nhắc đến trong Như vậy,
Chương 3. CƠ CHẾ MÃ HÓA, GIẢI MÃ MÔ HÌNH 39
trong một giai đoạn, nếu mã của chúng ta là 1-01, ta hoàn toàn biết được mô hình
ta sẽ có 3 Node (tương ứng: Node I, Node II va Node II):
© 1: Có kết nối giữa Node I va Node II.
e 01:
— 0: Không có kết nối từ Node I đến Node III.
— 1: Có kết nối giữa Node II và Node III.
Hình là kiến trúc mô hình mô tả cho đoạn mã trên.
40
Chương 4