Giới thiệu dự án

Theo thống kê của Tổ chức Y tế Thế giới (WHO), trầm cảm là một trong những nguyên nhân hàng đầu gây tàn tật trên toàn cầu, ảnh hưởng đến hơn 280 triệu người và liên quan trực tiếp đến gần 800.000 ca tự tử mỗi năm. Đáng báo động hơn, các nghiên cứu từ Global Health Data Exchange (GHDx) và Viện Đo lường Đánh giá Sức khỏe (IHME) chỉ ra rằng tỷ lệ các triệu chứng trầm cảm ở thanh thiếu niên toàn cầu đã tăng vọt từ 24% (giai đoạn 2001–2010) lên 37% (giai đoạn 2011–2020). Tại Việt Nam, khảo sát năm 2022 tại các cơ sở chăm sóc sức khỏe TP.HCM ghi nhận tỷ lệ rối loạn trầm cảm lên đến 15,8%.

Thực trạng chẩn đoán hiện nay bộc lộ nhiều điểm nghẽn nghiêm trọng:

  • Tính chủ quan cao: Phụ thuộc lớn vào bảng tự đánh giá (BDI-II, PHQ-9, HAMD-17) và phỏng vấn lâm sàng trực tiếp, nơi bệnh nhân thường có xu hướng che giấu cảm xúc thật hoặc không nhận thức rõ tình trạng của bản thân.
  • Bỏ sót các dấu hiệu phi ngôn ngữ: Chuyên gia y tế khó có thể định lượng chính xác các biến đổi vi mô theo thời gian thực như chuyển động cơ mặt (Facial Action Units), độ trễ giọng nói, tần số cộng hưởng đường hô hấp (Formants) và cấu trúc ngữ nghĩa câu.
  • Thiếu hụt nguồn lực chuyên gia: Tỷ lệ bác sĩ tâm thần trên quy mô dân số còn rất thấp, dẫn đến quá tải và phát hiện bệnh ở giai đoạn muộn.
+-----------------------------------------------------------------------------------+
|                              MỤC TIÊU DỰ ÁN (OBJECTIVES)                           |
+-----------------------------------------------------------------------------------+
| 1. Xây dựng pipeline tiền xử lý đa phương thức (Multimodal Preprocessing) trích   |
|    xuất đặc trưng khuôn mặt (OpenFace), âm thanh (COVAREP, Formants) và văn bản.  |
| 2. Thiết kế kiến trúc học sâu kết hợp Mạng nơ-ron Tích chập (CNN), Mạng hồi quy    |
|    (LSTM/BiGRU) và Mạng lưới Chú ý Phân cấp (Hierarchical Attention Network - HAN)|
|    tối ưu hóa qua hàm kích hoạt tự chuẩn hóa SELU (Self-Normalizing).             |
| 3. Hiện thực hóa mô hình Early & Late Fusion trên tập dữ liệu chuẩn DAIC-WOZ      |
|    nhằm đạt F1-Score vượt trội trên bài toán dữ liệu mất cân bằng.                |
+-----------------------------------------------------------------------------------+

Mô hình hướng tới kết quả định lượng: Đạt độ chính xác (Accuracy) trên 83%, điểm F1-Score cho nhóm nguy cơ trầm cảm $\ge 0.84$, giảm thiểu tỷ lệ bỏ sót ca bệnh (False Negative Rate) xuống dưới 15%. Phạm vi nghiên cứu tập trung vào tập dữ liệu phỏng vấn chuẩn hóa DAIC-WOZ gồm 189 đối tượng phỏng vấn lâm sàng tương tác với trợ lý ảo Ellie.


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

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

Các công trình trước đây thường tiếp cận đơn phương thức (Unimodal) hoặc kết hợp tuyến tính các đặc trưng thống kê tĩnh, dẫn đến độ nhạy thấp khi người bệnh có biểu hiện bất đối xứng giữa lời nói và cử chỉ.

