Ngày nay với sự phát triển vượt bậc của công nghệ trong những năm gần đây chúng ta hàng ngày phải tiếp nhận một lượng lớn thông tin đến từ nhiều nguồn khác nhau. Từ mạng xã hội, những bài báo, blog, email, tin nhắn, ... tất cả đều sinh ra một khối lượng dữ liệu khổng lồ và các dữ liệu đó thể hiện ý định của người dùng. Chính vì vậy nhờ có trí tuệ nhân tạo ta có thể xác định được ý định người dùng và đưa ra một số chỉ dẫn đúng với mong muốn của người dùng. Nhận dạng ý định, còn thường được gọi là phân loại ý định, sử dụng công nghệ máy học và xử lí ngôn ngữ tự nhiên để liên kết dữ liệu văn bản với một ý định nhất định. Ví dụ : trong một bài đăng của của người dùng có một câu “Tôi muốn mua một căn nhà ở Long Biên Hà Nội rộng 500m2”, mô hình sẽ học từ dữ liệu người dùng đăng dựa vào các cụm từ chính, chẳng hạn như “một căn nhà” hoặc “Long Biên Hà Nội rộng 500m2” để phân lớp câu văn trên vào lớp “Bất Động Sản”. Do đó, nhận dạng ý định có thể được coi là quá trình phân loại văn bản viết dựa trên những gì người dùng mong muốn đạt được. Phân loại ý định là một yếu tố thay đổi cuộc chơi quan trọng đối với các doanh nghiệp, đặc biệt là liên quan đến trải nghiệm của khách hàng. Ví dụ, hộp trò chuyện là một nền tảng phổ biến sử dụng nhận dạng ý định cho các cuộc trò chuyện bán hàng, hỗ trợ khách hàng … Tự động hóa nhu cầu dịch vụ khách hàng thông qua phân loại ý định cho phép doanh nghiệp mở rộng quy mô và đáp ứng nhu cầu của khách hàng nhanh hơn. Với những thành công của mạng nơ ron trong xử lý ngôn ngữ tự nhiên, em muốn xây dựng một hệ thống sử dụng các mô hình trong Deep Learning vào bài toán xác định lĩnh vực của ý định người dùng Việt Nam. Đồ án bao gồm các phần được phân chương sau: Chương 1: Giới thiệu tổng quan đề tài Chương 2: Phương pháp học sâu với bài toán phân lớp văn bản Chương 3: Xây dựng mô hình học sâu cho bài toán xác định ý định của người dùng Việt Nam
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN TỐT NGHIỆP
ĐỀ TÀI
XÁC ĐỊNH LĨNH VỰC CỦA Ý ĐỊNH NGƯỜI DÙNG VIỆT
NAM SỬ DỤNG MÔ HÌNH HỌC SÂU
Giảng viên hướng dẫn : TS Lương Thái Lê Sinh viên thực hiện : Đào Trọng Hiếu
Hà Nội, 2023
Trang 2KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN TỐT NGHIỆP
ĐỀ TÀI
XÁC ĐỊNH LĨNH VỰC CỦA Ý ĐỊNH NGƯỜI DÙNG VIỆT
NAM SỬ DỤNG MÔ HÌNH HỌC SÂU
Giảng viên hướng dẫn : TS Lương Thái Lê Sinh viên thực hiện : Đào Trọng Hiếu
Hà Nôi, 2023
Trang 3NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Hà Nội, ngày… tháng……2023
Giảng viên hướng dẫn
TS.Lương Thái Lê
Trang 4Em xin chân thành gửi lời cảm ơn đến gia đình em, đặc biệt là mẹ đã luôn ủng hộ những lựa chọn của em Đồng thời em xin cảm ơn những ý kiến đóng góp bổ ích của thầy cô, bạn bè để em hoàn thành đồ án tốt nghiệp này Dù đã có nhiều cố gắng để hoàn thiện nhưng đồ án tốt nghiệp của em không tránh khỏi những thiếu sót, em mong nhận được những lời nhận xét và chia sẻ quý báu của thầy cô để đề tài được hoàn chỉnh hơn
Em xin chân thành cảm ơn!
Hà Nội, tháng 06 năm 2023
Sinh viên
Đào Trọng Hiếu
Trang 5MỤC LỤC
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN 1
LỜI CẢM ƠN 2
MỤC LỤC 3
DANH MỤC TỪ VIẾT TẮT 5
DANH MỤC BẢNG BIỂU 6
DANH MỤC HÌNH ẢNH 7
MỞ ĐẦU 8
CHƯƠNG 1 GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI 9
1.1 Lựa chọn đề tài nghiên cứu 9
1.2 Nội dung và phạm vi đề tài 10
1.2 Ý nghĩa lý luận và ý nghĩa thực tiễn của đề tài 10
1.3 Kết quả dự kiến 10
1.4 Tổng quan về xác định lĩnh vực ý định người dùng 10
1.5 Công cụ sử dụng nghiên cứu 11
1.5.1 Docker 11
1.5.2 Microsoft Azure 13
1.5.3 Selenium 17
1.5.4 FLASK 18
1.5.5 Google Colab 19
CHƯƠNG 2 PHƯƠNG PHÁP HỌC SÂU VỚI BÀI TOÁN PHÂN LỚP VĂN BẢN 20
2.1 Giới thiệu về học sâu 20
2.1.1 Giới thiệu chung 20
2.1.2 Mạng nơron nhân tạo 20
2.1.3 Các thuật toán huấn luyện 22
2.1.4 Một số mô hình mạng nơron điển hình 23
2.2 Mạng nơron hồi quy RNN 26
Trang 62.3 Mạng Long Short Term Memory LSTM 28
2.3 Mạng nơron tích chập CONV 33
2.4 Thư viện Tensorflow 35
CHƯƠNG 3 XÂY DỰNG MÔ HÌNH HỌC SÂU CHO BÀI TOÁN XÁC ĐỊNH Ý ĐỊNH NGƯỜI DÙNG VIỆT NAM 37
3.1 Nhắc lại bài toán 37
3.2 Các lớp dữ liệu 37
3.3 Mô hình đề xuất 39
3.4 Chuẩn bị dữ liệu 39
3.4.1 Thu thập dữ liệu 39
3.4.2 Làm sạch dữ liệu 40
3.4.2 Tăng cường dữ liệu 41
3.4.3 Tiền xử lí dữ liệu 42
3.5 Trích xuất đặc trưng 43
3.5.1 Đặc trưng về ngữ nghĩa và từ loại 43
3.5.2 Đặc trưng của từ mức ký tự 43
3.6 Xây dựng mô hình học sâu 44
3.7 Kết quả thực nghiệm 48
3.7.1 Độ đo đánh giá 48
3.7.2 Kết quả mô hình 49
3.8 Xây dựng Website tương tác với mô hình 50
3.9 Đóng gói sản phẩm bằng docker 50
3.10 Đưa sản phẩm lên Azure Cloud 51
KẾT LUẬN 52
TÀI LIỆU THAM KHẢO 53
Trang 7DANH MỤC TỪ VIẾT TẮT
1 Bi-LSTM Bi-directional Long-Short
Term Memory
Bộ nhớ dài ngắn 2 chiều
2 CNN ConvolutionalNeural Network Mạng nơron tích chập
5 NLP Natural Language Processing Xử lí ngôn ngữ tự nhiên
6 RNN Recurrent Nerual NetWork Mạng nơron hồi quy
Programming Interface
Giao diện lập trình ứng
dụng
Trang 8DANH MỤC BẢNG BIỂU
Bảng 2 1 Một số hàm kích hoạt thường gặp 22
Bảng 3 1 Ví dụ miêu tả dự định , ý định 37
Bảng 3 2 Làm sạch dữ liệu với RE 40
Bảng 3 3 Tăng cường dữ liệu với nlaug 42
Bảng 3 4 Phân đoạn từ sử dụng VnCoreNLP 43
Bảng 3 5 Danh sách các tham số của mô hình LSTM 45
Bảng 3 6 Danh sách các tham số của mô hình CONV1D 47
Bảng 3 7 Bảng so sánh thực nghiệm giữa 2 mô hình LSTM và CONV1D 49
Trang 9
DANH MỤC HÌNH ẢNH
Hình 1 1 Kiến trúc docker 12
Hình 1 2 Microsoft Azure 14
Hình 1 3 Thư viện Flask 18
Hình 1 4 Cấu hình phần cứng do Google Colab cung cấp 19
Hình 2 1 Mạng perceptron đơn 21
Hình 2 2 Quá trình xử lí thông tin trong mạng RNN 27
Hình 2 3 RNN phụ thuộc short-term 28
Hình 2 4 RNN phụ thuộc long-term 29
Hình 2 5 Các moudule lặp của mạng RNN chứa một layer 29
Hình 2 6 Các module lặp của mạng LSTM chứa bốn layer 30
Hình 2 7 Cell state của LSTM giống như một băng truyền 30
Hình 2 8 Cổng trạng thái LSTM 31
Hình 2 9 LSTM focus f 31
Hình 2 10 LSTM focus i 32
Hình 2 11 LSTM focus c 32
Hình 2 12 LSTM focus o 33
Hình 2 13 Trích xuất đặc trưng mức ký tự từ “Học_sinh” sử dụng CNN 35
Hình 2 14 Thư viện TensorFlow 35
Hình 3 2 Mô hình hóa quy trình đồ án tốt nghiệp 39
Hình 3 3 Thống kê số lượng của mỗi lớp ý định 41
Hình 3 4 Kiến trúc mô hình mạng học sâu với LSTM 44
Hình 3 5 Kiến trúc mô hình học sâu với CONV1D 46
Hình 3 6 Mô tả các độ đo chính xác , độ hồi tưởng 49
Hình 3 7 Website dự đoán ý định người dùng Việt Nam 50
Hình 3 8 Cấu hình Dockerfile 50
Hình 3 9 Giao diện Website khi đưa lên môi trường Azure Cloud 51
Trang 10MỞ ĐẦU
Ngày nay với sự phát triển vượt bậc của công nghệ trong những năm gần đây chúng
ta hàng ngày phải tiếp nhận một lượng lớn thông tin đến từ nhiều nguồn khác nhau Từ mạng xã hội, những bài báo, blog, email, tin nhắn, tất cả đều sinh ra một khối lượng
dữ liệu khổng lồ và các dữ liệu đó thể hiện ý định của người dùng Chính vì vậy nhờ có trí tuệ nhân tạo ta có thể xác định được ý định người dùng và đưa ra một số chỉ dẫn đúng với mong muốn của người dùng
Nhận dạng ý định, còn thường được gọi là phân loại ý định, sử dụng công nghệ máy học và xử lí ngôn ngữ tự nhiên để liên kết dữ liệu văn bản với một ý định nhất định Ví dụ : trong một bài đăng của của người dùng có một câu “Tôi muốn mua một căn nhà ở Long Biên
Hà Nội rộng 500m2”, mô hình sẽ học từ dữ liệu người dùng đăng dựa vào các cụm từ chính, chẳng hạn như “một căn nhà” hoặc “Long Biên Hà Nội rộng 500m2” để phân lớp câu văn trên vào lớp “Bất Động Sản” Do đó, nhận dạng ý định có thể được coi là quá trình phân loại văn bản viết dựa trên những gì người dùng mong muốn đạt được
Phân loại ý định là một yếu tố thay đổi cuộc chơi quan trọng đối với các doanh nghiệp, đặc biệt là liên quan đến trải nghiệm của khách hàng Ví dụ, hộp trò chuyện là một nền tảng phổ biến sử dụng nhận dạng ý định cho các cuộc trò chuyện bán hàng, hỗ trợ khách hàng …
Tự động hóa nhu cầu dịch vụ khách hàng thông qua phân loại ý định cho phép doanh nghiệp
mở rộng quy mô và đáp ứng nhu cầu của khách hàng nhanh hơn
Với những thành công của mạng nơ ron trong xử lý ngôn ngữ tự nhiên, em muốn xây dựng một hệ thống sử dụng các mô hình trong Deep Learning vào bài toán xác định lĩnh vực của ý định người dùng Việt Nam
Đồ án bao gồm các phần được phân chương sau:
Chương 1: Giới thiệu tổng quan đề tài
Chương 2: Phương pháp học sâu với bài toán phân lớp văn bản
Chương 3: Xây dựng mô hình học sâu cho bài toán xác định ý định của người
dùng Việt Nam
Trang 11CHƯƠNG 1 GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI
1.1 Lựa chọn đề tài nghiên cứu
Các công nghệ liên tục phát triển và mọi người đang dựa vào chúng ngày càng nhiều cho các tác vụ hàng ngày, điều đó có nghĩa là khối lượng và tính khả dụng của dữ liệu văn bản tiếp tục tăng theo cấp số nhân Với sự gia tăng của các dịch vụ trực tuyến, các công ty rất khó theo kịp tốc độ thu thập dữ liệu chất lượng Các mô hình nhận dạng
ý định đã được phát triển để tạo điều kiện đánh dấu và phân loại sự rộng lớn của dữ liệu văn bản
Nhận dạng ý định là một thuật ngữ được sử dụng trong xử lý ngôn ngữ tự nhiên (NLP) để mô tả mục đích hoặc ý định đằng sau một biểu hiện ngôn ngữ, chẳng hạn như một lời khẳng định hoặc một câu hỏi Khi có liên quan đến dữ liệu, nhận dạng ý định đề cập đến ý định đằng sau một truy vấn hoặc hành động được thực hiện bằng dữ liệu cụ thể Ví dụ: người dùng tìm kiếm internet với đối tượng tìm kiếm thông tin về dịch vụ trên trang web hoặc muốn mua dịch vụ trực tuyến, v.v phát hiện ý định đằng sau các biểu thức ngôn ngữ là một nhiệm vụ chính trong NLP và có thể được sử dụng để cải thiện Phản ứng mà các hệ thống tự động cung cấp cho con người [1]
Các mô hình xử lý ngôn ngữ tự nhiên có thể phát hiện ý định đằng sau một biểu thức ngôn ngữ bằng cách tự động học các mẫu trong bộ dữ liệu đào tạo Điều này đặc biệt hữu ích cho các ứng dụng trò chuyện, chẳng hạn như trợ lý ảo, chatbot, v.v., nơi cần phải hiểu ý định của người dùng để có thể đáp ứng theo nhu cầu của họ Sau khi tìm hiểu kĩ lưỡng em quyết định lựa chọn “Xác định lĩnh vực của ý định người dùng Việt Nam sử dụng mô hình học sâu” làm đồ án tốt nghiệp với những lí do sau:
- Đề tài là sự tính lũy kiến thức em học được từ trong suốt thời gian học được các
kỳ học trước như : Chuyên đề khoa học máy tính, Trí tuệ nhân tạo, Lập trình Web, Phân tích thiết kế hệ thống,…
- Dự án với mục tiêu sử dụng mô hình LSTM, CONV1D (một kiến trúc mô hình học sâu sử dụng phổ biến cho bài toán phân lớp văn bản)
- Mang tính thực tiễn, ứng dụng cao cho các doanh nghiệp muốn khai thác các khía cạnh của khách hàng, đưa ra bài toán kinh doanh hợp lí
Vì vậy, em lựa chọn đề tài “Xác định lĩnh vực của ý định người dùng Việt Nam sử dụng mô hình học sâu” làm đồ án tốt nghiệp
Trang 121.2 Nội dung và phạm vi đề tài
*Nội dung :
- Khảo sát và tìm hiểu nguồn dữ liệu
- Thu thập dữ liệu
- Làm sạch dữ liệu và đánh nhãn
- Xây dựng mô hình học sâu
- Phát triển API và Deploy lên Cloud
*Phạm vi :
- Xác định lĩnh vực của ý định người dùng Việt Nam
1.2 Ý nghĩa lý luận và ý nghĩa thực tiễn của đề tài
- Đề tài đóng góp vai trò quan trọng trong việc nâng cao kiến thức và dần tiếp cận tới việc xây dựng một ứng dụng thực tế cao, giúp ginh viên có thêm những kiến thức, kinh nghiệm, trải nghiệm trong lĩnh vực AI
- Nâng cao khả năng tự học
- Nâng cao khả năng làm việc độc lập
- Củng cố và nâng cao, tiếp thu kiến thức mới, công nghệ mới
tô bảy chỗ vào tuần tới” hoặc “Chúng tôi đang tìm một căn hộ gần trung tâm thành phố” trên một diễn đàn thảo luận hoặc trên tường Facebook của chính họ Những bài đăng đó được gọi là “bài đăng ý định” bởi vì chúng mang ý định của người dùng để làm điều gì đó trong tương lai gần Các bài đăng hoặc tin nhắn có ý định rõ ràng là một nguồn kiến thức có giá trị cho các doanh nghiệp Nếu doanh nghiệp biết và hiểu chính xác người dùng đang định làm gì, họ có thể dễ dàng tìm được một lượng lớn khách hàng tiềm năng phù hợp với lĩnh vực kinh doanh của mình Tuy nhiên, câu hỏi thách thức nhất là làm thế nào chúng ta có thể xử lý, phân tích và hiểu những ý định đó một cách tự động?
Trang 13Nắm bắt, phân tích và hiểu các bài đăng về ý định trên phương tiện truyền thông
xã hội trực tuyến là một quy trình gồm bốn giai đoạn: thu thập nguồn dữ liệu, lọc ý định của người dùng, xác định miền ý định, phân tích và trích xuất ý định
Trong đồ án tốt nghiệp này, em chỉ phân loại các bài viết về ý định vào một trong
13 lĩnh vực chính như “thiết bị điện tử”, ”thời trang”, ”phụ kiện”, ”tài chính”, ”dịch vụ
ăn uống”, ”trang trí nội thất”, ”tạp hóa”, ”du lịch”, ”khách sạn”, ”tài sản”, ”việc làm”,
”giáo dục”, ”giao thông”, ”sức khỏe và sắc đẹp”, ”thể thao và giải trí”, ”vật nuôi và cây trồng”, ”khác”
Em đã tiến hành thử nghiệm với dữ liệu thược được thu thập tự động từ các diễn đàn thảo luận và các mạng xã hội nổi tiếng Em đã xây dựng một bộ dữ liệu có nhãn kích thước trung bình gồm các bài viết bằng Tiếng Việt để đánh giá Các mô hình phân loại được đào tạo bằng cách dử dụng LSTM và CONV1D
1.5 Công cụ sử dụng nghiên cứu
Trang 14a) Một sô khái niệm
Hình 1 1 Kiến trúc docker
- Docker Client: là cách tương tác với docker thông qua command trong terminal
Docker Client sẽ sử dụng API gửi lệnh tới Docker Daemon
- Docker Daemon: là server Docker cho yêu cầu từ Docker API Nó quản lý
images, containers, networks và volume
- Docker Volumes: là cách tốt nhất để lưu trữ dữ liệu liên tục cho việc sử dụng
và tạo apps
- Docker Registry: là nơi lưu trữ riêng của Docker Images Images được push
vào registry và client sẽ pull images từ registry Có thể sử dụng registry của riêng bạn hoặc registry của nhà cung cấp như : AWS, Google Cloud, Microsoft Azure
- Docker Hub: là Registry lớn nhất của Docker Images ( mặc định) Có thể tìm
thấy images và lưu trữ images của riêng bạn trên Docker Hub ( miễn phí)
- Docker Repository: là tập hợp các Docker Images cùng tên nhưng khác tags
VD: golang:1.11-alpine
- Docker Networking: cho phép kết nối các container lại với nhau Kết nối này
có thể trên 1 host hoặc nhiều host
- Docker Compose: là công cụ cho phép run app với nhiều Docker containers 1
cách dễ dàng hơn Docker Compose cho phép bạn config các command trong file docker-compose.yml để sử dụng lại Có sẵn khi cài Docker
- Docker Swarm: để phối hợp triển khai container
- Docker Services: là các containers trong production 1 service chỉ run 1 image
nhưng nó mã hoá cách thức để run image — sử dụng port nào, bao nhiêu bản sao container run để service có hiệu năng cần thiết và ngay lập tức
Trang 15b) Dockerfile
Dockerfile là file config cho Docker để build ra image Nó dùng một image cơ bản
để xây dựng lớp image ban đầu Một số image cơ bản: python, unbutu và alpine Sau đó nếu có các lớp bổ sung thì nó được xếp chồng lên lớp cơ bản Cuối cùng một lớp mỏng
có thể được xếp chồng lên nhau trên các lớp khác trước đó.[6]
Các config :
- FROM — chỉ định image gốc: python, unbutu, alpine…
- LABEL — cung cấp metadata cho image Có thể sử dụng để add thông tin
maintainer Để xem các label của images, dùng lệnh docker inspect
- ENV — thiết lập một biến môi trường
- RUN — Có thể tạo một lệnh khi build image Được sử dụng để cài đặt các
package vào container
- COPY — Sao chép các file và thư mục vào container
- ADD — Sao chép các file và thư mục vào container
- CMD — Cung cấp một lệnh và đối số cho container thực thi Các tham số có
thể được ghi đè và chỉ có một CMD
- WORKDIR — Thiết lập thư mục đang làm việc cho các chỉ thị khác như:
RUN, CMD, ENTRYPOINT, COPY, ADD,…
- ARG — Định nghĩa giá trị biến được dùng trong lúc build image
- ENTRYPOINT — cung cấp lệnh và đối số cho một container thực thi
- EXPOSE — khai báo port lắng nghe của image.- VOLUME — tạo một điểm
gắn thư mục để truy cập và lưu trữ data
1.5.2 Microsoft Azure
Trang 16a) Microsoft Azure là gì?
Hình 1 2 Microsoft Azure
Azure là một nền tảng điện toán đám mây được Microsoft ra mắt vào năm 2010
Các công cụ của Azure hỗ trợ người dùng lưu trữ dữ liệu không giới hạn, phát triển ứng
dụng, quản lý dịch vụ trên internet mà không cần tới bộ nhớ và phần cứng máy tính cá nhân Mọi hoạt động đều thực hiện và xử lý thông qua trung tâm dữ liệu của Microsoft.[7] Tại Mỹ, có tới 90% công ty lớn nhất đất nước thuộc danh sách Fortune 500 đang sử dụng Microsoft Azure để thúc đẩy hoạt động kinh doanh Các doanh nghiệp có thể tận dụng một loạt công cụ để nhanh chóng xây dựng, triển khai, quản lý các ứng dụng vận hành
So với các nền tảng đám mây khác, Azure mở rộng hơn, bảo mật hơn và mạnh mẽ hơn:
- Kết hợp 3 dạng mô hình đám mây là IaaS (Cơ sở hạ tầng dưới dạng dịch vụ), PaaS (Nền tảng dưới dạng dịch vụ), SaaS (Phần mềm dưới dạng dịch vụ)
- Linh hoạt, có thể di chuyển các tài các tài nguyên máy tính khi cần thiết
- Nền tảng mở, hỗ trợ hầu hết mọi hệ điều hành, mọi ngôn ngữ lập trình, mọi công
cụ
- Đáng tin cậy, SLA (cam kết chất lượng dịch vụ) đạt 99,95% và hỗ trợ 24/7
- Khi được cấp quyền truy cập, người dùng có thể khai thác, sử dụng các dữ liệu
và dịch vụ đã đưa lên Azure từ mọi khu vực trên thế giới
Các tính năng nổi bật của Azure:
Trang 17- Sao lưu và khôi phục sau thảm họa
- Lưu trữ, phát triển ứng dụng web và thiết bị di động Quản lý bản vá tự động, AutoScale
- Active Directory: Tạo khả năng tiếp cận toàn cầu, quản lý tập trung, nhất quán
và bảo mật mạnh mẽ
- Tính năng Azure IoT Hub giúp đổi mới các giải pháp công nghiệp chuyển đổi số
b) Những lợi ích tuyệt vời khi sử dụng Azure
Microsoft Azure cung cấp một loạt các dịch vụ hữu ích như máy ảo (Virtual Machines), cơ sở dữ liệu SQL[7], dịch vụ miền, dịch vụ ứng dụng, dịch vụ nhóm Visual Studio và lưu trữ
Hiện nay, có nhiều doanh nghiệp không muốn làm việc và lưu trữ dữ liệu trên điện toán đám mây vì lo ngại về rủi ro an ninh mạng, SAL và các sự cố tiềm ẩn Tuy nhiên với những ưu điểm về tốc độ và bảo mật của Azure, những vấn đề này sẽ chẳng còn hiện hữu
Azure hỗ trợ triển khai, quản lý các giải pháp CNTT hiện tại của doanh nghiệp; đồng thời cung cấp thêm nhiều giải pháp tùy chỉnh khác để giúp các công ty đạt được mục tiêu kinh doanh tốt nhất:
- Phát triển ứng dụng
- Hiện đại hóa các ứng dụng web
- Cung cấp Kubernetes không máy chủ, trải nghiệm CI/CD cũng như bảo mật và quản trị cấp doanh nghiệp
- Di chuyển dữ liệu qua đám mây
- Di chuyển Windows Server và SQL Server
- Di chuyển cơ sở dữ liệu nguồn mở và Linux
- SAP: Sử dụng máy ảo Azure chạy SAP HANA lớn nhất thế giới Có thể chuyển hàng trăm terabyte sang SAP chỉ trong vòng 1 ngày Giúp tăng dung lượng và giảm chi phí hoạt động thông qua việc ngừng hoạt động của các máy chủ vật lý
- Dữ liệu, phân tích và AI
- Di chuyển kho dữ liệu sang Azure
- Kết hợp cơ sở hạ tầng và đám mây
- Azure Virtual Desktop (Máy ảo)
- Azure hỗ trợ các công nghệ mã nguồn mở, vì vậy người dùng có thể sao lưu mọi loại ngôn ngữ trên mọi hệ điều hành, tại bất kỳ vị trí nào trên thế giới
- Người dùng có thể sử dụng nhiều công cụ quen thuộc như Visual Studio, ASP.NET và các ngôn ngữ lập trình như Visual Basic, C ++, C #,… để phát triển các ứng dụng doanh nghiệp thật hiệu quả
Trang 18- Azure mang lại năng suất không giới hạn, cung cấp các dịch vụ lưu trữ linh hoạt,
an toàn, bảo mật và hiệu quả trên đám mây
- Các ứng dụng luôn hoạt động dễ dàng với quy mô lên đến 10 triệu người dùng Chúng có thể được tạo mà không cần mã hóa bổ sung
- Azure tạo nền tảng nhất quán đáng tin cậy giữa đám mây tại chỗ và đám mây công cộng Đồng thời cung cấp nhiều loại kết nối hỗn hợp bao gồm mạng riêng ảo (VPN), bộ nhớ đệm, mạng phân phối nội dung (CDN) và kết nối ExpressRoute để cải thiện khả năng sử dụng và hiệu suất
- Azure cung cấp các dịch vụ dữ liệu SQL, NoSQL, đồng thời hỗ trợ khai thác, đào sâu hơn vào dữ liệu để cải thiện quy trình và tăng trưởng kinh doanh nhanh chóng Đây là nền tảng đám mây duy nhất cung cấp các công nghệ của Blockchain dưới dạng Dịch vụ (BaaS), Máy học, Bots và API
- Nền tảng đám mây của Microsoft hỗ trợ các giao thức Internet và các tiêu chuẩn
mở như XML, SOAP, REST và HTTP Có một bộ phát triển phần mềm cho Java, PHP và Ruby có sẵn cho các ứng dụng được viết bằng các công cụ Azure
- Nền tảng của Azure luôn bảo mật và bảo vệ quyền riêng tư Sự phát triển của Microsoft mang lại mức độ tin cậy cao và đảm bảo tính minh bạch cũng như vòng đời SDL
- Azure được đánh giá là cung cấp phạm vi tuân thủ tốt nhất trong số hơn 50 dịch
vụ tuân thủ và là nền tảng đám mây đáng tin cậy nhất của các tổ chức chính phủ Hoa Kỳ
- Ngoài ra, đây là nền tảng đầu tiên áp dụng tiêu chuẩn quốc tế mới về quyền riêng
tư trên Đám mây, ISO 27018 Do đó, Microsoft đảm bảo tốt nhất về mặt an toàn cho tất cả các hoạt động và dữ liệu trên Azure Cloud
Trang 191.5.3 Selenium
Selenium là một bộ công cụ kiểm thử tự động open source, dành cho các ứng dụng web, hỗ trợ hoạt động trên nhiều trình duyệt và nền tảng khác nhau như Windows, Mac, Linus… Với Selenium, có thể viết các testscript bằng các ngôn ngữ lập trình khác nhau như Java, PHP, C#, Ruby hay Python hay thậm chí là Perl…[8]
Selenium được sử dụng để automate các thao tác với trình duyệt, hay dễ hiểu hơn
là nó giúp giả lập lại các tương tác trên trình duyệt như một người dùng thực sự Ví dụ bạn có thể lập trình để tự động bật trình duyệt, open một link, input dữ liệu, hay get infor page, upload, download dữ liệu từ trên web page[8] Với selenium bạn có thể làm đc rất nhiều thứ Hơn thế nữa, bạn có thể sử dụng, tùy biến để tận dụng tối đa sức mạnh của
nó Ngoài mục đích sử dụng trong kiểm thử, bạn có thể tự xây dựng một project để automate những công việc nhàm chán
Selenium là một khái niệm chung về một bộ phần mềm được sử dụng trong automation, mỗi loại trong đó đáp ứng một yêu cầu testing khác nhau Về cơ bản thì Selenium có 4 thành phần:
- Selenium IDE: Selenium Integreted Development Environment (IDE), là một
plug-in trên trình duyệt Fire-Fox, ta có thể sử dụng để record và play back lại các thao tác đó theo một quy trình hay một test case nào đó
- Selenium RC: Selenium Remote Control (RC), Selenium server khởi chạy và
tương tác với trình duyệt web
- WebDriver: Selenium WebDriver gửi lệnh khởi chạy và tương tác trực tiếp tới
các trình duyệt mà không cần thông qua một server như Selenium RC
- Selenium Grid: Selenium Hub dùng để khởi chay nhiều các test thông qua các
máy và các trình duyệt khác nhau tại cùng một thời điểm
Năm 2008, Selenium team đã quyết định gộp Selenium RC và WebDriver để tạo
ra Selenium 2 với nhiều tính năng mạnh mẽ hơn, mà hiện nay phần lớn các project Selenium đều sử dụng
Ưu điểm:
- Dễ dàng cài đặt và sử dụng
- Không yêu cầu người dùng phải có kỹ năng lập trình, chỉ cần bạn có hiểu biết một chút về HTML và DOM là đã có thể sử dụng được tool rồi
- Có thể export các test đã tạo để sử dụng trong Webdriver hoặc Selenium RC
- Có cung cấp chức năng để bạn có thể report kết quả hoặc các hỗ trợ khi sử dụng
- Bạn có thể sử dụng tích hợp với các extension khác nữa
Trong đồ án tốt nghiệp em có sử dụng Selenium để crawl dữ liệu ý định người dùng từ nhiều nguồn khác nhau Ví dụ: webtretho.com/, facebook.com/, chotot.com…
Trang 201.5.4 FLASK
Hình 1 3 Thư viện Flask
Flask là một Web Framework rất nhẹ của Python, dễ dàng giúp người mới bắt đầu học Python có thể tạo ra website nhỏ Flask cũng dễ mở rộng để xây dựng các ứng dụng web phức tạp.[9]
Flask có nền tảng là Werkzeug và Jinja2 và nó đã trở thành một trong những Web Framework phổ biến nhất của Python
Flask cung cấp cho các lập trình viên khả năng tùy biến khi phát triển ứng dụng web, nó cung cấp cho bạn các công cụ, thư viện và cơ chế cho phép bạn xây dựng một ứng dụng web
Ứng dụng web có thể là blog, trang web thương mại hoặc một số trang web khác,
nó vẫn cho phép các lập trình viên cơ hội sử dụng một số tiện ích mở rộng để thêm nhiều chức năng hơn cho ứng dụng web
Để ứng dụng có thể tương tác được với mô hình sau khi được huấn luyện thì em cần chuẩn bị một dịch vụ ứng dụng Website để tương tác với model Sau khi chọn lựa
kĩ lưỡng em quyết định sẽ sử dụng Flask của python với những lý do sau:
- Tốc độ
- Hỗ trợ cho NoQuery
- Độ phức tạp tối thiểu
- Chủ nghĩa tối giản tuyệt đối
- Không có ORM, dễ dàng kết nối với tiện ích mở rộng
- Trình gỡ lỗi được nhúng trong trình duyệt
- Mã ngắn và đơn giản trong số các bộ xương Python khác
Trang 211.5.5 Google Colab
Colaboratory hay còn gọi là Google Colab, là một sản phẩm từ Google Research,
nó cho phép chạy các dòng code python thông qua trình duyệt, đặc biệt phù hợp với Data analysis, machine learning và giáo dục Colab không cần yêu cầu cài đặt hay cấu hình máy tính, mọi thứ có thể chạy thông qua trình duyệt, bạn có thể sử dụng tài nguyên máy tính từ CPU tốc độ cao và cả GPUs và cả TPUs đều được cung cấp cho bạn Colab cung cấp nhiều loại GPU, thường là Nvidia K80s, T4s, P4s and P100s, tuy nhiên người dùng không thể chọn loại GPU trong Colab, GPU trong Colab thay đổi theo thời gian Vì là dịch vụ miễn phí, nên Colab sẽ có những thứ tự ưu tiên trong việc sử dụng tài nguyên hệ thống, cũng như giới hạn thời gian sử dụng, thời gian sử dụng tối đa lên tới 12 giờ.[10]
Hình 1 4 Cấu hình phần cứng do Google Colab cung cấp
Trang 22CHƯƠNG 2 PHƯƠNG PHÁP HỌC SÂU VỚI BÀI
TOÁN PHÂN LỚP VĂN BẢN
2.1 Giới thiệu về học sâu
2.1.1 Giới thiệu chung
Học sâu (Deep Learning) là phạm trù nhỏ của học máy (Machine Learning - ML) dựa trên việc sử dụng mạng nơron và một tập hợp các thuật toán để mô hình hoá dữ liệu ở các mức trừu tượng khác nhau, qua đó giải quyết được nhiều bài toán mà các mô hình học không sâu truyền thống khó có thể giải quyết được như thị giác máy tính, nhận diện giọng nói, xử lý ngôn ngữ tự nhiên, nhận dạng âm thanh ngôn ngữ và tin sinh học Các mô hình học sâu có thể đạt được độ chính xác cao, đôi khi vượt quá hiệu suất của con người Các mô hình được huấn luyện bằng cách sử dụng một bộ dữ liệu có nhãn
và các cấu trúc mạng thần kinh có nhiều lớp Các mô hình học sâu không chỉ có khả năng mở rộng mạng nơron mà còn có cả tính năng học tập – khai thác các đặc trưng tự động từ dữ liệu thô, nên nó đòi hỏi số lượng lớn dữ liệu có nhãn và sức mạnh tính toán đáng kể
Kiến trúc cơ bản của học sâu là mạng nơron nhân tạo và có rất nhiều biến thể từ chúng, hầu hết là các nhánh sinh ra từ kiến trúc ban đầu như: mang nơron sâu (Deep Neural Network), mạng niềm tin sâu (Deep Belief Network), Mạng nơron tích chập (Convolutional neural networks - CNN), mạng niềm tin sâu tích chập (Convolutional Deep Belief Network), mạng nơron lưu trữ và truy xuất bộ nhớ lớn (Large Memory Storage And Retrieval Neural Network), các máy Deep Boltzmann,…
2.1.2 Mạng nơron nhân tạo
Mạng nơron nhân tạo là một mô hình toán học được xây dựng để mô phỏng lại kiến trúc và hành vi của nơron sinh học trong não người Nó là một hệ thống các nơron nhân tạo nối với nhau thành các lớp và xử lý thông tin bằng cách truyền theo các kết nối giữa các nơron
Để dễ dàng giải thích các thành phần của mạng nơron, tôi sẽ lấy ví dụ về một mạng nơron đơn giản là mạng perceptron đơn (xem Hình 2.1) do Rosenblatt đưa ra vào năm
1957 Kiến trúc và hành vi của perceptron rất giống với nơron sinh học và thường được coi là dạng cơ bản nhất của mạng nơron Các loại mạng nơron khác đã được phát triển dựa trên perceptron, và chúng vẫn đang tiếp tục phát triển cho tới hiện nay [2]
Trang 23và một hàm phi tuyến ƒ, hoạt động như một bộ phân lớp nhị phân với đầu vào là một vectơ đặc trưng [x x x1, 2, 3] và đầu ra là xác suất p của một sự kiện nhất định
b) Trọng số
Mỗi đầu vào trong vectơ đặc trưng được gán với một trọng số tương đối (w) thể hiện ảnh hưởng của nó đối với hàm tính tổng Trong số các đầu vào, một số cái có ảnh hưởng lớn hơn sẽ có trọng số lớn hơn, ngược lại thì trọng số sẽ nhỏ hơn Độ lệch w0 b
cũng được tính vào tổng như một trọng số Giá trị tổng s được tính như sau:
Trang 242.1.3 Các thuật toán huấn luyện
Như đã đề cập, bên cạnh mạng nơron, một mô hình học sâu cần có các thuật toán
để huấn luyện mạng nơron đó
b) Lan truyền ngược và hàm tối ưu hoá
Sai số 𝐽(w) là một hàm với đầu vào là các tham số nội mô hình (các trọng số và
độ lệch) Để dự đoán chính xác, ta cần giảm thiểu sai số, tức tìm w để 𝐽(w) đạt giá trị cực tiểu Trong mạng nơron, điều này được thực hiện bằng lan truyền ngược Sai số tại lớp hiện tại thường được truyền ngược lại lớp trước đó để thay đổi các trọng số và
Trang 25độ lệch sao cho sai số giảm đi Các trọng số được thay đổi bằng cách sử dụng một hàm gọi là hàm tối ưu hoá
Các hàm tối ưu hoá thường tính độ dốc (gradient), tức là tính đạo hàm riêng của hàm mất mát đối với trọng số, và trọng số được thay đổi theo hướng ngược lại của độ dốc tính được Việc này được lặp lại cho đến khi chúng ta đạt đến giá trị cực tiểu của hàm mất mát
2.1.4 Một số mô hình mạng nơron điển hình
Việc xây dựng mạng nơron chỉ dựa trên perceptron sẽ khiến số lượng trọng số (weight) của mô hình trở nên rất lớp, giữa hai lớp có 𝑘 và 𝑚 nơron sẽ tồn tại 𝑘 ∗ 𝑚 kết nối giữa các nơron Bên cạnh đó, các nơron trong cùng một lớp nơron lại không hề có kết nối Do vậy, sau này các nhà nghiên cứu đã tạo ra một số mô hình mạng nơron để giải quyết những vấn đề này
b) Mạng nơron hồi quy
Mạng nơron hồi quy (Recurrent Neural Network - RNN) có thể xử lý các chuỗi đầu vào có độ dài tuỳ ý thông qua ứng dụng đệ quy (recursive application) của một hàm chuyển tiếp trên một vectơ trạng thái ẩn ℎ𝑡
Trang 26Tại thời điểm 𝑡, trạng thái ẩn ℎ𝑡 là một hàm của vectơ đầu vào 𝑥𝑡 mà mạng nhận được tại thời điểm 𝑡 và trạng thái ẩn trước đó của nó là ℎ𝑡−1 Ví dụ, vectơ đầu vào 𝑥𝑡 có thể là vectơ đại diện của từ thứ 𝑡 trong câu Trạng thái ẩn ℎ𝑡 ∈ ℝ𝑑 có thể hiểu như là một biểu diễn phân tán 𝑑 chiều của chuỗi các dấu hiệu quan sát được đến thời điểm 𝑡 Thông thường, hàm chuyển tiếp của RNN là một chuyển tiếp toàn vẹn (affine transformation) theo sau bởi một phi tuyến rời rạc (pointwise non-linearity) như hàm tiếp tuyến hyperbol
ℎ𝑡 = tanh(W𝑥𝑡 + 𝑈ℎ𝑡−1 + 𝑏) Thật không may, một vấn đề với RNN với các hàm chuyển tiếp dưới dạng này là trong quá trình huấn luyện, các thành phần của vectơ gradient có thể phát triển hoặc phân rã theo cấp số mũ trên các chuỗi dài Vấn đề bùng nổ hoặc biến mất gradient làm cho mô hình RNN khó có thể học các tương quan có khoảng cách lớn trong một chuỗi
c) Mạng bộ nhớ dài ngắn
Kiến trúc bộ nhớ dài-ngắn (Long-Short Term Memory – LSTM) giải quyết vấn
đề học phụ thuộc lâu dài bằng cách giới thiệu một tế bào nhớ có khả năng bảo toàn trạng thái trong một thời gian dài Trong khi nhiều biến thể LSTM đã được mô tả, khóa luận sẽ mô tả phiên bản được sử dụng bởi Tai et al.[3]
Ta định nghĩa đơn vị (unit) LSTM tại mỗi thời điểm 𝑡 là một tập các vectơ trong
ℝ𝑑: một cổng vào (input gate) i𝑡, một cổng quên (forget gate) ƒ𝑡, một cổng ra (output gate) o𝑡, một tế bào nhớ (memory cell) 𝑐𝑡 và một trạng thái ẩn ℎ𝑡 Các đầu vào của các vectơ cổng i𝑡, ƒ𝑡 và o𝑡 có giá trị trong đoạn [0,1] Ta gọi 𝑑 là chiều nhớ (memory dimension) của LSTM
Trang 27Các phương trình chuyển tiếp của LSTM như sau:
i𝑡 = 𝜎(W(i)𝑥𝑡 + 𝑈(i)ℎ𝑡−1 + 𝑏(i)),
Bộ nhớ dài-ngắn hai chiều (Bi-directional LSTM – Bi-LSTM)[3] là một biến thể của kiến trúc LSTM cơ bản Bi-LSTM bao gồm hai LSTM chạy song song: một trên chuỗi đầu vào và một trên nghịch đảo của chuỗi đầu vào Tại mỗi thời điểm, trạng thái
ẩn của Bi-LSTM được nối từ các trạng thái thái ẩn phía trước và phía sau Thiết lập này cho phép trạng thái ẩn nắm bắt cả thông tin trong quá khứ lẫn tương lai
Bộ nhớ dài-ngắn nhiều lớp (Multilayer LSTM)[3]: Trong kiến trúc bộ nhớ dài ngắn nhiều lớp, trạng thái ẩn của một đơn vị LSTM trong lớp 𝑙 được sử dụng như đầu vào của lớp LSTM 𝑙 + 1 trong cùng thời điểm Ở đây, ý tưởng này để cho các lớp cao hơn nắm bắt các phụ thuộc dài hơn của chuỗi đầu vào