Bối cảnh và vấn đề nghiên cứu

Đồ án tốt nghiệp đại học "Ứ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ử" được thực hiện bởi sinh viên Nguyễn Quốc Khánh (lớp D17CNPM3, ngành Công nghệ phần mềm, Khoa Công nghệ Thông tin 1, Học viện Công nghệ Bưu chính Viễn thông) dưới sự hướng dẫn của ThS. Nguyễn Hoàng Anh vào tháng 1 năm 2022.

Bối cảnh nghiên cứu xuất phát từ giai đoạn giãn cách xã hội phòng chống dịch bệnh SARS-CoV-2 (COVID-19), khi nhu cầu và hành vi mua sắm trực tuyến của người tiêu dùng tại Việt Nam gia tăng mạnh mẽ. Dựa trên số liệu thực trạng được tác giả trích dẫn:

  • Hơn 70% dân số Việt Nam đã tiếp cận Internet.
  • Gần 90% người dùng Internet đã từng tham gia mua sắm trực tuyến.
  • 53% người dân đã sử dụng ví điện tử và thanh toán mua hàng qua mạng.
  • Tỷ lệ người dùng tham gia mua sắm trực tuyến ghi nhận mức 77% vào năm 2020.
  • Về nền tảng thiết bị, số liệu của Statista tính đến hết tháng 5 năm 2021 cho thấy Việt Nam có hơn 61,37 triệu người sở hữu điện thoại thông minh (smartphone), chiếm khoảng 64% dân số và nằm trong nhóm 10 quốc gia có số lượng người dùng smartphone lớn nhất thế giới. Thiết bị di động chiếm tỷ trọng áp đảo (87%) so với máy tính để bàn hoặc máy tính xách tay (36%) trong các phương tiện dùng để mua bán qua mạng.
  • Về thị phần hệ điều hành di động, số liệu tháng 6 năm 2020 ghi nhận Android chiếm hơn 60% thị phần smartphone tại Việt Nam.

Vấn đề nghiên cứu thực tiễn được xác định là sự bùng nổ hàng hóa trên các sàn thương mại điện tử (như Shopee, Lazada, Amazon) với mẫu mã đa dạng, khiến người tiêu dùng phổ thông mất nhiều thời gian tìm kiếm sản phẩm phù hợp. Đồng thời, các doanh nghiệp và người bán hàng vừa và nhỏ phải đối mặt với gánh nặng chi phí tiếp thị, quảng cáo lớn để tiếp cận khách hàng tiềm năng.

Mục tiêu và nhiệm vụ nghiên cứu của đồ án bao gồm:

  1. Nghiên cứu lý thuyết về hệ thống khuyến nghị (Recommender System), mạng nơ-ron nhân tạo (Neural Network), mạng nơ-ron tích chập (Convolutional Neural Network - CNN), kiến trúc mạng Xception và thuật toán K láng giềng gần nhất (K-Nearest Neighbor - KNN).
  2. Xây dựng mô hình học sâu phân loại hình ảnh sản phẩm dựa trên mạng Xception và trích xuất đặc trưng hình ảnh kết hợp thư viện Annoy để tìm kiếm sản phẩm tương đồng.
  3. Phân tích, thiết kế và phát triển hoàn chỉnh một hệ thống thương mại điện tử bao gồm hệ thống máy chủ (Backend API) trên nền tảng Django/PostgreSQL và ứng dụng di động khách (Client Native App) mang tên PStore trên hệ điều hành Android bằng ngôn ngữ Kotlin.
  4. Tích hợp tính năng khuyến nghị tự động vào các màn hình chức năng chính: trang chủ, xem chi tiết sản phẩm và sau khi hoàn tất đặt hàng.

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

  • Đối tượng nghiên cứu: Phương pháp khuyến nghị sản phẩm dựa trên xử lý hình ảnh bằng kỹ thuật học sâu (mạng CNN Xception và thuật toán K-NN); kiến trúc hệ thống bán hàng điện tử trên nền tảng di động.
  • Phạm vi dữ liệu và không gian: Tập dữ liệu ảnh sản phẩm trích xuất từ bộ dữ liệu Amazon review data thuộc 2 nhóm danh mục: "Electronics" (Thiết bị điện tử) và "Cell Phones and Accessories" (Điện thoại và phụ kiện); ứng dụng di động triển khai thử nghiệm trên hệ điều hành Android tại Việt Nam.
  • Phạm vi thời gian: Nghiên cứu và khảo sát số liệu thị trường trong giai đoạn 2019–2021; hoàn thành nghiệm thu đồ án vào tháng 1 năm 2022.

