1. Trang chủ
  2. » Luận Văn - Báo Cáo

Ứng dụng công nghệ ai trong bài toán xác Định thời gian chờ của khách hàng tại Điểm bán lẻ

119 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 119
Dung lượng 6,7 MB

Nội dung

Trong đó, hệ thống sử dụng phương pháp nhận diện vật thể YOLO được xây dựng trên cơ sở mô hình mạng CNN, thứ hai là phương pháp tracking DeepSORT dựa trên cơ sở thuật toán SORT kết hợp v

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC BÁCHTRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CHƯƠNG TRÌNH KỸ SƯ CHẤT

CHƯƠNG TRÌNH KỸ SƯ CHẤT LƯỢNG CAO VIỆT PHÁP LƯỢNG CAO VIỆT PHÁP

KHOA ĐIỆN – ĐIỆNKHOA ĐIỆN – ĐIỆN TỬ TỬ

BỘ MÔN VIỄN THÔN

BỘ MÔN VIỄN THÔNG G

LUẬN VĂN TỐT NGHIỆP

ỨNG DỤNG CÔNG NGHỆ AI TRONG BÀI TOÁN XÁC ĐỊNH THỜI GIAN CHỜ CỦA KHÁCH

Thành phố Hồ Chí Minh, tháng 6 năm 2019

Trang 2

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC BÁCH KHOA Độc lập – Tự do – Hạnh phúc

- -

Số: _/BKĐT Khoa: Điện – Điện tử Điện – Điện tử Bộ môn: Viễn Thông Viễn Thông

NHIỆM V NHIỆM VỤ LUẬN Ụ LUẬN Ụ LUẬN VĂN T VĂN T VĂN TỐT NGHI ỐT NGHI ỐT NGHIỆP ỆP 1 HỌ VÀ TÊN: LÊ TUẤN VŨ MSSV: 1414741

2 NGÀNH: VVIỄN THIỄN THIỄN THÔNG ÔNG LỚP: VP14VT 3 Đề tài: ỨNG DỤNG CÔNỨNG DỤNG CÔNỨNG DỤNG CÔNG NGHỆ AI TRONG BÀG NGHỆ AI TRONG BÀG NGHỆ AI TRONG BÀI TOÁN XÁC ĐỊNH THỜI I TOÁN XÁC ĐỊNH THỜI GIAN CH GIAN CHỜ CỦỜ CỦA KHÁCH HÀỜ CỦA KHÁCH HÀA KHÁCH HÀNG TẠI ĐNG TẠI ĐNG TẠI ĐIỂM BÁN LIỂM BÁN LIỂM BÁN LẺ Ẻ 4 Nhiệm vụ (Yêu cầu về nội dung và số liệu ban đầu):  Tìm hiểu CNN và mô hình nhận diện YOLO và thuật toán DeepSORT  Xây dựng và huấn luyện mô hình YOLO và tích hợp thuật toán DeepSORT  Xây dựng Timer  Đánh giá, kết luận và viết luận văn 5 Ngày giao nhiệm vụ luận văn:

6 Ngày hoàn thành nhiệm vụ:

7 Họ và tên người hướng dẫn: Phần hướng dẫn ………PGS.PGS.PGS TS Hà TS Hà TS Hà Hoàng KhHoàng KhHoàng Khaaaaa………… ………Toàn phần………

……… ………

Nội dung và yêu cầu LVTN đã được thông qua Bộ Môn Tp.HCM, ngày … tháng … năm 2019 CHỦ NHIỆM BỘ MÔN NGƯỜI HƯỚNG DẪN CHÍNH

PHẦN DÀNH C PHẦN DÀNH CHO KHOA, BỘ MÔN HO KHOA, BỘ MÔN Người duyệt (chấm sơ bộ):

Đơn vị:

Ngày bảo vệ:

Điểm tổng kết:

Nơi lưu trữ luận văn:

Trang 3

LỜI CẢM ƠN Trong suốt quãng thời gian học tập và rèn luyện tại TrTrTrường ường ường Đại Đại Đại hhhhhọc ọc Bách ọc Bách Bách KKKhoa hoa Thành

Thành phố phố phố Hồ Hồ Hồ Chí Chí Chí MMMinhinhinh, em đã tích lũy cho mình rất nhiều kiến thức cũng như kinh nghiệm sống để làm hành trang trên con đường trở thành một kỹ sư tương lai Bên cạnh những nỗ lực và cố gắng của bản thân, em đã nhận được rất nhiều

sự quan tâm và giúp đỡ của quý Thầy Thầy Cô, Cô, Cô, Gia Gia Gia đìnhđình và Bạn Bạn bèbè Với lòng biết ơn sâu sắc nhất, em xin chân thành gửi đến quý Thầy Cô Thầy Cô Thầy Cô TrườTrườTrường Đại ng Đại học Bách ng Đại học Bách học Bách KhKhKhoa oa Thành

Thành ph phố phố ố Hồ Hồ Hồ Chí Chí Chí MinhMinh, quý Thầy Thầy CôCôCô Kh Kh Khoa oa Điện oa Điện Điện – Điện – Điện – Điện TTửửửửửT , những người đã đi cùng với tri thức và tâm huyết truyền đạt vốn kiến thức quý báu của mình cho chúng em

Đặc biệt, em xin gửi lời cảm ơn chân thành nhất đến Thầy hướng dẫn của mình – PGSPGS TS TS TS Hà Hà Hà HoHoànHoànàng g g KhaKha – người đã tận tình hướng dẫn và giúp đỡ em trong quá trình thực hiện luận văn này

Qua đây, em cũng xin gửi đến gia đình và bạn bè lời cảm ơn chân thành và đặc biệt là ba mẹ em, những người đã luôn ủng hộ và hỗ trợ để em có thể hoàn thành tốt luận văn này

Trong quá trình thực hiện luận văn chắc chắn không thể tránh khỏi những sai sót, do vậy em rất mong nhận được những ý kiến đóng góp quý báu của quý Thầy

Cô để em có thể học hỏi thêm nhiều kinh nghiệm và hoàn thiện luận văn của mình Sau cùng, em xin kính chúc quý Thầy Thầy Cô Thầy Cô Trường Cô Trường Trường ĐạĐạĐại i i i i học học học Bách Bách KhoaBách Khoa ThKhoaThThành ành phố Hồ Chí Minh

phố Hồ Chí Minh và Thầy Hà Hoàng Kha dồi dào sức khỏe, đạt được nhiều thành công trong cuộc sống và luôn giữ vững ngọn lửa đam mê của mình trên chặng đường truyền đạt kiến thức cho thế hệ mai sau

Thành phố Hồ Chí Minh, tháng 6 năm 2019

Lê Tuấn Vũ

Trang 4

TÓM TẮT LUẬN VĂN

Trí tuệ nhân tạo là một vấn đề đang được quan tâm rất nhiều trên thế giới Với sự hỗ trợ mạnh mẽ của các thiết bị phần cứng, AI được ứng dụng ngày càng rộng rãi hơn trên nhiều lĩnh vực kinh tế, dịch vụ, y tế v.v Một trong những ứng dụng đang được các nhà bán lẻ quan tâm đó là theo dõi thời gian chờ của khách,

từ đó cải thiện chất lượng để có thể nâng cao trải nghiệm dịch vụ của khách hàng, thay thế các phương pháp thủ công vốn rất tốn kém và phức tạp

Trong luận văn này, hệ thống xác định thời gian chờ của khách hàng tại điểm bán lẻ được xây dựng dựa trên sự kết hợp của hai phương pháp Trong đó, hệ thống

sử dụng phương pháp nhận diện vật thể YOLO được xây dựng trên cơ sở mô hình mạng CNN, thứ hai là phương pháp tracking DeepSORT dựa trên cơ sở thuật toán SORT kết hợp với một mô hình học sâu trích xuất đặc trưng Hệ thống có khả năng nhận diện khách hàng và track từng đối tượng, sau đó thực hiện tính toán thời gian sống của mỗi track xuất hiện trên video Các đối tượng sau khi được nhận diện bởi mô hình YOLO sẽ cho ra các khung giới hạn định vị Sau đó tracker DeepSORT sẽ sử dụng hai metric gồm khoảng cách Mahalanobis và khoảng cách cosine để tìm ra khoảng cách giữa đặc trưng vừa được nhận diện với những đặc trưng trong quá khứ của đối tượng Căn cứ vào khoảng cách này, ta có thể định danh cho các đối tượng bằng thuật toán gán Hungarian Sau cùng, bộ timer được tích hợp vào hệ thống để xác định thời gian tồn tại của mỗi track, đây cũng chính

