1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Nghiên cứu ứng dụng thư viện Tensorflow trong Machine Learning (Luận văn thạc sĩ)

25 1,2K 2

Đ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 25
Dung lượng 0,94 MB

Nội dung

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 1

HỌ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 2

Luậ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 3

MỞ ĐẦ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 4

CHƯƠ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}

Xx 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

( ),

yf xi

Trang 5

Vớ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 6

1.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 7

1.3 Một số thuật toán đặc trƣng trong huấn luyện Machine Learning

1

w wg

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 8

Vớ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 9

1.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 10

1.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 11

thiệ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 12

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 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

Ngày đăng: 08/03/2018, 10:48

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

TÀI LIỆU LIÊN QUAN

w