Tải bản đầy đủ (.pdf) (103 trang)

xây dựng hệ thống nhận dạng tiếng việt nói trên nền bộ công cụ kaldi tích hợp mạng nơ ron sâu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.79 MB, 103 trang )

LỜI CAM ĐOAN
Tôi – Nguyễn Thị Thanh, học viên lớp cao học 13BCNTT2 Trường Đại học Bách
khoa Hà Nội cam kết: Luận văn tốt nghiệp là công trình nghiên cứu của bản thân tôi
dưới sự hướng dẫn của TS. Nguyễn Hồng Quang – Viện Công nghệ Thông tin và
Truyền thông- Đại học Bách khoa Hà Nội. Các kết quả trong luận văn tốt nghiệp là
trung thực, không sao chép toàn văn của bất kỳ công trình nào khác.
Hà Nội, ngày 25 tháng 10 năm 2016
Học viên: Nguyễn Thị Thanh
Lớp: 13BCNTT2

i


LỜI CẢM ƠN
Tôi xin bày tỏ lòng biết ơn sâu sắc tới Thầy giáo, TS. Nguyễn Hồng Quang –
Bộ môn Kỹ thuật Máy tính – Viện Công nghệ Thông tin và Truyền thông – Đại học
Bách Khoa Hà Nội, người thầy đã hết lòng giúp đỡ, dạy bảo, động viên và tạo mọi
điều kiện thuận lợi cho tôi trong suốt quá trình học tập và hoàn thành luận văn tốt
nghiệp.
Tôi xin chân thành cảm ơn tập thể các Thầy, Cô giáo trường Đại học Bách
khoa Hà Nội nói chung và Viện Công nghệ Thông tin và Truyền thông nói riêng đã
tận tình giảng dạy truyền đạt cho tôi những kiến thức, kinh nghiệm quý báu trong
suốt thời gian học tập tại trường.

ii


MỤC LỤC
LỜI CAM ĐOAN ........................................................................................................ i
LỜI CẢM ƠN .............................................................................................................ii
MỤC LỤC ................................................................................................................. iii


DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ ...........................................vii
DANH MỤC CÁC BẢNG......................................................................................... ix
DANH MỤC CÁC HÌNH VẼ VÀ ĐỒ THỊ ............................................................... x
MỞ ĐẦU ..................................................................................................................... 1
Chương I. CƠ SỞ LÝ THUYẾT ................................................................................ 4
1. 1. Tổng quan về mạng Nơ ron sâu. ..................................................................... 4
1.1.1. Mô tả Nơ–ron sinh học

[16] .................................................................. 4

1.1.2. Mạng Nơ–ron nhân tạo (ANN) ................................................................. 5
1.1.2.1. Cấu trúc mạng Nơ ron nhân tạo ......................................................... 5
1.1.2.2. Mạng được phân lớp .......................................................................... 6
1.1.2.3. Ứng dụng của mạng Nơ ron nhân tạo ................................................ 8
1.1.3. Lĩnh vực học sâu ....................................................................................... 8
1.1.3.1. Perceptrons: Thuật toán học sâu sơ khai ............................................ 8
1.1.3.2. Mạng Nơ ron truyền thẳng cho việc học sâu ................................... 12
1.1.3.3. Một số khái niệm chính về học sâu [17] ........................................ 21
1.1.3.4. Lịch sử lĩnh vực học sâu .................................................................. 23
1.1.3.5. Học sâu trong mạng Nơ ron nhân tạo [16] .................................... 26
1.1.3.6. Các kiến trúc học sâu ....................................................................... 29
1.1.4. Mạng Nơ ron sâu .................................................................................... 29
1.1.4.1. Tổng quan về mạng Nơ ron sâu ....................................................... 29

iii


1.1.4.2. Mạng nơ ron sâu cho mô hình âm học trong nhận dạng tiếng nói[12]29
1.1.4.3. Huấn luyện mạng Nơ ron sâu


[13] ............................................... 31

1.2. Hệ thống nhận dạng tiếng nói [20] .............................................................. 36
1.2.1. Cấu trúc của một hệ thống nhận dạng tiếng nói...................................... 37
1.2.2. Phân loại hệ thống nhận dạng tiếng nói .................................................. 38
1.2.3. Các phương pháp nhận dạng tiếng nói .................................................... 39
1.2.4. Các ứng dụng của nhận dạng tiếng nói ................................................... 41
Chương II. PHƯƠNG PHÁP THỰC HIỆN VÀ CÔNG CỤ SỬ DỤNG................ 42
2.1. Phương pháp thực hiện đề tài ........................................................................ 42
2.2. Kỹ thuật trích chọn đặc trưng MFCC [3] .................................................... 42
2.3. Mô hình GMM ............................................................................................... 46
2.4. Bộ công cụ nhận dạng tiếng nói Kaldi

[2] ............................................... 47

2.4.1. Giới thiệu................................................................................................. 47
2.4.2. Cấu trúc bộ công cụ Kaldi

[4].............................................................. 49

