Nghiên cứu ứng dụng thư viện Tensorflow trong Machine LearningNghiên cứu ứng dụng thư viện Tensorflow trong Machine LearningNghiên cứu ứng dụng thư viện Tensorflow trong Machine LearningNghiên cứu ứng dụng thư viện Tensorflow trong Machine LearningNghiên cứu ứng dụng thư viện Tensorflow trong Machine LearningNghiên cứu ứng dụng thư viện Tensorflow trong Machine LearningNghiên cứu ứng dụng thư viện Tensorflow trong Machine LearningNghiên cứu ứng dụng thư viện Tensorflow trong Machine LearningNghiên cứu ứng dụng thư viện Tensorflow trong Machine LearningNghiên cứu ứng dụng thư viện Tensorflow trong Machine LearningNghiên cứu ứng dụng thư viện Tensorflow trong Machine LearningNghiên cứu ứng dụng thư viện Tensorflow trong Machine Learning
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
-
LƯƠNG CÔNG DUẨN
NGHIÊN CỨU ỨNG DỤNG THƯ VIỆN TENSORFLOW TRONG
Trang 2Luận văn được hoàn thành tại:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Người hướng dẫn khoa học: TS NGUYỄN NGỌC MINH
Phản biện 1:
Phản biện 2:
Luận văn đã được bảo vệ trước Hội đồng chấm luận văn thạc sĩ tại Học viện Công nghệ Bưu chính Viễn thông
Vào lục: giờ ngày tháng năm 2018
Có thể tìm hiểu luận văn tại:
‐ Thư viện của Học viện Công nghệ Bưu chính Viễn Thông
Trang 3MỞ ĐẦU
Hiện nay, Machine learning đang trở thành một trong những thành phần dự kiến có ảnh hưởng lớn đến cuộc cách mạng công nghiệp 4.0 Các chương trình về Data Meaning, Machine learning, Deep learning, Big Data kết hợp với lượng dữ liệu khổng lồ do IoT (Internet of Things) thu thập đang được tập trung phát triển mạnh mẽ trong một số năm gần đây Xu thế này đang ngày càng ảnh hưởng lớn tới cuộc sống thường ngày, sản xuất, hoạt động xã hội và cả những phương thức quản lý và giám sát của chính phủ Việc áp dụng khả năng học máy trong khoa học công nghệ cũng như trong cuộc sống sẽ dần trở nên phổ biến Nắm bắt xu thế đó đồng thời theo định hướng nghiên cứu sau này của bản thân em muốn được sử dụng thời gian nghiên cứu và xây dựng luận văn này để thực hiện nghiên cứu về Machine learning nói chung và tập trung vào Deep learning từ đó phát triển các ứng dụng cơ bản làm nền tảng để tiếp tục phát triển các ứng dụng về Machine learning ở mức cao
Trong rất nhiều các bộ thư viện hỗ trợ nghiên cứu và phát triển về Machine learning nói chung và Deep learning nói riêng có bộ thư viện Tensorflow là một công cụ
có tuổi đời khá trẻ nhưng có năng lực rất tốt và được đánh giá cao trong lĩnh vực này Ở luận văn em định hướng nghiên cứu về các mô hình và các thuật toán cơ bản của Machine learning nói chung và Deep learning nói riêng từ đó sử dụng Tensorflow để thử nghiệm
sử dụng thư viện này đồng thời phát triển một mô hình Deep learning cơ bản sử dụng bộ thư viện này
Sau quá trình tìm hiểu và nghiên cứu học viên đã xây dựng luận văn với cấu trúc gồm 3 chương chính như sau:
Chương I: Giới thiệu về Machine Learning
Chương II: Xây dựng mô hình, lựa chọn thuật toán, tiến hành thử nghiệm
Chương III: Xây dựng phần mềm, triển khai huấn luyện và đánh giá hiệu năng huấn luyện của mô hình
Trang 4CHƯƠNG I:
GIỚI THIỆU VỀ MACHINE LEARNING 1.1 Khái quát lịch sử phát triển và những thành tựu đạt được của Machine Learning
Machine Learning (Học máy hoặc Máy học) là một lĩnh vực của trí tuệ nhân tạo
liên quan đến việc nghiên cứu và xây dựng các kĩ thuật cho phép các hệ thống "học" tự động từ dữ liệu để giải quyết những vấn đề cụ thể Trong machine learning, các máy tính không cần phải được lập trình một cách rõ ràng nhưng có thể tự thay đổi và cải thiện các thuật toán của chúng
Hình 1 1: Biểu đồ thời gian quá trình phát triển của trí tuệ nhân tạo
Trí tuệ nhân tạo được coi là một nhân tố lớn trong cách mạng công nghiệp lần thứ
4 của thế giới Nó đang được áp dụng rộng rãi trong rất nhiều các lĩnh vực như: Nông nghiệp, công nghiệp, y tế, xã hội,… và không chỉ dành cho các nhà khoa học, tổ chức hay công ty lớn mà mọi người đều có thể áp dụng trong các bài toán có thể gặp trong cuộc sống
1.2 Một số mô hình thường dùng trong Machine Learning và Deep Learning
1.2.1 Học có giám sát (Supervised Learning)
Supervised learning là khi chúng ra có một tập hợp biến đầu vào
1 2
{ , , , N}
X x x x và một tập nhãn tương ứng Y { ,y y1 2, ,y N} trong đó x y i, i là các vector
( ),
y f x i
Trang 5Với mục tiêu tìm hàm xấy xỉ f tốt nhất có thể để khi có tập giá trị x mới hàm f có thể tính toán được nhãn một cách tương ứng bằng hàm đã xây dựng được từ tập mẫu ban đầu
Hình 1 1: Mô hình học máy có giám sát
Thuật toán học có giám sát được chia làm hai loại chính đó là: Phân loại (Classification) và Hồi quy (Regression)
1.2.1.1 Phân loại (Classification)
Một bài toán được gọi là phân loại nếu các nhãn của dữ liệu đầu vào được chia thành một số hữu hạn các nhóm theo các nhãn Công việc phân loại tiến hành của mô hình học máy sẽ tiến hành học dựa vào tập dữ liệu có sẵn từ đó sau khi chúng ta đưa dữ liệu mới, nó có thể chỉ ra cho chúng ta dữ liệu ấy có thể là một trong các loại nhãn đã được khai báo trong tập dữ liệu mẫu
1.2.1.2 Hồi quy (Regression)
Đối với các bài toán mà tập đích trong tập dữ liệu huấn luyện có dạng liên tục không thể hoặc rất khó để có thể phân nhóm thì bài toán được xếp vào dạng bài toán hồi quy
1.2.2 Học không giám sát (Unsupervised Learning)
Không phải tất cả dữ liệu thu thập được trong thực tế đều có giá trị nhãn được xác định mà chúng ta chỉ có tập dữ liệu đầu vào Thuật toán học không giám sát lúc này chủ yếu dựa vào cấu trúc của tập dữ liệu để thực hiện công việc nào đó như phân nhóm hoặc giảm chiều dữ liệu để làm gọn tập dữ liệu thuận tiện cho việc lưu trữ và tính toán sau này Các bài toán Unsupervised learning được tiếp tục chia nhỏ thành hai loại là: Phân nhóm và giảm chiều dữ liệu
Trang 61.2.2.1 Phân nhóm (Clustering)
Bài toán phân nhóm là bài toán phân nhóm toàn bộ dữ liệu từ tập đầu vào X
thành các nhóm nhỏ dựa vào sự liên quan giữa các dữ liệu trong mỗi nhóm Bài toán này tương tự như bài toán phân loại ở mục học có giám sát bị bỏ đi tập nhãn đầu ra tuy nhiên việc phân nhóm như thế nào kết quả đầu ra là hoàn toàn không thể xác định cho đến khi thuật toán được thực hiện
1.2.2.2 Giảm chiều dữ liệu (Dimensionality reduction)
Trên thực tế có một số thông số của dữ liệu đầu vào không ảnh hưởng hoặc ảnh hưởng không nhiều đến các kết quả đầu ra thực tế vì thế chúng ta có thể loại
bỏ các thông số này để tiết kiệm tài nguyên lưu trữ và làm gia tăng tốc độ tính toán của các hệ thống học Điều này có thể được thực hiện bởi các thuật toán giảm chiều dữ liệu Với đầu vào là tất cả các thông số chúng ta đã thu thập được
và đầu ra là tập dữ liệu đã được loại bỏ đi các thành phần dữ liệu không thực sự cần thiết
1.2.3 Học bám giám sát (Semi-Supervised Learning)
Trong thực tế có những bài toán có tập dữ liệu mà chỉ một phần trong lượng lớn dữ liệu được đính nhãn đầu ra Bài toán này là bài toán nằm giữa bài toán học
có giám sát và học không có giám sát
Một thuật toán học bán giám sát được sử dụng sẽ học các ví dụ có nhãn, sau
đó tiến hành gán nhãn cho một số (có lựa chọn) ví dụ không có nhãn một cách hợp
lý, có đánh giá chất lượng công việc hay độ chính xác Tiếp theo, chọn các ví dụ
vừa được gán nhãn có độ tin cậy cao (vượt trên một ngưỡng chọn trước) đưa vào
kết hợp với tập dữ liệu có nhãn, tạo thành một tập dữ liệu huấn luyện mới sau đó
áp dụng một phương pháp kiểm thử để đánh giá hiệu năng/độ chính xác của mô hình
1.2.4 Học củng cố (Reinforcement Learning)
Học củng cố là các bài toán giúp cho 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 Hiện tại, học củng cố 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
Trang 71.3 Một số thuật toán đặc trƣng trong huấn luyện Machine Learning
1
w w g
Hệ số được coi là tỉ lệ học
Việc tối ưu vector tham số được chia làm 2 bước sau:
Tính toán giá trị và chiều sai số của thông số hiện tại
Hiệu chỉnh các thông số của phương trình
1.3.2 Phương pháp Newton
Phương pháp Newton là thuật toán tối ưu hóa thứ hai và nó sử dụng phương pháp trên nền tảng ma trận Hessian Mục tiêu của thuật toán này là tìm hướng huấn luyện tốt hơn bằng cách sử dụng đạo hàm bậc hai của hàm mất mát
Thuật toán Newton cho thấy hiệu quả cao trong việc tìm giá trị tối thiểu của hàm mất mát Tuy nhiên, thuật toán này có một vấn đề khó khăn trong triển khai thực tế đó là vấn đề tốn tài nguyên hệ thống trong việc tính toán ma trận đảo của ma trận Hessian ( 1
H )
1.3.3 Gradient kết hợp
Thuật toán Gradient kết hợp được coi là thuật toán kết hợp giữa Gradient Desent và thuật toán Newton Phương pháp này được xây dựng với mục tiêu khắc phục sự hội tụ chậm của phương pháp Gradient Desent và giảm bớt sự phức tạp về tính toán và lưu trữ bộ nhớ của phương pháp Newton
Giả sử d là vector huấn luyện, chúng ta tiến hành bắt đầu huấn luyện với vector thông số w0 và khởi tạo vector huấn luyện theo công thức d g i Phương pháp gradient kết hợp được tiến hành dựa vào phương trình lặp sau:
d g d
Trang 8Với i được gọi là thông số kết hợp Thông số này có rất nhiều cách tính trong
đó có hai cách phổ biến đó là 2 phương pháp của Fletcher, Reeves và Polak, Ribiere Sau khi tính toán được thông số vector huấn luyện chúng ta có thể tiến hành cập nhật giá trị tham số theo công thức sau:
Từ những ưu và nhược điểm của phương pháp Newton một phương pháp khác
có tên là Quasi-Newton được thiết kế ra để giải quyết những hạn chế đó của phương pháp Newton Phương án này tận dụng khả năng tính toán nhan của phương pháp Newton nhưng tránh việc tính toán ma trận Hessian bằng cách sử dụng phương án tính xấp xỉ cả ma trận Hessian và nghịch đảo của nó
Ý tưởng của phương án này là tính xấp ma trận Hessian và nghịch đảo của nó bằng một ma trận khác có tên là G
Thuật toán này được sử dụng trong rất nhiều trường hợp vì khả năng tính toán
đã được cả thiện so với phương pháp Newton và về tốc độ hội tụ thì nhanh hơn rất nhiều so với Gradient Desent và Gradient kết hợp
1.3.5 Thuật toán Levenberg-Marquardt
Thuật toán Levenberg-Marquardt là thuật toán được thiết kế hoạt động dành riêng cho hàm mất mát được xây dựng trên nền tảng tổng bình phương của các sai
số Thuật toán này hoạt động dựa trên nền tảng vector gradient và ma trận Jacobian Thuật toán trên có ưu điểm tích hợp được ưu điểm của cả 2 phương pháp Gradient Desent và Newton tại các thời điểm phù hợp khác nhau và đặc biệt nó được thiết kế để huấn luyện rất nhanh Tuy nhiên, phương pháp này cũng có nhược điểm
là khi tập mẫu lớn thuật toán sẽ chiếm tài nguyên rất lớn vì vậy thuật toán này không được ưu tiên sử dụng đối với các bài toán huấn luyện với lượng dữ liệu cũng như kiến trúc mạng lớn
Trang 91.3.6 So sánh các thuật toán về tốc độ và bộ nhớ
Hình 1 2: So sánh về tốc độ xử lý và bộ nhớ của các thuật toán
Dựa vào hình cho thấy thuật toán có tốc độ nhanh nhất và cũng chiếm nhiều bộ nhớ nhất là thuật toán Levenberg-Marquardt và thuật toán cơ bản nhất có tốc độ chậm nhưng cũng chiếm ít bộ nhớ nhất là thuật toán Gradient Desent Phương pháp
có khả năng cân bằng tốt nhất giữa tốc độ và bộ nhớ là phương pháp Quasi-Newton
1.4 Giới thiệu về bộ thƣ viện Tensorflow và ứng dụng
1.4.1 Giới thiệu
TensorFlow là một thư viện phần mềm mã nguồn mở dành cho máy học trong nhiều loại hình tác vụ nhận thức và hiểu ngôn ngữ TensorFlow được phát triển bởi đội Google Brain cho mục đích nghiên cứu và sản xuất của Google và sau đó được phát hành theo giấy phép mã nguồn mở Apache 2.0 vào ngày 9/11/2015
Vào tháng 6/2016, Jeff Dean của Google cho biết đã có 1.500 repository (kho) trên GitHub đề cập tới TensorFlow, trong đó chỉ có 5 đến từ Google
Các mô hình Deep Learning phát triển trên TensorFlow có thể được sử dụng trên nhiều nền tảng hệ điều hành, phần cứng khác nhau và trên cả CPU lẫn GPU
Hình 1 3: TensorFlow hỗ trợ tính toán song song trên cả CPU và GPU
Trang 101.4.2 Các khái niệm trong Tensorflow
1.4.2.1 Node
Vì Tensorflow mô tả lại dòng chảy của dữ liệu thông qua graph nên mỗi một điểm giao cắt trong graph thì được gọi là Node Vì các Node chính là điểm đại diện cho việc thay đổi của dữ liệu nên việc lưu trữ lại tham chiếu của các Node này là rất quan trọng
1.4.2.2 Tensor
Tensorflow cung cấp một loại dữ liệu mới được gọi là Tensor trong thế giới của Tensorflow, mọi kiểu dữ liệu đều được quy về một mối được gọi là Tensor hay trong Tensorflow
1.4.2.3 Rank
Rank là bậc hay độ sâu của một Tensor Ví dụ như Tensor = [1] sẽ có rank
là 1, Tensor = [[[1,1,1], [178,62,74]]] sẽ có rank bằng 3, Tensor = [[1,1,1], [178,62,74]] sẽ có rank bằng 2 Cách nhanh nhất để xác định rank của một Tensor
là đếm số lần mở ngoặc vuông cho đến giá trị khác ngoặc vuông đầu tiên Việc phân rank này khá quan trọng vì nó đồng thời cũng giúp phân loại dữ liệu của Tensor
1.4.2.4 Shape
Shape là một tuple có số chiều bằng với rank của Tensor tương ứng dùng để
mô tả lại cấu trúc của Tensor đó
1.4.2.5 Toán tử - Operator
Được viết tắt là op, khái niệm Operator là toán tử được dùng để thực thi Tensor tại node đó Các toán tử này có thể là Hằng số, Biến số, Phép cộng, Phép nhân
1.4.2.6 DType
Đây là kiểu dữ liệu của các phần tử trong Tensor Vì một Tensor chỉ có duy nhất một thuộc tính DType nên từ đó cũng suy ra là chỉ có duy nhất một kiểu DType duy nhất cho toàn bộ các phần tử có trong Tensor hiện tại
1.5 Kết luận
Chương này đã trình bày sơ lược được về quá trình hình thành và phát triển của trí tuệ nhân tạo, học máy, học sâu và giới thiệu được các mô hình mạng, các thuật toán thông dụng trong các chương trình về học máy Ngoài ra, chương này cũng đã giới
Trang 11thiệu được về các thành phần cơ bản trong thư viện học máy Tensorflow Chương tiếp theo sẽ trình bày sâu hơn về các mô hình và thuật toán mà học viên sử dụng từ đó đưa
ra mô hình mạng phù hợp để tiến hành huấn luyện và thử nghiệm
Trang 12CHƯƠNG II:
XÂY DỰNG MÔ HÌNH, LỰA CHỌN THUẬT TOÁN, TIẾN HÀNH
THỬ NGHIỆM 2.1 Giới thiệu bài toán và các vấn đề áp dụng mô hình Machine Learning
Với mục đích nghiên cứu về Deep Learning và sử dụng thư viện Tensorflow để thử nghiệm các tìm hiểu của mình, dựa vào mục tiêu nghiên cứu lâu dài của bản thân về hệ
thống xe tự lái (self-driving) ở luận văn học viên định hướng tìm hiểu và nghiên cứu về
bài toán nhận diện hình ảnh cụ thể hơn là nhận diện các biển báo giao thông sử dụng mô
hình mạng neural tích chập (CNN - Convolution Neural Network) làm nền tảng cho các
nghiên cứu sau này
Bài toán nhận diện hình ảnh là một bài toán cơ bản và phù hợp với nghiên cứu về Deep Learning ở giai đoạn đầu Với định hướng sử dụng mạng CNN thì vấn đề đặt ra ngoài việc hiểu về các kiến thức chung về Machine Learning, ở chương này em sẽ trình bày về những kiến thức thu lượm được trong quá trình nghiên cứu và tìm hiểu về mạng CNN bắt đầu từ mô hình mạng neural truyền thống từ đó phát triển và nghiên cứu tiếp tục
về mạng CNN
2.2 Lựa chọn mô hình mạng Machine Learning phù hợp
Ở phần này em sẽ trình bày lý thuyết về mạng neural truyền thống và mạng neural tích chập là mạng neural phổ biến trong cách chương trình huấn luyện có giám sát của Deep Learning
2.2.1 Giới thiệu mạng Neural truyền thống (MLP – Multilayer Perceptron)
2.2.1.1 Vấn đề đặt ra
2.2.1.2 Các ký hiệu và khái niệm
a Lớp mạng