là thời gian mà khách hàng đứng đợi ở điểm thanh toán

Chương trình thực thi được viết bằng ngôn ngữ Python trong môi trường Anaconda sử dụng trình soạn thảo Jupyter Lab, cùng với sự hỗ trợ của thư viện học máy mxnet và thư viện xử lý hình ảnh OpenCV

Trang 5

Mục

Mục lục lục

Chương mở đầu 1

1 Tính cấp thiết của đề tài 1

2 Mục tiêu nghiên cứu 2

3 Đối tượng nghiên cứu và phạm vi nghiên cứu 2

3.1 Đối tượng nghiên cứu 2

3.2 Phạm vi nghiên cứu 2

4 Cấu trúc luận văn 2

1 Chương 1 4

1.1 Gradient Descent [1] 4

1.1.1 Giới thiệu 4

1.1.2 Bài toán Gradient Descent cho hàm một biến 6

1.1.3 Bài toán Gradient Descent cho hàm nhiều biến 7

1.1.4 Stochastic gradient descent 7

1.1.5 Điều kiện dừng thuật toán 10

1.2 Backpropagation [3] 12

1.3 Weight decay [4] 16

1.4 Convolutional Neural Network [5] 17

1.5 Ứng dụng lý thuyết học sâu vào dự án 26

2 Chương 2 28

Trang 6

2.1 YOLO 28

2.2 Phương pháp đánh giá [14] 45

3 Chương 3 51

3.1 Giới thiệu [16] 51

3.2 Kalman filter [17] 53

3.3 Bài toán gán [16] 69

3.4 Matching Cascade 71

3.5 Bộ mô tả đặc trưng sâu 73

3.6 Phương pháp đánh giá độ chính xác 75

4 Chương 4 80

4.1 Thu thập và xử lý dữ liệu 80

4.1.1 Giới thiệu 80

4.1.2 Dữ liệu huấn luyện mô hình YOLO 81

4.1.3 Dữ liệu kiểm chứng thuật toán DeepSORT 83

4.2 Huấn luyện mô hình YOLO 85

4.3 Tích hợp thuật toán DeepSORT 89

5 Chương 5 96

5.1 Quá trình huấn luyện mô hình YOLO 96

5.2 Quá trình tracking bằng thuật toán DeepSORT 101

6 Chương 6 103

6.1 Kết luận 103

6.2 Hướng phát triển 104

Tài liệu tham khảo 106

Trang 7

96 filter ở trên có kích thước là 11×11×3, và mỗi filter được chia sẻ bởi 55×55 neuron trong mỗi mảng cắt [5] 23 Hình 1.11 Khối input với kích thước 224×224×64 qua lớp pooling với kích thước filter là 2, độ dịch 2 và cho ra khối output kích thước 112×112×64 24 Hình 1.12 Giảm số lượng mẫu sử dụng max pooling với độ dịch 2, mỗi giá trị max được tính từ 4 số (nằm trong vùng 2×2) 25 Hình 2.1 Độ chính xác và tốc độ của YOLOv3 so với các hệ thống khác [9] 30

Trang 8

Hình 2.2 Minh họa cách tính chỉ số IOU Đó là tỉ lệ của phần diện tích giao giũa khung ground truth và khung dự đoán trên phần diện tích hợp của hai khung đó

31

Hình 2.3 Hình dạng một cell trong ma trận đặc trưng Mỗi cell gồm có B đặc trưng của khung, mỗi đặc trưng khung gồm: 4 giá trị tọa độ tâm và kích thước, 1 giá trị độ tin cậy, C giá trị xác suất class [10] 32

Hình 2.4 Phân nhóm kích thước khung trên tập dữ liệu VOC và COCO Hình bên trái cho thấy IOU trung bình có được với số k khung Với k = 5 sẽ cho sự đánh đổi tốt giữa chỉ số recall và độ phức tạp của mô hình Hình bên phải cho thấy các khung anchor tương ứng với VOC và COCO 34

Hình 2.5 Khung giới hạn với kích thước cho trước và vị trí dự đoán 35

Hình 2.6 Ví dụ về ma trận đặc trưng ứng với ba tỉ lệ khác nhau được sử dụng trong YOLOv3 [10] 40

Hình 2.7 Một ví dụ về output của mô hình YOLOv3 trên một vật thể Với các cell màu tím đều là những khung được dự đoán là có sự tồn tại của vật thể Ở trường hợp này, có 24 khung như thế nhưng chỉ có một khung tốt nhất được chọn bằng cách sử dụng NMS [10] 41

Hình 2.8 Kiến trúc mạng YOLOv3 42

Hình 2.9 Minh họa Precision và Recall [14] 46

Hình 2.10 Hình ảnh một người đàn ông và một con ngựa được đánh nhãn với các khung giới hạn ground truth [14] 47

Hình 2.11 IOU của khung giới hạn dự đoán (màu vàng) và khung giới hạn ground truth (blue) lớn hơn 0.5 với phân loại chính xác [14] 48

Hình 2.12 Minh họa sự khác biệt giữa những trường hợp khung giới hạn dự đoán (màu vàng) được cân nhắc là FP [14] 48

Hình 2.13 Khung giới hạn FN khi dự đoán class là một con ngựa thay vì là người [14] 49

Hình 2.14 Đường Precision-Recall từ bảng cho trên 50

Hình 3.1 Đồ thị xác suất theo vị trí và vận tốc 53

Hình 3.2 Mean và variance trong đồ thị xác suất 54

Hình 3.3 Vị trí và vận tốc có tương quan với nhau 55

Hình 3.4 Ma trận covariance ghi lại sự tương quan 56

Trang 9

Hình 3.5 Dự đoán trạng thái mới 57

Hình 3.6 Biểu diễn dự đoán bằng ma trận Fk 57

Hình 3.7 Độ bất ổn mới được thêm vào sau khi dự đoán trạng thái mới [17] 59

Hình 3.8 Minh họa các vùng Gaussian của tác động ngoại cảnh ứng với mỗi điểm dự đoán 60

Hình 3.9 Vùng Gaussian mới được tạo ra 60

Hình 3.10 Minh họa sự đo đạc của các cảm biến 61

Hình 3.11 Mô hình hóa cảm biến bằng ma trận Hk 62

Hình 3.12 Nhiễu của cảm biến với mỗi ước lượng 62

Hình 3.13 Minh họa hai vùng Gaussian dự đoán và đo đạc từ cảm biến 63

Hình 3.14 Vùng kết quả của phép nhân hai vùng Gaussian 64

Hình 3.15 Kết quả của phép nhân cả hai ước lượng là một phân phối Gaussian 64 Hình 3.16 Kết quả nhân hai phân phối Gaussian (đường cong màu xanh lam) 65

Hình 3.17 Luồng thông tin trong Kalman Filter 67

Hình 3.18 Bốn trường hợp minh họa cho việc gán track đối với mục tiêu 77

Hình 4.1 Minh họa các khung giới hạn được xác định 81

Hình 4.2 Một frame trong video được xác định nhãn với các khung giới hạn có màu khác nhau ứng với các ID khác nhau 84

Hình 4.3 Sơ đồ giải thuật quá trình huấn luyện mô hình YOLOv3 88

Hình 4.4 Sơ đồ thuật toán tạo video tracking 95

Hình 5.1 Đồ thị hàm mất mát của quá trình huấn luyện 97

Hình 5.2 Đồ thị hàm mAP của quá trình kiểm thử mô hình 97

Hình 5.3 Kết quả dự đoán hiệu quả của YOLOv3 99

Hình 5.4 Kết quả dự đoán thiếu chính xác của YOLOv3 99

Trang 10

Danh Danh sách sách bảng sách bảng

Bảng 2.1 Darknet-53 [9] 38

Bảng 2.2 So sánh giữa các mạng lần lượt về độ chính xác, billions of operation, billion floating point operations per second, và FPS [9] 38

