Giới thiệu dự án

Sự bùng nổ của các nền tảng mạng xã hội như Facebook, X (Twitter) và TikTok đã định hình lại phương thức tiêu thụ thông tin toàn cầu. Theo báo cáo của Viện Nghiên cứu Báo chí Reuters (Reuters Institute), hơn 56% người dùng internet tiếp cận tin tức chủ yếu qua mạng xã hội. Tuy nhiên, đi kèm với sự tự do thông tin là sự lan truyền mất kiểm soát của các tin tức giả mạo (Fake News) và thông tin sai lệch (Disinformation). Đặc biệt trong các giai đoạn khủng hoảng như đại dịch Covid-19, "dịch bệnh thông tin" (Infodemic) đã tạo ra tâm lý hoang mang, ảnh hưởng tiêu cực đến an ninh trật tự và sức khỏe cộng đồng.

+-----------------------------------------------------------------------------------+
|                            BỐI CẢNH DỊCH BỆNH THÔNG TIN                           |
|  56% người dùng nhận tin từ MXH  --->  Thiếu cơ chế kiểm chứng  --->  Tin giả tinh vi |
|  Lan truyền cảm xúc tiêu cực     --->  Tổn hại uy tín tổ chức    --->  Cần AI hỗ trợ  |
+-----------------------------------------------------------------------------------+

Vấn đề nghiên cứu (Problem Statement)

Nhận dạng tin giả trên mạng xã hội tại Việt Nam đối mặt với các thách thức kỹ thuật lớn:

  • Tính tinh vi của văn bản: Tin giả hiện đại thường đan xen sự thật với các luận điệu xuyên tạc, sử dụng cấu trúc câu giật gân, đánh vào tâm lý bức xúc của độc giả.
  • Đặc thù ngôn ngữ tiếng Việt: Tiếng Việt là ngôn ngữ đơn lập, có hiện tượng từ ghép, từ đồng âm và đa nghĩa, đòi hỏi các kỹ thuật tách từ (Word Segmentation) và biểu diễn ngữ cảnh chuyên biệt.
  • Sự thiếu hụt dữ liệu phi văn bản: Hầu hết các phương pháp truyền thống chỉ phân tích văn bản thuần túy (Text-only) mà bỏ qua các thuộc tính siêu dữ liệu (Metadata) quan trọng như lượt tương tác, thời gian đăng bài, độ uy tín của tác giả.

Mục tiêu dự án

  1. Khảo sát toàn diện cơ sở lý thuyết về tin giả, dấu hiệu nhận biết và các mô hình học sâu ứng dụng trong Xử lý ngôn ngữ tự nhiên (NLP).
  2. Xây dựng quy trình tiền xử lý dữ liệu chuẩn hóa, giải quyết bài toán dữ liệu khuyết và lọc nhiễu ngoại lai (Outliers) bằng phương pháp thống kê 3-Sigma.
  3. Nghiên cứu và triển khai các mô hình ngôn ngữ tiền huấn luyện (Pretrained Language Models - PLMs) đơn ngữ tiếng Việt: PhoBERT, ViBERTviELECTRA.
  4. Đề xuất kiến trúc kết hợp đa đặc trưng (Multi-feature Fusion): tích hợp siêu dữ liệu (lượt like, share, comment, thời gian) bằng kỹ thuật biểu diễn số (Vector Concatenation) và kỹ thuật văn bản hóa (Verbalization).
  5. Đánh giá thực nghiệm trên bộ dữ liệu chuẩn ReINTEL (VLSP 2020) nhằm đạt hiệu suất tối ưu trên thang đo diện tích dưới đường cong ROC (ROC-AUC).

Phương pháp tiếp cận và Phạm vi

  • Tiếp cận: Ứng dụng Học chuyển giao (Transfer Learning) trên kiến trúc Transformer kết hợp tinh chỉnh (Fine-tuning) biểu diễn ẩn đa tầng (<CLS> Pooling từ 4 lớp cuối) cùng kỹ thuật làm giàu ngữ cảnh văn bản bằng Metadata.
  • Phạm vi: Tập trung vào bài toán phân loại nhị phân (0 - Đáng tin cậy / Reliable, 1 - Không đáng tin cậy / Unreliable) trên tập dữ liệu ReINTEL bằng tiếng Việt.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Các phương pháp phát hiện tin giả đã trải qua nhiều giai đoạn phát triển, từ các thuật ngữ dựa trên luật (Rule-based), máy học cổ điển (Classical ML), đến học sâu (Deep Learning) và học chuyển tiếp (Transfer Learning).