Cơ sở lý thuyết và phương pháp

Khóa luận xây dựng nội dung dựa trên các nền tảng lý thuyết học máy, thị giác máy tính và kỹ thuật công nghệ phần mềm:

1. Khung lý thuyết và mô hình sử dụng

  • Hệ khuyến nghị (Recommender System): Tổng quan về các cơ chế đề xuất, giải quyết bài toán quá tải thông tin số. Tác giả dẫn chứng số liệu của McKinsey cho thấy 35% doanh thu của Amazon đến từ hệ thống khuyến nghị và 75% thời lượng xem phim trên nền tảng Netflix xuất phát từ các đề xuất cá nhân hóa. Đồ án xem xét phương pháp phân rã ma trận truyền thống (Matrix Factorization) biểu diễn người dùng và sản phẩm dưới dạng vector đặc trưng, sau đó phân tích sự dịch chuyển sang các kỹ thuật học sâu (Deep Learning) nhằm nắm bắt các mối liên hệ phi tuyến phức tạp.
  • Mạng nơ-ron nhân tạo (Neural Network - NN): Cấu tạo từ các perceptron với hàm kích hoạt để chuyển đổi đầu ra nhị phân sang miền giá trị liên tục $[0, 1]$ (Sigmoid, ReLU, Softmax). Quá trình suy luận bao gồm lan truyền tiến (feedforward), tính toán hàm mất mát (loss function) và cập nhật trọng số thông qua thuật toán lan truyền ngược (backpropagation) kết hợp hạ đại lượng dốc (gradient descent).
  • Mạng nơ-ron tích chập (Convolutional Neural Network - CNN): Khắc phục nhược điểm bùng nổ số lượng trọng số của mạng kết nối đầy đủ (fully connected) khi xử lý ảnh kích thước lớn (ví dụ: ảnh $200 \times 200 \times 3$ tạo ra 120.000 trọng số ngay tại lớp ẩn đầu tiên dẫn tới nguy cơ quá khớp - overfitting). Cấu trúc chuẩn bao gồm:
    • Lớp tích chập (Convolution layer): sử dụng bộ lọc (kernel) kích thước lẻ $k \times k \times c$, bước nhảy (Stride) và đệm biên (Padding).
    • Lớp lấy mẫu (Pooling layer): giảm số chiều dữ liệu, trong đó Max Pooling được tác giả đánh giá vượt trội hơn Average Pooling nhờ khả năng khử nhiễu song song với việc giảm chiều.
    • Lớp kết nối đầy đủ (Fully Connected layer): làm phẳng tensor đầu ra thành vector cột để kết nối với các lớp phân loại.
    • Vấn đề triệt tiêu đạo hàm (Vanishing Gradient): xảy ra khi mạng có quá nhiều tầng tích chập (như VGG-16, ResNet-50, InceptionV1), khiến đạo hàm tiến dần về 0 và các tầng sâu không thể cập nhật trọng số.
  • Kiến trúc mạng Xception: Mô hình mạng do François Chollet và Google phát triển. Điểm mấu chốt của Xception là thay thế phép tích chập thông thường bằng phép tích chập phân tách theo chiều sâu (Depthwise Separable Convolution - DSC) kết hợp đảo ngược thứ tự: thực hiện Pointwise Convolution ($1 \times 1 \times N$) trước rồi mới đến Depthwise Convolution ($d \times d \times 1$). Kỹ thuật này giúp giảm số lượng phép toán đi $N$ lần. Bên cạnh đó, mạng tích hợp các khối thặng dư (Residual blocks) từ ResNet theo công thức $H(x) = F(x) + x$ để bảo toàn gradient, khắc phục hiện tượng vanishing gradient.
  • Thuật toán K láng giềng gần nhất (K-Nearest Neighbor - KNN) và thư viện Annoy: KNN là thuật toán học có giám sát theo cơ chế lười biếng (lazy learning / memory-based), không tối ưu tham số khi huấn luyện mà chỉ tính toán khi có dữ liệu mới cần dự đoán. Để tối ưu tốc độ tìm kiếm láng giềng trong không gian nhiều chiều, tác giả ứng dụng thư viện Annoy nhằm lập chỉ mục không gian vector đặc trưng và áp dụng công thức khoảng cách Angular: $$d(u, v) = \sqrt{2 \times [1 - \cos(u, v)]}$$ Trong đó $u$ và $v$ là các vector chuẩn hóa nối gốc tọa độ với điểm biểu diễn đặc trưng sản phẩm.

