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

Ứng dụng cnn trong bài toán khuyến nghị sản phẩm cho ứng dụng bán hàng điện tử

60 1 0

Đ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

Tiêu đề Ứng Dụng Cnn Trong Bài Toán Khuyến Nghị Sản Phẩm Cho Ứng Dụng Bán Hàng Điện Tử
Tác giả Nguyễn Quốc Khánh
Người hướng dẫn ThS. Nguyễn Hoàng Anh
Trường học Học Viện Công Nghệ Bưu Chính Viễn Thông
Chuyên ngành Công Nghệ Thông Tin
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 60
Dung lượng 2,55 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • CHƯƠNG 1: GIỚI THIỆU VÀ TỔNG QUAN ĐỀ TÀI (12)
    • 1.1 Thực trạng vấn đề (12)
    • 1.2 Nền tảng phát triển (12)
    • 1.3 Mục tiêu (15)
  • CHƯƠNG 2: GIẢI QUYẾT VẤN ĐỀ (16)
    • 2.1 Hệ khuyến nghị (16)
    • 2.2 Mạng neural nhân tạo (Neural Network) (18)
    • 2.3 Mạng neural tích chập (Convolution Neural Network) (23)
    • 2.4 Vanishing Gradient (30)
    • 2.4 Xception Network (32)
    • 2.5 Thuật toán K- Láng Giềng (K- Nearest Neighbor) (34)
  • CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG (36)
    • 3.1 Phân tích hệ thống (36)
      • 3.1.1 Mô hình ca sử dụng (36)
      • 3.1.2 Use case đăng nhập (36)
      • 3.1.3 Use case đăng ký (37)
      • 3.1.4 Use case xem danh sách sản phẩm (39)
      • 3.1.5 Use case xem chi tiết sản phẩm (39)
      • 3.1.6 Use case thêm sản phẩm vào giỏ hàng (40)
      • 3.1.7 Use case mua hàng (41)
    • 3.2 Thiết kế hệ thống (43)
      • 3.2.1 Thành phần hệ thống (43)
      • 3.2.2 Biểu đồ lớp (44)
      • 3.2.3 Biểu đồ CSDL (44)
    • 3.3 Chức năng khuyến nghị sản phẩm (45)
      • 3.3.1 Chuẩn bị dữ liệu huấn luyện CNN (45)
      • 3.3.2 Huấn luyện model phân loại (45)
      • 3.3.3 Chuẩn bị dữ liệu cho KNN (46)
      • 3.3.4 Khuyến nghị (46)
  • CHƯƠNG 4: CÀI ĐẶT, TRIỂN KHAI (48)
    • 4.1 Cài đặt server (48)
      • 4.1.1 Docker (48)
      • 4.1.2 CSDL (48)
      • 4.1.3 Model (49)
      • 4.1.4 API (49)
    • 4.2 Cài đặt app client (49)
      • 4.2.1 Kiến trúc ứng dụng (49)
    • 4.3 Giao diện (50)
      • 4.3.1 Giao diện trang chủ (50)
      • 4.3.2 Giao diện chi tiết sản phẩm (51)
      • 4.3.3 Giao diện giỏ hàng (52)
      • 4.3.4 Giao diện đăng nhập (54)
      • 4.3.5 Giao diện đăng ký (56)
      • 4.3.6 Giao diện đặt hàng (57)
  • KẾT LUẬN (58)
    • 1. Kết quả đạt được (58)
    • 2. Hạn chế (58)
    • 3. Hướng phát triển (58)
  • TÀI LIỆU THAM KHẢO (59)

Nội dung

Vui lòng liên hệ ZALO 0353764719 hoặc GMAIL 123docntcgmail.com để mua tài liệu trực tiếp với giá ưu đãi, GIẢM GIÁ 2050% giá tài liệu Vui lòng liên hệ ZALO 0353764719 hoặc GMAIL 123docntcgmail.com để mua tài liệu trực tiếp với giá ưu đãi, GIẢM GIÁ 2050% giá tài liệu

GIỚI THIỆU VÀ TỔNG QUAN ĐỀ TÀI

Thực trạng vấn đề

Thương mại điện tử tại Việt Nam đang trải qua sự phát triển mạnh mẽ, đóng góp quan trọng vào sự phát triển kinh tế và tương lai của nền kinh tế số Trong bối cảnh đại dịch COVID-19, lĩnh vực này đã bùng nổ và hình thành những xu hướng tiêu dùng mới Kể từ khi dịch bệnh xuất hiện, nhu cầu mua sắm trực tuyến qua các sàn thương mại điện tử đã gia tăng đáng kể, với hơn 70% dân số Việt Nam có truy cập Internet Đặc biệt, gần 90% người dùng đã thực hiện mua sắm online và 53% người dân đã sử dụng ví điện tử để thanh toán trực tuyến.

Hình 1.1 Tỷ lệ người dùng Internet mua sắm online

Hệ thống thương mại điện tử thường có số lượng sản phẩm phong phú, nhưng việc để người dùng tự tìm kiếm có thể gây khó khăn và dẫn đến việc họ chọn mua ở nơi khác Do đó, các sàn TMĐT cần tích hợp hệ thống khuyến nghị để hỗ trợ người dùng tìm kiếm sản phẩm phù hợp, đồng thời tăng trưởng doanh thu hiệu quả.

Nền tảng phát triển

Các ứng dụng thương mại điện tử chủ yếu được phát triển trên hai nền tảng chính là Web và Mobile App Đến tháng 5/2021, Việt Nam có khoảng 61,37 triệu người sử dụng smartphone, chiếm 64% dân số, theo thống kê từ Statista Dựa trên những số liệu này, tôi quyết định phát triển ứng dụng bán hàng điện tử trên nền tảng Mobile với tên gọi PStore.

Hình 1.2 Bảng xếp hạng số lượng người sử dụng smartphone

Hình 1.3 Thống kê thiết bị dùng để mua sắm online