2.5. Ngôn ngữ lập trình Shell ................................................................................ 51
2.6. Ngôn ngữ lập trình Perl ................................................................................. 52
2.7. Ngôn ngữ lập trình Python............................................................................. 52
Chương III. NHẬN DẠNG TIẾNG VIỆT NÓI TRÊN NỀN BỘ CÔNG CỤ KALDI
TÍCH HỢP MẠNG NƠ RON SÂU .......................................................................... 54
3.1. Các bước thực hiện xây dựng hệ thống nhận dạng tiếng nói trên nền bộ công
cụ Kaldi ................................................................................................................. 54
3.2. Chuẩn bị dữ liệu ............................................................................................. 55
3.2.1. Thu âm tiếng nói ..................................................................................... 55
3.2.2. Chuẩn bị dữ liệu văn bản ........................................................................ 56


iv


3.2.3. Một số quy tắc ......................................................................................... 57
3.2.4. Xây dựng các âm vị và tạo từ điển phát âm cho hệ thống nhận dạng..... 58
3.3. Bộ công cụ nhận dạng tiếng nói Kaldi [2] .................................................. 63
3.3.1. Thự hiện download và cài đặt ................................................................. 63
3.3.2. Mô hình thư mục làm việc trong Kaldi ................................................... 64
3.3.3. Mô hình hệ thống nhận dạng tiếng Việt nói với bộ công cụ Kaldi ......... 65
3.3.4. Mạng Nơ ron sâu trong Kaldi

[14] ...................................................... 66

3.3.4.1. Mô hình âm học với DNN ............................................................... 66
3.3.4.2. Công thức DNN ............................................................................... 67
3.3.5. Mô hình GMM ........................................................................................ 68
3.4. Huấn luyện mô hình âm học .......................................................................... 68
3.4.1. Kịch bản mô hình âm học ....................................................................... 68
3.4.2. Chuẩn bị thư mục .................................................................................... 70
3.4.3. Tạo mô hình ngôn ngữ ............................................................................ 72
3.4.4.Tạo các tập tin cho lang_prep/local/dict và lang_prep/local/lang ........... 72
3.4.5. Tạo các tập tin cho lang_prep/lang ......................................................... 75
3.4.6. Thiết lập huấn luyện song song............................................................... 75
3.4.7. Tạo tập tin mfcc.conf trong thư mục common........................................ 76
3.4.8. Trích chọn tham số MFCC...................................................................... 77
3.4.9. Sắp xếp và huấn luyện Monophone ........................................................ 77
3.4.10. Sắp xếp và huấn luyện Triphone (Tri1) ................................................ 79
3.4.11. Huấn luyện với mạng nơ ron sâu (tri4_DNN) ...................................... 81
3.5. Xây dựng đồ thị giải mã

3.6. Giải mã

[10] ..................................................................... 81

[11] ............................................................................................ 83

v


3.7. Tính WER và SER ........................................................................................ 86
CHƯƠNG IV. KẾT QUẢ THỬ NGHIỆM ............................................................. 88
4.1. Kết quả thực hiện với các mô hình huấn luyện ............................................. 88
4.2. Kết quả thực hiện với các trọng số mô hình ngôn ngữ khác nhau ................ 89
KẾT LUẬN ............................................................................................................... 90
TÀI LIỆU THAM KHẢO ......................................................................................... 92

vi


DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ
Từ viết tắt

Tên đầy đủ

Nghĩa tiếng Việt

AI

Artificial Intelligence


Trí tuệ nhận tạo

AM

Acoustic Models

Mô hình âm học

ANN

Artificial Neural Network

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

ASR

Automatic Speech Recognition

Nhận dạng tiếng nói tự động

BLAS

Basic Linear Algebra

Thư viện chương trình con đại số

Subroutines

tuyến tính cơ bản


Boosted Maximum Mutual

Thông tin tương hỗ tối đa tăng

Information

cường

Cepstral Mean Variance

Giá trị trung bình phương sai bình

Normalization

phương

CNN

Convolutional Neural Network

Mạng nơ ron sâu chập

DBN

Deep belief network

Mạng Belief sâu

DNN


Deep Neural Network

Mạng nơ ron sâu

DTW

Dynamic Time Warping

So sánh thời gian động

EM

Expectation Maximization

Tối ưu hóa kỳ vọng

FST

Finite State Transducers

Bộ dò trạng thái hữu hạn

GMM

Gaussian Mixture Models

Mô hình Gauss hỗn hợp

HCLG


HoCoLoG

Đồ thị giải mã HCLG

HMM

Hidden Markov Model

Mô hình Markov Ẩn

ICDAR

International Conference on

Hội nghị quốc tế về phân tích tài

Document Analysis and

liệu và nhận dạng

BMMI

CMVN

Recognition
LAPACK

Linear Algebra PACKage

Thư viện gói đại số tuyến tính


LDA

Linear Discriminant Analysis

Phân tích biệt thức tuyến tính

LM

Language Models

Mô hình ngôn ngữ

LMW

Language Model Weight

Trọng số mô hình ngôn ngữ

LSTM

Long Short Term Memory

Mạng bộ nhớ tạm

vii


Từ viết tắt


Tên đầy đủ

Nghĩa tiếng Việt

Mel Frequency Ceptral

Các hệ số Cepstral theo thang đo

Coeficients

tần số Mel.

MMI

Maximum Mutual Information

Thông tin tương hỗ tối đa

MPE

Minimum Phone Error

Lỗi âm vị tối thiểu

OOV

Out Of Vocabulary Word