2. Phương pháp nghiên cứu và thực nghiệm

  • Thu thập và tiền xử lý dữ liệu: Trích xuất tập dữ liệu ảnh từ Amazon review data thuộc 2 nhóm danh mục: "Electronics" và "Cell Phones and Accessories". Các trường dữ liệu gồm tên, giá, hình ảnh và thương hiệu. Dữ liệu hình ảnh được chia tách vào các thư mục theo nhãn tương ứng.
  • Phân chia tập dữ liệu: Tập dữ liệu gốc được chia thành 2 phần độc lập theo tỷ lệ 80% dành cho huấn luyện (train set) và 20% dành cho kiểm thử/đánh giá (validation set).
  • Phương pháp chuyển giao học tập (Transfer Learning): Tái sử dụng kiến trúc mạng Xception được cung cấp trong thư viện Keras với thiết lập include_top=False nhằm loại bỏ lớp phân loại nguyên bản. Bổ sung thêm các lớp: Global Average Pooling, Dense (1024 nút, hàm kích hoạt ReLU) và Dense (2 nút, hàm kích hoạt Softmax tương ứng 2 danh mục phân loại).
  • Trích xuất đặc trưng và lập chỉ mục không gian: Sau khi huấn luyện phân loại, tác giả loại bỏ các lớp Dense cuối cùng, giữ lại đầu ra của lớp Global Average Pooling để tạo thành vector đặc trưng 2048 chiều cho mỗi hình ảnh sản phẩm. Sử dụng thư viện Annoy để đưa toàn bộ các vector này vào hệ tọa độ 2048 chiều và lưu trữ dưới dạng các tệp nhị phân .ann theo từng danh mục riêng biệt.

Thiết kế và triển khai

Hệ thống bán hàng điện tử PStore được thiết kế và triển khai theo mô hình kiến trúc Client-Server, phân tách độc lập giữa phần mềm máy chủ cung cấp API và ứng dụng di động phía người dùng.

1. Thiết kế và triển khai máy chủ Backend

  • Nền tảng công nghệ: Máy chủ được lập trình bằng ngôn ngữ Python trên nền tảng Web Framework Django, kết hợp với thư viện Django Rest Framework (DRF) để xây dựng hệ thống RESTful API trao đổi dữ liệu định dạng JSON.
  • Cơ sở dữ liệu: Sử dụng hệ quản trị cơ sở dữ liệu quan hệ PostgreSQL. Quá trình ánh xạ cấu trúc bảng được quản lý tự động thông qua Django ORM (Object-Relational Mapping), tự động sinh các truy vấn SQL thông qua tệp models.py và các lệnh quản trị makemigrations, migrate.
  • Phân quyền và kiểm soát API: DRF cung cấp các lớp View chuyên biệt và thiết lập quyền hạn truy cập (Permission classes) thông qua thuộc tính permission_classes:
    • AllowAny: Công khai truy cập cho mọi đối tượng.
    • IsAuthenticated: Yêu cầu phải xác thực tài khoản đăng nhập.
    • IsAdminUser: Chỉ cho phép tài khoản có quyền quản trị viên (Admin).
    • IsAuthenticatedOrReadOnly: Cho phép xem dữ liệu công khai, nhưng yêu cầu đăng nhập nếu thực hiện chỉnh sửa/thay đổi.
Phương thức HTTP (Method) Lớp View xử lý tương ứng trong DRF
POST CreateAPIView
GET ListAPIView hoặc RetrieveAPIView
PUT UpdateAPIView
DELETE DestroyAPIView
  • Đóng gói và triển khai môi trường: Toàn bộ hệ thống Django và cơ sở dữ liệu PostgreSQL được container hóa bằng Docker, hỗ trợ quản lý tập trung và trực quan hóa trạng thái container qua công cụ Portainer.