Bảng 2.3 Tính toán Precision, Recall và Precision nội suy với ví dụ 3 TP và 4 FP trên tổng số ground truth là 3 [14] 50

Bảng 3.1 Tổng quan kiến trúc mạng CNN Batch cuối cùng và chuẩn hóa ℓ2 chiếu đặc trưng lên siêu cầu đơn vị 73

Bảng 3.2 Định dạng dữ liệu cho MOT16 [22] 75

Bảng 5.1 Kết quả đánh giá tính hiệu quả của DeepSORT 101

Bảng 5.2 Kết quả đánh giá thuật toán DeepSORT trên dữ liệu MOT16 101

Trang 11

YOLO You Only Look Once

SORT Simple Online Realtime Tracking

Trang 12

Chương mở g mở đầu g mở đầu

1 Tính cấp thiết của đề tài

Sự chuyển mình của nền kinh tế nói chung và khu vực kinh tế dịch vụ nói riêng đặt ra những nhu cầu cấp thiết trong việc cải thiện chất lượng của các đơn vị, tổ chức hoạt động trong lĩnh vực dịch vụ Áp dụng công nghệ-thông tin trong quy trình vận hành đang là sự lựa chọn phổ biến của các công ty, cửa hàng nhằm nâng cao chất lượng dịch vụ, củng cố tuyên bố giá trị khách hàng (Customer value proposition)

Hiện nay, các công ty dịch vụ, đặc biệt là các nhà bán lẻ, đang phải đổi mặt với vấn đề thời gian khách hàng chờ đợi để thực hiện thanh toán cho hàng hoá, dịch vụ Thời gian chờ của khách hàng, theo hai nhà kinh tế học Lovelock và Gummeson (2004), đóng vai trò quan trọng trong hầu hết các dịch vụ và nên được chú ý hơn để nâng cao hiểu biết của doanh nghiệp về cảm nhận của khách hàng (customer perception), hành vi tiêu dùng (consumer behavior), giá trị thời gian (value time), ngân sách (budget)

Tuy nhiên hiện nay, các nghiên cứu hành vi khách hàng dựa trên thời gian chờ đang còn rất hạn chế và hiếm hoi ở doanh nghiệp Việt Nam, vì việc thực hiện các nghiên cứu này bằng phương pháp thủ công, truyền thống rất tốn kém và phức tạp Chính vì thế, việc áp dụng công nghệ AI xác định thời gian chờ thanh toán của khách hàng sẽ giúp doanh nghiệp có những đánh giá chính xác hơn về chất lượng của dịch vụ mà mình đang phục vụ, giúp bộ phận Sale-Marketing của một công ty nắm bắt được thông tin cần thiết về hành vi tiêu dùng của khách hàng và giúp các tổ chức kinh tế thực hiện các nghiên cứ về mối quan hệ với khách hàng nhằm đưa ra những quyết định đúng đắn với mức chi phí hợp lý, dễ dàng và chính xác hơn

Trang 13

2 Mục tiêu nghiên cứu

Mục tiêu chính của luận văn này là thiết kế, đánh giá một hệ thống theo dõi thời gian chờ của khách trong hàng đợi cho đến khi được thanh toán tại một cửa hàng Mục tiêu này sẽ được thực hiện thông qua các bước:

1 Tìm hiểu các thuật toán nhận diện vật thể hiện có

2 Lựa chọn thuật toán, nghiên cứu và xây dựng mô hình nhận diện vật thể hoàn chỉnh

3 Khảo sát, đánh giá khả nằng hoạt động của mô hình nhận diện

4 Tìm hiểu và lựa chọn giải thuật tracking

5 Thiết kế hệ thống hoàn chỉnh bằng việc kết hợp giải thuật nhận diện và tracking vật thể

6 Đánh giá khả năng hoạt động của hệ thống

3 Đối tượng nghiên cứu và phạm vi nghiên cứu

3.1 Đối tượng nghiên cứ

3.1 Đối tượng nghiên cứu u

Luận văn nghiên cứu về lĩnh vực Deep Learning, cấu trúc và hoạt động của mạng neuron tích chập – là cơ sở để thực hiện giải thuật YOLO trong nhận diện vật thể và nghiên cứu về giải thuật DeepSORT trong tracking đối tượng Ứng dụng kết hợp hai giải thuật trong việc thiết kế hoàn chỉnh một hệ thống theo dõi thời gian chờ đợi của khách hàng

3.2 Phạm vi nghi

3.2 Phạm vi nghiên cứu ên cứu

Luận văn nghiên cứu về tính ứng dụng của mạng neuron tích chập, là một nhánh nhỏ của trí tuệ nhân tạo, cụ thể là sử dụng mô hình được đề xuất – YOLO trong bài toán nhận diện Ngoài ra, luận văn cũng nghiên cứu về một kĩ thuật tracking được được đánh giá là tốt ở thời điểm thực hiện luận văn Trong thực nghiệm, luận văn tập trung ứng dụng hệ thống theo dõi thời gian chờ của khách hàng tại điểm bản lẻ

4 Cấu trúc luận văn

Cấu trúc của luận văn được trình bày bao gồm sáu chương:

Trang 14

Chương mở đầu trình bày khái quát về tính cấp thiết của đề tài, mục tiêu nghiên cứu, đối tượng, phạm vi nghiên cứu và cấu trúc của luận văn

Chương 1 giới thiệu các khái niệm cơ bản trong Deep learning, mạng neuron tích chập, các thuật toán tối ưu, thuật toán lan truyền ngược (backpropagation) Chương 2 giới thiệu mô hình YOLO trong nhận diện vật thể

Chương 3 giới thiệu phương pháp tracking DeepSORT

Chương 4 thiết kế mô hình nhận diện và tích hợp thuật toán DeepSORT Chương 5 trình bày kết quả và đánh giá

Chương 6 kết luận và hướng phát triển

Trang 15

1.1

1.1 Gradient Descent [1] Gradient Descent [1]

1.1.1

1.1.1 Giới thiệu Giới thiệu

Trong học máy nói riêng và toán tối ưu nói chung, chúng ta thường xuyên phải tìm các giá trị lớn nhất hoặc nhỏ nhất của một hàm số Nếu chỉ xét riêng các hàm khả vi liên tục, việc giải phương trình đạo hàm bằng không thường rất phức tạp hoặc có thể ra vô số nghiệm Thay vào đó, người ta thường cố gắng tìm các điểm cực tiểu, và ở một mức độ nào đó, coi đó là một nghiệm cần tìm của bài toán Các điểm cực tiểu là nghiệm của phương trình đạo hàm bằng không (ta vẫn đang giả sử rằng các hàm này liên tục và khả vi) 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 cực tiểu đó 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 không là bất khả thi

Trang 16

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 Thực tế cho thấy, trong nhiều bài toán học máy, các nghiệm cực tiểu thường đã cho kết quả tốt, đặc biệt là trong mạng neuron

Hướng tiếp cận phổ biến nhất để giải quyết các bài toán tối ưu là xuất phát từ một điểm được 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 không Gradient descent (GD) và các biến thể của nó là một trong những phương pháp được dùng nhiều nhất

Hình 1.1 mô tả sự biến thiên của hàm số ᵢ(ᵔ) =(ᵔ − 1)− 2 Điểm màu xanh lục là một điểm cực tiểu (local minimum), và cũng là điểm làm cho hàm số đạt giá trị nhỏ nhất (global minimum) Global minimum là một trường hợp đặc biệt của local minimum

Giả sử ta đang quan tâm đến một hàm số một biến có đạo hàm mọi nơi Cùng

ôn lại một vài điểm cơ bản:

 Điểm cực tiểu ᵔ∗ của hàm số là điểm có đạo hàm ᵢ(ᵔ )∗ bằng không Hơn thế nữa, trong lân cận của nó, đạo hàm của các điểm phía bên trái là ᵔ∗

không dương, đạo hàm của các điểm phía bên phải là không âm ᵔ∗

 Đường tiếp tuyến với đồ thi hàm số đó tại một điểm bất kỳ có hệ số góc chính bằng đạo hàm của hàm số tại điểm đó

Trong Hình 1.1, các điểm bên trái của điểm cực tiểu màu xanh lục có đạo hàm