Các từ ngoài bộ từ vựng


PLP

Peceptual Linear Prediction

Dự báo tiên đoán tuyến tính

RBM

Restricted Boltzman Machines

Máy Boltzman giới hạn

SAT

Speaker Adaptive Training

Huấn luyện thích nghi người nói

SER

Sentence Error Rate

Tỷ lệ lỗi nhận dạng câu

SGD

Stochastic Gradient Descent

Gradient descent ngẫu nhiên


VIQR

VIetnamese Quoted-Readable

Quy ước để viết chữ tiếng Việt

MFCC

dùng bảng mã ASCII 7 bit
WER

Word Error Rate

Tỷ lệ lỗi nhận dạng từ

WST

Word System Table

Bảng ký tự của các từ

viii


DANH MỤC CÁC BẢNG
Bảng 3.1: Cơ sở dữ liệu tiếng Việt nói...................................................................... 56
Bảng 3.2: Cách biểu diễn dấu và thanh điệu tiếng Việt có sử dụng VIQR .............. 57
Bảng 3.3: Chuyển đổi thanh điệu và dấu mũ của chữ cái ......................................... 58
Bảng 3.4: Danh sách các âm vị là nguyên âm .......................................................... 61
Bảng 3.5: Danh sách âm vị là phụ âm....................................................................... 61

Bảng 3.6: Danh sách các từ trong từ điển ................................................................. 62
Bảng 3.7: Các phương thức huấn luyện của hệ thống .............................................. 70
Bảng 4.1: Wer và Ser cho các phương pháp huấn luyện .......................................... 88
Bảng 4.2: Bảng kết quả với các trọng số mô hình ngôn ngữ khác nhau ................... 89

ix


DANH MỤC CÁC HÌNH VẼ VÀ ĐỒ THỊ
Hình 1.1: Mạng Nơ ron sinh học.................................................................................5
Hình 1.2: Cấu trúc của một Nơ ron nhân tạo ..............................................................5
Hình 1.3: Mạng được phân lớp ...................................................................................7
Hình 1.4: Perceptron ...................................................................................................9
Hình 1.5: Một mạng các Perceptrons ..........................................................................9
Hình 1.6: Phân lớp các điểm đã được gán nhãn .......................................................10
Hình 1.7: Mạng truyền thẳng ....................................................................................12
Hình 1.8: Đồ thị lỗi huấn luyện .................................................................................14
Hình 1.9: Autoencoder ..............................................................................................16
Hình 1.10: Restricted Boltzmann Machines .............................................................17
Hình 1.11: Autoencoder được xếp chồng .................................................................19
Hình 1.12: Mạng Belief sâu ......................................................................................20
Hình 1.13: Cấu trúc hệ thống nhận dạng tiếng nói ...................................................37
Hình 2.1: Các bước trích chọn đặt trưng MFCC.......................................................43
Hình 2.2: Lấy cửa sổ (windowing) ...........................................................................44
Hình 2.3: Hàm mật độ Gauss ....................................................................................46
Hình 2.4: Hàm mật độ xác suất của mô hình GMM .................................................47
Hình 2.5: Cấu trúc bộ công cụ Kaldi ........................................................................49
Hình 3.1: Các bước thực hiện xây dựng hệ thống nhận dạng tiếng nói trên nền bộ
công cụ Kaldi ............................................................................................................54
Hình 3.2: Phần mềm hỗ trợ ghi âm ...........................................................................55

Hình 3.3: Chuyển đổi giữa UTF-8 và VIQR dùng Unikey. ......................................57
Hình 3.4: Âm vị phụ âm ............................................................................................59
Hình 3.5: Âm vị nguyên âm ......................................................................................60
Hình 3.6: Thư mục làm việc trong Kaldi ..................................................................65
Hình 3.7: Mô hình nhận dạng tiếng nói với bộ công cụ Kaldi .................................66
Hình 3.8: Hệ thống phân cấp các mô hình âm học được huấn luyện .......................70
Hình 4.1. Biểu đồ WER thể hiện qua các mô hình huấn luyện ................................89
Hình 4.2. Biểu đồ WER với các tham số LMW khác nhau ......................................90

x


MỞ ĐẦU
Lý do chọn đề tài
Nhận dạng tiếng Việt nói được ứng dụng trong nhiều lĩnh vực như: tổng đài tự
động; an ninh bảo mật; tìm kiếm bằng giọng nói…
Mạng Nơ ron là một công cụ có khả năng giải quyết được nhiều bài toán khó,
thực tế những nghiên cứu về mạng Nơ ron đưa ra một cách tiếp cận khác với những
cách tiếp cận truyền thống trong lý thuyết nhận dạng.
Hiện nay đã có nhiều nghiên cứu cho thấy sự vượt bậc của mạng Nơ ron sâu:
-

Các nghiên cứu gần đây đã ứng dụng thành công kiến trúc mạng Nơ ron sâu
trong mô hình ngôn ngữ.

-

Ứng dụng mạng Nơ ron sâu vào nhận dạng tiếng nói bộ từ vựng lớn với bộ dữ
liệu lớn hơn bất kỳ hệ thống nào trước đây.


-

Công ty Google hiện đang sử dụng các mạng Nơ ron để nhận dạng tiếng nói
cải thiện được 20-25% độ chính xác.
Trong luận văn này, bộ công cụ Kaldi được chọn vì có ưu điểm chính là hiện