Trong lập trình ứng dụng di động, có hai loại chính: ứng dụng gốc (Native) và ứng dụng lai (Hybrid) Ứng dụng lai tiết kiệm thời gian phát triển vì chỉ cần lập trình một lần cho cả iOS và Android, nhưng hiệu suất thường không cao Ngược lại, ứng dụng gốc được phát triển riêng cho từng hệ điều hành, sử dụng ngôn ngữ và công nghệ đặc thù, giúp tối ưu hóa trải nghiệm người dùng nhưng chi phí phát triển và bảo trì cao hơn do phải duy trì hai codebase Với mục tiêu mang lại trải nghiệm tốt nhất cho người dùng, tôi quyết định phát triển PStore như một ứng dụng gốc.

Hình 1.4 So sánh ưu nhược điểm của app Native và Hybrid

Theo số liệu năm 2020, Android chiếm hơn 60% thị phần smartphone tại Việt Nam, và lập trình ứng dụng trên nền tảng này không bị giới hạn về công cụ và môi trường Ngược lại, lập trình ứng dụng iOS yêu cầu sử dụng hệ điều hành Mac OS hoặc Hackintosh, điều này đòi hỏi phải có máy Mac với giá cao hoặc phần cứng tương thích cho Hackintosh, vốn có nhiều lỗi Vì vậy, tôi quyết định phát triển ứng dụng trên hệ điều hành Android.

Mục tiêu

Sau khi hoàn thành đề tài nghiên cứu, em muốn xây dựng được một hệ thống bán hàng điện tử có tích hợp chức năng khuyến nghị sản phẩm

Người dùng có thể dễ dàng lướt xem sản phẩm, thêm vào giỏ hàng và đặt hàng qua hệ thống Tính năng khuyến nghị cho phép khách hàng tiếp cận nhiều sản phẩm tương tự với những gì họ đã xem, nâng cao trải nghiệm mua sắm Đối với người bán, hệ thống giúp họ giới thiệu các sản phẩm phù hợp với nhu cầu của khách hàng mà không cần tốn kém cho quảng cáo hay khảo sát thị trường.

Tính năng khuyến nghị sẽ xuất hiện trong nhiều màn hình: màn hình trang chủ, màn hình chi tiết sản phẩm, màn hình sau khi đặt hàng thành công

Qua khảo sát, bài viết đã nêu rõ những lợi ích mà hệ thống khuyến nghị mang lại cho các sàn thương mại điện tử Đồng thời, tác giả đã chọn xây dựng một ứng dụng Android nhằm mô tả hệ thống bán hàng điện tử tích hợp ứng dụng khuyến nghị.

GIẢI QUYẾT VẤN ĐỀ

Hệ khuyến nghị

Hệ khuyến nghị (Recommender System) là công cụ phần mềm cung cấp đề xuất về các hạng mục cho người dùng, hỗ trợ trong các quyết định như mua sắm, nghe nhạc hay đọc tin tức Nhiều công ty lớn như Amazon, Facebook, Shopee, Netflix và Spotify đã áp dụng hệ khuyến nghị để cải thiện trải nghiệm người dùng và tăng doanh thu.

Hệ thống khuyến nghị là cần thiết trong bối cảnh có quá nhiều sản phẩm, dịch vụ và nội dung trực tuyến, giúp người dùng dễ dàng tìm kiếm những gì họ cần Khi truy cập vào website, hệ thống này cung cấp danh sách ngắn các sản phẩm tiềm năng, bao gồm cả những lựa chọn mà người dùng chưa biết đến, từ đó tiết kiệm thời gian và nâng cao trải nghiệm tìm kiếm Doanh nghiệp sử dụng hệ thống khuyến nghị để cá nhân hóa các đề xuất sản phẩm, từ đó tăng doanh số và cải thiện lợi thế cạnh tranh Điều này không chỉ giúp giảm tỷ lệ khách hàng rời bỏ mà còn cho thấy doanh nghiệp hiểu rõ nhu cầu của họ.

Hệ thống khuyến nghị là yếu tố quan trọng trên các nền tảng trực tuyến, từ thương mại điện tử đến đào tạo trực tuyến Theo McKinsey, 35% doanh thu của Amazon đến từ hệ thống này, trong khi 75% thời gian xem phim trên Netflix nhờ vào các khuyến nghị cá nhân hóa Hiện nay, hầu hết hệ thống khuyến nghị cho phép cá nhân hóa, giới thiệu sản phẩm phù hợp với sở thích của từng nhóm người dùng, bên cạnh các sản phẩm phổ biến Để đạt được điều này, các thuật toán khuyến nghị cần được cải thiện, như thuật toán thế hệ đầu tiên tìm kiếm người dùng có lịch sử mua sắm tương tự để đề xuất sản phẩm mới dựa trên những gì họ đã mua.

Các thuật toán thế hệ tiếp theo ngày càng hoàn thiện và mang lại kết quả tốt hơn, trong đó phương pháp thừa số hoá ma trận được sử dụng phổ biến Phương pháp này cho phép mỗi người dùng được biểu diễn dưới dạng một vector số, với từng phần tử thể hiện mức độ liên quan đến các sở thích khác nhau Ví dụ, trong khuyến nghị sản phẩm, một người dùng có thể có vector (công nghệ/0.8, mỹ phẩm/0.1, quần áo/0.2), cho thấy sở thích chủ yếu là công nghệ Tương tự, sản phẩm cũng được biểu diễn bằng vector tương ứng, và người dùng sẽ nhận được khuyến nghị dựa trên sự tương đồng giữa các vector Các vector này được tính toán từ lịch sử xem và mua hàng của người dùng thông qua một thuật toán chuyên biệt, thường có hàng trăm phần tử mà không phải lúc nào cũng rõ ràng.

Hình 2.1 Hệ thống khuyến nghị bằng thừa số ma trận

Các hệ thống khuyến nghị hiện nay thường áp dụng mạng nơ ron nhân tạo nhiều lớp và kỹ thuật học sâu để tạo ra biểu diễn người dùng và sản phẩm Học sâu đã chứng minh sự tiến bộ trong việc cung cấp khuyến nghị cá nhân hóa, cho phép học các quan hệ phức tạp giữa người dùng và sản phẩm, đồng thời tích hợp thông tin ngữ cảnh và mô tả sản phẩm Khả năng tìm hiểu các đại diện phân tán trong thuộc tính người dùng và mặt hàng trong không gian vectơ dày đặc chiều thấp giúp giới thiệu các mặt hàng phù hợp Do đó, nhiều dịch vụ trực tuyến nổi tiếng như Youtube, Netflix, Spotify, Pinterest và Amazon đã chuyển sang sử dụng hệ thống khuyến nghị dựa trên kỹ thuật học sâu.