2. Thiết kế và triển khai ứng dụng khách Client (Android)

  • Nền tảng và công cụ: Ứng dụng di động PStore được phát triển dạng Native App trên hệ điều hành Android bằng ngôn ngữ lập trình Kotlin, sử dụng môi trường phát triển tích hợp Android Studio Arctic Fox. Tác giả lựa chọn Native App thay vì Hybrid App nhằm tối ưu hóa hiệu năng thực thi và trải nghiệm người dùng, đồng thời chọn Android do hệ điều hành này chiếm ưu thế tuyệt đối về thị phần tại Việt Nam và không chịu rào cản phần cứng máy Mac như iOS.
  • Kiến trúc phần mềm: Áp dụng mô hình kiến trúc Clean Architecture, chia mã nguồn thành hai tầng chính:
    • Tầng giao diện (UI Layer): Thiết kế theo mô hình 1 Activity kết hợp nhiều Fragment để tăng tính linh hoạt và khả năng tái sử dụng. Trạng thái và dữ liệu giao diện được lưu giữ tại các lớp ViewModel, đảm bảo dữ liệu không bị hủy hay phụ thuộc vào vòng đời của Activity/Fragment.
    • Tầng dữ liệu (Data Layer): Kết hợp lưu trữ cục bộ (Local database bằng SQLite, SharedPreferences) và nạp dữ liệu từ máy chủ từ xa. Việc kết nối và gọi API backend được thực hiện qua bộ thư viện Retrofit, OkHttp và xử lý tuần tự hóa/giải tuần tự hóa dữ liệu JSON bằng Gson Serialization.

3. Phân tích chức năng và ca sử dụng hệ thống

Hệ thống PStore thiết kế các ca sử dụng (Use case) xoay quanh hành vi người dùng, gồm: Đăng ký, Đăng nhập, Xem danh sách sản phẩm, Xem chi tiết sản phẩm, Thêm sản phẩm vào giỏ hàng, Đặt hàng và Đánh giá sản phẩm.

Tên ca sử dụng Tác nhân (Actor) Điều kiện tiên quyết Kết quả / Hậu điều kiện Luồng sự kiện chính
Đăng ký Người dùng Truy cập ứng dụng Tạo tài khoản mới thành công Người dùng điền: Email, Mật khẩu, Nhập lại mật khẩu, Họ, Tên, Số điện thoại, Địa chỉ, Ngày sinh; hệ thống kiểm tra hợp lệ và chuyển về màn hình đăng nhập.
Đăng nhập Người dùng Truy cập ứng dụng Đăng nhập thành công vào hệ thống Người dùng nhập Email và Mật khẩu; hệ thống xác thực thông tin, cấp quyền và chuyển sang màn hình thông tin Tài khoản.
Xem danh sách sản phẩm Người dùng Truy cập ứng dụng Danh sách mặt hàng hiển thị Người dùng chọn màn hình Trang chủ; hệ thống truy vấn và hiển thị danh mục hàng hóa kèm đề xuất.
Xem chi tiết sản phẩm Người dùng Truy cập ứng dụng Hiển thị thông tin mặt hàng và danh sách gợi ý Người dùng chọn một sản phẩm; hệ thống hiển thị ảnh, tên, giá, mô tả và hiển thị danh sách các sản phẩm tương tự được khuyến nghị.
Thêm vào giỏ hàng Người dùng Truy cập ứng dụng Cập nhật sản phẩm vào giỏ Người dùng chọn sản phẩm từ màn hình chi tiết, bấm "Thêm vào giỏ"; hệ thống tạo đối tượng và lưu trữ thành công.
Mua hàng (Đặt hàng) Người dùng Đã đăng nhập và có hàng trong giỏ Tạo đơn hàng mới thành công Chọn mặt hàng trong giỏ hàng; hệ thống hiển thị màn hình tạo đơn với thông tin cá nhân điền sẵn; người dùng xác nhận đặt hàng.

4. Quy trình xử lý chức năng khuyến nghị sản phẩm

Tính năng khuyến nghị sản phẩm tương tự vận hành theo quy trình xử lý 4 bước:

  1. Tiếp nhận đầu vào: Hệ thống nhận mã định danh (ID) của sản phẩm khi người dùng truy cập màn hình chi tiết hoặc hoàn tất đơn hàng.
  2. Phân loại danh mục: Ảnh đại diện của sản phẩm được đưa qua mạng CNN Xception đã huấn luyện để phân loại xem sản phẩm thuộc nhóm "Electronics" hay "Cell Phones and Accessories".
  3. Trích xuất vector đặc trưng: Sử dụng mạng Xception (đã tách các lớp phân loại Dense) để trích xuất ma trận điểm ảnh thành vector đặc trưng duy nhất có độ dài 2048 chiều.
  4. Truy vấn láng giềng: Đưa vector 2048 chiều vào tệp chỉ mục không gian .ann tương ứng của danh mục đó; thuật toán K-NN của thư viện Annoy tính khoảng cách Angular và trả về danh sách 10 sản phẩm có khoảng cách đặc trưng gần nhất với ảnh đầu vào để hiển thị lên giao diện người dùng.