đại, linh hoạt, mã nguồn được cấu trúc rõ ràng. Và hơn thế nữa, Kaldi cho chất lượng
nhận dạng cao hơn các bộ công cụ nhận dạng tiếng nói khác như HTK, Sphinx hay
Alize…
Kết quả từ các thí nghiệm của các nhà khoa học cho thấy Kaldi chạy nhanh hơn
so với tất cả các bộ công cụ nhận dạng khác. Kaldi huấn luyện và giải mã theo kỹ
thuật đường ống bao gồm các kỹ thuật cao cấp nhất, điều này cho phép hệ thống đạt
kết quả tốt nhất trong thời gian ngắn. Thời gian cho việc thiết lập, chuẩn bị, chạy và
tối ưu hóa cho các bộ công cụ lớn nhất với HTK, ít hơn là Sphinx và ít nhất là Kaldi.
Bộ công cụ nhận dạng họ Sphinx (PocketSphinx và Sphinx-4) không bao gồm tất cả
các kỹ thuật tích hợp trong một như Kaldi. HTK là bộ công cụ khó nhất, mặc dù các
kết quả thu được tương tự với Sphinx, tuy nhiên thiết lập hệ thống cần tốn thời gian.
So sánh với các bộ nhận dạng khác, hiệu năng vượt trội của Kaldi được xem như là
cuộc cách mạng trong công nghệ nhận dạng tiếng nói mã nguồn mở.

1


Hiện tại đã có một số nghiên cứu về nhận dạng tiếng Việt nói, tuy nhiên đa phần
mới chỉ sử dụng bộ công cụ HTK. Do vậy mục tiêu nghiên cứu của luận văn là xây
dựng bộ công cụ nhận dạng tiếng Việt nói sử dụng bộ công cụ Kaldi có tích hợp mạng
nơ ron sâu, thử nghiệm các kỹ thuật tiên tiến trong Kaldi để đánh giá khả năng của
Kaldi với tiếng Việt.
Nhu cầu về thử nghiệm phương pháp nhận dạng tiếng Việt nói sử dụng mạng
Nơ ron sâu đã trở nên cấp bách và cần thiết.

Mục đích, phạm vi nghiên cứu
- Nghiên cứu về mạng Nơ ron sâu và lĩnh vực học sâu (Deep Learning).
- Nghiên cứu về nguyên lý và các thành phần của một hệ thống nhận dạng tiếng
nói và ứng dụng vào nhận dạng tiếng Việt nói.
- Xây dựng chương trình nhận dạng tiếng Việt nói có tích hợp mạng Nơ ron sâu.
- Kiểm tra và đánh giá hiệu suất nhận dạng của hệ thống.
Đối tượng nghiên cứu
- Nghiên cứu, tìm hiểu lý thuyết và ứng dụng của mạng Nơ-ron sâu.
- Nghiên cứu, tìm hiểu về bộ công cụ nhận dạng tiếng nói Kaldi.
- Nghiên cứu, xây dựng hệ thống nhận dạng tiếng Việt nói trên nền bộ công cụ
Kaldi có tích hợp mạng nơ ron sâu.
Phương pháp nghiên cứu
- Nghiên cứu lý thuyết về nhận dạng tiếng nói.
- Nghiêm cứu về máy học và mạng nơ ron sâu trong nhận dạng tiếng nói.
- Nghiên cứu sử dụng bộ công cụ Kaldi, ngôn ngữ lập trình Python trên môi
trường Linux trong nhận dạng tiếng nói.
- Thử nghiệm nhận dạng tiếng Việt nói trên nền bộ công cụ Kaldi có tích hợp
mạng nơ ron sâu với số lượng 35 người nói, 4375 câu nói.
Nhiệm vụ nghiên cứu
- Tìm hiểu về hệ thống nhận dạng tiếng nói.
- Tìm hiểu phương pháp trích chọn các tham số đặc trưng cần thiết cho bài toán
nhận dạng tiếng nói.

2


- Tìm hiểu về mô hình GMM và hoạt động của bộ công cụ Kaldi, các gói thư
viện, ngôn ngữ lập trình Python.
- Xây dựng thử nghiệm hệ thống nhận dạng tiếng Việt nói trên nền bộ công cụ
Kaldi có tích hợp mạng nơ ron sâu..

- Thử nghiệm hệ thống với cơ sở dữ liệu tiếng Việt. Trên cơ sở kết quả thử
nghiệm phân tích đánh giá hệ thống.

3


Chương I.
CƠ SỞ LÝ THUYẾT
1. 1. Tổng quan về mạng Nơ ron sâu.
1.1.1. Mô tả Nơ–ron sinh học

[16]