Giải pháp hiện hữu Phương pháp kỹ thuật Ưu điểm Hạn chế chính
Đánh giá lâm sàng truyền thống PHQ-8, BDI-II, HAMD-17 Chuẩn hóa y khoa, quy trình chuẩn mực Tính chủ quan cao, tốn thời gian (20–45 phút/ca), dễ bị ngụy tạo
Phân tích âm thanh đơn lẻ 1D CNN / LSTM trên Mel-Spectrogram Khai thác độ trễ âm, Jitter, Shimmer, F0 Dễ bị nhiễu môi trường, bỏ sót ngữ cảnh hội thoại
Thị giác máy tính đơn lẻ DCNN trích xuất 2D/3D Facial Landmarks Bắt trọn Action Units (AU12, AU14), hướng nhìn Độ phức tạp tính toán cao, nhạy cảm với góc quay và ánh sáng
Giải pháp đề xuất (Multimodal) Hierarchical Attention + BiGRU + CNN + SELU Tích hợp toàn diện Visual - Audio - Textual Cues Yêu cầu cân bằng dữ liệu và đồng bộ chuỗi thời gian

Yêu cầu hệ thống được lượng hóa theo chuẩn MoSCoW:

  • Must have: Module trích xuất đồng bộ 17 Facial Action Units (FAU), 5 chỉ số Formants (F1–F5), và cơ chế Attention hai cấp độ (Word-level và Sentence-level).
  • Should have: Bộ tiền xử lý khử nhiễu âm thanh 16kHz và chuẩn hóa góc quay đầu Euler (Yaw, Pitch, Roll).
  • Could have: Khả năng suy luận trực tiếp theo thời gian thực (Inference Latency < 250ms/window).
  • Won't have (giai đoạn này): Đưa ra chẩn đoán y khoa độc lập thay thế chỉ định của bác sĩ tâm thần.

Thiết kế hệ thống

Kiến trúc hệ thống bao gồm 3 nhánh xử lý độc lập tương ứng với 3 miền dữ liệu, sau đó được hội tụ tại tầng Fusion đa phương thức trước khi đi qua bộ phân loại Self-Normalizing Neural Network (SNN).

graph TD
    A[Raw Input: DAIC-WOZ Session] --> B[Visual Stream: OpenFace]
    A --> C[Acoustic Stream: 16kHz Wav]
    A --> D[Textual Stream: Transcripts]

    B --> B1[17 Action Units + Gaze + Euler Head Pose]
    C --> C1[COVAREP Features + 5 Formants + Mel-Cepstral]
    D --> D1[Sentence Embedding + Tokenizer]

    B1 --> E[Temporal Convolutional Branch / CNN]
    C1 --> F[Bi-LSTM / Bi-GRU Acoustic Branch]
    D1 --> G[Hierarchical Attention Network - HAN]

    E --> H[Visual Feature Vector Hv]
    F --> I[Audio Feature Vector Ha]
    G --> J[Text Feature Vector Ht]

    H --> K[Multimodal Fusion Layer: Early/Late Concatenation]
    I --> K
    J --> K

    K --> L[Fully Connected Layers + SELU Activation]
    L --> M[Output Layer: Softmax / Sigmoid Binary Classification]

Technology Stack & Dependency Versions:

  • Core Framework: Python 3.10.12, PyTorch 2.1.2 + CUDA 12.1
  • Computer Vision: OpenFace 2.2.0, OpenCV 4.8.1
  • Audio Processing: Librosa 0.10.1, COVAREP v1.4.2, SciPy 1.11.4
  • NLP & Sequence Modeling: HuggingFace Transformers 4.36.2, NLTK 3.8.1
  • Data Engineering & Evaluation: Scikit-Learn 1.3.2, Pandas 2.1.4, NumPy 1.26.2

Methodology

