Перейти к содержанию

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|})\).