Hình 2.2 Mạng neural học sâu

Trong khảo sát về các phương pháp khuyến nghị, tôi đã lựa chọn sử dụng mạng nơ-ron nhân tạo Cụ thể, tôi áp dụng phương pháp phân loại sản phẩm bằng mạng CNN và tìm kiếm các sản phẩm tương ứng thông qua thuật toán K-NN.

Mạng neural nhân tạo (Neural Network)

Mạng neural nhân tạo (Neural Network - NN) là mô hình lập trình mô phỏng hoạt động của mạng nơ-ron thần kinh, được cấu thành từ các perceptron, hay còn gọi là các nơ-ron đơn lẻ Trong đồ án tốt nghiệp đại học, chương 2 tập trung vào việc giải quyết vấn đề liên quan đến perceptron.

Hình 2.4 Cấu trúc một neural nhân tạo

Một perceptron nhận nhiều đầu vào x (được biểu diễn bằng các node) và tạo ra kết quả nhị phân Các đầu vào này được điều chỉnh bởi các tham số trọng lượng w, trong khi kết quả đầu ra phụ thuộc vào một ngưỡng b nhất định Nếu đặt b = -threshold, ta có thể diễn đạt lại quy trình này.

Gắn 𝒙 𝟎 = 1 và 𝒘 𝟎 = 𝒃 , ta có thể viết gọn thành:

Để linh hoạt hơn trong việc điều chỉnh đầu ra, chúng ta mở rộng đầu ra từ dạng nhị phân thành khoảng [0, 1] Đầu ra lúc này được xác định bởi hàm 𝜎(𝑤 𝑇 𝑥), được gọi là hàm kích hoạt, với giá trị nằm trong khoảng [0, 1] Một ví dụ điển hình của hàm kích hoạt là hàm sigmoid.

Ngoài hàm sigmoid ra còn có các hàm kích hoạt khác như ReLU, softmax, Multi-layer perceptron (mạng neural nhân tạo)

Khi kết hợp các tầng perceptron ta có một mạng neural tổng quát gồm 3 layer:

● Input layer: nhiều node ở input tạo thành một lớp đầu vào của mạng

● Hidden layer: các layer trung gian thể hiện cho việc suy luận logic của mạng

● Output layer: nhiều node ở đầu ra tạo thành một lớp đầu ra của mạng

Hình 2.6 Mô hình neural network Đồ án tốt nghiệp đại học Chương 2 Giải quyết vấn đề

Mỗi mô hình đều bao gồm một lớp đầu vào (input layer) và một lớp đầu ra (output layer), có thể có hoặc không có các lớp ẩn (hidden layer) Tổng số lớp trong mô hình được xác định là tổng số lớp trừ đi một, không tính lớp đầu vào.

Mỗi node trong hidden layer và output layer :

● Liên kết với tất cả các node ở layer trước đó với các hệ số w riêng

● Mỗi node có 1 hệ số bias b riêng

● Diễn ra 2 bước: tính tổng linear và áp dụng activation function

Quá trình suy luận trong mạng neural từ lớp đầu vào đến lớp đầu ra được gọi là lan truyền tiến (feedforward) Trong quá trình này, đầu vào của các nơ-ron ở một tầng được xác định dựa trên kết quả từ các nơ-ron của tầng trước mà không có sự suy luận ngược lại.

Hình 2.7 Mô hình neural network với 2-3-3-1 (input layer có 2 node, hidden layer 1 có 3 node, hidden layer 2 có 3 node, output layer có 1 node)

Gọi input layer là 𝑎 (0) = 𝑥, (ở ℎì𝑛ℎ 𝑣ẽ 𝑑ướ𝑖 đâ𝑦 𝑡ℎì 𝑎 (0) = {𝑥 1 , 𝑥 2 }), thực hiện tính 𝑧 (1) là đầu ra của input layer, đầu vào của hidden layer 1:

Tương tự ta có kết quả tính tại mỗi lớp:

Từ đầu vào X, chúng ta có thể tính toán giá trị dự đoán 𝑌̂ Tiếp theo, chúng ta sẽ xác định hàm mất mát (loss function) để đo lường sự khác biệt giữa giá trị dự đoán 𝑌̂ và giá trị thực Y, từ đó cập nhật các hệ số và tối ưu hóa hàm mất mát.

Hình 2.9 Ví dụ hàm loss function

Để tìm hệ số W và b, chúng ta sử dụng thuật toán gradient descent, một phương pháp nhằm tìm giá trị nhỏ nhất của hàm số f(x) thông qua đạo hàm Trong quá trình này, cần tính đạo hàm của các hệ số W và b liên quan đến hàm loss function Quá trình này được gọi là backpropagation (lan truyền ngược).

Mạng neural nhân tạo là mô hình gồm nhiều phần tử (neural) kết nối qua các trọng số liên kết, hoạt động như một thể thống nhất để giải quyết các vấn đề cụ thể như phân loại dữ liệu và nhận dạng mẫu Quá trình học trong mạng này thực chất là việc điều chỉnh các trọng số liên kết giữa các neural dựa trên tập mẫu huấn luyện.

Trong công việc phân loại ảnh, đặc biệt là với những bức ảnh có kích thước và độ phân giải lớn, các mạng neural truyền thống thường gặp khó khăn do số lượng trọng số quá lớn Để khắc phục vấn đề này, tôi đã quyết định sử dụng mạng neural tích chập (CNN).

Mạng neural tích chập (Convolution Neural Network)

Phân loại ảnh là một trong những bài toán quan trọng nhất trong lĩnh vực Thị giác máy tính Các kiến trúc mạng neural truyền thống thường gặp khó khăn khi xử lý ảnh có kích thước lớn Với ảnh kích thước 32*32*3, lớp neural ẩn đầu tiên chỉ có 3072 trọng số, nhưng khi kích thước tăng lên 200*200*3, số lượng trọng số tại lớp đầu tiên có thể đạt tới 120.000, chưa kể đến các lớp ẩn khác Sự gia tăng nhanh chóng này khiến mạng neural truyền thống dễ bị overfitting và tiêu tốn nhiều tài nguyên tính toán.