Nội dung chính theo từng chương

Bố cục khóa luận được cấu trúc thành 4 chương nội dung chuyên môn chính:

Chương 1: Giới thiệu và tổng quan đề tài

  • Khảo sát thực trạng thị trường thương mại điện tử tại Việt Nam dưới tác động của dịch bệnh COVID-19; phân tích số liệu về tỷ lệ người dùng Internet mua sắm online, tỷ lệ sở hữu smartphone và thói quen thanh toán qua ví điện tử.
  • Đánh giá vai trò của hệ thống khuyến nghị trong việc rút ngắn thời gian tìm kiếm của người tiêu dùng và cắt giảm chi phí quảng bá cho các đơn vị kinh doanh vừa và nhỏ.
  • Phân tích ưu nhược điểm giữa hai hướng tiếp cận phát triển ứng dụng di động: Native App và Hybrid App. Làm rõ cơ sở lựa chọn xây dựng Native App trên hệ điều hành Android dựa trên thị phần thực tế (> 60% tại Việt Nam) và tính thuận tiện về công cụ lập trình, không đòi hỏi chi phí phần cứng máy Mac cao như nền tảng iOS.
  • Xác định mục tiêu xây dựng ứng dụng thương mại điện tử PStore có tích hợp cơ chế gợi ý sản phẩm tại màn hình trang chủ, màn hình chi tiết sản phẩm và sau khi đặt hàng.

Chương 2: Giải quyết vấn đề

  • Trình bày tổng quan về hệ thống khuyến nghị (Recommender System), phân tích phương pháp phân rã ma trận (Matrix Factorization) và sự cần thiết của việc áp dụng học sâu để học các mối quan hệ thuộc tính người dùng và sản phẩm trong không gian vector đa chiều.
  • Hệ thống hóa lý thuyết về mạng nơ-ron nhân tạo: cấu trúc perceptron, các hàm kích hoạt (Sigmoid, ReLU, Softmax), quy trình lan truyền tiến (feedforward), hàm mất mát (loss function) và thuật toán lan truyền ngược (backpropagation) kết hợp hạ đại lượng dốc (gradient descent).
  • Trình bày kiến trúc mạng nơ-ron tích chập (CNN): bản chất toán học của vector, ma trận, tensor 3 chiều trên ảnh màu RGB; cơ chế hoạt động của lớp tích chập (Convolution layer) với các tham số kernel, stride, padding; so sánh chức năng của Max Pooling và Average Pooling; vai trò của lớp kết nối đầy đủ (Fully connected layer) trong phân loại.
  • Phân tích nguyên nhân và hiện tượng triệt tiêu đạo hàm (Vanishing Gradient) trong các mạng CNN có chiều sâu lớn; giới thiệu kiến trúc mạng Xception của Google với kỹ thuật Depthwise Separable Convolution và khối thặng dư Residual Blocks nhằm tối ưu số lượng phép tính và triệt tiêu vanishing gradient.
  • Trình bày nguyên lý hoạt động của thuật toán phân loại và hồi quy K láng giềng gần nhất (KNN) dưới dạng mô hình học lười biếng (instance-based / memory-based learning).

Chương 3: Phân tích và thiết kế hệ thống

  • Xây dựng mô hình ca sử dụng (Use Case Diagram) tổng thể cho hệ thống bán hàng điện tử PStore; chi tiết hóa các kịch bản sử dụng (Use case specification) và biểu đồ tuần tự (Sequence Diagram) cho 6 ca sử dụng chính: Đăng ký, Đăng nhập, Xem danh sách sản phẩm, Xem chi tiết sản phẩm, Thêm vào giỏ hàng và Đặt hàng.
  • Thiết kế sơ đồ kiến trúc kết nối hệ thống (Sơ đồ Client - Backend Django - PostgreSQL), biểu đồ lớp thực thể (Class Diagram) và biểu đồ cơ sở dữ liệu quan hệ.
  • Quy trình chuẩn bị dữ liệu huấn luyện mạng CNN từ bộ dữ liệu Amazon review data (2 danh mục: Electronics, Cell Phones and Accessories).
  • Thiết lập huấn luyện mô hình phân loại: cấu hình mạng Xception từ Keras (include_top=False), thêm lớp Global Average Pooling, Dense(1024, relu), Dense(2, softmax); phân chia tập dữ liệu 80% train và 20% validation.
  • Thiết lập quy trình trích xuất vector đặc trưng 2048 chiều và xây dựng cấu trúc lập chỉ mục không gian vector với thư viện Annoy (lưu trữ tệp .ann), tính toán 10 sản phẩm láng giềng gần nhất theo công thức khoảng cách Angular.