Tiêu chí Machine Learning Truyền thống (SVM, CatBoost) Mạng Nơ-ron Chuỗi (RNN, LSTM, Bi-LSTM) Mô hình Pretrained Transformers (BERT, PhoBERT)
Biểu diễn từ TF-IDF, Bag-of-Words, GloVe Word2Vec, Bi-LSTM Hidden State Multi-Head Self-Attention, BPE/WordPiece
Nắm bắt ngữ cảnh Rời rạc, không có ngữ cảnh 1 chiều hoặc 2 chiều tuần tự Đa chiều sâu (Bidirectional Deep Context)
Xử lý Metadata Gộp trực tiếp vào ma trận đặc trưng Khó kết hợp tự nhiên với văn bản Ghép vector ẩn hoặc văn bản hóa (Prompting)
Hạn chế chính Bỏ qua trật tự từ, độ chính xác thấp Gradient vanishing, không song song hóa Chi phí tính toán cao, giới hạn độ dài token

Yêu cầu hệ thống theo mô hình MoSCoW

  • Must Have (Bắt buộc): Pipeline tiền xử lý văn bản tiếng Việt; Mô hình Transformers (PhoBERT/ViBERT/viELECTRA); Cơ chế xử lý Outlier và giá trị khuyết; Đầu ra phân loại nhị phân kèm độ tin cậy.
  • Should Have (Nên có): Kỹ thuật kết hợp đặc trưng số (Metadata Verbalization & Batch Normalization Concatenation); Trích xuất thông tin đa tầng <CLS>.
  • Could Have (Có thể có): Phân tích tương quan ngữ nghĩa qua Cosine Similarity để điền khuyết thời gian; Giao diện demo trực quan.
  • Won't Have (Chưa thực hiện): Tích hợp xử lý trực tiếp ảnh đa phương thức (Multimodal Image Feature Extraction) vào khối phân loại chính.

Thiết kế kiến trúc hệ thống

+---------------------------------------------------------------------------------------------------+
|                                  KIẾN TRÚC TỔNG THỂ HỆ THỐNG                                      |
+---------------------------------------------------------------------------------------------------+
|  [Dữ liệu thô ReINTEL] ---> [Tiền xử lý & 3-Sigma Filter] ---> [Điền khuyết (Median & Cosine)]     |
|                                                                                                   |
|  +--------------------------- NHÁNH XỬ LÝ ĐẶC TRƯNG & ENCODING --------------------------------+  |
|  |  (A) Hướng Biểu diễn Văn bản hóa (Verbalization):                                           |  |
|  |      Text = "[Metadata Prompt: Like, Share, Comment, Time] + [Cleaned Post Message]"           |  |
|  |      ---> Tokenizer (VnCoreNLP / Byte-level BPE) ---> PhoBERT/ViBERT/viELECTRA (12 Layers)     |  |
|  |                                                                                             |  |
|  |  (B) Hướng Ghép nối Vector (Vector Fusion):                                                 |  |
|  |      Metadata Vector ---> [Batch Normalization] -----------------+                           |  |
|  |                                                                  |                           |  |
|  |      Văn bản ---> Transformer Encoder ---> Concatenate 4 Layer   |                           |  |
|  |                   Hidden States [CLS_9, CLS_10, CLS_11, CLS_12] -+                           |  |
|  +------------------------------------------------------------------|--------------------------+  |
|                                                                     v                             |
|                                   [Concatenation Layer] (Size: 3072 + Dim_Meta)                   |
|                                                                     |                             |
|                                                                     v                             |
|                                              [Fully Connected / MLP Layer]                        |
|                                                                     |                             |
|                                                                     v                             |
|                                              [Softmax Output: Fake vs Real]                       |
+---------------------------------------------------------------------------------------------------+