Bộ não con người bao gồm khoảng 1011 Nơ ron tham gia vào khoảng 1015 kết
nối trên các đường truyền. Mỗi đường truyền này dài khoảng hơn một mét. Các Nơ
ron có khả năng nhận, xử lý và truyền các tín hiệu điện hóa trên các đường Nơ-ron,
các con đường này tạo nên hệ thống giao tiếp của bộ não.
Cấu tạo của nơ ron sinh học được thể hiện trong hình 1.1. Mỗi Nơ ron sinh
học có 3 thành phần cơ bản: Các nhánh vào hình cây (dendrites); thân tế bào (cell
body); sợi trục ra (axon). Các nhánh hình cây truyền tín hiệu vào đến thân tế bào.
Thân tế bào tổng hợp và xử lý cho tín hiệu đi ra. Sợi trục truyền tín hiệu ra từ thân tế
bào này sang Nơ ron khác. Điểm liên kết giữa sợi trục của Nơ ron này với nhánh hình
cây của Nơ ron khác gọi là synapse. Liên kết giữa các Nơ ron và độ nhạy của mỗi
synapse được xác định bởi quá trình hóa học phức tạp. Một số cấu trúc của Nơ ron
được xác định trước lúc sinh ra. Một số cấu trúc được phát triển thông qua quá trình học.
Nơ ron sinh học hoạt động theo cách thức: nhận tín hiệu đầu vào, xử lý các tín
hiệu này và cho ra một tín hiệu output. Tín hiệu output này sau đó được truyền đi làm
tín hiệu đầu vào cho các Nơ ron khác. Dựa trên những hiểu biết về Nơ ron sinh học,
con người xây dựng Nơ ron nhân tạo với hy vọng tạo nên một mô hình có sức mạnh
như bộ não.


4


Hình 1.1: Mạng Nơ ron sinh học

1.1.2. Mạng Nơ–ron nhân tạo (ANN)
1.1.2.1. Cấu trúc mạng Nơ ron nhân tạo
Mạng Nơ ron nhân tạo mô phỏng các Nơ ron sinh học. Một Nơ ron là một đơn
vị xử lý thông tin và là thành phần cơ bản của một mạng Nơ-ron. Cấu trúc của một
Nơ ron được mô tả trên hình 1.2.

Terminal Branches
of Axon

Dendrites
x1
w1
x2
x3

w2
w3

S
Axon

wn
xn


Hình 1.2: Cấu trúc của một Nơ ron nhân tạo
Các thành phần cơ bản của một Nơ ron nhân tạo bao gồm:

5


Tập các đầu vào: Là các tín hiệu vào của Nơ ron (x1, x2, … xn), các tín hiệu
này thường được đưa vào dưới dạng một vector N chiều.
Tập các liên kết: Mỗi liên kết được thể hiện bởi một trọng số (gọi là trọng số
liên kết – Synaptic weight). Trọng số liên kết giữa tín hiệu vào thứ j với Nơ ron k
thường được kí hiệu là wkj. Thông thường, các trọng số (w1, w2, … wn) này được khởi
tạo ngẫu nhiên ở thời điểm khởi tạo mạng và được cập nhật liên tục trong quá trình
học mạng.
Bộ tổng (Summing function): Được dùng để tính tổng của tích các đầu vào với
trọng số liên kết của nó.
Ngưỡng (độ lệch - bias): Ngưỡng này thường được đưa vào như một thành
phần của hàm truyền.
Hàm truyền (Transfer function): Hàm này được dùng để giới hạn phạm vi đầu
ra của mỗi Nơ-ron. Nó nhận đầu vào là kết quả của hàm tổng và ngưỡng đã cho. Các
hàm truyền rất đa dạng, có thể là các hàm tuyến tính hoặc phi tuyến. Việc lựa chọn
hàm truyền tùy thuộc vào từng bài toán. Một số hàm truyền như: Symmetrical Hard
Limit (hardlims), Linear (purelin), Saturating Linear (satlin), Log-Sigmoid (logsig).

1.1.2.2. Mạng được phân lớp
Mô hình mạng được phân lớp có n (n≥2) tầng, trong đó gồm một lớp đầu ra
(lớp thứ n) và (n-1) lớp ẩn.

6



x1

y1

x2

...
...

ym

xn

Hình 1.3: Mạng được phân lớp
Kiến trúc của một mạng được phân lớp có thể mô tả như sau:
-

Đầu vào là các vector (x1, x2, ..., xn) trong không gian n chiều, đầu ra là các
vector (y1, y2, ..., ym) trong không gian m chiều. Đối với các bài toán phân loại,
n chính là kích thước của mẫu đầu vào, m chính là số lớp cần phân loại.

-

Mỗi nơron thuộc lớp sau liên kết với tất cả các nơron thuộc lớp liền trước nó.

-

Đầu ra của nơron lớp trước là đầu vào của nơron thuộc lớp liền sau nó.
Hoạt động của mạng như sau: tại lớp đầu vào các nơron nhận tín hiệu vào xử


lý (tính tổng trọng số, gửi tới hàm truyền) rồi cho ra kết quả (là kết quả của hàm
truyền); kết quả này sẽ được truyền tới các nơ ron thuộc lớp ẩn thứ nhất; các nơ ron
tại đây tiếp nhận như là tín hiệu đầu vào, xử lý và gửi kết quả đến lớp ẩn thứ 2…; quá
trình tiếp tục cho đến khi các nơron thuộc lớp ra cho kết quả. Kết quả đầu ra được
cho bởi công thức sau:
Output : yi  f ( wi1 x1  wi2 x2  wi3 x3    wim xm )
 f ( wij x j )
j

7