Mạng Neural Tích Chập (Convolutional Neural Network) hiện là giải pháp tối ưu cho việc xử lý ảnh, nhờ vào khả năng nhận diện mối liên kết giữa các pixel gần nhau Việc áp dụng phép toán convolution trong các lớp của mạng neural giúp giảm thiểu số lượng tham số cần thiết, đồng thời vẫn giữ được các đặc trưng quan trọng của hình ảnh.

Convolutional neural networks consist of three fundamental layers: the convolution layer, the pooling layer, and the fully connected layer.

Hình 2.11 Kiến trúc cơ bản của một mạng neural tích chập

Kiến trúc cơ bản của mạng neural tích chập

❖ Vector, ma trận và tensor

Ma trận và vector là những khái niệm cơ bản trong toán học, trong đó vector 𝑥 𝜖 𝑅 𝐷 chứa D phần tử sắp xếp theo chiều dọc, còn ma trận 𝑋 thuộc 𝑅 𝑊∗𝐻 có H hàng và W cột Vector 𝑥 cũng có thể được coi là một ma trận với 1 cột và D hàng Để biểu diễn dữ liệu phức tạp hơn, chúng ta sử dụng tensor, ví dụ như 𝑥 thuộc 𝑅 𝑊𝑥𝐻𝑥𝐷, là một tensor 3 chiều chứa W * H * D phần tử, mỗi phần tử được xác định bởi tọa độ (𝑖, 𝑗, 𝑑) Tensor này có 3 chiều, trong đó chiều thứ ba có độ dài D tương ứng với D ma trận chồng lên nhau, mỗi ma trận có kích thước H * W Chiều thứ nhất bao gồm tất cả các số trong tensor tại tọa độ (𝑖, 𝑗, 0).

Hình 2.12 Vector, Matrix và Tensor

Một ảnh RGB với kích thước 𝐻 hàng và 𝑊 cột được biểu diễn dưới dạng tensor có kích thước 𝐻 ∗ 𝑊 ∗ 3 Mỗi chiều của tensor này là một ma trận 𝐻 ∗ 𝑊 Trong mạng nơ-ron tích chập (CNN), ảnh đầu vào và các tầng trung gian giữa các lớp tích chập đều được biểu diễn dưới dạng tensor Sau khi qua các lớp tích chập, đầu vào cũng sẽ cho ra một tensor.

Lớp convolution là lớp đầu tiên và quan trọng nhất trong mạng, có chức năng phát hiện các đặc trưng không gian hiệu quả, bao gồm các đặc trưng đơn giản như góc, cạnh và màu sắc, cũng như các đặc trưng trừu tượng phức tạp hơn Những đặc trưng này giúp mô hình phân loại dữ liệu đầu vào tốt hơn so với các phương pháp trích chọn đặc trưng khác như LBP và HoG Để thực hiện tính toán convolution, một bộ lọc (kernel/filter) dạng ma trận vuông kích thước k*k được sử dụng, trong đó k là số lẻ với các giá trị thường là 1, 3, 5, 7, 9,

Hình 2.13 Bộ lọc kích thước 3x3

Mỗi phần tử trong ma trận điểm ảnh được sử dụng để tạo ra một ma trận A có kích thước bằng kích thước của bộ lọc W, với trung tâm của bộ lọc trùng với phần tử đó Điều này lý giải tại sao kích thước của kernel thường là số lẻ Tiếp theo, tổng các phần tử của phép nhân chập giữa ma trận A và ma trận W được tính toán và ghi vào ma trận kết quả Y.

Hình 2.14 Tích chập một ảnh 5x5x1 với một bộ lọc 3x3x1 để có một hình ảnh chập 3x3x1

Bộ lọc trong quá trình xử lý hình ảnh di chuyển từ phải sang trái và từ trên xuống dưới cho đến khi toàn bộ hình ảnh được kiểm tra Khoảng cách giữa các điểm ảnh mà bộ lọc di chuyển được gọi là Stride (bước nhảy) Khi Stride = 1, bộ lọc sẽ di chuyển 1 pixel mỗi lần, trong khi khi Stride = 2, bộ lọc sẽ di chuyển 2 pixel cùng một lúc, và quy tắc này tiếp tục áp dụng cho các giá trị Stride khác.

Lựa chọn Stride càng lớn thì chiều của kết quả tích chập càng giảm

Padding là quá trình thêm giá trị xung quanh biên của ảnh gốc Khi padding = 1, điều này có nghĩa là thêm một ô bọc quanh các cạnh của đầu vào, giúp đảm bảo rằng phép tích chập được thực hiện đầy đủ trên toàn bộ ảnh.

Hình 2.15 Stride = 2, Padding = 1 Đồ án tốt nghiệp đại học Chương 2 Giải quyết vấn đề

Hình 2.16 Stride = 1, Padding = 1 (Padding = Same)

Khi xử lý ảnh màu với 3 kênh RGB, ảnh được biểu diễn dưới dạng tensor 3 chiều, trong đó số thực là dữ liệu 0D, vector là 1D, và ma trận là 2D Bộ lọc cũng được định nghĩa là một tensor 3 chiều với kích thước k*k*3.

Hình 2.17 Phép tính convolution trên ảnh màu với k=3

Hình 2.18 Thực hiện phép tính convolution trên ảnh màu

Pooling layer thường được sử dụng giữa các convolutional layer nhằm giảm kích thước dữ liệu trong khi vẫn giữ lại các đặc trưng quan trọng Việc giảm kích thước dữ liệu này giúp giảm khối lượng tính toán trong mô hình.

Có 2 loại Pooling layer phổ biến là: Max pooling và Average pooling

Phép gộp cực đại (Max pooling) lấy giá trị lớn nhất từ vùng hình ảnh mà bộ lọc bao phủ, trong khi phép gộp trung bình (Average pooling) tính toán giá trị trung bình của tất cả các giá trị trong cùng vùng hình ảnh đó.

Phép gộp cực đại không chỉ giảm kích thước mà còn hoạt động như một công cụ khử nhiễu hiệu quả, loại bỏ các nguồn nhiễu Ngược lại, phép gộp trung bình chỉ thực hiện giảm kích thước mà không có khả năng khử nhiễu mạnh mẽ Vì vậy, có thể khẳng định rằng phép gộp cực đại vượt trội hơn hẳn so với phép gộp trung bình trong việc xử lý và giảm thiểu nhiễu.