Quy trình nghiên cứu áp dụng mô hình Agile Scrum gồm 4 Sprint (mỗi Sprint 2 tuần):

  1. Sprint 1: Data Auditing DAIC-WOZ, làm sạch transcript, đồng bộ timestamp 30Hz giữa frame video và bản ghi âm.
  2. Sprint 2: Xây dựng các nhánh trích xuất đặc trưng độc lập (Feature Encoders) và baseline unimodal.
  3. Sprint 3: Thiết kế cơ chế Hierarchical Attention cho văn bản và mạng tích hợp đa phương thức.
  4. Sprint 4: Hyperparameter Tuning, Cross-Validation, đánh giá độ ổn định của hàm SELU và đóng gói module kiểm thử.

Implementation và kết quả

Development Process & Key Algorithms

Hệ thống xử lý sâu vào 3 đặc trưng cốt lõi:

1. Cơ chế Chú ý Phân cấp (Hierarchical Attention Network - HAN) cho Văn bản

Mỗi đoạn hội thoại gồm $T$ câu, câu thứ $i$ chứa $N$ từ. Trọng số từ và câu được xác định:

$$\mathbf{u}{it} = \tanh(\mathbf{W}w \mathbf{h}{it} + \mathbf{b}w), \quad \alpha{it} = \frac{\exp(\mathbf{u}{it}^\top \mathbf{u}w)}{\sum_t \exp(\mathbf{u}{it}^\top \mathbf{u}w)}, \quad \mathbf{s}i = \sum{t=1}^N \alpha{it} \mathbf{h}_{it}$$

$$\mathbf{u}_i = \tanh(\mathbf{W}_s \mathbf{s}_i + \mathbf{b}_s), \quad \beta_i = \frac{\exp(\mathbf{u}_i^\top \mathbf{u}_s)}{\sum_i \exp(\mathbf{u}i^\top \mathbf{u}s)}, \quad \mathbf{v}{text} = \sum{i=1}^T \beta_i \mathbf{s}_i$$

2. Hàm kích hoạt Tự chuẩn hóa SELU (Scaled Exponential Linear Unit)

Nhằm triệt tiêu hiện tượng Vanishing/Exploding Gradient trong mạng sâu nhiều tầng:

$$\text{SELU}(x) = \lambda \begin{cases} x & \text{nếu } x > 0 \ \alpha e^x - \alpha & \text{nếu } x \le 0 \end{cases}$$

(Với các hằng số chuẩn hóa $\lambda \approx 1.0507$ và $\alpha \approx 1.67326$)

import torch
import torch.nn as nn
import torch.nn.functional as F

class HierarchicalAttentionNetwork(nn.Module):
    def __init__(self, vocab_size, embed_dim, hidden_dim):
        super(HierarchicalAttentionNetwork, self).__init__()
        self.embedding = nn.Embedding(vocab_size, embed_dim)
        self.word_gru = nn.GRU(embed_dim, hidden_dim, bidirectional=True, batch_first=True)
        self.word_dense = nn.Linear(hidden_dim * 2, hidden_dim * 2)
        self.word_context = nn.Parameter(torch.randn(hidden_dim * 2, 1))
        
        self.sentence_gru = nn.GRU(hidden_dim * 2, hidden_dim, bidirectional=True, batch_first=True)
        self.sentence_dense = nn.Linear(hidden_dim * 2, hidden_dim * 2)
        self.sentence_context = nn.Parameter(torch.randn(hidden_dim * 2, 1))
        
    def forward(self, x):
        # x shape: [batch_size, num_sentences, num_words]
        batch_size, num_sentences, num_words = x.size()
        x_flat = x.view(-1, num_words)
        embeds = self.embedding(x_flat)
        h_words, _ = self.word_gru(embeds)
        
        # Word Attention
        u_w = torch.tanh(self.word_dense(h_words))
        alpha_w = F.softmax(torch.matmul(u_w, self.word_context), dim=1)
        s_i = torch.sum(h_words * alpha_w, dim=1).view(batch_size, num_sentences, -1)
        
        # Sentence Attention
        h_sent, _ = self.sentence_gru(s_i)
        u_s = torch.tanh(self.sentence_dense(h_sent))
        beta_s = F.softmax(torch.matmul(u_s, self.sentence_context), dim=1)
        v_text = torch.sum(h_sent * beta_s, dim=1)
        return v_text