âm, các điểm bên phải có đạo hàm dương Và đối với hàm số này, càng xa về phía trái của điểm cực tiểu thì đạo hàm càng âm, càng xa về phía phải thì đạo hàm càng dương

Trang 17

Hình 1.1 Khảo sát sự biến thiên của một đa thức bậc hai [1].

1.1.2

1.1.2 Bài toán Gradient Descent Bài toán Gradient Descent Bài toán Gradient Descent cho hàm một biến cho hàm một biến

Xét các hàm số một biếnᵢ: ℝ → ℝ Quay trở lại Hình 1.1 và một vài quan sát

đã nêu Giả sử là điểm tìm được sau vòng lặp thứ t Ta cần tìm một thuật toán ᵔ

để đưa về càng gần càng tốt Có hai quan sát sau đây: ᵔ ᵔ∗

 Nếu đạo hàm của hàm số tại ᵔ là dương (ᵢ (ᵔ

)) > 0 thì ᵔ nằm về bên phải

so với , và ngược lại Để điểm tiếp theo ᵔ∗ ᵔ+ gần với hơn, chúng ta cần ᵔ∗

di chuyển ᵔ về phía bên trái, tức về phía âm Nói các khác, ta cần di chuyển ngược dấu với đạo hàm:

Trong đó là một đại lượng ngược dấu với đạo hàm ∆ ᵢ(ᵔ)

 ᵔ càng xa x* về phía bên phải thì ᵢ(ᵔ) càng lớn hơn 0 (và ngược lại) Vậy, lượng di chuyển , một cách tự nhiên nhất, là tỉ lệ thuận với ∆ −ᵢ (ᵔ )

Hai nhận xét phía trên cho chúng ta một cách cập nhật đơn giản là

ᵔ+= ᵔ − ᵱᵢ (ᵔ )   (1.2) Trong đó là một số dương được gọi là tốc độ học (learning rate) Dấu trừ thể ᵱhiện việc chúng ta phải đi ngược với đạo hàm (Đây chính là lý do phương pháp này được gọi là gradient descent – descent nghĩa là đi ngược) Việc lựa chọn learning rate rất quan trọng trong các bài toán thực tế Việc lựa chọn giá trị này phụ thuộc

Trang 18

vào từng bài toán cụ thể và đôi khi phải qua một vài thí nghiệm để chọn ra giá trị tốt nhất Các quan sát đơn giản phía trên, mặc dù không phải đúng trong tất cả các trường hợp, là nền tảng cho rất nhiều phương pháp tối ưu

1.1.3

1.1.3 Bài toán Gradient Descent Bài toán Gradient Descent Bài toán Gradient Descent cho hàm nhiều biến cho hàm nhiều biến

Giả sử ta cần tìm giá trị nhỏ nhất cho hàm ᵢ(ᵲ) trong đó là tập hợp các tham ᵲ

số cần tối ưu Đạo hàm của hàm số đó tại một điểm bất kỳ được ký hiệu là ᵲ

∇󰅧ᵢ(ᵲ) Tương tự như hàm một biến, thuật toán GD cho hàm nhiều biến cũng bắt đầu bằng một điểm dự đoán , sau đó, ở vòng lặp thứ ᵲ t, quy tắc cập nhật là

ᵲ+= ᵲ − ᵱ∇ ᵢ(ᵲ ) 󰅧  (1.3) Hoặc viết dưới dạng đơn giản hơn:

1.1.4

1.1.4 Stochastic gradiStochastic gradiStochastic gradient descent ent descent

1.1.4.1

1.1.4.1 Batch graBatch graBatch gradient ddient descent dient descent

Thuật toán GD được đề cập từ đầu chương tới hiện tại còn được gọi là batch

GD Batch ở đây được hiểu là tất cả, tức khi cập nhật các tham số , chúng ta sử ᵲdụng tất cả các điểm dữ liệu Hạn chế của việc này là khi lượng cơ sở dữ liệu x

lớn, có thể tới hàng triệu, việc tính toán đạo hàm trên toàn bộ dữ liệu tại mỗi vòng lặp sẽ tốn rất nhiều thời gian

Online learning là khi cơ sở dữ liệu được cập nhật liên tục, mỗi lần tăng thêm vài điểm dữ liệu mới, yêu cầu cập nhật mô hình mới Kéo theo đó là mô hình cũng phải được thay đổi một chút để phù hợp với dữ liệu mới Nếu làm theo batch GD, tức tính lại đạo hàm của hàm mất mát tại tất cả các điểm dữ liệu, độ phức tạp tính toán sẽ rất cao Lúc đó, thuật toán có thể không còn mang tính “online” nữa

do mất quá nhiều thời gian tính toán

Một thuật toán đơn giản hơn, chấp nhận việc có sai số một chút nhưng lại lợi ích tính toán cao, thường được sử dụng có tên gọi là Stochastic Gradient Descent (SGD)

1.1.4.2

1.1.4.2 Stochastic Stochastic Stochastic gradiengradiengradient descent descent descent t

Trong SGD, tại một thời điểm (vòng lặp – iteration), ta chỉ tính đạo hàm của hàm mất mát dựa trên chỉ một điểm dữ liệu rồi cập nhật dựa trên đạo hàm x ᵲ

Trang 19

này Chú ý rằng hàm mất mát thường được lấy trung bình trên mỗi điểm dữ liệu nên đạo hàm tại một điểm cũng được kỳ vọng là khá gần với đạo hàm của hàm mất mát trên mọi điểm dữ liệu Sau khi duyệt qua tất cả các điểm dữ liệu, thuật toán lặp lại quá trình trên Biến thể đơn giản này trên thực tế làm việc rất hiệu quả

Mỗi lần duyệt một lượt qua tất cả các điểm trên toàn bộ dữ liệu được gọi là một epoch (số nhiều epoches) Với GD thông thường, mỗi epoch ứng với một lần cập nhật Với SGD, mỗi epoch ứng với ᵲ N lần cập nhật với ᵲ N là số điểm dữ liệu Nhìn vào một mặt, việc cập nhật từng điểm một như thế này có thể làm giảm đi tốc độ thực hiện một epoch Nhưng nhìn vào một mặt khác, với SGD, nghiệm có thể hội tụ sau vài epoch Vì vậy, SGD phù hợp với các bài toán có lượng cơ sở dữ liệu lớn và các bài toán yêu cầu mô hình thay đổi liên tục như online learning Với một mô hình đã được huấn luyện từ trước, khi có thêm dữ liệu, ta có thể chỉ cần chạy thêm một vài epoch nữa là đã có nghiệm hội tụ

Hình 1.2 Ví dụ về giá trị hàm mất mát sau mỗi iteration khi sử dụng mini-batch gradient descent Hàm mất mát dao động (fluctuate) sau mỗi lần cập nhật nhưng nhìn chung giảm dần

và có xu hưóng hội tụ [1]

Thứ t

Thứ tự lựa chọn ự lựa chọn ự lựa chọn điểm dữ điểm dữ điểm dữ liệu liệu

Một điểm cần lưu ý đó là sau mỗi epoch, chúng ta cần xáo trộn (shuffle) thứ

tự của các dữ liệu để đảm bảo tính ngẫu nhiên Việc này cũng ảnh hưởng tới hiệu năng của SGD Đây cũng chính là lý do thuật toán này có chứa từ stochastic (ngẫu nhiên)

Trang 20

Một cách toán học, quy tắc cập nhật của SGD là

ᵲ ← ᵲ − ᵱ∇ ᵌ(ᵲ; x , y )󰅧   (1.5) Trong đó ᵌ(ᵲ; x , y ) ≜ ᵌ  (ᵲ) là hàm mất mát với chỉ một điểm dữ liệu thứ i Các thuật toán biến thể của GD như momentum hay NAG hoàn toàn có thể được

áp dụng vào SGD

1.1.4.3

1.1.4.3 Mini-batMini-batMini-batch gradch gradient desch gradient desient descent cent