Chương 4: Cài đặt và triển khai hệ thống

  • Hướng dẫn cài đặt và cấu hình hệ thống máy chủ Backend: tích hợp Django với cơ sở dữ liệu PostgreSQL, định nghĩa các mô hình thực thể tại models.py, thực thi các câu lệnh di chuyển cấu trúc dữ liệu (makemigrations, migrate).
  • Xây dựng hệ thống API bằng Django Rest Framework: phân loại các lớp View (CreateAPIView, ListAPIView, RetrieveAPIView, UpdateAPIView, DestroyAPIView) và thiết lập các lớp phân quyền truy cập.
  • Triển khai đóng gói toàn bộ dịch vụ backend và cơ sở dữ liệu bằng Docker, quản trị container qua giao diện Portainer.
  • Cài đặt ứng dụng di động khách (Client) trên Android Studio Arctic Fox: thiết lập kiến trúc Clean Architecture, xây dựng tầng UI (1 Activity, nhiều Fragment, ViewModel) và tầng dữ liệu (SQLite, Retrofit, OkHttp, Gson Serialization).
  • Trình bày các giao diện thực tế của ứng dụng PStore: Trang chủ, Chi tiết sản phẩm, Giỏ hàng khi trống và khi có sản phẩm, Thông tin tài khoản (trạng thái chưa đăng nhập và đã đăng nhập), Đăng nhập, Đăng ký (chọn ngày sinh) và màn hình Đặt hàng.

Kết quả và đóng góp

1. Kết quả chính

  • Mô hình học sâu phân loại và khuyến nghị:
    • Mô hình phân loại ảnh dựa trên kiến trúc mạng Xception được huấn luyện thành công qua 30 chu kỳ (epochs) trên tập dữ liệu Amazon review data (gồm 2 danh mục: Electronics và Cell Phones and Accessories với tỷ lệ 80% train, 20% validation).
    • Kết quả thực nghiệm ghi nhận mô hình đạt độ chính xác phân loại là 99.00% (biểu đồ hàm mất mát val_loss và độ chính xác val_accuracy duy trì mức hội tụ ổn định qua 30 chu kỳ).
    • Trích xuất thành công vector đặc trưng hình ảnh độ dài 2048 chiều từ tầng Global Average Pooling của mạng Xception.
    • Ứng dụng thư viện Annoy tạo lập tệp chỉ mục không gian .ann theo từng danh mục, cho phép truy vấn chính xác danh sách 10 sản phẩm tương đồng nhất theo độ đo khoảng cách Angular trong thời gian thực.
  • Hệ thống phần mềm hoàn chỉnh:
    • Xây dựng hoàn chỉnh hệ thống quản trị máy chủ bằng Django và Django Rest Framework, tích hợp PostgreSQL, đóng gói container hóa qua Docker và quản trị bằng Portainer.
    • Xây dựng thành công ứng dụng di động Native App PStore trên nền tảng Android (Kotlin), cấu trúc mã nguồn theo chuẩn Clean Architecture kết hợp ViewModel, Retrofit và OkHttp.
    • Các chức năng nghiệp vụ thương mại điện tử (đăng ký, đăng nhập, duyệt sản phẩm, quản lý giỏ hàng, đặt hàng) và tính năng gợi ý sản phẩm tương tự vận hành đồng bộ trên thiết bị thử nghiệm.

2. Giải pháp và đóng góp của đề tài

  • Đồ án đã kết hợp mô hình thị giác máy tính hiện đại (mạng Xception với cơ chế tích chập phân tách theo chiều sâu DSC) cùng cấu trúc dữ liệu lập chỉ mục không gian chiều cao (thư viện Annoy với thuật toán KNN) để giải quyết bài toán gợi ý sản phẩm thương mại điện tử dựa trên hình ảnh.
  • Giải pháp cho phép hệ thống tự động tìm kiếm và đề xuất các sản phẩm có đặc trưng mẫu mã tương đồng mà không phụ thuộc vào việc người dùng phải nhập từ khóa tìm kiếm hay đánh giá xếp hạng từ trước.
  • Giúp các doanh nghiệp vừa và nhỏ dễ dàng giới thiệu sản phẩm tương tự đến khách hàng mục tiêu trực tiếp trên ứng dụng mà không cần tốn kém chi phí marketing, quảng cáo hoặc khảo sát thị trường diện rộng.
  • Cung cấp một thiết kế kiến trúc phần mềm hoàn chỉnh từ tầng mô hình học máy (Keras/TensorFlow), tầng dịch vụ API phía máy chủ (Django/PostgreSQL/Docker) cho đến tầng ứng dụng người dùng cuối trên di động (Android Native/Clean Architecture).