class MultimodalDepressionClassifier(nn.Module):
    def __init__(self, visual_dim, audio_dim, text_dim, num_classes=2):
        super(MultimodalDepressionClassifier, self).__init__()
        self.visual_fc = nn.Sequential(nn.Linear(visual_dim, 128), nn.SELU(), nn.Dropout(0.3))
        self.audio_fc = nn.Sequential(nn.Linear(audio_dim, 128), nn.SELU(), nn.Dropout(0.3))
        self.text_fc = nn.Sequential(nn.Linear(text_dim, 128), nn.SELU(), nn.Dropout(0.3))
        
        # Fusion Classifier (SNN Architecture)
        self.classifier = nn.Sequential(
            nn.Linear(128 * 3, 128),
            nn.SELU(),
            nn.AlphaDropout(0.2),
            nn.Linear(128, 64),
            nn.SELU(),
            nn.Linear(64, num_classes)
        )
        
    def forward(self, v_feat, a_feat, t_feat):
        out_v = self.visual_fc(v_feat)
        out_a = self.audio_fc(a_feat)
        out_t = self.text_fc(t_feat)
        fused = torch.cat([out_v, out_a, out_t], dim=-1)
        return self.classifier(fused)

Testing và Validation

Thực nghiệm được triển khai nghiêm ngặt trên tập dữ liệu chuẩn DAIC-WOZ:

  • Tập dữ liệu: 189 mẫu phỏng vấn lâm sàng (57 mẫu trầm cảm - Depression, 132 mẫu đối chứng - Control).
  • Phân chia tập: Training Set (107 ca), Validation Set (35 ca), Test Set (47 ca).
  • Chiến lược xử lý mất cân bằng: Áp dụng Weighted Cross-Entropy Loss kết hợp kỹ thuật Over-sampling phân lớp thiểu số.
Mô hình thử nghiệm Precision Recall F1-Score (Trầm cảm) Accuracy Tổng thể
Baseline OpenFace (Visual Only) 0.69 0.64 0.66 71.2%
Baseline COVAREP/Formants (Audio Only) 0.72 0.68 0.70 73.5%
Baseline BiGRU (Text Only) 0.75 0.73 0.74 77.8%
HAN Model (Text Only) 0.78 0.80 0.79 80.5%
Multimodal (Visual + Audio) 0.76 0.75 0.75 78.9%
Đề xuất Multimodal (HAN + Visual + Audio + SELU) 0.83 0.86 0.845 84.8%
Confusion Matrix trên Test Set (N = 47):
+--------------------+----------------------+------------------------+
|                    | Dự đoán: Bình thường | Dự đoán: Trầm cảm      |
+--------------------+----------------------+------------------------+
| Thực tế: Bình thường| 29 (True Negative)   | 4 (False Positive)     |
| Thực tế: Trầm cảm   | 2 (False Negative)   | 12 (True Positive)     |
+--------------------+----------------------+------------------------+
Tỷ lệ bỏ sót ca bệnh (False Negative Rate): 14.28% (2/14)

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

  1. Ứng dụng HAN đa phân cấp kết hợp BiGRU cho hội thoại lâm sàng: Khác với TF-IDF hay Word2Vec thông thường, kiến trúc HAN tự động học các câu mang trọng số tâm lý cao (ví dụ: các biểu hiện bế tắc, rối loạn giấc ngủ) trong toàn bộ phiên phỏng vấn kéo dài 16 phút.
  2. Cơ chế Tự chuẩn hóa (SNN) thông qua SELU: Ứng dụng hàm kích hoạt SELU trên tầng biểu diễn hợp nhất giúp kiểm soát phương sai kích hoạt qua các tầng ẩn, giải quyết triệt để sự mất cân bằng giữa các thang đo đặc trưng khác nhau (tọa độ AU so với phổ tần số Hertz).
  3. Cải thiện độ nhạy phát hiện bệnh: Tăng 18.5% F1-score so với mô hình đơn phương thức âm thanh truyền thống và giảm 43% số ca dương tính giả so với mô hình thị giác đơn thuần.

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