Hình 2.19 Ví dụ về Pooling layer

Sau khi ảnh trải qua nhiều lớp convolutional và pooling, mô hình đã học được các đặc điểm quan trọng như mắt, mũi và khuôn mặt Kết quả là tensor đầu ra từ lớp cuối cùng, có kích thước H*W*D, sẽ được chuyển đổi thành một vector với kích thước (H*W*D).

Sử dụng lớp kết nối đầy đủ (Fully connected layer) giúp học các tổ hợp phi tuyến của các đặc trưng được trích xuất từ ma trận tích chập, từ đó tạo ra đầu ra cho mô hình.

Vanishing Gradient

Current popular CNN architectures, such as VGG-16 (13 layers), ResNet-50 (152 layers), and InceptionV1 (22 layers), utilize numerous convolutional layers However, this extensive use of layers can lead to the Vanishing Gradient problem The Backpropagation Algorithm, commonly employed during training, works by calculating the gradient of the cost function for each parameter (weight) from the output layer back to the input layer Subsequently, Gradient Descent is applied to update these parameters.

Quá trình huấn luyện mạng nơ-ron sẽ lặp đi lặp lại cho đến khi các tham số của mạng hội tụ Một hyperparameter quan trọng, số Epoch, định nghĩa số lần mà tập huấn luyện được duyệt qua và trọng số được cập nhật Nếu số lượng vòng lặp quá nhỏ, mạng có thể không đạt được kết quả tốt, trong khi nếu quá lớn, thời gian huấn luyện sẽ kéo dài.

Hình 2.22 Hiện tượng Vanishing Gradient

Trong thực tế, giá trị Gradients thường giảm dần khi đi xuống các layer thấp hơn, dẫn đến việc các cập nhật từ Gradient Descent không làm thay đổi nhiều trọng số của các layer này Kết quả là mạng không thể hội tụ và không đạt được hiệu quả tốt, hiện tượng này được gọi là Vanishing Gradients.

Phần tiếp theo em sẽ tìm hiểu một mô hình CNN có khả năng chống hiện tượng vanishing gradient là Xception.

Xception Network

Hình 2.23 Mô hình mạng Xception

Xception là một mô hình CNN do Google và Francois Chollet, cha đẻ của Keras, phát triển Mô hình này sử dụng các block Depthwise Separable Convolution để tối ưu hóa phép nhân chập, một phép toán tốn kém Đối với hình ảnh kích thước A*A với độ sâu c và kích thước phép chập d*d, một kernel cần thực hiện 𝐴² ∗ 𝑑² ∗ 𝑐 phép toán Với độ sâu N, tổng số phép toán sẽ là 𝐴² ∗ 𝑑² ∗ 𝑐 ∗ 𝑁 Để giảm thiểu số phép toán, Xception thay thế phép chập thông thường bằng hai phép chập: Deepwise và Pointwise.

Depthwise Convolution là bước đầu tiên trong việc thay thế phép chập d*d*c bằng phép d*d*1, cho phép áp dụng chập lên từng kênh riêng lẻ thay vì tất cả cùng một lúc Nhờ đó, số lượng phép toán giảm đáng kể từ A*A*N xuống chỉ còn A*A*c.

Pointwise Convolution là phép chập 1*1*N áp lên ma trận A*A*c, tạo ra ma trận A*A*N tương tự như phép chập thông thường Việc áp dụng Deepwise và Pointwise giúp giảm số phép tính xuống N lần, từ đó tăng tốc độ học.

Kiến trúc Xception kết hợp các khối Depthwise Separable Convolution (DSC) và Max Pooling, đồng thời sử dụng các nhánh đường tắt để hỗ trợ quá trình học ngược Điểm nổi bật của Xception là thứ tự đảo ngược trong các khối DSC, trong đó Pointwise Convolution được thêm vào trước Depthwise Convolution.

Hình 2.24 Block Depthwise Separable Convolution

Ngoài ra Xception còn ứng dụng các khối Residual - được giới thiệu lần đầu cùng mạng Resnet - như một giải pháp để chống hiện tượng Vanishing Gradients

Hình 2.25 minh họa khối dư trong mạng, với một mũi tên cong thể hiện việc bổ sung đầu vào X vào đầu ra của lớp, giúp ngăn chặn đạo hàm bằng 0 Mục tiêu là đạt được H(x) bằng hoặc gần bằng F(x), trong đó F(x) được tính từ đầu vào X thông qua các trọng số và hàm kích hoạt ReLU Giá trị H(x) được tạo ra từ công thức: F(x) + x sau khi áp dụng ReLU.

Thuật toán K- Láng Giềng (K- Nearest Neighbor)

K-nearest neighbor là một trong những thuật toán supervised-learning đơn giản nhất (mà hiệu quả trong một vài trường hợp) trong học máy Khi training, thuật toán này không học một điều gì từ dữ liệu training (đây cũng là lý do thuật toán này được xếp vào loại lazy learning), mọi tính toán được thực hiện khi nó cần dự đoán kết quả của dữ liệu mới K-nearest neighbor có thể áp dụng được vào cả hai loại của bài toán Supervised learning là Classification và Regression KNN còn được gọi là một thuật toán Instance-based hay Memory-based learning

KNN, hay K-lân cận, là một thuật toán dùng để xác định đầu ra của một điểm dữ liệu mới dựa vào K điểm dữ liệu gần nhất trong tập huấn luyện, mà không chú ý đến sự nhiễu từ các điểm gần đó Ví dụ dưới đây minh họa cách KNN hoạt động trong phân loại với K=1.

Hình 2.26 Bản đồ của 1NN

Trong không gian một chiều, khoảng cách giữa hai điểm được xác định bằng trị tuyệt đối của hiệu giá trị giữa chúng Trong không gian nhiều chiều, khoảng cách giữa hai điểm có thể được định nghĩa qua nhiều hàm số khác nhau, trong đó độ dài đường thẳng nối hai điểm là một trường hợp đặc biệt.