Hạn chế và hướng nghiên cứu tiếp

Dựa trên các nội dung và phạm vi nghiên cứu được tác giả trình bày trong văn bản:

1. Hạn chế

  • Quy mô dữ liệu thử nghiệm: Mô hình học sâu mới chỉ được huấn luyện và kiểm thử trên tập dữ liệu gồm 2 danh mục hàng hóa cụ thể từ Amazon review data là "Electronics" và "Cell Phones and Accessories", chưa được đánh giá trên toàn bộ các nhóm mặt hàng thương mại điện tử đa dạng khác (thời trang, gia dụng, thực phẩm...).
  • Cơ chế khuyến nghị đơn kênh: Tính năng khuyến nghị hiện tại thuần túy dựa trên sự tương đồng về đặc trưng hình ảnh của sản phẩm (content-based image recommendation) kết hợp phân loại danh mục, chưa kết hợp khai thác lịch sử hành vi mua sắm, thời gian xem trang, độ tuổi hay các thuật toán lọc cộng tác (Collaborative Filtering) phức tạp để cá nhân hóa đa chiều.
  • Nền tảng triển khai ứng dụng khách: Ứng dụng PStore mới chỉ được phát triển và kiểm thử trên hệ điều hành Android; chưa có phiên bản tương ứng cho hệ điều hành iOS (do tác giả chủ đích giới hạn phạm vi nghiên cứu để tối ưu chi phí phần cứng và công cụ phát triển).

2. Hướng nghiên cứu tiếp

  • Mở rộng tập dữ liệu huấn luyện cho mô hình mạng CNN sang nhiều ngành hàng, thương hiệu và danh mục sản phẩm khác nhau nhằm nâng cao tính bao quát của hệ thống.
  • Cải tiến thuật toán khuyến nghị bằng cách kết hợp thông tin hình ảnh với thông tin ngữ cảnh, lịch sử duyệt sản phẩm và hành vi mua sắm cá nhân của người dùng.
  • Nghiên cứu phát triển và phát hành ứng dụng PStore trên hệ điều hành iOS nhằm đáp ứng đầy đủ người dùng trên cả hai nền tảng di động phổ biến.

Giá trị tham khảo

Báo cáo đồ án tốt nghiệp là tài liệu tham khảo có giá trị học thuật và ứng dụng thực tiễn dành cho:

  • Đối tượng thụ hưởng:
    • Sinh viên các ngành Công nghệ thông tin, Công nghệ phần mềm, Hệ thống thông tin và Khoa học dữ liệu / Trí tuệ nhân tạo đang làm đồ án tốt nghiệp hoặc dự án nghiên cứu về hệ thống thương mại điện tử.
    • Lập trình viên di động (Android) và lập trình viên Backend (Python/Django) muốn tìm hiểu mô hình tích hợp dịch vụ học máy vào sản phẩm phần mềm thực tế.
  • Các nội dung nổi bật đáng tham khảo:
    • Quy trình tích hợp CNN và Annoy: Cách thức loại bỏ lớp phân loại trên cùng của mạng Xception để lấy vector đặc trưng 2048 chiều, sau đó đưa vào thư viện Annoy để tính toán khoảng cách Angular cho bài toán tìm kiếm ảnh tương đồng (Chương 2 và Chương 3).
    • Thiết kế phần mềm theo chuẩn Clean Architecture: Cách phân tách UI Layer (Activity, Fragment, ViewModel) và Data Layer (SQLite, Retrofit, OkHttp) trong lập trình ứng dụng Android bằng ngôn ngữ Kotlin (Chương 4).
    • Xây dựng và đóng gói RESTful API: Phương pháp phân quyền người dùng và ánh xạ các lớp View trong Django Rest Framework kết hợp container hóa hệ thống thông qua Docker và Portainer (Chương 4).

Câu hỏi thường gặp