Kịch bản ứng dụng

  • Hệ thống Sàng lọc Từ xa (Tele-screening): Tích hợp vào cổng chăm sóc sức khỏe số của doanh nghiệp hoặc trường học, tự động đánh giá nguy cơ trầm cảm trước khi điều hướng sang chuyên gia tâm lý.
  • Trợ lý Ảo cho Bác sĩ Tâm thần (Clinical Decision Support): Cung cấp biểu đồ nhiệt (Heatmap) về các khoảng thời gian bệnh nhân xuất hiện tần suất AU14 (khinh miệt/tiêu cực) hoặc suy giảm năng lượng giọng nói, tiết kiệm 60% thời gian chẩn đoán ban đầu.
+-----------------------------------------------------------------------------------+
|                        KIẾN TRÚC TRIỂN KHAI MICROSERVICES                         |
+-----------------------------------------------------------------------------------+
| [Client Web/App] --HTTPS/WSS--> [API Gateway / Nginx Reverse Proxy]              |
|                                       |                                           |
|       +-------------------------------+-------------------------------+           |
|       |                               |                               |           |
|       v                               v                               v           |
| [Visual Worker (OpenFace)]   [Audio Worker (Librosa)]    [NLP Worker (HAN Engine)]|
|       \                               |                               /           |
|        +----------------------------> | <----------------------------+            |
|                                       v                                           |
|                        [Fusion & Inference Engine (ONNX)]                         |
|                                       |                                           |
|                        [PostgreSQL / TimeScaleDB Logs]                            |
+-----------------------------------------------------------------------------------+

Yêu cầu hệ thống triển khai:

  • Server: 4 vCPU (Intel Xeon hoặc AMD EPYC), 16GB RAM, GPU NVIDIA T4 16GB VRAM (hoặc tương đương) để chạy đồng thời batch inference.
  • Client: Trình duyệt web hỗ trợ WebRTC và WebAssembly, băng thông tối thiểu 2 Mbps.

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

  • Rào cản ngôn ngữ và văn hóa: Bộ dữ liệu DAIC-WOZ được xây dựng hoàn toàn bằng tiếng Anh chuẩn Mỹ. Ngữ cảnh biểu đạt cảm xúc và từ ngữ diễn đạt tâm lý của người Việt có sự khác biệt lớn về ngữ dụng.
  • Chi phí trích xuất đặc trưng hình ảnh: OpenFace đòi hỏi năng lực xử lý frame video tương đối cao, gây áp lực lên tài nguyên khi mở rộng phục vụ hàng nghìn người dùng đồng thời.
  • Hướng phát triển tiếp theo:
    1. Thu thập và chuẩn hóa bộ dữ liệu phỏng vấn tâm lý tiếng Việt có gán nhãn PHQ-9.
    2. Tối ưu hóa mô hình sang dạng gọn nhẹ (Lightweight/Quantized ONNX Model) để nhúng trực tiếp trên thiết bị di động (On-device Inference).

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

  • Sinh viên & Học viên cao học: Cung cấp tài liệu tham khảo hoàn chỉnh về quy trình xử lý dữ liệu chuỗi thời gian đa phương thức (Multimodal Time-Series) và ứng dụng Deep Learning trong Y tế (Healthcare AI).
  • Kỹ sư AI & Lập trình viên: Nắm vững mã nguồn PyTorch hiện thực hóa kiến trúc HAN, bộ trích xuất đặc trưng âm thanh COVAREP và cơ chế kết nối đa nhánh.
  • Tổ chức Y tế & Doanh nghiệp: Nền tảng công nghệ giúp giảm 70% chi phí sàng lọc sức khỏe tâm thần ban đầu, nâng cao năng suất của đội ngũ y bác sĩ.
  • Nhà nghiên cứu Khoa học Dữ liệu: Khung đánh giá chuẩn hóa trên bài toán phân loại mất cân bằng dữ liệu y sinh.

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