Khác với SGD, mini-batch sử dụng một số lượng k lớn hơn một (nhưng vẫn nhỏ hơn tổng số điểm dữ liệu N rất nhiều) để cập nhật ở mỗi iteration Giống với SGD, mini-batch GD bắt đầu mỗi epoch bằng việc xáo trộn ngẫu nhiên dữ liệu rồi chia toàn bộ dữ liệu thành các mini-batch, mỗi mini-batch có k điểm dữ liệu (trừ mini-batch cuối có thể có ít hơn nếu N không chia hết cho k) Ở mỗi vòng lặp, thuật toán này lấy ra một mini-batch để tính toán đạo hàm rồi cập nhật Một epoch cũng là khi thuật toán chạy hết dữ liệu một lượt Như vậy, một epoch bao gồm xấp xỉ ᵐ/ᵇ lần iteration Mini-batch GD được sử dụng trong hầu hết các thuật toán học máy, đặc biệt là trong học sâu Giá trị k được gọi là batch size (không phải mini-batch size) thường được chọn là khoảng từ vài chục đến vài trăm Quy tắc cập nhật của mini-batch gradient descent là

ᵲ ← ᵲ − ᵱ∇ ᵌ(ᵲ; x󰅧 +; y+) (1.6)

Sử dụng phương pháp này giúp giảm thiểu variance của những lần cập nhật tham số dẫn tới việc hội tụ ổn định hơn Mini-batch gradient descent là thuật toán tiêu biểu khi huấn luyện một mạng neuron và khái niệm SGD thường được dùng khi mini-batch được sử dụng

Hình 1.2 là ví dụ về giá trị của hàm mất mát của một bài toán khác phức tạp hơn mỗi khi cập nhật tham số d khi sử dụng mini-batch gradient descent Mặc dù giá trị của hàm mất mát sau các vòng lặp không phải lúc nào cũng giảm, chúng ta vẫn thấy rằng giá trị này có xu hướng giảm và hội tụ

Với tập dữ liệu là hình ảnh, vốn có dung lượng rất lớn, nên việc lựa chọn batch gradient descent là không phù hợp vì phương pháp này tiêu tốn rất nhiều tài nguyên máy tính Thay vào đó, ta sẽ sử dụng phương pháp mini-batch gradient descent dựa vào những ưu điểm mà nó mang lại, giúp tiết kiệm tài nguyên máy,

Trang 21

giảm thời gian hội tụ và giảm giá trị variance với mỗi lần cập nhật Vì mini-batch gradient descent tương tự stochastic gradient descent với số mẫu nhiều hơn một, nên để tổng quát hóa ta sẽ sử dụng khái niệm SGD cho cả hai biến thể này với tham số là số mẫu huấn luyện Một tập hợp con của tập dữ liệu được sử dụng cho một lần cập nhật được gọi là batch

(a) SGD không sử dụng momentum (b) SGD sử dụng momentum

Hình 1.3 Ảnh hưởng của momentum đến quá trình tối ưu [2]

Momentum là một phương pháp giúp tăng tốc SGD trong những hướng thích hợp và giảm thiểu dao động Điều này được hiện thực bằng cách thêm vào một tham số ở vector cập nhật của bước cập nhật kề trước cho vector cập nhật hiện ᵱtại Momentum thường được gán bằng 0.9 ᵱ

ᵒ← ᵱᵒ−+ ᵱ ⋅ ∇󰅧ᵌ(ᵲ)

1.1.5

1.1.5 Điều kiện dừng thuật toán Điều kiện dừng thuật toán

Có một điểm chúng ta chưa đề cập kỹ – khi nào thì nên dừng thuật toán gradient descent? Trong thực nghiệm, chúng ta có thể kết hợp các phương pháp sau

 Giới hạn số vòng lặp Một nhược điểm của cách làm này là có thể thuật toán dừng lại trước khi nghiệm đủ tốt Tuy nhiên, đây là phương pháp phổ biến nhất và cũng để đảm bảo rằng chương trình chạy không quá lâu

 So sánh gradient của nghiệm tại hai lần cập nhật liên tiếp, khi nào giá tri này đủ nhỏ thì dừng lại Phương pháp này cũng có một nhược điểm lớn là việc tính đạo hàm đôi khi trở nên quá phức tạp

 So sánh giá trị của hàm mất mát của nghiệm tại hai lần cập nhật liên tiếp, khi nào giá trị này đủ nhỏ thì dừng lại Nhược điểm của phương pháp này là nếu tại một thời điểm, đồ thi hàm số có dạng bằng phẳng tại một khu vực

Trang 22

nhưng khu vực đó không chứa điểm cực tiểu, thuật toán cũng dừng lại trước khi đạt giá trị mong muốn

 Vừa chạy gradient descent, vừa kiểm tra kết quả Một kỹ thuật thường được

sử dụng nữa là cho thuật toán chạy với số lượng vòng lặp cực lớn Trong quá trình chạy, chương trình thường xuyên kiểm tra chất lượng mô hình bằng cách áp dụng nó lên dữ liệu tập huấn luyện và/hoặc validation Đồng thời,

mô hình sau một vài vòng lặp được lưu lại trong bộ nhớ Mô hình tốt nhất

có thể không phải là mô hình với số vòng lặp lớn hơn

Trang 23

1.2 Backpropagation [3] Backpropagation [3]

Phương pháp phổ biến nhất để tối ưu mạng neuron nhiều lớp chính là gradient descent (GD) Để áp dụng GD, chúng ta cần tính được đạo hàm của hàm mất mát theo từng ma trận trọng số ᵁ() và vector bias b()

Giả sử ᵌ(ᵁ, b, ᵁ, ᵁ) là một hàm mất mát của bài toán, trong đó , b là tập Whợp tất cả các ma trận trọng số giữa các layer và vector bias của mỗi layer , XX YY

là cặp dữ liệu huấn luyện với mỗi cột tương ứng với một điểm dữ liệu Để có thể

áp dụng các phương pháp gradient descent, chúng ta cần tính được các

hệ số trong các layer trước được thực hiện dựa trên một quy tắc chuỗi quen thuộc cho đạo hàm của hàm hợp

Stochastic gradient descent có thể được sử dụng để tính gradient cho các ma trận trọng số và biases dựa trên một cặp điểm huấn luyện x, y Để cho đơn giản,

ta coi J là hàm mất mát nếu chỉ xét cặp điểm này, ở đây J là hàm mất mát bất

kỳ, không chỉ hàm MSE như ở trên Đạo hàm của hàm mất mát theo chỉ một thành phần của ma trận trọng số của lớp đầu ra

Trang 24

theo bias của lớp cuối cùng là

Trang 25

(1.13)

Trong đó e(+)= [ᵡ(+), ᵡ(+), , ᵡ(+)

(+)]⊺∈ ℝ (+) × và ᵓ(+) được hiểu là hàng thứ j của ma trận ᵁ(+) Dấu ∑ ᵝtính tổng ở dòng thứ hai trong phép tính trên xuất hiện vì ᵝ() đóng góp vào việc tất cả các ᵖ(+), ᵇ = 1, 2, … , ᵠ(+) Biểu thức đạo hàm ngoài dấu ngoặc lớn là vì ᵝ()= ᵢ()ᵖ() Tới đây, ta có thể thấy rằng việc hàm kích hoạt có đạo hàm đơn giản sẽ có ích rất nhiều trong việc tính toán Với cách làm tương tự, ta có thể suy ra

Việc tính toán các đạo hàm khi sử dụng SGD có thể tóm tắt như sau

1 Bước feedforward: Với một giá trị đầu vào x, tính giá trị đầu ra của mạng, trong quá trình tính toán, lưu lại các giá trị activation a() tại mỗi layer

2 Với mỗi unit j ở lớp đầu ra, tính

Trang 26

Khi làm việc với các phép tính đạo hàm phức tạp, ta luôn cần nhớ hai điều sau

1 Đạo hàm của một hàm có đầu ra là một số vô hướng theo một vector hoặc

ma trận là một đại lượng có cùng chiều với vector hoặc ma trận đó

2 Để các phép nhân các ma trận, vector thực hiện được, ta cần đảm bảo chiều của chúng phù hợp

Trong công thức ∇ ()ᵌ = a(−) ()⊺e , vế trái là một ma trận thuộc

ℝ (−) × (), vậy vế phải cũng phải là một đại lượng có chiều tương tự Từ đó ta có thể thấy tại sao vế phải phải là a(−)e()⊺, mà không thể là a(−)e() hay

e()a(−)

Trang 27

1.3 Weight decay [4] Weight decay [4]

