TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN TRUYỀN THÔNG BÁO CÁO BÀI TẬP LỚN HỌC MÁY VÀ KHAI PHÁ DỮ LIỆU Đề tài Xây dựng một số mô hình học máy cơ bản nhận diện chữ số viết tay sử d. Mục lục Mở đầu 3 1. Tổng quan. 5 Hướng tiếp cận : 5 2. Cơ sở lý thuyết. 5 2.1. Convolution neural network. 5 2.2. He weight initialization scheme. 7 2.3. Hàm kích hoạt ReLU. 8 2.4. Kfold crossvalidation. 8 2.5. Loss function – cross entropy và softmax. 8 2.6. Bộ dữ liệu MNIST. 10 2.7. Thuật toán tối ưu gradient descent. 10 4. Khai phá dữ liệu và xử lý dữ liệu. 11 4.1. Tải xuống dataset. 11 4.2. Xử lý dataset. 12 5. Xác định model. 13 6. Đánh giá model. 14 7. Kết quả đánh giá hiện tại. 15 8. Lưu và đánh giá mô hình lần cuối. 15 9. Dùng mô hình đưa ra dự đoán. 16 10. Kết quả thu được và phân chia công việc trong nhóm. 17 10.1. Kết quả thu được. 17 10.2. Khó khăn trong quá trình thực hiện. 17 10.3. Phân công công việc. 17 10.4. Hướng phát triển của cả nhóm. 18 Tài liệu tham khảo 18
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
Giảng viên hướng dẫn: PGS.TS Thân Quang Khoát
Nhóm sinh viên thực hiện:
STT
Trang 2Hà Nội, ngày 10 tháng 1 năm 2022
Mục lục
Mở đầu 3
1 Tổng quan 5
Hướng tiếp cận : 5
2 Cơ sở lý thuyết 5
2.1 Convolution neural network 5
2.2 He weight initialization scheme 7
2.3 Hàm kích hoạt ReLU 8
2.4 K-fold cross-validation 8
2.5 Loss function – cross entropy và softmax 8
2.6 Bộ dữ liệu MNIST 10
2.7 Thuật toán tối ưu gradient descent 10
4 Khai phá dữ liệu và xử lý dữ liệu 11
4.1 Tải xuống dataset 11
4.2 Xử lý dataset 12
5 Xác định model 13
6 Đánh giá model 14
7 Kết quả đánh giá hiện tại 15
8 Lưu và đánh giá mô hình lần cuối 15
9 Dùng mô hình đưa ra dự đoán 16
10 Kết quả thu được và phân chia công việc trong nhóm. 17 10.1 Kết quả thu được 17
10.2 Khó khăn trong quá trình thực hiện 17
10.3 Phân công công việc 17
10.4 Hướng phát triển của cả nhóm 18
Tài liệu tham khảo 18
Trang 3Mở đầu
Những năm gần đây, AI - Artificial Intelligence (Trí Tuệ Nhân Tạo), và cụ thể hơn là Machine Learning (Học Máy hoặc Máy Học) nổi lên như một bằng chứng của cuộc cách mạng công nghiệp lần thứ tư (1 - động cơ hơi nước, 2 - năng lượng điện, 3 - công nghệ thông tin) Trí Tuệ Nhân Tạo đang len lỏi vào mọi lĩnh vực trong đờisống mà có thể chúng ta không nhận ra Xe tự hành của Google vàTesla, hệ thống tự tag khuôn mặt trong ảnh của Facebook, trợ lý
ảo Siri của Apple, hệ thống gợi ý sản phẩm của Amazon, hệ thống gợi ý phim của Netflix, máy chơi cờ vây AlphaGo của Google
DeepMind, …, chỉ là một vài trong vô vàn những ứng dụng của AI/Machine Learning
Machine Learning là một tập con của AI Theo định nghĩa của
Wikipedia, Machine learning is the subfield of computer science that “gives computers the ability to learn without being explicitly programmed” Nói đơn giản, Machine Learning là một lĩnh vực nhỏ
của Khoa Học Máy Tính, nó có khả năng tự học hỏi dựa trên dữ liệuđưa vào mà không cần phải được lập trình cụ thể
Các kĩ thuật học máy hiện tại được phân thành 3 loại chính:
Học có giám sát - supervised learning: thuật toán dự đoán đầu ra (outcome) của một dữ liệu mới (new input) dựa trên các cặp (input, outcome) đã biết từ trước Cặp dữ liệu này cònđược gọi là (data, label), tức (dữ liệu, nhãn) Supervised
Trang 4learning là nhóm phổ biến nhất trong các thuật toán học máy.
Học không giám sát – unsupervised learning: trong thuật toánnày, chúng ta không biết được outcome hay nhãn mà chỉ có
dữ liệu đầu vào Thuật toán unsupervised learning sẽ dựa vàocấu trúc của dữ liệu để thực hiện một công việc nào đó, ví dụ như phân nhóm (clustering) hoặc giảm số chiều của dữ liệu (dimension reduction) để thuận tiện trong việc lưu trữ và tính toán
Học tăng cường – reinforcement learning: là các bài toán giúpcho một hệ thống tự động xác định hành vi dựa trên hoàn cảnh để đạt được lợi ích cao nhất (maximizing the
performance) Hiện tại, reinforcement learning chủ yếu được
áp dụng vào lý thuyết trò chơi (game theory), các thuật toán cần xác định nước đi tiếp theo để đạt được điểm số cao nhất.Trong project này, nhóm sẽ sử dụng thuật toán học có giám sát để xây dựng mô hình học máy nhận diện chữ số viết tay, với bộ dữ liệu MNIST
1 Tổng quan.
- Mô hình dự đoán chữ số viết tay mà nhóm lên kế hoạch tìm hiểu và xây dựng có nhiệm vụ nhận diện và phân biệt được các bức ảnh chụp số viết tay
- Sử dụng https://colab.research.google.com/ để thực thi quá trình huấn luyện mô hình
- Bộ dữ liệu sử dụng là bộ dữ liệu MNIST, lấy trực tiếp từ API của thư viện keras
- Mô hình sử dụng là CNN, là một neural network để phân loại
bộ chữ số viết tay
- Mô hình sử k-fold cross validation để đánh giá mô hình
Trang 5Hướng tiếp cận:
- Dựa vào bộ dữ liệu MNIST xây dựng mô hình mạng neuron đểphân lớp với đâu ra là 10 node để dự đoán xác suất 1 bức ảnhthuộc về lớp nào
2 Cơ sở lý thuyết.
2.1 Convolution neural network.
- Convolutional Neural Network (CNN – Mạng nơ-ron tích chập)
là một trong những mô hình học máy tiên tiến Nó giúp cho chúng ta xây dựng được những hệ thống thông minh với độ chính xác cao CNN được sử dụng nhiều trong các bài toán nhận dạng các object trong ảnh
- CNN được thiết kế với mục đích xử lý dữ liệu thông qua nhiều lớp mảng
- So với các mạng neural thông thường, CNN nhận đầu vào là mảng 2 chiều và hoạt động trực tiếp trên ảnh
- CNN so sánh hình ảnh theo từng mảng nhỏ (feature) và xác định xem nó là ảnh gì
- Khi xem xét 1 bức ảnh mới, CNN sẽ không nhận biết được nó
ở vị trí nào mà sẽ thử chúng tất cả các vị trí khác nhau, tạo thành 1 bộ lọc, gọi là filter
Trang 6- Các thành phần chính của mạng CNN:
Convolution layer-lớp có vai trò quan trọng nhất, đây là lớp thực hiện mọi tính toán của mô hình Mục đích chính của lớp này là trích xuất ra các feature của đối tượng trên ảnh, nói cách khác thì nó sẽ học các mẫu cụ thể trong ảnh và có thể nhận ra nó ở mọi nơi trong ảnh
o Convolution là 1 phép nhân element-wise, hiểu là máy tính sẽ quét từng phần của bức ảnh, thường kích thước
ma trận quét nhỏ (3x3) và nhân nó với một filter Đầu racủa phép nhân element-wise được
gọi là feature-map, các bước này lặp đi lặp lại, sau các bước này thì kích thước của ảnh giảm đi
o Trong convolution có các khái niệm:
+ filter map: CNN sử dụng các filter để áp dụng vào các vùng của hình ảnh, những filter map này được gọi là ma trận
3 chiều, chứa các số và chúng là các paramenter
+ feature map: thể hiện kết quả của quá trình mỗi lần filtermap quét qua input, sau mỗi lần quét sẽ xảy ra quá trình tínhtoán
+ stride: sự dịch chuyển các filter map theo pixel dựa vào giá trị này từ trái sang phải
+ padding: là các giá trị 0 được thêm vào lớp input
Trang 7 Relu layer: là hàm kích hoạt trong CNN và được gọi là
activation function Hàm kích hoạt có tác dụng mô phỏng cácneuron có tỷ lệ truyền xung qua axon Hiện nay, hàm relu được dùng phổ biến và vô cùng thông dụng Nó được sử dụngcho các nhu cầu huấn luyện mạng neuron vì việc tính toán sẽtrở nên nhanh hơn
Pooling layer: khi đầu vào quá lớn, các lớp pooling xếp vào giữa các lớp convolution layer để làm giảm các tham số, hiện nay có 2 loại chủ yếu : max pooling và average
Fully connected layer: lớp này có nhiệm vụ đưa ra kết quả sau khi lớp convolution và pooling đã nhận được ảnh truyền Lúc này, ta thu được kết quả là model đã đọc được thông tin của ảnh và để liên kết chúng cũng cho ra nhiều output hơn thì ta sử dụng fully connected layer Ngoài ra, nếu như fully connected layer có được dữ liệu hình ảnh thì chúng sẽ chuyển
nó thành mục chưa được phân chia chất lượng
- Cấu trúc của mạng CNN: là một trong những tập hợp các lớp convolution bị chồng lên nhau cũng như sử dụng các hàm nonlinear activation như ReLU và tanh để kích hoạt trọng số trong node, những lớp này sau khi đã thông qua hàm kích hoạt thì có thể tạo ra những thông tin trìu tượng hơn cho những lớp tiếp theo Những layer tiếp theo sẽ là kết quả từ những convolution từ các filter trước đó, vì thế mà sẽ có các kết nối cục bộ phù hợp nhất, vậy mỗi neuron ở lớp sinh ra tiếp theo từ kết quả filter sẽ áp đặt lên vùng ảnh cục bộ của một neuron có trước đó Trong khi huấn luyện mạng, CNN sẽ
tự động học hỏi các giá trị thông qua lớp filter dựa vào cách thức mà người dùng thực hiện
Cấu trúc cơ bản của CNN thường gồm 3 phần chính là:
Trang 8o Local receptive field (trường cục bộ): lớp này có nhiệm
vụ tách lọc dữ liệu, thông tin ảnh và lựa chọn các vùng ảnh có giá trị sử dụng cao nhất
o Shared weights and bias (trọng số chia sẻ): lớp này làm giảm tối đa lượng tham số có tác dụng chính của yếu tố này trong mạng CNN Trong mỗi convolution sẽ có các feature map khác nhau và mỗi feature lại có khả năng giúp detect một vài feature trong ảnh
o Pooling layer (lớp tổng hợp): là lớp cuối cùng có tác
dụng làm đơn giản các thông tin đầu ra, sau khi hoàn tấttính toán và quét qua các lớp thì đến pooling layer để lược bớt các thông tin không cần thiết, từ đó cho ra kết quả
Trang 9o Nhược điểm: có thể xuất hiện hiện tượng ‘Dying ReLU’ (z
= 0)
2.3 K-fold cross-validation
- Cross-validation là một phương pháp thống kê được sử dụng
để ước lượng hiệu quả của các mô hình machine learning, dễ thực hiện và cho ra ước lượng tin cậy hơn các phương pháp khác Tham số k là số nhóm mà bộ dữ liệu được chia ra
- K-fold cross-validation là kỹ thuật lấy mẫu để đánh giá mô hình machine learning khi lượng dữ liệu không đủ lớn
o Kỹ thuật gồm các bước:
Xáo trộn dataset một cách ngẫu nhiên
Chia dataset thành k nhóm
Với mỗi nhóm
Sử dụng nhóm hiện tại để làm tập đánh giá
Các nhóm còn lại làm tập huấn luyện
Huấn luyện mô hình
Đánh giá và sau đó hủy mô hình
Tổng hợp hiệu quả của mô hình từ các số liệu đánh giá
2.4 Loss function – cross entropy và softmax.
- Giả sử trong quá trình training, output của 1 bức ảnh số 9 được kỳ vọng là y=(0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0)T nghĩa là xác suất tại vị trí số 9 đạt max, nhưng uotput thực tế
là y^=(0.0,0.0,0.0,0.0,0.0,0.1,0.1,0.4,0.3,0.1) thì chúng ta phải điều chỉnh tham số mô hình sao cho y^ tiến gần đến y, cách phổ biến nhất là cross-entropy
- Chúng ta cần một mô hình xác suất sao cho với mỗiinput x, ai thể hiện xác suất để input đó rơi vào class i Vậyđiều kiện cần là các ai phải dương và tổng của chúng bằng 1
Trang 10Để có thể thỏa mãn điều kiện này, chúng ta cần nhìn vào mọigiá trị zi và dựa trên quan hệ giữa các zi này để tính toán giátrị của ai Ngoài các điều kiện ai lớn hơn 0 và có tổng bằng 1,chúng ta sẽ thêm một điều kiện cũng rất tự nhiên nữa, đó là:giá trị zi càng lớn thì xác suất dữ liệu rơi vào class i càng cao.Điều kiện cuối này chỉ ra rằng chúng ta cần một hàm đồngbiến ở đây.
- Chú ý rằng zi có thể nhận giá trị cả âm và dương Một hàm
số mượt đơn giản có thể chắc chắn biến zi thành một giá trị dương, và hơn nữa, đồng biến,là hàm Điều kiện mượt để
thuận lợi hơn trong việc tính đạo hàm sau này Điều kiện cuốicùng, tổng các ai bằng 1 có thể được đảm bảo nếu:
- Hàm số này, tính tất cả các ai dựa vào tất cả các zi, thõa mãntất cả các điều kiện đã xét: dương, tổng bằng 1, giữ được thứ
tự của zi Hàm số này được gọi là softmax function Chú ýrằng với cách định nghĩa này, không có xác suất aiai nàotuyệt đối bằng 0 hoặc tuyệt đối bằng 1, mặc dù chúng có thểrất gần 0 hoặc 1 khi zi rất nhỏ hoặc rất lớn khi so sánh vớicác zj, j≠i
- Lúc này, ta có thể giả sử rằng: P(yk=i|xk;W)= ai
- Trong đó, P(y=i|x;W) được hiểu là xác suất để một điểm dữliệu x rơi vào class thứ i nếu biết tham số mô hình (ma trậntrọng số) là W
- Entropy là trung bình cộng thông tin của biến ngẫu nhiên rờirạc, cross-entropy là độ đo giữa 2 phân bố p và q để đo lượngtrung bình thông tin khi dùng mã hóa thông tin của phân bố qthay cho mã hóa thông tin phân bố q Cross-entropy giữa 2phân phối p và q được định nghĩa là:
Trang 11Với p và q rời rạc, công thức trở thành:
- Cross-entropy loss là 1 loss function trong machine learning, xem P là phân phối đúng, Q là phân phối hiện tại, ta có:
o Loss function đạt min khi P==Q, Loss = 0
o Function này rất nặng khi xác suất p_i lớn nhưng q_i lại nhỏ, là do hàm –logb(x) tăng rất nhanh khi x càng nhỏ
và tiến về 0 Tức là rất nhạy cảm với sự sai khác giữa p_i
và q_i, khi càng khác nhau thì giá trị cross-entropy càng tăng nhanh
Cross-entropy loss được sử dụng trong phân bố xác suất của
dữ liệu, trong khi các hàm khác phạt các giá trị sai thì entropy loss phạt mô hình dựa trên tính đúng và độ chắc chắn của dự đoán, thường dùng trong các bài toán phân loại
cross-2.5 Bộ dữ liệu MNIST.
- Bộ dữ liệu đơn giản theo tiêu chuẩn hiện tại, chứa các bức ảnh chữ số viết tay được lấy từ tập dữ liệu của cục thống kê dân số Hoa Kỳ, với độ chính xác phân loại ~ 95% thường được ứng dụng trong machine learning
- Có thể tải về trực tiếp qua API từ thư viện keras
- Bộ gồm 60000 bức ảnh nhỏ vuông 28x28 pixel màu xám của các chữ số viết tay từ 0 – 9 làm bộ đào tạo và 10000 bức ảnh làm bộ đánh giá
2.7 Thuật toán tối ưu gradient descent.
- Trong Machine Learning nói riêng và Toán Tối ưu nói chung, chúng ta thường xuyên phải tìm giá trị nhỏ nhất (hoặc đôi khi
Trang 12là lớn nhất) của một hàm số nào đó Nhìn chung, việc tìm global minimum của các hàm mất mát trong Machine
Learning 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 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ềunhất
Trang 13- Giả sử xtxt là điểm ta tìm được sau vòng lặp thứ tt Ta cần tìm một thuật toán để đưa xtxt về càng gần x∗x∗ càng tốt.
o Nếu đạo hàm của hàm số tại xt: f′(xt)>0 thì xt nằm vềbên phải so với x* (và ngược lại) Để điểm tiếp theo xt+1 gần với x* hơn, chúng ta cần di chuyển xt về phía bêntrái, tức về phía âm Nói các khác, chúng ta cần dichuyển ngược dấu với đạo hàm: xt+1 = xt +Δ Trong đó Δ
là một đại lượng ngược dấu với đạo hàm f′(xt)
o xt càng xa x* về phía bên phải thì f′(xt) càng lớn hơn 0(và ngược lại) Vậy, lượng di chuyển Δ, một cách trựcquan nhất, là tỉ lệ thuận với −f′(xt)
với η (đọc là eta) 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.
4 Khai phá dữ liệu và xử lý dữ liệu.
4.1 Tải xuống dataset.
- Dùng API từ thư viện keras để dowload bộ dữ liệu về:
from tensorflow.keras.datasets import mnist
(trainX, trainy), (testX, testy) = mnist.load_data()
- Show kích thước dữ liệu:
print('train: X=%s, y=%s' % (trainX.shape, trainy.shape))print('tesy: X=%s, y=%s' % (testX.shape, testy.shape))
o Train: X=(60000, 28, 28), y=(60000,)
o Test: X=(10000, 28, 28), y=(10000,)
Trang 14- Show vài bức ảnh với colormap=’gray’ và nhãn của nó:
o Bộ train: data(60000, 28, 28, 1) nhãn (60000, )
o Bộ test: data(10000, 28, 28, 1) nhãn (10000, )
trainX = trainX.reshape((trainX.shape[0], 28, 28, 1))
testX = testX.reshape((testX.shape[0], 28, 28, 1))
Trang 15o Train: X=(60000, 28, 28, 1), y=(60000,)
o Test: X=(10000, 28, 28, 1), y=(10000,)
- Mã hóa nhãn, bằng cách chuyển số nguyên (nhãn) thành vector nhị phân 10 phần tử với phần tử thứ x (nhãn = x) bằng1:
- Hiện tại thì các giá trị pixel của các điểm ảnh nằm trong
khoảng 0 và 255, nên cần chuyển về 0 và 1 để tối ưu cho việc tính toán:
train_norm = trainX.astype('float32')
test_norm = testX.astype('float32')