1.1.2.3. Ứng dụng của mạng Nơ ron nhân tạo
Ngày nay, mạng Nơ ron ngày càng được ứng dụng nhiều trong thực tế. Các
ứng dụng mạng Nơ ron ra đời ngày càng nhiều và ngày càng hoàn thiện hơn. Điển
hình là các ứng dụng: xử lý ngôn ngữ (Language Processing), nhận dạng kí tự
(Character Recognition), nhận dạng tiếng nói (Speech Recognition), nhận dạng mẫu
(Pattern Recognition), xử lý tín hiệu (Signal Processing), Lọc dữ liệu (Data
Filtering),…..

1.1.3. Lĩnh vực học sâu
Trong những năm gần đây có sự nổi lên của lĩnh vực trí tuệ nhân tạo, nó đã
lan rộng ra ngoài thế giới học thuật. Các hãng lớn như Google, Microsoft và Facebook
đã tạo thành những đội nghiên cứu của chính mình và đang tạo ra một số ấn tượng
sâu sắc. Điều này có được là do sự phong phú của dữ liệu thô được tạo ra bởi người
dùng mạng xã hội, trong đó có nhiều thông tin cần được phân tích, cũng như với sức
mạnh tính toán giá rẻ có sẵn thông qua GPGPUs.
Ngoài ra, sự hồi sinh này đã được hỗ trợ một phần không nhỏ của xu hướng
mới trong trí tuệ nhân tạo (AI), đặc biệt trong lĩnh vực máy học, được biết đến là
“Deep Learning - Học sâu”. Sau đây sẽ giới thiệu về khái niệm chính và thuật toán

phía sau “Deep Learning”, bắt đầu với các đơn vị/ khối đơn giản nhất của các thành
phần và xây dựng các khái niệm máy học.

1.1.3.1. Perceptrons: Thuật toán học sâu sơ khai
Perceptron được phát triển những năm 1950 và 1960 bởi nhà nghiên cứu Frank
Rosenblatt. Ngày nay, nó phổ biến hơn để sử dụng nhiều mô hình khác nhau của nơ
ron nhân tạo, mô hình nơ ron chính được sử dụng chỉ có một nơ ron được gọi là nơ
ron sigmoid.
Các Perceptron làm việc như thế nào?
Một perceptron lấy vài đầu vào nhị phân x1, x2, …, và cho kết quả một đầu ra
nhị phân.

8


Hình 1.4: Perceptron
Hình 1.4 biểu diễn một perceptron có 3 đầu vào x1, x2, x3, nó có thể có nhiều
đầu vào. Rosenblatt đã đưa ra một quy tắc đơn giản để tính toán đầu ra. Ông đã đưa
ra khái niệm trọng số, w1, w2,…, các số thực thể hiện tầm quan trọng của các đầu
vào tương ứng với đầu ra. Đầu ra của nơ ron là 0 hoặc 1, được xác định bởi tổng ∑j
wjxj là lớn hơn hay nhỏ hơn giá trị ngưỡng (threshold). Ngưỡng là một số thực là một
tham số của nơ ron.

Đó là tất cả cách thức mà perceptron làm việc. Một cách ta có thể nghĩ về
perceptron là một thiết bị đưa ra quyết định bằng việc xem xét các căn cứ.
Perceptron không là một mô hình phức tạp như con người trong việc đưa ra
các quyết định. Nhưng perceptron có thể cân nhắc các căn cứ khác nhau để đưa ra
quyết định và một mạng phức tạp các perceptron có thể đưa ra các quyết định phù
hợp.


Hình 1.5: Một mạng các Perceptrons
Trong hình 1.5 biểu diễn một mạng các Perceptron, cột đầu tiên của các
perceptron ta sẽ gọi là lớp đầu tiên của các perceptron – tạo nên ba quyết định đơn

9


giản căn cứ vào các đầu vào. Còn các perceptron lớp thứ hai, mỗi perceptron đưa ra
một quyết định bởi việc cân nhắc kết quả từ các quyết định của lớp thứ nhất. Bằng
cách này perceptron trong lớp thứ hai có thể đưa ra quyết định ở mức phức tạp hơn,
trừu tượng hơn so với lớp đầu tiên. Các quyết định phức tạp hơn có thể được đưa ra
bởi các perceptron lớp thứ ba. Bằng cách này, mạng nhiều lớp hơn của các perceptron
có thể cam kết đưa ra các quyết định phức tạp hơn.
Một trong những thuật toán huấn luyện có giám sát sớm nhất là perceptron,
một khối xây dựng mạng nơ ron.
Chúng ta có n điểm trên mặt phẳng, được gán nhãn “0” và “1”. Ta đưa ra một
điểm mới và muốn đoán xem nó là nhãn nào. Ta phải làm như thế nào?
Một cách tiếp cận là có thể xem xét vào hàng xóm gần nhất và trả lại nhãn của
điểm đó. Nhưng một cách thông minh hơn một chút là sẽ đặt một đường thẳng tốt
nhất để chia rẽ dữ liệu được gán nhãn và sử dụng như phân lớp.
Phân lớp tuyến tính

Hình 1.6: Phân lớp các điểm đã được gán nhãn
Trong trường hợp này, mỗi mảnh của dữ liệu vào sẽ được biểu diễn là một
vector x=(x1,x2) và đầu ra sẽ là một giá trị nào đó: là “0” nếu bên dưới đường thẳng,
là “1” nếu bên trên đường thẳng.

