Skip to content

Repository files navigation

Robust Model-Driven MIMO Detection under Imperfect CSI

中文说明 | Reproducibility | Formal results

This repository compares ZF, MMSE, exhaustive small-system ML, OAMP, legacy DetNet, and NoiseAwareDetNet under imperfect CSI, spatial correlation, Rician fading, and SNR shift. results/final/ now contains an executed formal experiment, not the earlier smoke run. The smoke artifacts are separately labeled under results/archive/smoke_20260712/.

Signal, channel, and CSI model

y = Hx + n,             n ~ CN(0, N0 I)
H_hat = H + E

QPSK and 16QAM use average symbol energy Es=1. Practical detectors use H_hat; optional Oracle-CSI rows must be explicitly suffixed (Oracle CSI) and are not mixed into the formal tables.

  • i.i.d. Rayleigh: H_ij ~ CN(0,1/Nt).
  • Kronecker Rayleigh: H=Rrx^(1/2) W Rtx^(1/2), R[i,j]=rho^|i-j|.
  • Rician: normalized rank-one ULA LoS plus Rayleigh NLoS, controlled by K-factor.
  • CSI standard deviation: complex RMS per error entry.
  • CSI NMSE: errors are scaled so ||E||F^2/||H||F^2=10^(NMSEdB/10) per frame.

SNR definitions

Protocol Complex noise variance Use
instantaneous N0=mean(abs(Hx)^2)/10^(SNRdB/10) Legacy compatibility; conditions each frame on its instantaneous receive power.
fixed_esn0 N0=Es/10^(EsN0dB/10) Formal default; noise power is independent of each instantaneous channel realization.

With H_ij ~ CN(0,1/Nt) and Es=1, fixed Es/N0 equals average receive SNR per antenna for i.i.d. Rayleigh, but not necessarily conditionally for an individual structured channel.

Detectors

  • ZF/MMSE: linear estimates followed by constellation slicing.
  • ML: exhaustive minimization of ||y-H_hat x||^2; it is a small-system reference for the assumed H_hat, not an oracle under CSI error.
  • OAMP: de-correlated LMMSE linear estimation plus a discrete-constellation posterior-mean denoiser.
  • DetNet: retained ablation; every layer uses H_hat^T H_hat x-H_hat^T y.
  • NoiseAwareDetNet: adds normalized Gram/matched-filter statistics, LMMSE initialization, positive learned step sizes, soft projection, and explicit noise/SNR/CSI reliability features. Both neural models output [B,2Nt].

Formal executed protocol

Hardware: NVIDIA GeForce RTX 3050 Ti Laptop GPU, 4 GB VRAM; PyTorch 2.11.0+cu128.

Study Training Validation Test size per SNR Architecture
4x4 QPSK 25 epochs, 60,000 samples/model 6,000 3 seeds x 5,000 frames = 120,000 bits 10 layers, hidden 128, state 64
8x8 QPSK 20 epochs, 50,000 samples/model 5,000 3 seeds x 5,000 frames = 240,000 bits 8 layers, hidden 96, state 48

Seeds are 42, 123, and 2026. Training uses Kronecker Rayleigh with rho_tx=rho_rx=0.5, CSI NMSE -10 dB, fixed Es/N0, and training seed 31415. The primary test uses rho=0.7; it is therefore a correlation-shift/OOD evaluation rather than an in-distribution claim.

Executed commands:

.\.venv-cuda\Scripts\python.exe scripts\run_formal_study.py --config-4x4 configs\formal_4x4_qpsk_robust.json --config-8x8 configs\formal_8x8_qpsk_scalability.json --output-dir results\formal_candidate --device cuda
.\.venv-cuda\Scripts\python.exe -m pytest tests/

Formal 4x4 result

Latest robust-performance figures

The latest completed studies are retained separately from the earlier results/final/ reference run. They use the updated deep-unfolding detector and report both correlated-Rayleigh and unseen-Rician conditions with imperfect CSI.

Latest low-SNR targeted study: correlated Rayleigh

Latest low-SNR targeted study: unseen Rician

Latest mixed robust study: BER versus CSI NMSE

Latest mixed robust study: BER versus spatial correlation

Primary scenario: correlated Rayleigh rho_tx=rho_rx=0.7, CSI NMSE -10 dB, fixed Es/N0. Each aggregated point contains 120,000 bits.

Detector BER @ 10 dB BER @ 20 dB BER @ 30 dB
ML using H_hat 0.172175 0.091117 0.079308
MMSE 0.196117 0.196267 0.238108
OAMP 0.216367 0.196392 0.224675
DetNet 0.182117 0.135167 0.125525
NoiseAwareDetNet 0.178383 0.129958 0.128925
ZF 0.329750 0.265450 0.253967