Technology Stack

  • Ngôn ngữ lập trình: Python 3.8.10
  • Framework học sâu: PyTorch 1.10.2+cu113, HuggingFace Transformers 4.15.0
  • Công cụ tiền xử lý tiếng Việt: VnCoreNLP 1.1.1 (PyVnCoreNLP), PyVi 0.1.1
  • Khoa học dữ liệu & Trực quan: Scikit-Learn 1.0.2, Pandas 1.3.5, NumPy 1.21.6, Matplotlib 3.5.1, Seaborn 0.11.2
  • Môi trường huấn luyện: NVIDIA Tesla T4 / V100 GPU, CUDA 11.3

Implementation và kết quả

Quy trình xử lý dữ liệu và Thuật toán

1. Xử lý giá trị ngoại lai (Outliers) bằng quy tắc $3\text{-}\sigma$

Bộ dữ liệu ReINTEL xuất hiện các mẫu dữ liệu lỗi với lượt tương tác phi thực tế (lên đến hàng tỷ tương tác). Nhóm áp dụng phân phối chuẩn lọc biên:

$$\mu - 3\sigma \le x \le \mu + 3\sigma$$

Sau khi áp dụng quy tắc $3\text{-}\sigma$, tập huấn luyện đã loại bỏ 47 mẫu bất thường, tinh gọn từ 4372 mẫu xuống còn 4325 mẫu dữ liệu sạch.

2. Điền khuyết dữ liệu thông minh (Imputation)

  • Metadata tương tác (num_like, num_comment, num_share): Sử dụng giá trị Trung vị (Median) của tập dữ liệu nhằm tránh bị ảnh hưởng bởi độ lệch phân phối.
  • Thời gian đăng bài (timestamp_post): Tìm văn bản có độ tương đồng ngữ nghĩa lớn nhất thông qua BERT Embeddings và Cosine Similarity, sau đó sao chép thuộc tính thời gian sang mẫu bị khuyết:

$$\text{Cosine Similarity}(u, v) = \frac{\mathbf{u} \cdot \mathbf{v}}{|\mathbf{u}| |\mathbf{v}|}$$

3. Tinh chỉnh mô hình Transformer với 4 tầng ẩn cuối

Thay vì chỉ lấy vector đầu ra của tầng cuối cùng tại vị trí token <CLS>, mô hình nối các trạng thái ẩn (Hidden States) của 4 tầng Transformer cuối cùng để tạo thành vector biểu diễn tổng hợp có chiều $768 \times 4 = 3072$:

$$H_{\text{concat}} = \left[ h_{-1}^{\text{CLS}} ,|, h_{-2}^{\text{CLS}} ,|, h_{-3}^{\text{CLS}} ,|, h_{-4}^{\text{CLS}} \right]$$

Cài đặt mã nguồn mô hình (Code Snippet)

import torch
import torch.nn as nn
from transformers import AutoModel, AutoConfig

class FakeNewsClassifier(nn.Module):
    def __init__(self, pretrained_model_name: str, num_classes: int = 2, dropout_rate: float = 0.2):
        super(FakeNewsClassifier, self).__init__()
        self.config = AutoConfig.from_pretrained(
            pretrained_model_name, 
            output_hidden_states=True
        )
        self.transformer = AutoModel.from_pretrained(
            pretrained_model_name, 
            config=self.config
        )
        hidden_size = self.config.hidden_size
        
        # Kết hợp trạng thái ẩn của 4 lớp cuối: 768 * 4 = 3072
        self.classifier = nn.Sequential(
            nn.Linear(hidden_size * 4, 512),
            nn.BatchNorm1d(512),
            nn.ReLU(),
            nn.Dropout(dropout_rate),
            nn.Linear(512, num_classes)
        )

    def forward(self, input_ids, attention_mask):
        outputs = self.transformer(input_ids=input_ids, attention_mask=attention_mask)
        # outputs.hidden_states là tuple chứa 13 tensors (lớp embedding + 12 encoder layers)
        hidden_states = outputs.hidden_states
        
        # Trích xuất vector <CLS> (index 0) từ 4 lớp cuối
        cls_layer_12 = hidden_states[-1][:, 0, :]
        cls_layer_11 = hidden_states[-2][:, 0, :]
        cls_layer_10 = hidden_states[-3][:, 0, :]
        cls_layer_9  = hidden_states[-4][:, 0, :]
        
        # Ghép nối các vector đại diện
        concatenated_cls = torch.cat(
            (cls_layer_12, cls_layer_11, cls_layer_10, cls_layer_9), 
            dim=1
        )
        logits = self.classifier(concatenated_cls)
        return logits