1. Tác giả sử dụng tập dữ liệu nào và bao nhiêu nhóm mặt hàng để huấn luyện mô hình khuyến nghị?
Tác giả sử dụng dữ liệu được trích xuất từ bộ dữ liệu Amazon review data, giới hạn trong 2 danh mục mặt hàng là "Electronics" (Thiết bị điện tử) và "Cell Phones and Accessories" (Điện thoại và phụ kiện). Tập dữ liệu được phân chia theo tỷ lệ 80% dành cho huấn luyện (train set) và 20% dành cho đánh giá (validation set).

2. Tại sao tác giả lại lựa chọn kiến trúc mạng Xception thay vì các mạng CNN truyền thống khác?
Kiến trúc Xception sử dụng các khối tích chập phân tách theo chiều sâu (Depthwise Separable Convolution) với thứ tự Pointwise trước rồi đến Depthwise, giúp giảm khối lượng tính toán đi nhiều lần so với tích chập tiêu chuẩn. Đồng thời, Xception tích hợp các khối thặng dư (Residual blocks) giúp chống lại hiện tượng triệt tiêu đạo hàm (Vanishing Gradient) vốn thường xảy ra trên các mạng CNN có nhiều tầng tích chập sâu.

3. Vector đặc trưng của ảnh có kích thước bao nhiêu và được xử lý tìm kiếm láng giềng bằng công cụ nào?
Sau khi loại bỏ các lớp phân loại Dense cuối cùng của mạng Xception, đầu ra tại lớp Global Average Pooling là một vector đặc trưng có độ dài 2048 chiều. Tác giả sử dụng thư viện Annoy để định vị vector này trong không gian 2048 chiều, lưu trữ vào tệp nhị phân .ann theo từng danh mục và áp dụng công thức khoảng cách Angular $\sqrt{2 \times [1 - \cos(u, v)]}$ để truy vấn ra 10 sản phẩm có độ tương đồng cao nhất.

4. Ứng dụng di động PStore được phát triển bằng ngôn ngữ và kiến trúc gì? Tại sao lại chọn phát triển Native App trên Android?
Ứng dụng di động PStore được lập trình dạng Native App bằng ngôn ngữ Kotlin trên môi trường Android Studio Arctic Fox, tuân thủ kiến trúc Clean Architecture (phân tách thành UI Layer với ViewModel và Data Layer với Retrofit, OkHttp, SQLite). Tác giả lựa chọn Native App để tối ưu hiệu năng và trải nghiệm người dùng; lựa chọn hệ điều hành Android vì Android chiếm hơn 60% thị phần smartphone tại Việt Nam vào thời điểm nghiên cứu và không đòi hỏi chi phí thiết bị phần cứng máy Mac cao như iOS.

5. Kết quả độ chính xác mà mô hình mạng CNN đạt được sau quá trình huấn luyện là bao nhiêu?
Sau khi thực hiện huấn luyện mô hình mạng Xception qua 30 chu kỳ (epochs) trên tập dữ liệu sản phẩm của Amazon, kết quả đánh giá thực nghiệm ghi nhận mô hình đạt độ chính xác phân loại là 99.00%.


Kết luận

Đồ án tốt nghiệp của sinh viên Nguyễn Quốc Khánh đã giải quyết trọn vẹn bài toán ứng dụng học sâu vào hệ thống thương mại điện tử thông qua việc kết hợp mạng nơ-ron tích chập Xception và thuật toán K láng giềng gần nhất (thư viện Annoy) để xây dựng chức năng khuyến nghị sản phẩm dựa trên hình ảnh. Tác giả đã thiết kế và triển khai hoàn chỉnh một hệ thống phần mềm thực tế gồm dịch vụ máy chủ Backend Django/PostgreSQL đóng gói qua Docker và ứng dụng di động Native App PStore trên nền tảng Android bằng ngôn ngữ Kotlin theo kiến trúc Clean Architecture. Kết quả thực nghiệm cho thấy mô hình phân loại đạt độ chính xác 99.00% trên tập dữ liệu thử nghiệm, đồng thời tính năng gợi ý 10 sản phẩm tương đồng vận hành ổn định trên các màn hình chức năng của ứng dụng di động. Đồ án cung cấp tài liệu tham khảo chi tiết, có giá trị ứng dụng cao cho sinh viên và kỹ sư phần mềm trong việc kết nối các mô hình thị giác máy tính với kiến trúc hệ thống bán hàng hiện đại.