Trong bài viết này, tôi đã nghiên cứu về các phương pháp khuyến nghị và lựa chọn phương pháp sử dụng Deep Learning, cụ thể là ứng dụng CNN để phân loại sản phẩm theo danh mục Sau đó, tôi sẽ áp dụng thuật toán K-NN để tìm ra các sản phẩm tương đồng cao nhằm khuyến nghị cho người dùng Kiến trúc CNN mà tôi chọn là Xception, với nhiều ưu điểm như giảm số lượng phép tính so với các mạng tích chập thông thường và hạn chế tình trạng vanishing gradient.

PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG

Phân tích hệ thống

3.1.1 Mô hình ca sử dụng

Hình 3.1 Biểu đồ ca sử dụng

Tiền điều kiện Người dùng truy cập vào ứng dụng

Hậu điều kiện Người dùng đăng nhập thành công

Người dùng bắt đầu quá trình đăng nhập bằng cách nhấn vào nút đăng nhập trên màn hình, trong bối cảnh của Đồ án tốt nghiệp đại học, Chương 3 sẽ tập trung vào việc phân tích và thiết kế hệ thống thông tin cho tài khoản.

2 Hệ thống hiển thị màn hình đăng nhập với hai ô Email và Mật khẩu, nút đăng nhập và nút đăng ký

3 Người dùng điền thông tin đăng nhập và click nút Đăng nhập

4 Hệ thống thông báo đăng nhập thành công, chuyển về màn hình thông tin Tài khoản

Ngoại lệ 3 Người dùng nhập sai email hoặc mật khẩu

Bảng 3.1 Kịch bản ca sử dụng đăng nhập

Hình 3.2 Biểu đồ tuần tự chức năng đăng nhập

Tiền điều kiện Người dùng truy cập vào ứng dụng

Hậu điều kiện Người dùng tạo tài khoản thành công

1 Người dùng nhấn nút Đăng ký trên màn hình Đăng nhập

2 Màn hình Đăng ký hiện ra với các trường:

3 Người dùng điền đủ các trường thông tin và nhấn nút Đăng ký

4 Hệ thống báo đăng ký thành công và chuyển về màn hình Đăng nhập

Ngoại lệ 3 Người dùng không nhập đủ các thông tin

3 Người dùng nhập mật khẩu và mật khẩu lại không giống nhau

Bảng 3.2 Kịch bản ca sử dụng đăng ký

Hình 3.3 Biểu đồ tuần tự chức năng đăng ký Đồ án tốt nghiệp đại học Chương 3 Phân tích và thiết kế hệ thống

3.1.4 Use case xem danh sách sản phẩm

Use case Xem danh sách sản phẩm

Tiền điều kiện Người dùng truy cập vào ứng dụng

Hậu điều kiện Người dùng xem được danh sách sản phẩm

1 Người dùng click vào nút Trang chủ

2 Hệ thống hiển thị danh sách các sản phẩm

Bảng 3.3 Kịch bản ca sử dụng xem danh sách sản phẩm

Hình 3.4 Biểu đồ tuần tự chức năng xem danh sách sản phẩm

3.1.5 Use case xem chi tiết sản phẩm

Use case Xem chi tiết sản phẩm

Tiền điều kiện Người dùng truy cập vào ứng dụng

Hậu điều kiện Người dùng xem được chi tiết sản phẩm và danh sách sản phẩm gợi ý

1 Người dùng click vào một sản phẩm muốn xem

2 Hệ thống hiển thị chi tiết sản phẩm gồm ảnh, tên, giá, mô tả sản phẩm và danh sách các sản phẩm tương tự

Bảng 3.4 Kịch bản ca sử dụng xem chi tiết sản phẩm

Hình 3.5 Biểu đồ tuần tự chức năng chi tiết sản phẩm

3.1.6 Use case thêm sản phẩm vào giỏ hàng

Use case Thêm sản phẩm vào giỏ hàng

Tiền điều kiện Người dùng truy cập vào ứng dụng

Hậu điều kiện Người dùng thêm sản phẩm vào giỏ hàng thành công

3 Người dùng click vào một sản phẩm trên trang chủ

4 Màn hình chi tiết sản phẩm hiện lên gồm hình ảnh Đồ án tốt nghiệp đại học Chương 3 Phân tích và thiết kế hệ thống sản phẩm, tên sản phẩm, giá bán, mô tả và danh sách các sản phẩm tương tự, nút Thêm vào giỏ

5 Người dùng click vào nút Thêm vào giỏ

6 Hệ thống thông báo thành công

Bảng 3.5 Kịch bản ca sử dụng thêm sản phẩm vào giỏ hàng

Hình 3.6 Biểu đồ tuần tự chức năng thêm sản phẩm vào giỏ hàng

Tiền điều kiện Người dùng có sản phẩm trong giỏ hàng và đã đăng nhập

Hậu điều kiện Người dùng tạo đơn hàng thành công

1 Người dùng chọn các sản phẩm cần mua bằng cách tích vào ô bên cạnh sản phẩm trong màn hình Giỏ hàng

2 Hệ thống cập nhật mức giá cần thanh toán

3 Người dùng click vào nút Mua hàng

4 Hệ thống hiển thị màn hình Tạo đơn hàng với các trường Tên, số điện thoại, địa chỉ đã được điền sẵn theo thông tin tài khoản

5 Người dùng chỉnh sửa thông tin nếu cần và click nút Đặt hàng

6 Hệ thống thông báo thành công và chuyển về màn hình Giỏ hàng

Ngoại lệ 3 Người dùng không chọn sản phẩm nào

5 Người dùng để trống một hoặc nhiều ô thông tin

Bảng 3.6 Kịch bản ca sử dụng đặt hàng

Hình 3.7 Biểu đồ tuần tự chức năng mua hàng Đồ án tốt nghiệp đại học Chương 3 Phân tích và thiết kế hệ thống

Thiết kế hệ thống

Hình 3.8 Sơ đồ kết nối hệ thống

Django là một framework phát triển web được viết bằng ngôn ngữ lập trình Python, nhằm đơn giản hóa việc tạo ra các website phức tạp sử dụng cơ sở dữ liệu Framework này tập trung vào tính tái sử dụng và khả năng tự chạy của các thành phần, giúp phát triển nhanh chóng mà không cần lặp lại công việc đã thực hiện Để cung cấp API cho client, Django tích hợp thư viện django-rest-framework Ngoài ra, Django tự động quản lý các đối tượng Model, tạo câu lệnh SQL cần thiết khi có sự thay đổi ở tầng Model, và cung cấp các hàm có sẵn để thực hiện các thao tác thay đổi dữ liệu và truy vấn cơ sở dữ liệu.