Chiến lược cắt ngắn độ dài chuỗi (Truncation Strategies)

Do giới hạn bộ nhớ GPU khi xử lý ngữ cảnh dài, độ dài đầu vào cố định ở mức 256 tokens với 3 chiến lược:

  1. head_only: Giữ lại 256 tokens đầu tiên của bài viết.
  2. tail_only: Giữ lại 256 tokens cuối cùng của bài viết.
  3. head_tail: Lấy 64 tokens đầu tiên ghép với 192 tokens cuối cùng.

Thực nghiệm cho thấy chiến lược head_tail mang lại kết quả tốt nhất nhờ giữ được cả tiêu đề/mở đầu và phần kết luận/nguồn tin dẫn chứng ở cuối bài.

Kết quả thực nghiệm và Đánh giá

Đánh giá chiến lược kết hợp đặc trưng trên mô hình PhoBERT

Phương pháp Chiến lược dữ liệu Truncation ROC-AUC (%) Accuracy (%)
PhoBERT-base Text Only head_only 92.80 91.20
PhoBERT-base Text Only head_tail 93.65 92.15
PhoBERT-base + Vector Fusion Text + Metadata Vector (Batch Norm) head_tail 94.40 93.10
PhoBERT-base + Verbalization Text + Metadata Verbalized (Prompt) head_tail 95.25 94.30
viELECTRA-base + Verbalization Text + Metadata Verbalized (Prompt) head_tail 95.10 94.15
ViBERT-base + Verbalization Text + Metadata Verbalized (Prompt) head_tail 94.20 93.00

So sánh với các công trình nghiên cứu trên tập dữ liệu ReINTEL

+-----------------------------------------------------------------------------------+
|                        SO SÁNH HIỆU SUẤT TRÊN REINTEL (ROC-AUC)                   |
|                                                                                   |
|  Trung Hiếu et al. (viELECTRA + username)           : 93.78%                      |
|  Kim et al. (ViBERT4news + PhoBERT Ensemble)        : 94.50%                      |
|  Thuận Hiếu et al. (CatBoost + TF-IDF + Embeddings) : 95.00% (Acc)                |
|  ĐỀ TÀI (PhoBERT + 4-Layer Pooling + Verbalization) : 95.25% [XUẤT SẮC NHẤT]     |
+-----------------------------------------------------------------------------------+

Đổi mới và đóng góp

  1. Phương pháp Văn bản hóa Siêu dữ liệu (Metadata Verbalization): Thay vì sử dụng các mạng đa nhánh (Multi-branch Networks) phức tạp dễ gặp hiện tượng mất cân bằng gradient giữa các modal, đề tài chuyển đổi trực tiếp siêu dữ liệu số thành câu văn tự nhiên:

    "Bài viết có 19477.0 lượt chia sẻ và 378 bình luận. Bài viết được đăng vào thứ 6, ngày 3 tháng 4 lúc 20 giờ. [Nội dung văn bản]" Cách tiếp cận này giúp mô hình tận dụng tối đa cơ chế Self-Attention có sẵn để tự động học mối tương quan giữa tần suất tương tác và nội dung ngữ nghĩa.

  2. Khai thác Trạng thái ẩn Đa tầng (Multi-layer Hidden State Representation): Khai thác thông tin ngữ nghĩa trừu tượng ở tầng cao kết hợp thông tin cú pháp ở các tầng trung gian (lớp 9 đến 12), cải thiện +0.85% ROC-AUC so với việc chỉ sử dụng lớp cuối cùng.
  3. Phát hiện Quy luật Hành vi Tương tác của Tin giả:
    • Tin giả có số lượt bình luận và chia sẻ trung bình cao đột biến so với tin thật do tính giật gân, kích động cảm xúc.
    • Tin thật có số lượt thích (Like) áp đảo và văn phong chứa nhiều liên kết URL, dấu kiểm chứng thời gian rõ ràng.