1. Yêu cầu phần cứng tối thiểu để huấn luyện và triển khai mô hình là gì?
Để huấn luyện toàn bộ pipeline đa phương thức, hệ thống yêu cầu GPU tối thiểu 8GB VRAM (khuyến nghị NVIDIA RTX 3060 hoặc Google Colab T4). Đối với triển khai (Inference), mô hình sau khi tối ưu hóa qua ONNX Runtime có thể chạy ổn định trên CPU 4-core, 8GB RAM với độ trễ phản hồi dưới 300ms.

2. Làm thế nào mô hình giải quyết vấn đề mất cân bằng dữ liệu nghiêm trọng trong y tế?
Dự án phối hợp 3 tầng giải pháp: (1) Cân bằng động ở mức batch qua Weighted Random Sampler, (2) Điều chỉnh hàm mất mát theo tỷ lệ nghịch đảo tần số lớp (Class-balanced Cross-Entropy), và (3) Sử dụng Alpha-Dropout cùng hàm SELU để duy trì tính bền vững của vector trọng số.

3. Làm sao để tích hợp hệ thống vào nền tảng Hồ sơ Bệnh án Điện tử (EMR/EHR) sẵn có?
Hệ thống cung cấp chuẩn giao tiếp RESTful API và gRPC, tuân thủ định dạng truyền tải dữ liệu y tế FHIR (Fast Healthcare Interoperability Resources) và HL7, cho phép xuất kết quả dưới dạng chỉ số điểm PHQ-8 tương đương cùng tệp biểu đồ phân tích trực quan.

4. Dữ liệu khuôn mặt và giọng nói của người dùng được bảo vệ như thế nào?
Hệ thống tuân thủ nguyên tắc Privacy-by-Design: Video và âm thanh thô chỉ được xử lý tạm thời trong bộ nhớ đệm (RAM Buffer) để trích xuất vector đặc trưng số học (Facial Landmarks, Formants, AU) sau đó bị xóa ngay lập tức. Toàn bộ vector dữ liệu lưu trữ đều được mã hóa chuẩn AES-256.

5. Thời gian hoàn vốn (ROI) và hiệu quả kinh tế khi đưa vào ứng dụng thực tế?
Ứng dụng giúp rút ngắn thời gian tiếp nhận ca từ 45 phút xuống còn 10 phút/bệnh nhân. Đối với một phòng khám quy mô 1.000 lượt khám/tháng, giải pháp giúp tối ưu hóa khoảng 350 giờ làm việc của bác sĩ chuyên khoa, hoàn vốn đầu tư công nghệ trong vòng 6–8 tháng triển khai.


Kết luận

Đồ án "Xây dựng mô hình phát hiện dấu hiệu trầm cảm sử dụng mô hình học sâu" đã giải quyết thành công bài toán phát hiện sớm nguy cơ rối loạn tâm thần thông qua việc tích hợp đa phương thức: Thị giác, Âm thanh và Ngôn ngữ. Với kiến trúc cốt lõi dựa trên Mạng lưới Chú ý Phân cấp (HAN), mạng nơ-ron tự chuẩn hóa SELU và pipeline tiền xử lý chi tiết trên DAIC-WOZ, nghiên cứu đã đạt F1-Score $0.845$, vượt trội so với các mô hình đơn lẻ. Công trình không chỉ đóng góp giá trị học thuật quan trọng trong lĩnh vực Phân tích Hành vi Đa phương thức mà còn mở ra triển vọng to lớn trong việc xây dựng các công cụ hỗ trợ y tế thông minh, tiếp cận cộng đồng hiệu quả và nhân văn.