Hệ thống bao gồm một ứng dụng di động chạy trên hệ điều hành Android, đóng vai trò là giao diện giúp người dùng dễ dàng tương tác với phần server Ứng dụng này được phát triển bằng ngôn ngữ lập trình Kotlin.

Hình 3.9 Biểu đồ lớp thực thể của hệ thống

Hình 3.10 Biểu đồ CSDL Đồ án tốt nghiệp đại học Chương 3 Phân tích và thiết kế hệ thống

Chức năng khuyến nghị sản phẩm

3.3.1 Chuẩn bị dữ liệu huấn luyện CNN

Dữ liệu sản phẩm sẽ được thu thập từ đánh giá trên Amazon, tập trung vào hai danh mục: Điện tử và Điện thoại di động cùng phụ kiện Mỗi sản phẩm sẽ bao gồm các thông tin như tên, giá, hình ảnh và thương hiệu Hình ảnh sẽ được sắp xếp vào các thư mục theo danh mục tương ứng.

3.3.2 Huấn luyện model phân loại

Em đã tái sử dụng kiến trúc Xception, chỉ thay đổi các lớp trên cùng để phù hợp với số lượng phân loại của bài toán Sử dụng thư viện Keras, em khởi tạo model Xception với tham số include_topse để loại bỏ các lớp phân loại Sau đó, em bổ sung các lớp Global Average Pooling, Dense (1024, activation='relu') và Dense (2, activation='softmax') làm lớp phân loại Trong quá trình huấn luyện, em chia bộ dữ liệu thành hai phần: 80% cho huấn luyện và 20% cho đánh giá Sau 30 epochs, model đạt độ chính xác 99.4%.

Hình 3.11 Biểu đồ độ chính xác trong quá trình huấn luyện

Hình 3.12 Biều đồ mất mát trong quá trình huấn luyện

3.3.3 Chuẩn bị dữ liệu cho KNN Để biểu diễn quan hệ khoảng cách giữa các sản phẩm, em đã sử dụng thư viện Annoy Đầu tiên em đã dùng model được train ở trên, bỏ các layer Dense Như vậy đầu ra của model sẽ là mảng có chiều dài 2048 biểu thị cho các đặc trưng trong ảnh Mảng này khi được cho vào Annoy sẽ là một điểm trong hệ tọa độ 2048 chiều Với mỗi danh mục sẽ có một hệ tọa độ riêng với các điểm đã được thêm sẵn và lưu thành file ann để có thể tái sử dụng mỗi khi hệ thống cần khởi động lại

Quá trình khuyến nghị bắt đầu khi người dùng nhập ID sản phẩm, hệ thống sẽ thu thập ảnh và phân loại sản phẩm vào danh mục Electronics hoặc Cell Phones and Accessories Tiếp theo, hệ thống trích xuất đặc trưng từ ảnh và tìm 10 sản phẩm tương tự nhất dựa trên khoảng cách Angular Sau khi hoàn thành các biểu đồ ca sử dụng, biểu đồ tuần tự, biểu đồ lớp và biểu đồ CSDL cho hệ thống bán hàng điện tử, tôi sẽ tiến hành cài đặt theo thiết kế đã đề ra.

CÀI ĐẶT, TRIỂN KHAI

Cài đặt server

Cấu hình server để chạy hệ thống được biểu diễn ở bảng dưới

CPU RAM Bộ nhớ Django Postgres

Hệ thống Django và CSDL Postgres đã được docker hóa, cho phép quản lý dễ dàng qua Portainer và triển khai nhanh chóng Docker là nền tảng giúp đóng gói các thành phần hệ thống và thư viện thành đối tượng độc lập, có thể chạy trên nhiều môi trường khác nhau Với tốc độ khởi động và dừng nhanh hơn máy ảo, Docker loại bỏ các thành phần thừa và tách biệt với máy chủ, giúp việc chạy và gỡ bỏ trở nên dễ dàng mà không ảnh hưởng đến các thành phần khác.

To connect Django with a PostgreSQL database, you need to input the database information into the settings.py file of your Django project This includes specifying the engine, database name, user credentials, password, host address, and connection port.

Hình 4.1 Cấu hình CSDL trong Django Đồ án tốt nghiệp đại học Chương 4 Cài đặt, triển khai

Trong Django, các lớp thực thể được định nghĩa trong file models.py và đều kế thừa từ lớp models.Model Sau khi viết xong các model, cần chạy lệnh python manage.py makemigrations để tạo các câu lệnh SQL cho việc tạo và thay đổi cơ sở dữ liệu Để áp dụng những thay đổi này, tiếp tục sử dụng lệnh python manage.py migrate.

Thư viện Django Rest Framework hỗ trợ các lớp View để tạo API dễ dàng Mỗi method API sẽ có một lớp View riêng để xử lý

Bảng 4.2 Phân loại method API và view của DRF

DRF hỗ trợ phân quyền người dùng thông qua biến permission_classes trong từng View Các quyền có thể được khai báo bao gồm AllowAny (công khai), IsAuthenticated (cần đăng nhập), IsAdminUser (chỉ dành cho người dùng admin), và IsAuthenticatedOrReadOnly (có quyền xem, nhưng chỉ có thể thay đổi khi đã đăng nhập).

Cài đặt app client

Em sử dụng trình biên dịch Android Studio Artic Fox để lập trình app Android Cấu hình thiết bị kiểm thử được mô tả ở các bảng dưới:

Android verion API version SoC RAM

Bảng 4.3 Cấu hình thiết bị kiểm thử Android

Em xây dựng dự án Android theo kiến trúc Clean Architecture, chia code thành

2 lớp: lớp Giao diện (UI Layer), lớp Dữ liệu (Data Layer)

Lớp dữ liệu kết hợp giữa cơ sở dữ liệu cục bộ (SQLite, Preference) và API từ Backend, với việc tương tác với server thông qua thư viện Retrofit, OkHttp và Gson Serialization Những thư viện này cung cấp các phương thức để thực hiện yêu cầu API đến server, thêm thông tin vào header của yêu cầu và chuyển đổi các đối tượng Java-Kotlin thành định dạng JSON.