Ứng dụng thực tế và triển khai

Tình huống ứng dụng thực tế

  • Tiện ích mở rộng trình duyệt (Browser Extension): Cảnh báo người dùng theo thời gian thực khi lướt mạng xã hội nếu bài viết có xác suất tin giả $>75%$.
  • Hệ thống Kiểm duyệt Tự động cho Tòa soạn/Cổng thông tin: Tiền lọc các tin tức vi phạm hoặc tin đồn chưa kiểm chứng trước khi chuyển cho đội ngũ biên tập viên thẩm định.
  • Hệ thống Lắng nghe Mạng xã hội (Social Listening Tool): Hỗ trợ các cơ quan chức năng và doanh nghiệp theo dõi các tin xuyên tạc, bôi nhọ thương hiệu.

Kiến trúc triển khai & API Endpoints

Hệ thống được đóng gói dưới dạng Docker Container, phục vụ qua REST API xây dựng bằng FastAPI và tăng tốc suy diễn bằng ONNX Runtime:

  • Endpoint: POST /api/v1/predict-reliability
  • Request Body:
{
  "post_message": "Bộ Y Tế thông báo khẩn cấp về loại thuốc mới đặc trị Covid...",
  "num_like": 120,
  "num_comment": 3500,
  "num_share": 8900,
  "timestamp": "2020-04-03T20:00:00Z"
}
  • Response Body:
{
  "prediction": "Unreliable",
  "probability": 0.942,
  "risk_level": "High",
  "metadata_signals": {
    "abnormal_interaction_ratio": true,
    "has_verified_url": false
  }
}

+-----------------------------------------------------------------------------------+
|                           FLOW TRIỂN KHAI MICROSERVICE                            |
|  [User Request] ---> [Nginx Reverse Proxy] ---> [FastAPI Service]                 |
|                                                       |                           |
|                                                       v                           |
|                           [ONNX Runtime Engine (GPU/CPU Execution)]               |
|                                                       |                           |
|                                                       v                           |
|                                  [PhoBERT Verbalized Model]                       |
+-----------------------------------------------------------------------------------+

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Tính phụ thuộc miền (Domain Dependency): Dữ liệu tập trung nhiều vào đợt dịch Covid-19 năm 2020, có thể giảm độ nhạy khi nhận diện các chủ đề kinh tế, chính trị mới.
  • Chưa tích hợp thị giác máy tính: Thuộc tính hình ảnh (image) mới chỉ ở mức phân tích sơ bộ, chưa đưa trực tiếp đặc trưng ảnh vào khối Transformer Đa phương thức (Multimodal Transformer).
  • Độ dài chuỗi cố định: Giới hạn 256 tokens có thể làm mất mát thông tin đối với các bài báo dài trên 1000 từ.

Hướng phát triển tương lai

  • Mở rộng mô hình đa phương thức kết hợp Vision Transformer (ViT)PhoBERT.
  • Khai thác cấu trúc đồ thị lan truyền thông tin qua mạng nơ-ron đồ thị (Graph Neural Networks - GNN) để theo dõi cây chia sẻ bài viết (Diffusion Tree).
  • Ứng dụng các mô hình ngôn ngữ lớn (LLMs) tạo giải thích tự động (Explainable AI) cho lý do bài viết bị đánh giá là không đáng tin cậy.

Đối tượng hưởng lợi

  • Sinh viên & Học viên chuyên ngành Khoa học Máy tính: Tài liệu tham khảo toàn diện về xử lý ngôn ngữ tự nhiên tiếng Việt, kỹ thuật tiền xử lý dữ liệu thực tế và ứng dụng Transfer Learning.
  • Kỹ sư AI / Lập trình viên NLP: Mẫu thiết kế pipeline kết hợp siêu dữ liệu với Transformer, kỹ thuật trích xuất nhiều lớp ẩn <CLS>.
  • Cơ quan Báo chí & Tổ chức Truyền thông: Giải pháp nền tảng giúp xây dựng các công cụ tự động phát hiện tin xấu độc trên không gian mạng.
  • Các nhà nghiên cứu: Dữ liệu phân tích thống kê chuyên sâu về hành vi tương tác và các đặc trưng ngôn ngữ của tin giả tiếng Việt.

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

