92 lines
4.3 KiB
TeX
Executable File
92 lines
4.3 KiB
TeX
Executable File
\documentclass[tikz,border=4pt]{standalone}
|
|
\usepackage{amsmath,amssymb,bm}
|
|
\usetikzlibrary{positioning,shapes.geometric,decorations.pathreplacing,calc,fit,backgrounds}
|
|
\begin{document}
|
|
\begin{tikzpicture}[
|
|
font=\small,
|
|
box/.style={draw,rounded corners=1pt,minimum width=7.5mm,minimum height=5.5mm,inner sep=1.5pt},
|
|
enc/.style={box},
|
|
chan/.style={draw,diamond,aspect=1.4,fill=gray!25,inner sep=0.8pt},
|
|
rxb/.style={box},
|
|
mult/.style={draw,circle,inner sep=0.4pt,minimum size=4mm},
|
|
sum/.style={draw,rounded corners=2.5mm,fill=gray!15,minimum width=12mm,minimum height=36mm},
|
|
dec/.style={draw,rounded corners=2pt,minimum width=53mm,minimum height=6mm,inner sep=2pt},
|
|
lbl/.style={font=\small\bfseries,align=center},
|
|
arr/.style={-stealth,semithick}]
|
|
|
|
% ---------------- left panel: transmitters / channel ----------------
|
|
\foreach \i/\yy in {1/1.7, 2/0.45}{
|
|
\node[box] (x\i) at (0,\yy) {$\mathbf{x}_{\i}$};
|
|
\node[enc,right=4.5mm of x\i] (f\i) {$f_\phi$};
|
|
\node[mult,right=5.5mm of f\i] (o\i) {$\odot$};
|
|
\node[chan,right=5mm of o\i] (h\i) {$\tilde h_{\i}$};
|
|
\node[rxb,right=5mm of h\i] (y\i) {$\mathbf{y}_{\i}$};
|
|
\draw[arr] (x\i) -- (f\i);
|
|
\draw[arr] (f\i) -- node[above,font=\footnotesize]{$\mathbf{e}_{\i}$} (o\i);
|
|
\draw[arr] (o\i) -- (h\i);
|
|
\draw[arr] (h\i) -- (y\i);
|
|
\node[below=1.8mm of o\i,font=\footnotesize] (m\i) {$\mathbf{m}_{\i}$};
|
|
\draw[arr] (m\i) -- (o\i);
|
|
}
|
|
\node[box] (xU) at (0,-1.2) {$\mathbf{x}_{U}$};
|
|
\node[enc,right=4.5mm of xU] (fU) {$f_\phi$};
|
|
\node[mult,right=5.5mm of fU] (oU) {$\odot$};
|
|
\node[chan,right=5mm of oU] (hU) {$\tilde h_{U}$};
|
|
\node[rxb,right=5mm of hU] (yU) {$\mathbf{y}_{U}$};
|
|
\draw[arr] (xU) -- (fU);
|
|
\draw[arr] (fU) -- node[above,font=\footnotesize]{$\mathbf{e}_{U}$} (oU);
|
|
\draw[arr] (oU) -- (hU);
|
|
\draw[arr] (hU) -- (yU);
|
|
\node[below=1.8mm of oU,font=\footnotesize] (mU) {$\mathbf{m}_{U}$};
|
|
\draw[arr] (mU) -- (oU);
|
|
\foreach \c in {x,f,o,h,y}{\node at ($(\c 2)!0.5!(\c U)$) {$\vdots$};}
|
|
|
|
% superposition
|
|
\node[sum,right=9mm of y2.east,yshift=-2mm] (sig)
|
|
{$\displaystyle\sum_{v=1}^{U}$};
|
|
\draw[arr] (y1.east) -- (y1.east -| sig.west);
|
|
\draw[arr] (y2.east) -- (y2.east -| sig.west);
|
|
\draw[arr] (yU.east) -- (yU.east -| sig.west);
|
|
|
|
% bottom labels
|
|
\node[lbl,below=5.5mm of fU] {Transmitters\\(shared $f_\phi$)};
|
|
\node[lbl,below=5.5mm of hU] {Rayleigh\\Channel};
|
|
\node[lbl] at ([yshift=-4.5mm]sig.south) {Received Signal\\(Superposition $\tilde{\mathbf{y}}$)};
|
|
|
|
% ---------------- right panel: UWCA decoder ----------------
|
|
\node[dec,fill=gray!15,right=26mm of sig.east,yshift=19mm] (mask)
|
|
{Soft Masks $\{\tilde{\mathbf{m}}_i\}_{i=1}^{U}$};
|
|
\node[dec,fill=gray!15,below=2.2mm of mask,align=center] (proj)
|
|
{K/V Projection $(\mathbf{W}_K,\mathbf{W}_V)$\\[-1pt] Queries $\{\mathbf{q}_u\}$};
|
|
\node[dec,fill=gray!30,below=2.2mm of proj,minimum height=9mm,align=center] (attn)
|
|
{Scaled Dot-Product Attention\\[-1pt]
|
|
{\footnotesize $\alpha_{u,i}=\mathrm{softmax}\big(\eta\,\mathbf{q}_u^{\top}\mathbf{k}_i/\sqrt{d_k}\big)$}};
|
|
\node[mult,below=2.2mm of attn] (plus) {$\oplus$};
|
|
\node[dec,fill=gray!15,below=2.2mm of plus] (norm) {$\ell_2$-Normalize};
|
|
\node[dec,fill=gray!15,below=2.2mm of norm] (out)
|
|
{$\hat{\mathbf{e}}_1,\ \hat{\mathbf{e}}_2,\ \ldots,\ \hat{\mathbf{e}}_U$};
|
|
\draw[arr] (mask) -- (proj);
|
|
\draw[arr] (proj) -- (attn);
|
|
\draw[arr] (attn) -- (plus);
|
|
\draw[arr] (plus) -- (norm);
|
|
\draw[arr] (norm) -- (out);
|
|
\draw[arr] (sig.east) -- node[above,pos=0.45,font=\small]{$\tilde{\mathbf{y}}$} ++(13mm,0) |- (mask.west);
|
|
\draw[arr,dashed] (mask.east) -- ++(4mm,0) |- (plus.east)
|
|
node[pos=0.78,above,font=\footnotesize]{skip: $\tilde{\mathbf{y}}\odot\tilde{\mathbf{m}}_u$};
|
|
|
|
% decoder panel frame
|
|
\begin{scope}[on background layer]
|
|
\node[rounded corners=2mm,fill=gray!7,fit=(mask)(out)(attn),
|
|
inner xsep=7mm,inner ysep=4.5mm] (panel) {};
|
|
\end{scope}
|
|
\node[anchor=south,font=\small\bfseries\color{black!75},inner sep=2pt] at (panel.north)
|
|
{UWCA Decoder (per-user, shared weights $\theta$)};
|
|
|
|
% MAML brace
|
|
\draw[decorate,decoration={brace,mirror,amplitude=2mm},black!75,thick]
|
|
([yshift=-1.5mm]panel.south west) -- ([yshift=-1.5mm]panel.south east)
|
|
node[midway,below=2mm,font=\small\color{black!75}]
|
|
{MAML meta-training over SNR tasks $\{\mathcal{T}_k\}_{k=1}^{K}$};
|
|
\end{tikzpicture}
|
|
\end{document}
|