Lớp giao diện được xây dựng với cấu trúc 1 Activity và nhiều Fragment, mang lại tính linh hoạt và khả năng tái sử dụng cao Dữ liệu hiển thị được lưu trữ trong các lớp ViewModel, không bị ràng buộc bởi vòng đời của Activity hay Fragment, giúp tách biệt dữ liệu khỏi view và duy trì lâu dài, từ đó giảm thời gian tải dữ liệu.

Giao diện

Hình 4.2 Giao diện trang chủ Đồ án tốt nghiệp đại học Chương 4 Cài đặt, triển khai

4.3.2 Giao diện chi tiết sản phẩm

Hình 4.3 Giao diện chi tiết sản phảm

Hình 4.4 Giao diện giỏ hàng khi trống Đồ án tốt nghiệp đại học Chương 4 Cài đặt, triển khai

Hình 4.5 Giao diện giỏ hàng khi người dùng chọn sản phẩm

Hình 4.6 Giao diện thông tin tài khoản khi chưa đăng nhập(trái) và đã đăng nhập(phải) Đồ án tốt nghiệp đại học Chương 4 Cài đặt, triển khai

Hình 4.7 Giao diện trang đăng nhập

Hình 4.8 Giao diện đăng ký và chọn ngày sinh Đồ án tốt nghiệp đại học Chương 4 Cài đặt, triển khai

Hình 4.9 Giao diện đặt hàng

Sau quá trình cài đặt, tôi đã triển khai thành công một hệ thống bán hàng điện tử với các chức năng như tạo tài khoản, đăng nhập, lướt xem sản phẩm, khuyến nghị sản phẩm tương tự, thêm vào giỏ hàng và mua hàng Hệ thống bao gồm backend chuyên lưu trữ và xử lý dữ liệu, cùng với ứng dụng Android để người dùng tương tác dễ dàng.

Ngày đăng: 03/10/2023, 09:03

HÌNH ẢNH LIÊN QUAN

Hình 2.1 Hệ thống khuyến nghị bằng thừa số ma trận - Ứng dụng cnn trong bài toán khuyến nghị sản phẩm cho ứng dụng bán hàng điện tử
Hình 2.1 Hệ thống khuyến nghị bằng thừa số ma trận (Trang 17)
Hình 2.4 Cấu trúc một neural nhân tạo - Ứng dụng cnn trong bài toán khuyến nghị sản phẩm cho ứng dụng bán hàng điện tử
Hình 2.4 Cấu trúc một neural nhân tạo (Trang 19)
Hình 2.5 Hàm sigmoid - Ứng dụng cnn trong bài toán khuyến nghị sản phẩm cho ứng dụng bán hàng điện tử
Hình 2.5 Hàm sigmoid (Trang 20)
Hình 2.7 Mô hình neural network với 2-3-3-1 (input layer có 2 node, hidden layer 1 có 3 - Ứng dụng cnn trong bài toán khuyến nghị sản phẩm cho ứng dụng bán hàng điện tử
Hình 2.7 Mô hình neural network với 2-3-3-1 (input layer có 2 node, hidden layer 1 có 3 (Trang 21)
Hình 2.11 Kiến trúc cơ bản của một mạng neural tích chập - Ứng dụng cnn trong bài toán khuyến nghị sản phẩm cho ứng dụng bán hàng điện tử
Hình 2.11 Kiến trúc cơ bản của một mạng neural tích chập (Trang 24)
Hình 2.18 Thực hiện phép tính convolution trên ảnh màu - Ứng dụng cnn trong bài toán khuyến nghị sản phẩm cho ứng dụng bán hàng điện tử
Hình 2.18 Thực hiện phép tính convolution trên ảnh màu (Trang 28)
Hình 2.20 Fully connected layers - Ứng dụng cnn trong bài toán khuyến nghị sản phẩm cho ứng dụng bán hàng điện tử
Hình 2.20 Fully connected layers (Trang 30)
Hình 2.21 Grdient Descenct - Ứng dụng cnn trong bài toán khuyến nghị sản phẩm cho ứng dụng bán hàng điện tử
Hình 2.21 Grdient Descenct (Trang 31)
Hình 2.23 Mô hình mạng Xception - Ứng dụng cnn trong bài toán khuyến nghị sản phẩm cho ứng dụng bán hàng điện tử
Hình 2.23 Mô hình mạng Xception (Trang 32)
Hình 2.24 Block Depthwise Separable Convolution - Ứng dụng cnn trong bài toán khuyến nghị sản phẩm cho ứng dụng bán hàng điện tử
Hình 2.24 Block Depthwise Separable Convolution (Trang 33)
Bảng 3.3 Kịch bản ca sử dụng xem danh sách sản phẩm - Ứng dụng cnn trong bài toán khuyến nghị sản phẩm cho ứng dụng bán hàng điện tử
Bảng 3.3 Kịch bản ca sử dụng xem danh sách sản phẩm (Trang 39)
Bảng 3.5 Kịch bản ca sử dụng thêm sản phẩm vào giỏ hàng - Ứng dụng cnn trong bài toán khuyến nghị sản phẩm cho ứng dụng bán hàng điện tử
Bảng 3.5 Kịch bản ca sử dụng thêm sản phẩm vào giỏ hàng (Trang 41)
Hình 3.11 Biểu đồ độ chính xác trong quá trình huấn luyện - Ứng dụng cnn trong bài toán khuyến nghị sản phẩm cho ứng dụng bán hàng điện tử
Hình 3.11 Biểu đồ độ chính xác trong quá trình huấn luyện (Trang 45)
Hình 3.12 Biều đồ mất mát trong quá trình huấn luyện - Ứng dụng cnn trong bài toán khuyến nghị sản phẩm cho ứng dụng bán hàng điện tử
Hình 3.12 Biều đồ mất mát trong quá trình huấn luyện (Trang 46)
Hình 4.5 Giao diện giỏ hàng khi người dùng chọn sản phẩm - Ứng dụng cnn trong bài toán khuyến nghị sản phẩm cho ứng dụng bán hàng điện tử
Hình 4.5 Giao diện giỏ hàng khi người dùng chọn sản phẩm (Trang 53)

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w