1. Cần cấu hình phần cứng tối thiểu nào để huấn luyện và triển khai mô hình?

Để huấn luyện lại mô hình PhoBERT-base với batch size 16 và độ dài chuỗi 256 tokens, yêu cầu tối thiểu GPU 8GB VRAM (như NVIDIA GTX 1080Ti, RTX 2060 hoặc Google Colab T4). Đối với triển khai suy diễn (Inference), mô hình có thể chạy ổn định trên CPU với RAM 4GB hoặc tối ưu hóa qua ONNX Runtime với độ trễ dưới $45\text{ms}/\text{bản tin}$.

2. Tại sao phương pháp Văn bản hóa (Verbalization) lại cho kết quả tốt hơn Ghép vector đặc trưng?

Khi đưa trực tiếp các đặc trưng số qua mạng MLP độc lập rồi ghép vector, mô hình dễ gặp hiện tượng chênh lệch gradient giữa biểu diễn văn bản đậm đặc (dense text representation) và vector số thưa. Phương pháp Văn bản hóa chuyển đổi số liệu thành câu từ tự nhiên, cho phép các đầu Multi-Head Self-Attention của Transformer trực tiếp tính toán trọng số tương tác giữa từng con số và từng từ trong ngữ cảnh bài viết.

3. Làm cách nào để xử lý các bài viết không có siêu dữ liệu tương tác khi triển khai thực tế?

Khi người dùng chỉ cung cấp nội dung văn bản, hệ thống sẽ sử dụng giá trị trung vị (Median Imputation) đã được học từ tập huấn luyện để điền vào phần prompt siêu dữ liệu mẫu, đảm bảo cấu trúc đầu vào nhất quán cho mô hình.

4. Mô hình có phân biệt được giữa lỗi chính tả thông thường và tin giả có chủ đích không?

Có. Nhờ việc kết hợp cả bộ từ vựng BPE của PhoBERT và phân tích cú pháp, mô hình đánh giá dựa trên toàn bộ phân phối xác suất ngữ cảnh của câu chứ không chỉ dựa vào một vài từ sai chính tả đơn lẻ.

5. Chi phí vận hành hệ thống phát hiện tin giả trên đám mây ước tính bao nhiêu?

Sử dụng một máy chủ ảo tiêu chuẩn (ví dụ AWS EC2 c5.large hoặc g4dn.xlarge), chi phí vận hành ước tính dao động từ $30 - $120/tháng, có khả năng xử lý hơn 500,000 lượt kiểm tra mỗi ngày.


Kết luận

Khóa luận tốt nghiệp đã giải quyết thành công bài toán Nhận dạng thông tin đáng tin cậy trên mạng xã hội bằng việc khai thác sức mạnh của các mô hình ngôn ngữ tiền huấn luyện tiếng Việt (PhoBERT, viELECTRA) kết hợp với các kỹ thuật tối ưu hóa dữ liệu tiên tiến.

Những thành tựu chính bao gồm:

  • Xây dựng pipeline xử lý dữ liệu chuẩn xác với quy tắc lọc ngoại lai $3\text{-}\sigma$ và điền khuyết dựa trên tương đồng ngữ nghĩa.
  • Đề xuất thành công kỹ thuật Metadata VerbalizationMulti-layer <CLS> Concatenation, giúp mô hình đạt chỉ số ROC-AUC vượt trội 95.25% trên bộ dữ liệu chuẩn ReINTEL.
  • Cung cấp cơ sở lý thuyết và bằng chứng thực nghiệm vững chắc, chứng minh tầm quan trọng của siêu dữ liệu tương tác trong việc bóc tách bản chất của tin giả.

Nghiên cứu mở ra tiềm năng ứng dụng thực tiễn to lớn trong việc xây dựng các bộ công cụ tự động bảo vệ người dùng trên không gian mạng số, đóng góp tích cực vào sự phát triển lành mạnh của môi trường truyền thông xã hội Việt Nam.