Với weight decay, hàm mất mát sẽ được cộng thêm một đại lượng regularization

Trang 28

1.4 Convolutional Neural Network [5] Convolutional Neural Network [5]

Mạng neuron tích chập cũng tương tự với mạng neuron thông thường Chúng đều được tạo nên từ các neuron mà trong đó chứa các trọng số (weight) và phân cực (bias) Mỗi neuron đều nhận vào các giá trị input, thực hiện tính tích chập ma trận và có thể kèm theo tính chất phi tuyến Chúng đều có hàm mất mát ở lớp cuối cùng và tất cả những kĩ thuật đã được phát triển cho vấn đề “học” vẫn được

áp dụng như mạng neuron thông thường

Kiến trúc mạng neuron tích chập khẳng định một cách tường minh rằng giá trị input là hình ảnh, điều này cho phép ta mã hóa các tính chất thành kiến trúc mạng, giúp cho hàm forward thực hiện hiệu quả hơn và giảm thiểu một lượng lớn tham số trong mạng

Mạng neuron thông thường nhận giá trị input là vector, và biến đổi nó qua một chuỗi các lớp ẩn (hidden layers) Mỗi hidden layer được tạo nên bởi một tập hợp các neuron, trong đó mỗi neuron được kết nối đầy đủ (fully-connected) với tất cả các neuron ở lớp trước Các neuron trong cùng một lớp hoàn toàn độc lập và không chia sẻ bất kì liên kết nào Lớp cuối được gọi là lớp output, trong bài toán phân loại, lớp output thể hiện xác suất của mỗi class

Mạng neuron thông thường không tỉ lệ tốt với tất cả hình ảnh Trong tập dữ liệu CIFAR-10, hình ảnh chỉ có kích thước 32 × 32 × 3, vì vậy mỗi neuron kết nối đầy đủ ở hidden layer đầu tiên của mạng neuron thông thường sẽ có 32 × 32 × 3 =

3072 weights Số lượng weight này vẫn có thể sử dụng được, nhưng rõ ràng là cấu trúc fully-connect như vậy không tỉ lệ với những hình ảnh lớn hơn Ví dụ, một hình ảnh với kích thước đáng kể 200 × 200 × 3 sẽ khiến mỗi neuron có 200 × 200 × 3 =

120 000 weights Hơn nữa, ta chắc chắn cần nhiều hơn một neuron như vậy, vì thế nên số lượng tham số sẽ tăng lên rất nhanh Ta có thể thấy được rằng fully-connect

ở đây rất lãng phí và số lượng lớn tham số sẽ nhanh chóng dẫn tới hiện tượng overfitting

Trang 29

Hình 1.5 Một mạng neuron ba lớp thông thường [5].

Mạng neuron tích chập có lợi thế đó là input là hình ảnh và ràng buộc kiến trúc mạng một cách khôn ngoan hơn Cụ thể là, không giống như mạng neuron thông thường, các lớp của mạng neuron tích chập có các neuron được sắp xếp theo

ba chiều: chiều rộng, chiều cao, chiều sâu Ví dụ, hình ảnh input trong CIFAR-10

là một khối 32 × 32 × 3 (chiều rộng, chiều cao, chiều sâu tương ứng) Ta thấy rằng, các neuron trong lớp sẽ chỉ được kết nối với một vùng nhỏ của lớp trước nó, thay

vì tất cả neuron như cách của mạng fully-connected Hơn nữa, lớp output cuối cùng cho CIFAR-10 sẽ có chiều 1 × 1 × 10, bởi vì sau cùng kiến trúc mạng neuron tích chập sẽ thu giảm hình ảnh đầy đủ thành một vector chứa xác suất của các class, được sắp xếp dọc theo chiều sâu

Hình 1.6 Một mạng neuron tích chập với các neuron được sắp xếp theo ba chiều (chiều rộng,

chiều cao, chiều sâu) [5].

Mỗi lớp của mạng neuron tích chập biến đổi khối input 3D thành một khối output 3D các activation của neuron Trong ví dụ ở hình 1.6, lớp input màu đỏ

Trang 30

chứa hình ảnh, vì vậy chiều rộng và chiều cao của nó tương ứng với hình ảnh, và chiều sâu là 3 (tương ứng RGB)

Như đã mô tả ở trên, một mạng neuron tích chập đơn giản là một chuỗi các lớp, và mỗi lớp của mạng tích chập biến đổi một khối các activation thành một khối khác thông qua một hàm khả vi Ta dùng ba loại lớp chính để xây dựng nên kiến trúc mạng neuron tích chập: convolution, pooling, fully-connect

Lớp convolution là khối cốt lõi của mạng neuron tích chập, đây là lớp thực hiện phần lớn những phép tính toán lớn Tham số lớp convolution chứa một tập hợp các filter có thể học được Mỗi filter là một không gian nhỏ (dọc theo chiều rộng

và chiều cao), nhưng trải toàn bộ chiều sâu của khối input Ví dụ, một filter điển hình ở lớp đầu tiên của một mạng tích chập có kích thước 5 × 5 × 3 (chiều rộng 5 pixel, chiều cao 5 pixel và chiều sâu 3 pixel) Trong suốt quá trình forward, ta dịch mỗi filter theo chiều rộng và chiều cao của khối input và tính toán tích chập giữa filter và input tại bất kì vị trí nào Khi ta dịch filter theo chiều rộng vào chiều cao của khối input, ta sẽ được phép ánh xạ hai chiều, phép này cho ta đáp ứng của filter đó tại mỗi vị trí Một cách trực quan, mạng sẽ học các filter mà sẽ kích hoạt khi chúng thấy một vài đặc trưng có thể nhìn thấy được như là viền của các vật thể hoặc vết màu ở lớp đầu tiên, hoặc là cả một tảng hình tổ ong hoặc những hình tượng có dạng bánh xe ở các lớp cao hơn của mạng Ta sẽ chồng các ánh xạ kích hoạt (activation) dọc theo chiều sâu và tạo ra khối output

Khi giải quyết vấn đề về dữ liệu input nhiều chiều như là hình ảnh, như ta đã thấy việc kết nối các neuron với tất cả các neuron ở khối trước là không thực tế Thay vào đó, ta sẽ kết nối mỗi neuron với chỉ một vùng cục bộ của khối input Phạm vi kết nối này là một siêu tham số (hyperparameter) được gọi là trường tiếp nhận của neuron (tương ứng với kích thước filter) Phạm vi kết nối dọc theo chiều sâu luôn luôn bằng chiều sâu của khối input Cần phải nhấn mạnh một lần nữa về

sự bất đối xứng này khi ta giải quyết các chiều không gian (chiều rộng và chiều cao) và chiều sâu: các kết nối là cục bộ trong không gian (theo chiều rộng và chiều cao), nhưng luôn luôn là toàn bộ theo chiều sâu của khối input

Trang 31

Ví dụ, giả sử một khối input có kích thước 32 × 32 × 3 Nếu kích thước filter

là 5 × 5, mỗi neuron trong mạng neuron tích chập sẽ có các weight với một vùng

5 × 5 × 3 trong khối input, tổng cộng là 5 × 5 × 3 = 75 weight (và cộng thêm 1 tham số bias) Chú ý rằng phạm vị kết nối dọc theo chiều sâu phải là 3, vì đây là chiều sâu của khối input

Hình 1.7 Minh họa ví dụ trên với khối input màu đỏ kích thước 32×32×3 và khối neurons ở lớp

đầu tiên của mạng tích chập [5].

Hình 1.8 Các neuron tính toán tích của tham số với giá trị input, nhưng kết nối của chúng bị

giới hạn trong không gian cục bộ [5].

Ta đã thảo luận về kết nối của mỗi neuron của lớp convolution với khối input, nhưng ta chưa thảo luận về việc có bao nhiêu neuron ở khối output và chúng được sắp xếp như thế nào Ba siêu tham số điều khiển kích thước của khối output: độ sâu (depth), độ dịch (stride), và zero-padding Đầu tiên, độ sâu của khối output là một siêu tham số, nó tương ứng với số filter ta cần, mục tiêu mỗi lần học là tìm kiếm sự khác biệt trong input Ví dụ, nếu lớp convolution đầu tiên có input là hình ảnh, các neuron khác nhau dọc theo chiều sâu có thể kích hoạt khi có sự hiện diện