10



Để biểu diễn toán học cho điều này, bộ chia được định nghĩa bởi vector của
các trọng số w và độ lệch b. Kết hợp các đầu vào và trọng số thành một hàm truyền
tổng hợp:
f(x) = x.w + b
Kết quả của hàm truyền này sẽ được cung cấp đến một hàm kích hoạt để tạo một
nhãn. Trong ví dụ ở trên, hàm hoạt động của chúng ta là một ngưỡng cắt (cutoff).
ℎ (𝑥 ) = {

1 ∶ 𝑁ế𝑢 𝑓 (𝑥) = 𝑤. 𝑥 + 𝑏 > 0
0∶
𝑁ế𝑢 𝑘ℎá𝑐

* Huấn luyện Perceptron
Việc huấn luyện Perceptron bao gồm việc cung cấp nhiều mẫu huấn luyện và
tính toán đầu ra cho mỗi mẫu. Sau mỗi mẫu, trọng số w được điều chỉnh như là một
cách để làm giảm lỗi đầu ra, lỗi đầu ra được định nghĩa là sự khác biệt giữa cái mong
muốn (đích cần đạt) với các đầu ra thực tế. Có nhiều hàm lỗi khác nhau chẳng hạn
như trung bình bình phương lỗi (Mean Square Error), nhưng nguyên tắc cơ bản của
huấn luyện vẫn được giữ nguyên.
* Nhược điểm của huấn luyện Perceptron đơn
Cách tiếp cận perceptron đơn lẻ để huấn luyện sâu có một nhược điểm là nó
chỉ có thể học một hàm tuyến tính riêng rẽ. Nhược điểm này như thế nào? Lấy XOR,
một hàm tương đối đơn giản, và chú ý rằng nó không thể phân lớp được bởi một bộ
phân chia tuyến tính như dưới đây:
XOR

Để giải quyết vấn đề này, chúng ta sẽ cần phải sử dụng một perceptron đa lớp,
được biết đến như mạng Nơ ron truyền thẳng: để hiệu quả, ta sẽ gộp một nhóm các
perceptron khác nhau để tạo nên một cơ chế mạnh mẽ hơn cho việc học.


11


1.1.3.2. Mạng Nơ ron truyền thẳng cho việc học sâu
Một mạng Nơ ron thực sự chỉ là một thành phần của perceptron, được kết nối
trong các cách khác nhau và hoạt động trên các hàm kích hoạt khác nhau.

Hình 1.7: Mạng truyền thẳng
Khi mới bắt đầu, ta sẽ xem xét các mạng Nơ ron truyền thẳng có các thuộc
tính sau:
- Một đầu vào, một đầu ra, một hoặc nhiều lớp ẩn. Hình 1.7 cho thấy một mạng
với một lớp đầu vào có 3 khối (unit), lớp ẩn có 4 khối và một lớp đầu ra có 2 khối.
- Mỗi khối là một pereptron đơn lẻ như đã mô tả ở trên.
- Các khối của lớp đầu vào cung cấp đầu vào cho các khối lớp ẩn, trong khi
các khối của lớp ẩn là đầu vào của khối lớp đầu ra.
- Mỗi kết nối giữa hai Nơ ron có một trọng số w (tương tự các trọng số
perceptron).
- Mỗi khối của lớp t thường được kết nối đến tất cả các lớp t-1 trước đó (mặc
dù vậy ta có thể ngắt kết nối chúng bằng cách đặt trọng số của chúng là 0).
- Để xử lý dữ liệu đầu vào, ta “xếp” (clamp) vector đầu vào tới lớp đầu vào,
thiết lập các giá trị của các vector như là “đầu ra” cho mỗi khối đầu vào. Trong trường
hợp này mạng có thể xử lý một vector đầu vào 3 chiều (vì có 3 khối đầu vào). Ví dụ,
12


nếu vector đầu vào là [7, 1, 2], ta sẽ thiết lập đầu ra của đầu vào lần lượt là 7 (đỉnh),
1 ở giữa và 2 ở cuối. Các giá trị này sau đó được truyền tiếp tới các khối ẩn sử dụng
hàm truyền tổng trọng số cho mỗi khối ẩn, từ đó tính toán đầu ra (hàm kích hoạt).
- Lớp ra tính toán kết quả đầu ra tương tự như lớp ẩn. Kết quả của lớp đầu ra
là đầu ra của mạng.

* Tuyến tính ngoài (Beyond Linearity)
Điều gì sẽ xảy ra nếu mỗi perceptron chỉ được phép sử dụng một hàm kích
hoạt tuyến tính? Sau đó, đầu ra cuối cùng của mạng vẫn sẽ có một số hàm tuyến tính
của đầu vào. Nói cách khác, một thành phần tuyến tính của một loạt các hàm tuyến
tính. Nếu ta bị giới hạn các hàm kích hoạt tuyến tính, mạng Nơ ron truyền thẳng sẽ
không hiệu quả hơn perceptron, dù nó có bao nhiêu lớp.
“Một thành phần tuyến tính của một loạt các hàm tuyến tính chỉ là một hàm
tuyến tính, vì vậy hầu hết các mạng Nơ ron sử dụng hàm kích hoạt phi tuyến”.
Chính vì điều này, hầu hết các mạng Nơ ron sử dụng các hàm kích hoạt phi tuyến như
logistic, tanh, binary hay rectifier. Nếu không có chúng mạng chỉ có các hàm học là
sự kết hợp tuyến tính của các đầu vào.
* Huấn luyện Perceptron
Hầu hết các thuật toán học sâu phổ biến cho học có giám sát của perceptron
đa lớp được biết đến là giải thuật lan truyền ngược. Các thủ tục cơ bản:
1. Một mẫu huấn luyện được biểu diễn và được lan truyền thẳng trên toàn mạng.
2. Lỗi đầu ra được tính toán thường là trung bình bình phương lỗi: E = ½ (t - y)2
3. Ở đây t là giá trị mong muốn đạt được và y là đầu ra thực của mạng.
4. Lỗi mạng được cực tiểu hóa sử dụng một phương pháp được gọi là stochastic
gradient descent.

13


Hình 1.8: Đồ thị lỗi huấn luyện
Giảm Gradient là phổ biến nhưng trong trường hợp của mạng nơ-ron, đây sẽ
là đồ thị của lỗi huấn luyện như một hàm của các tham số đầu vào. Tối ưu hóa giá trị
của mỗi trọng số làm cho lỗi đạt tối thiểu toàn cục (global minimum). Trong giai đoạn
huấn luyện, trọng số được cập nhật trong các bước nhỏ (sau mỗi mẫu huấn luyện hoặc
một đợt nhỏ của vài mẫu) trong cách mà chúng luôn cố gắng đạt được tối thiểu toàn
cục nhưng nó là một nhiệm vụ không dễ dàng, như ta thường kết thúc ở cực tiểu cục

bộ, như một bên phải. Ví dụ, nếu trọng số có giá trị là 0.6, nó cần phải được thay đổi
đến 0.4.
Hình 1.8 thể hiện trường hợp đơn giản nhất, mà trong đó lỗi phụ thuộc vào
một tham số duy nhất. Tuy nhiên, lỗi mạng phụ thuộc mọi trọng số mạng và hàm lỗi
rất nhiều, phức tạp hơn nhiều.
Rất may, lan truyền ngược cung cấp một phương pháp để cập nhật mỗi một
trọng số giữa hai Nơ ron liên quan đến lỗi đầu ra. Nguồn gốc của nó khá phức tạp,
nhưng bản cập nhật trọng số cho một node được cho như sau:
∆𝑤𝑖 = −𝛼

𝜕𝐸
𝜕𝑤𝑖

Trong đó E là lỗi đầu ra, và wi là trọng số của đầu vào i tới nơ-ron.

14


Về cơ bản, mục tiêu di chuyển theo hướng của Gradient đối với trọng số i.
Điều kiện quan trọng là bắt nguồn lỗi thường không dễ dàng tính được: bằng cách
nào ta có thể tìm được bắt nguồn cho một trọng số ngẫu nhiên của một node ẩn ngẫu
nhiên ở giữa của một mạng lớn. Câu trả lời là: qua lan truyền ngược. Các lỗi được
tính toán đầu tiên tại khối đầu ra là nơi mà giải pháp khá đơn giản (dựa trên sự khác
nhau giữa giá trị mong đợi và các giá trị dự đoán được), và sau đó được lan truyền
ngược qua mạng trong một cách thông minh, cho phép cập nhật hiệu quả trọng số
trong quá trình đào tạo và đạt tối thiểu.
* Lớp ẩn
Lớp ẩn là sự quan tâm đặc biệt. Theo lý thuyết xấp xỉ chung, một mạng một
lớp ẩn với một số Nơ ron hữu hạn có thể được huấn luyện để xấp xỉ một hàm ngẫu
nhiên tùy ý. Nói cách khác, một lớp ẩn đơn là đủ khả năng để học bất kỳ hàm nào.

Điều đó nói rằng, chúng thường học tốt hơn trong thực tiễn với đa lớp ẩn (như mạng
sâu hơn).
“Lớp ẩn là nơi mạng lưu giữ các liên kết trừu tượng của quá trình huấn luyện
dữ liệu”
Lớp ẩn là nơi mạng lưu giữ các liên kết trừu tượng của quá trình huấn luyện
dữ liệu, tương tự như cách mà bộ não con người có sự thể hiện bên trong của thế giới
thực.
* Vấn đề với các mạng lớn
Một mạng Nơ ron có thể có nhiều lớp ẩn: trong trường hợp này các lớp cao
hơn được xây dựng lên đỉnh của các lớp trước. Tăng số lượng các lớp ẩn dẫn đến hai
vấn đề:
1. Gradient bị triệt tiêu: khi ta thêm nhiều lớp ẩn, lan truyền ngược trở nên ít
hơn và ít hữu ích trong truyền tải thông tin tới các lớp thấp hơn. Trong thực tế, khi
thông tin được truyền ngược lại, gradient bắt đầu bị triệt tiêu và trở nên nhỏ đối với
các trọng số của mạng.
2. Overfitting: có lẽ là vấn đề trọng tâm trong máy học. Nói một cách ngắn
gọn, overfitting mô tả hiện tượng điều chỉnh (fitting) dữ liệu huấn luyện quá chặt chẽ,

15


×