Deeplearning–họcsâulàmộttập hợp các các máy học nơi các mạng nơ-ron nhân tạo, các thuật toán mô phỏng bộ nãoconngười,họchỏi từmộtlượnglớndữ liệu.. Mỗi ngày chúng ta tạo ra khoảng 2.6nghì
Trang 1TRƯỜNGĐẠI HỌCBÁCHKHOAHÀNỘI
VIỆNCÔNGNGHỆTHÔNGTINVÀTRUYỀNTHÔNG
**********
Báo cáo bài tập lớnMônHọcsâuvàứngdụn g
ĐỀTÀI:SửdụngmạngCNNphânloạichữsốviết tay
Giảngviênhướngdẫn:TS.TrịnhAnhPhúcSinhvi
HàNội, 12–2020
Trang 2Lởicảm ơn 3
Phầnmởđầu 4
Phần nộidung 5
1 Môtảbài toán 5
2 Giớithiệu mô hình 5
3 kếtquảthựcnghiệm 7
3.1 Cấuhình Google Colab 7
3.2 Bộdữliệu hình ảnh 7
3.4.Độđođánh giá 9
3.3.Thờigian train, test 9
Phầnkết luận 11
Trang 3Lờiđầutiênchophépchúngemđược
gửilờicảmơnchânthànhtớithầyTrịnhAnhPhúcgiảngviênmônHọcsâuvàứngdụng,cảmơnthầyđã dạychochúngemnhữngkiếnthứcrất hay về deep learning, cảm ơn thầy vì những tiết học nhiều kiến thức nhưng cũng đầythư giãn, mang lại cho chúng em niềm say mê học tập để có thể hoàn thành bài tập
lớncủamôn học
Tuynhiên,vớinhữngkiếnthứccơbản,nhậpmôn,bàitậplớncủa chúngemchắcchắncòntồn
tạinhiềusaisót,rất mongnhậnđượccácgóp ýtừthầy
Emxinchânthànhcảmơn
Trang 4Hiệnnay,thuậtngữdeeplearningđangtrởnênphổbiến Deeplearning–họcsâulàmộttập hợp các các máy học nơi các mạng nơ-ron nhân tạo, các thuật toán mô phỏng bộ nãoconngười,họchỏi từmộtlượnglớndữ liệu Mỗi ngày chúng ta tạo ra khoảng 2.6nghìn tỷ bytes dữ liệu, đó chính là nguồn học củacácthuậttoánhọc sâu.Vìvậy, họcsâutrongnhữngnămgầnđâyđãcónhữngbướcpháttriển như vũ bão, một số ví dụ trong thực tế của học sâu: trợ lý ảo, các ứng dụng tự độngdịchgiữ cácngôn ngữ,nhậndiện
khuônmặt,xetựhành,…
Đểcónhữnghiểubiếtvềcác
mạnghọcsâu,trongkhuônkhổmônhọcHọcsâuvàứngdụng,chúngemlựachọn đề
tàisửdụngmạngCNNđể nhận diệnchữsốviếttay
Trang 51 Môtảbàitoán
Nhận diện chữ số viết tay là một bài toán cơ bản trong deep learning và có nhiều
ứngdụngtrongcuộcsốngnhưnhậndiệnbiểnbáo, nhậndiệnchiphiếungânhàng, nhậnhiệnmã bìthưcủadịchvụbưu chính, hay cácchữ sốtrênbiểu mẫunói chung…
Đầuvào:Hìnhảnhchứa
mộtchữsốviếttay.Đầura:Nhãntươngứngvớich
ữsố đó
2 Giớithiệumôhình
LeNet-5làmộtkiếntrúcmạngCNNcũ,đượcpháttriểnvàonăm1998bởiAndreLeCun,Leon Bottou, Yoshua Bengio, và Patrick Hafner LeNet-5 được dùng cho nhận dạng chữviếttay vàtrởthànhcơsở thiết
kếchocácmạnglớnhơnsaunày
Trongbàinày,chúngemsửdụngkiếntrúc mạngLenet-5nhưngcómộtchútthayđổi,cụthể là thay lớp AVG Pooling bằng lớp Max Pooling và hàm kích hoạt sau các tầng tíchchậpvàtầng kết nốiđầy đủlàReLU
Kiếntrúc môhình:
Lớp 1 là lớp tích chập nhận đầu vào là ảnh kích thước 28x28x1 Nó sử dụng 6 hạt
nhânkích thước 5x5x1, thực hiện tích chập padding “same”, bước nhảy bằng 1 tạo ra
mộttensorkíchthước28x28x6.TensornàyđượcchuyểnquamộthàmkíchhoạtReLU,sauđótrởthà
nh đầu vào cholớp2
Trang 6Lớp2là lớpgộpmaxpooling,nhậnđầuvàolà tensorkíchthước 28x28x6 Lớpnàythựchiện lấy mẫu con không đệm, bằng cách sử dụng hạt nhân kích thước 2x2 với bước nhảylà 2tạoratensorkíchthước 14x14x6đitới lớp3 trởthành đầu vào
Lớp3làlớptíchchập, đầuvàolàtenensork í c h thước14x14x6.Lớpnàysửdụng16hạtnhân kích thước 5x5x6, thực hiện tích chập không đệm, bước nhảy bằng 1 thu đượctensor kích thước 10x10x16, tensor này được đưa qua hàm kích hoạt ReLU và trở thànhđầuvào cho lớptiếptheo
Lớp4là mộtlớpgộpmaxpooling,đầuvàocủa nólà tensor10x10x16kíchthước hạtnhân2x2 bướcnhảybằng 2 Đầu racủalớpnày làt e n s o r 5x5x16
Lớp5làkếtnốiđầyđủ(Dense), nhậnđầuvàolàmộtvectorđược
duỗiratừtensor5x5x16(đầuracủalớp4),hàmkíchhoạtReLU, đầuralà1vectorkíchthước 120 Lớp6là mộtlớpkếtnốiđầuđủ,vectorđầuvàokíchthước 120,hàmkíchhoạtReLU,vectorđầu rakíchthước84
Lớp7:lớpkếtnốiđầuđủ, lấyđầura củalớp6làmđầuvào,sửdụngkíchhoạtsoftmaxđểtiếnhành phânloạicho10lớptương ứng10 node đầu ra
Tổngkếtcác lớp:
Parameters Operations 1: 28x28x1 28x28x6 6x5x5x1+6 (5x5x1)x(28x28x6) convolutional 6kernel (5,5) =156 =117600
layer padding=”same”
stride=1 activatefuction:ReLU
-pooling kernel(2,2)
padding=0 stride=2 3: 14x14x6 10x10x16 16x5x5x6+16 (5x5x6)x(10x10x16 convolutional 16kernel (5,5) =2416 )
stride=1 activatefunction:ReLU
-pooling kernel(2,2)
padding=0 stride=2 5: 400(=5x5x16) 120 120x400+120 120x400
activatefunction:ReLU =48120 =48000
connected activatefunction:ReLU =10164 =10080
Trang 77:
fullconnect
ed
84 activatefunction:ReLU 10 84x10+10 =850 84x10 =840
Tổng 61706 416520
3 kếtquảthựcnghiệm
3.1 CấuhìnhGoogleColab :
CấuhìnhphầncứngGooglecolab:
- GPU:UptoTeslaK80with12GBofGDDR5VRAM
- CPU:IntelXeonProcessorwithtwocores@2.20GHz
- Memory:13GBRAM
3.2 Bộdữliệuhìnhảnh
Trong bài toán này sử dụng bộ dữ liệu MNIST là bộ cơ sở về chữ số viết tay, được cảibiên từ bộ cơ sở dữ liệu gốc của NIST giúp dễ sử dụng hơn MNIST là tập hợp gồm70000 mẫu ảnh chứa dữ liệu về các chữ số viết tay từ 0 đến 9 Trong đó dữ liệu huấnluyệnlà 60000vàdữliệutestlà
10000mẫuảnh.Mỗimẫuảnhgồm2phầnlàmộthìnhảnhgrayscale
củamộtkítựchữsốkíchthước28x28và mộtnhãntươngứngvớinó
Trang 8Hình 1:Một sốhìnhảnhvềmẫu dữliệucủaMNIST
Thốngkêtrênhaitậptrain,test:
Chữsố Sốlượngmẫu Chữsố Sốlượngmẫu
Trang 93.3 Độđođánh giá
Cónhiềucáchđểđánhgiámộtmôhìnhphânlớp:accuracyscore,confusionmatrix,ROCcurve, Area Under the Curve, Precision and Recall, F1 score, Top R error,… Tuy
nhiên,đểchođơngiản,trongbàitoánnày,chúngemsửdụngaccuracyscore (độchínhxác)
Đâylàcáchđánhgiá dựutrêntỉlệ giữasốdựđoánđúngtrêntổngsốdựđoántrongtậptest
3.4 Thờigiantrain,test
Trainningtậpdữdiệuhuấnluyện60000mẫudữliệuvớibatch-size=32,epoch=20hết100s60msthuđược độchínhxáctraining accuracy=0.9945
Thờigiantest10000mẫudữliệuhết1s,độchínhxáctestingaccuracy=0.9847,testlosslà
0,0769.Mộtsốhình ảnhdự đoánsai:
Trang 11Môhìnhsaukhichỉnhsửa sovớimô hìnhgốc cótỉlệ lỗikhácao1,53%,cầncónhữngtìm hiểu sâu hơn
để cải tiến mô hình Tuy nhiên về cơ bản, chúng em đã hiểu được cáctầngtrongmôhìnhgốcvà cóthểtùybiếnmôhìnhtheoý, từđócóthể tựtạoracácmôhìnhphụcvụ chocácbàitoánkhácnhau trongtươnglai