Trang 32

của các viền định hướng của vật thể, hoặc là các đốm màu Ta quy về một tập hợp các neuron mà đều nhìn vào cùng một vùng của input và được xếp theo chiều sâu Thứ hai, ta phải định rõ rằng độ dịch là độ dịch chuyển filter Khi độ dịch là 1, mỗi lần ta sẽ dịch chuyển các filter mỗi pixel Khi độ dịch là 2, mỗi lần các filter

sẽ nhảy 2 pixel Điều này dẫn đến việc không gian khối output sẽ nhỏ hơn Thứ

ba, thỉnh thoảng sẽ rất tiện lợi nếu ta đệm vào khối input với các giá trị 0 padding) xung quanh viền của nó Kích thước của zero-padding là một siêu tham

(zero-số Điểm thuận tiện của zero-padding là cho phép ta có thể kiểm soát được kích thước không gian của khối output

Ta có thể tính toán kích thước không gian của khối output bằng một hàm theo kích thước khối input (W), kích thước filter của các neuron lớp convolution (F), độ dịch được áp dụng (S), và số lượng zero-padding được dùng (P) ở viền Ta có thể suy ra công thức tính chính xác số kích thước khối output được cho bởi ( −  +2)/ + 1 Ví dụ, cho kích thước input là 7 × 7 và filter là 3 × 3 với độ dịch 1 và không dùng zero-padding, ta sẽ được kích thước output là 5 × 5 Với độ dịch 2, ta

sẽ được kích thước output là 3 × 3

Hình 1.9 Minh họa cho sắp xếp không gian.

Ví dụ này chỉ sử dụng một chiều không gian, một neuron với kích thước F =

3, kích thước input W = 5, và có zero-padding P = 1 Bên trái là trường hợp độ dịch S = 1, cho kích thước output là (5 – 3 + 2)/1 + 1 = 5 Bên phải là trường hợp S = 2, cho kích thước output là (5 – 3 +2)/2 + 1 = 3 Weight của neuron trong ví dụ này là [1, 0, –1], và tham số bias của nó là 0 [5]

Trong ví dụ trên, ở trường hợp bên trái, chiều của khối input là 5 và output cũng là 5 Điều này xảy ra vì kích thước filter là 3 và ta dùng 1 zero-padding Nếu zero-padding không được sử dụng, khối output sẽ chỉ có kích thước là 3 Nhìn chung, số zero-padding sẽ là P = (F – 1)/2 khi độ dịch S = 1, đảm bảo rằng khối

Trang 33

input và khối output có chung kích thước không gian Đây là cách thường thấy khi

tự động thêm zero-pad, hoặc là cắt bớt một vài phần của input

Ví dụ thực tế, Krizhevsky và các cộng sự đã đề xuất một kiến trúc [6] giành chiến thắng trong cuộc thi ImageNet năm 2012 sử dụng kích thước hình ảnh

227 × 227 × 3 Ở lớp convolution đầu tiên, mạng sử dụng neuron với kích thước filter F = 11, độ dịch S = 4 và không có zero-padding P = 0 Vì (227 – 11)/4 + 1

= 55, và bởi vì lớp convolution có độ sâu K = 96, khối output của lớp này có kích thước 55 × 55 × 96 Mỗi neuron trong 55 × 55 × 96 neuron được kết nối với một vùng kích thước 11 × 11 × 3 trong khối input Hơn nữa, mỗi tầng neuron trong 96 tầng được kết nối với cùng một vùng 11 × 11 × 3 của input, nhưng tất nhiên là với các weight khác nhau Bên cạnh đó, bài báo xác nhận là kích thước hình ảnh input

là 224 × 224, kích thước này chắc chắn không đúng vì (224 – 11)/4 + 1 không phải

là một số nguyên Điều này khiến nhiều người cảm thấy bối rối và chỉ ít người thực

sự hiểu bản chất của nó Có thể zero-padding đã được áp dụng với việc thêm 3 pixel, điều này không được đề cập trong bài báo

Hệ thống chia sẻ tham số được sử dụng trong các lớp convolution để kiểm soát

số lượng tham số Từ ví dụ thực tế ở trên, ta thấy rằng có 55 × 55 × 96 = 290 400 neuron ở lớp convolution đầu tiên và mỗi neuron có 11 × 11 × 3 = 363 weight và

1 bias Vì vậy có tổng cộng 290 400 × 364 = 105 705 600 tham số ở lớp đầu tiên Con số này rõ ràng là rất cao

Nhận thấy rằng ta có thể giảm đáng kể số lượng tham số bằng việc đặt ra giả thiết hợp lý: Nếu một đặc trưng có thể được sử dụng để tính toán tại một vài vị trí (x,y), nó có thể được sử dụng để tính toán ở những vị trí khác (x2,y2) Nói cách khác, ta sẽ ràng buộc các neuron ở mỗi mảng cắt theo chiều sâu (ví dụ mỗi khối có

Trang 34

kích thước 55 × 55 × 96 có 96 mảng cắt, mỗi mảng có kích thước 55 × 55) để dùng chung weight và bias Với hệ thống chia sẻ tham số này, lớp convolution đầu tiên trong ví dụ trên sẽ chỉ có 96 tập hợp weight (mỗi tập hợp tương ứng với một mảng cắt), vì thế tổng cộng ta có 96 × 11 × 11 × 3 = 34 848 weight, hay 34 944 tham

số (cộng thêm 96 bias) Tất cả 55 × 55 neuron ở mỗi mảng cắt sẽ sử dụng chung tham số Thực tế ở quá trình backpropagation, mỗi neuron trong khối sẽ tính toán gradient cho weight của nó, nhưng các gradient này sẽ được cộng dồn xuyên suốt mỗi mảng cắt và chỉ cập nhật duy nhất một tập hợp weight trên mỗi mảng

Để ý rằng nếu tất cả neuron trong mỗi mảng cắt sử dụng chung vector weight, quá trình forward của lớp convolution có thể được tính toán trong mỗi mảng cắt như là tích chập các weight của các neuron với khối input Vì thế tập hợp các weight được gọi là filter (hay là kernel) sẽ được chập với input

Hình 1.10 Ví dụ về các filter được học bởi Krizhevsky và cộng sự Với mỗi một 96 filter ở trên

có kích thước là 11×11×3, và mỗi filter được chia sẻ bởi 55×55 neuron trong mỗi mảng cắt [5].

Để ý rằng thỉnh thoảng việc chia sẻ tham số có thể sẽ không hợp lý Đặc biệt

là trường hợp hình ảnh input của mạng tích chập có chung cấu trúc trung tâm đặc biệt vì thế các đặc trưng hoàn toàn khác nhau thì nên được học trên một vùng nhất định của ảnh thay vì vùng ảnh khác Một ví dụ thực tế, khi input là hình ảnh khuôn mặt được đặt ở trung tâm của ảnh, các đặc trưng khác nhau của mắt hay tóc được mong đợi là sẽ được học ở nhiều vùng nhất định khác nhau Trong trường hợp này, ta thường giảm nhẹ hệ thống chia sẻ tham số và thay vào đó ta sử dụng một lớp locally-connected

Trang 35

Thông thường, lớp pooling được thêm vào giữa các lớp convolution liên tiếp trong kiến trúc mạng neuron tích chập Điều này giúp giảm kích thước không gian của các khối dẫn đến việc giảm số lượng tham số và giảm nhẹ tính toán trong mạng, vì thế có thể kiểm soát được hiện tượng overfitting Lớp pooling hoạt động độc lập trên mỗi mảng cắt của khối input và điều chỉnh kích thước của nó bằng cách sử dụng toán tử max Dạng phổ biến của lớp pooling đó là các filter có kích thước 2 × 2 và độ dịch 2 giúp giảm số lượng mẫu mỗi mảng cắt của khối input 2 lần theo chiều rộng và chiều cao, loại bỏ 75% số lần kích hoạt Mỗi toán tử max sẽ tính toán giá trị cực đại của 4 số (vùng 2 × 2 trong mỗi mảng cắt) Chiều sâu của khối không thay đổi Tóm lại, lớp pooling:

 Nhận một khối kích thước × × 

 Yêu cầu hai hyperparameter gồm phạm vi không gian  và độ dịch , và tạo

ra một khối có kích thước × ×  với:

o = (− )/ + 1

o = (− )/ + 1

o = 

 Không thường đệm vào khối input sử dụng zero-padding

Hình 1.11 Khối input với kích thước 224×224×64 qua lớp pooling với kích thước filter là 2, độ

dịch 2 và cho ra khối output kích thước 112×112×64.

Trang 36

Hình 1.12 Giảm số lượng mẫu sử dụng max pooling với độ dịch 2, mỗi giá trị max được tính từ

4 số (nằm trong vùng 2×2).

Đáng chú ý rằng chỉ có hai dạng thường gặp của lớp max pooling được sử dụng trong thực tế: Một lớp pooling với F = 3, S = 2 (còn được gọi là pooling chồng nhau), và một lớp pooling thông dụng hơn với F = 2, S = 2 Kích thước pooling với trường tiếp nhận lớn sẽ gây tổn hại đến mạng

Ngoài max pooling, còn tồn tại các toán tử khác, như là average pooling hay thậm chí là L2-norm pooling Average pooling thường được sử dụng trước đây nhưng ngày nay không còn được ưa chuộng so với toán tử max pooling vì tính hiệu quả đã được kiểm chứng trong thực tế

Trong dự án này, thuật toán YOLO (you only look once) được áp dụng cho nhiệm vụ nhận diện vật thể bởi vì theo như tên của thuật toán này, mỗi hình ảnh chỉ cần được quan sát một lần Điều này cho phép YOLO trở thành một trong những thuật toán nhận diện vật thể nhanh nhất Nhờ vào tốc độ xử lí nhanh của YOLO, nó có thể nhận diện vật thể một cách real-time

Trang 37

1.5 Ứng dụng lý thuyết học sâu vào dự án Ứng dụng lý thuyết học sâu vào dự án

Dự án sử dụng mô hình YOLO mà ta sẽ tìm hiểu ở Chương 2 cho quá trình nhận diện Để mô hình có thể đạt yêu cầu dự án, ta cần thực hiện quá trình huấn luyện mạng neuron, thế nên các thuật toán Gradient Descent, Backpropagation và Weight decay được ứng dụng cho cùng mục đích đó

YOLO là mô hình mạng neuron tích chập với output là một tensor có kích thước ᵞᵝᵐᵟℎ × ᵓ × ℎ × ᵄ × [5 + ᵅ] với ᵞᵝᵐᵟℎ là số mẫu được cho vào mạng để thực hiện thuật toán tối ưu Mini-batch Gradient Descent, và lần lượt là kích thước ᵓ ℎchiều rộng và chiều cao của một lưới ứng với một mẫu, là số khung anchor và ᵄ[5+C] là kích thước của một cell ứng với một khung anchor Trong đó giá trị 5 bao gồm 4 giá trị tọa độ khung ᵐ, ᵐ , ᵐ , ᵐ   và 1 giá trị biểu thị độ tin cậy , C là số 

class cần dùng để phân loại vật thể

Input của mạng neuron tích chập là hình ảnh vốn có kích thước rất lớn, ta lựa chọn sử dụng thuật toán tối ưu Mini-batch Gradient Descent để giảm thiểu vấn đề tiêu tốn tài nguyên máy tính Ngoài ra vì hàm mục tiêu (hay hàm mất mát) của

mô hình YOLO rất phức tạp, khiến cho việc tìm gradient rất khó khăn và lãng phí thời gian, vì thế ta sử dụng thuật toán Backpropagation để tìm gradient cho hàm mục tiêu Theo công thức (2.5), ta có hàm mục tiêu của YOLOv3:

Trang 38

số mô hình, x+ là một batch hình ảnh input, y+ là một batch dữ liệu nhãn định dạng tensor YOLOv3

Sau khi tính toán được gradient của hàm mục tiêu trong một batch, ta tiến hành áp dụng công thức (1.6) của thuật toán Mini-batch Gradient Descent để cập nhật tham số mô hình:

ᵲ ← ᵲ − ᵱ∇ ᵌ(ᵲ; x󰅧 +; y+)

Do đó, sau mỗi iteration tham số sẽ được cập nhật một lần

Khi thực hiện huấn luyện mạng neuron, việc tránh overfitting là cần thiết, vì thế ta thêm vào một thành phần regularization ở công thức (1.18) như đã thảo luận ở phần Weight decay mục 1.3:

áp dụng Gradient Descent

Trang 39

2 Chươn Chương 2 g 2

Thuật

Thuật toán toán toán YOL YOL YOLO O trong O trong trong nhận nhận nhận diện diện đối diện đối tượng

Chương 2 cung cấp những khái niệm cơ bản của thuật toán YOLO về kiến trúc mạng, tiền xử lý và hậu xử lý dữ liệu Ngoài ra, chương này còn đề cập đến phương pháp đánh giá tính hiệu quả của thuật toán nhận diện đối tượng

có thể truyền thông tin một cách real-time tới người dùng

Hệ thống nhận diện vật thể hiện tại đều có mục đích phân loại vật thể Để nhận diện vật thể, những hệ thống này phân loại vật thể đó và tính toán vị trí, tỉ

lệ của nó trong hình ảnh Các hệ thống như DPM (deformable parts models) dùng cửa sổ trượt cho bộ phân loại hoạt động ở tất cả những vị trí cách đều nhau trên toàn bộ hình ảnh

Trang 40

Các phương pháp gần đây như R-CNN sử dụng phương pháp vùng đề nghị để tạo ra các khung giới hạn (bounding box) trong một ảnh và sử dụng bộ phân loại trên những khung đề nghị này Sau khi phân loại, quá trình hậu xử lí được áp dụng

để lọc các khung giới hạn, loại bỏ sự nhận diện trùng lặp và đánh giá xác suất của khung dựa vào những vật thể khác trong cùng một cảnh Những quy trình phức tạp này thường chậm và khó tối ưu vì mỗi thành phần phải được huấn luyện một cách độc lập

Ta xem việc nhận diện vật thể như là một vấn đề hồi quy, trực tiếp từ các pixel của ảnh để xác định tọa độ của khung giới hạn và xác định xác suất của class Vì vậy, hệ thống YOLO được sử dụng trên một ảnh để dự đoán vật thể nào xuất hiện

và xuất hiện ở đâu

YOLO được đánh giá là một thuật toán đơn giản: Mỗi mạng tích chập đồng thời dự đoán nhiều khung giới hạn và xác suất các class cho những khung này YOLO huấn luyện hình ảnh đầy đủ và tối ưu hóa khả năng nhận diện vật thể Sự thống nhất mô hình có nhiều lợi ích so với các phương pháp truyền thống trong việc nhận diện vật thể

Đầu tiên, tốc độ của YOLO rất nhanh Bởi vì ta đã xem việc nhận diện vật thể

là một vấn đề hồi quy nên ta không cần một quy trình phức tạp Một cách đơn giản, ta khởi chạy mạng neuron trên một hình ảnh mới ở quá trình kiểm thử để dự đoán khả năng nhận diện của nó Mạng cơ sở ở phiên bản đầu tiên này khởi chạy

45 frame mỗi giây với quy trình xử lý không dùng batch trên GPU Titan X và phiên bản nhanh có thể khởi chạy hơn 150 fps Điều này có nghĩa là ta có thể xử

lí luồng video một cách real-time với độ trễ ít hơn 25 mili-giây Hơn nữa, YOLO đạt được gấp hai lần độ chính xác trung bình của các hệ thống real-time khác Thứ hai, YOLO suy luận từ toàn bộ hình ảnh khi dự đoán Không giống như kĩ thuật cửa sổ trượt và vùng đề nghị, YOLO có thể quan sát toàn bộ hình ảnh trong suốt quá trình huấn luyện và quá trình kiểm thử nên nó mã hóa hoàn toàn thông tin khung cảnh của các class cũng như sự xuất hiện của chúng Thuật toán Fast R-CNN là một phương pháp nhận diện vật thể hàng đầu nhưng lại nhận diện sai phần background của một ảnh bởi vì nó không thể quan sát khung cảnh lớn hơn

Ngày đăng: 14/12/2024, 15:44

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w