Binary head
5.1 Binary head (фиксированный)¶
Binary head (cnn_neat/binary_head.py) — необучаемый фиксированный классификатор.
Readout mean:
\[
\ell_b = \frac{1}{3 \cdot H_\text{out} \cdot W_\text{out}} \sum_{c=0}^{2} \sum_{h=0}^{H_\text{out}-1} \sum_{w=0}^{W_\text{out}-1} F_{b,c,h,w}
\]
Readout mean_minus_median (по умолчанию):
\[
\ell_b = \text{mean}(\mathbf{F}_b) - \text{median}(\mathbf{F}_b)
\]
Вычитание медианы повышает устойчивость к смещению распределения активаций.
Вероятность класса:
\[
p_b = \sigma(\ell_b) = \frac{1}{1 + e^{-\ell_b}}
\]
Метки (one-vs-rest): \(y_b = \mathbb{1}[\text{class}_b = c_+]\), \(c_+ =\) positive_class.
Правила принятия решения:
decision_rule |
Предсказание | Примечание |
|---|---|---|
score |
\(\hat{y}_b = \mathbb{1}[\ell_b > \tau]\), \(\tau = 0.0\) | Используется в BCE-обучении |
probability |
\(\hat{y}_b = \mathbb{1}[p_b \ge \tau]\), \(\tau = 0.5\) | Эквивалентно score при \(\tau=0\) |
quantile |
батч-зависимый | Только для оценки, не для инференса |
BCE loss для fine-tune:
\[
\mathcal{L} = \frac{1}{B}\sum_{b=1}^{B} \text{BCEWithLogits}(\ell_b,\, y_b)
\]
где BCEWithLogits численно устойчива: \(\mathcal{L}_b = \max(\ell_b, 0) - \ell_b y_b + \log(1 + e^{-|\ell_b|})\).