At 20 dB, the bit-level Wilson 95% intervals are [0.128068,0.131873] for NoiseAwareDetNet, [0.194029,0.198524] for MMSE, and [0.194154,0.198649] for OAMP.

Formal 4x4 BER

Formal 4x4 SER

BER versus CSI error

BER versus spatial correlation

Statistical interpretation

summary_results.csv contains both seed-to-seed descriptive statistics and pooled bit-level Wilson 95% intervals. A three-seed normal approximation alone is not treated as evidence of significance.

For NoiseAwareDetNet against MMSE and OAMP at 10/20/30 dB, paired_frame_errors.csv preserves 15,000 aligned frames per point. paired_statistical_tests.csv reports 5,000-resample frame-paired bootstrap intervals for BER(NoiseAwareDetNet)-BER(comparator) and exact bit-paired McNemar tests.

Comparison SNR BER difference Paired bootstrap 95% CI McNemar conclusion
NoiseAwareDetNet - MMSE 10 -0.017733 [-0.019333,-0.016092] reject equality at 0.05
NoiseAwareDetNet - MMSE 20 -0.066308 [-0.068300,-0.064333] reject equality at 0.05
NoiseAwareDetNet - MMSE 30 -0.109183 [-0.111684,-0.106733] reject equality at 0.05
NoiseAwareDetNet - OAMP 10 -0.037983 [-0.039983,-0.036017] reject equality at 0.05
NoiseAwareDetNet - OAMP 20 -0.066433 [-0.068667,-0.064200] reject equality at 0.05
NoiseAwareDetNet - OAMP 30 -0.095750 [-0.098300,-0.093275] reject equality at 0.05

Thus, lower BER was observed with statistical support for these six executed comparisons. This is not a universal dominance claim: at 30 dB the legacy DetNet had slightly lower observed BER than NoiseAwareDetNet (0.125525 versus 0.128925).

Trained 8x8 scalability experiment

The 8x8 DetNet and NoiseAwareDetNet were trained from scratch with separate checkpoints; no 4x4 weights were reused.

Detector BER @ 10 dB BER @ 20 dB BER @ 30 dB
ZF 0.385875 0.340942 0.328408
MMSE 0.209983 0.218933 0.289671
OAMP 0.241250 0.278604 0.349729
DetNet 0.207771 0.171646 0.163583
NoiseAwareDetNet 0.199979 0.166887 0.180275

ML has 4^8=65,536 candidates, exceeding the configured 10,000 threshold. Every 8x8 ML row records status=skipped, the candidate count, and the skip reason; no ML BER is fabricated.

Trained 8x8 BER

Runtime and complexity

Runtime is deliberately split:

  • CPU single-sample core/end-to-end: ZF, MMSE, OAMP, and ML.
  • Warmed-up, synchronized GPU batch core/end-to-end: DetNet and NoiseAwareDetNet.
  • complexity_and_parameters.csv: algorithmic notes and parameter counts.

CPU runtime

GPU batched runtime

These are deployment-path measurements, not a same-hardware race. They do not prove that DetNet is intrinsically faster than classical methods.

Checkpoints and execution time

Model Best epoch Parameters
DetNet 4x4 14 361,680
NoiseAwareDetNet 4x4 9 365,540
DetNet 8x8 11 186,368
NoiseAwareDetNet 8x8 12 188,688

Total execution time was 2,537.05 seconds (42.28 minutes): 924.29 s for 4x4 training, 1,146.11 s for 8x8 training, 329.38 s for 4x4 evaluation, 29.59 s for paired statistics, and 53.02 s for 8x8 evaluation.

Zero observed errors remain zero in CSV and are clipped to 1e-6 only for logarithmic plotting, with an explicit annotation. Finite samples never establish a true BER of zero.

Limitations

  • Wilson intervals treat pooled bits as binomial observations; channel-induced dependence can make them optimistic. Paired frame bootstrap partly addresses frame-level dependence.
  • Paired tests cover the primary scenario and two selected comparators at 10/20/30 dB, not every detector/scenario combination.
  • Training used one correlation/NMSE point; broader domain randomization and repeated-training uncertainty remain open.
  • Rician LoS is a simplified rank-one ULA model rather than a standardized geometry-based channel.
  • Perfect synchronization, flat fading, accurate noise variance, and independent frames are assumed.
  • ML remains a 4x4 assumed-channel reference; deep unfolding does not dominate every method or SNR.

About

Model-driven MIMO detection with DetNet-style deep unfolding

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages