← Мақалаларға оралу
July 31, 2026
5 мин оқу

Эпистемикалық және алеаторикалық: Қайтарым моделі білмейтін нәрсені өлшеу

Эпистемикалық және алеаторикалық: Қайтарым моделі білмейтін нәрсені өлшеу
#bayesian
#uncertainty
#neural-network
#risk
#position-sizing

Бұл блогтың барлық позиция өлшеу ережелері белгісіздікті бір скалярлық шамаға түреді. Kelly критерийі дисперсияға бөледі. Конформалды болжау аралық еніне бөледі. Волатильдылық таргетингі GARCH болжамына бөледі. Үшеуі де дұрыс, бірақ сақта үшін саудада маңызды айырмашылықты жоғалтады: шау-шулы нарық пен білмейтін модельдің айырмашылығы.

Бұл бірдей риск емес. Нарық шуы бағаланған — оны иемізенуге ақы төленетін нәрсе. Модельдің білмесушілігі бағаланбаған, төленбейтін және дәл сіздің артықшылығыңыздың бағасы ең сенімсіз күй. Оларды тең жазатын өлшеу ережесі үстелден нәрсе қалдырады.

Бұл пост бөлінуді өлшейтін ету туралы. Нақтырақ айтқанда:

σeff2=σalea2+λσepi2,λ>1\sigma^2_{\text{eff}} = \sigma^2_{\text{alea}} + \lambda \cdot \sigma^2_{\text{epi}}, \qquad \lambda > 1

Оны Келлидің бөлгішіне жалпы дисперсия орнына қойыңыз. Мақаланың қалған бөлігі екі компонентті бағалау жөнінде (MC Dropout, терең ансамбльдер) және нақты деректердегі бөлудің көрінісі жөнінде.

Тезис: Екі белгісіздік — екеу әрекет

Эпистемикалық Алеаторикалық
Қайнар көзі Шектеулі деректер / модель Деректердегі тек шум
Азайтылады ма? Иә (көбірек деректер көмектеседі) Жоқ
Сауда әрекеті Позицияны азайтыңыз немесе бас тартыңыз Стоптарды кеңіте, тіректі азайтыңыз
Сигнал "Мен бұл режимді көрген жоқпын" "Бұл нарық қазір шулы"

"Сауда әрекеті" жолындағы асимметрия — бұл барлық дәлел. Жоғары алеаторикалық дисперсия — бұл белгілі белгісіз: оған өлшеуге болады, хеджирлеуге болады және оны ұстау үшін риск сыйлығы алуға болады деп күтуге болады. Жоғары эпистемикалық дисперсия — белгісіз белгісіз: модель экстраполяция жасайды, оның орташа бағасы μ\mu дисперсия бағасы сияқты күмәнді, және өз параметрлеріңізбен қате жасауға ешқандай сыйлық жоқ.

Екеуін шатастыратын модель немесе танын емес режимдерде көп саудалайды (эпистемикалық белгісіздікті елемеу), немесе танын бірақ шулы режимдерде аз саудалайды (алеаторикалық белгісіздікті артық жазады). Жалпы дисперсияға қолданылатын стандартты Келли қай компонент басым болуына қарай екеуін де жасайды.

Бөлу

Эпистемикалық белгісіздік модель параметрлері θ\theta туралы белгісіздіктен келеді. Бір θ\theta^* орнына (maximum likelihood сияқты), біз p(θD)p(\theta \mid \mathcal{D}) үлестірмін сақтаймыз және интегралдаймыз:

p(yx,D)=p(yx,θ)p(θD)dθp(y \mid x, \mathcal{D}) = \int p(y \mid x, \theta)\, p(\theta \mid \mathcal{D})\, d\theta

θ\theta бойынша интегралдаудан пайда болған жазықтық эпистемикалық. D\mathcal{D} кіріс аймағын қамтымай өскен сайын жарылады.

Алеаторикалық белгісіздік — деректер тудыру процесінің шартты шуы. Нейрондық желіде ол кіріс тәуелді дисперсия шығаратын екінші шығару басымен модельделеді:

p(yx,θ)=N(y;μθ(x),σθ2(x))p(y \mid x, \theta) = \mathcal{N}\bigl(y;\, \mu_\theta(x),\, \sigma^2_\theta(x)\bigr)

Ол гетероскедастикалық бас GARCH классикалық бағалайтын нәрсені бағалайды — түнгі уақытта жоғары, peak уақытта төмен жағдайға тәуелді шартты дисперсия. Криптовалюта бойынша осы объектің эмпирикалығы қажет болса, GARCH(1,1) for crypto volatility дұрыс қамтамасыз етеді, соның ішінде неге тірі шартты болжам (шартты емес үлгі дисперсиясы емес) Келли бөлгішіне жататынын қосады. NN басы орташамен бірге үйретілген сол объектіні басқа бағалаушы ғана.

GARCH бере алмайтын бұл екінші мүше. Бұл посттың қалған бөлігінің мақсаты осы.

Альдымдағы жарияланғандармен салыстырмалы орналасуы

Екі алдыңғы пост жанаса аймақты қамтиды және алдымен оқуға тұрарлық, себебі бұл пост оларды қайталамайды:

  • Конформалды болжау соңғы үлгі кептілігі бар аралықтар береді, үлестіру болжамы жоқ, еніне кері өлшеу және edge ratio no-trade фильтрі бар. Егер дұрыс өлшенген аралық қана қажет болса, бұл күшті құрал.
  • Temporal Fusion Transformers тікелей квантильдер шығарады және pinball-loss квантильдер үлгіден тыс автоматты түрде калибрленбейтінін ескертеді.

Айырбас таза. Конформал кептілік береді бірақ бір сан — аралық ені бөлінбейді, сондықтан ол неге кеңейтілгенін айта алмайды. Байес әдістері бөлуді береді бірақ кептілік жоқ — MC Dropout аралықтары жуық posterior сияқты ғана жақсы. Бұл мақала бөлуді сатып алу туралы. Кептілік үшін оның үстінен конформалды ұстауыңыз керек.

әдіс 1: Вариациялық қорытынды (Backprop арқылы Байес)

Түйінді Байес салмақ posteriorы болжамды қайтарым үлестірімін шығарудан бұрын қолайлы вариациялық жуықтауға қысылады

Байес нейрондық желісі салмақтарға prior p(θ)p(\theta) орнатады және posterior p(θD)p(Dθ)p(θ)p(\theta \mid \mathcal{D}) \propto p(\mathcal{D} \mid \theta) p(\theta) іздейді. Нормаландауышы әрбір салмақ конфигурациясы бойынша интегралдауды қажет етеді, бұл бірнеше параметрден артық нәрсе үшін мүмкін емес.

Вариациялық қорытынды мүмкін емес posteriorты қолайлы отбасымен qϕ(θ)q_\phi(\theta) — әдетте факторланған гаусс qϕ(θ)=jN(θj;μj,σj2)q_\phi(\theta) = \prod_j \mathcal{N}(\theta_j; \mu_j, \sigma_j^2) — ауыстырады және минимизациядайды

KL(qϕ(θ)p(θD))\text{KL}\bigl(q_\phi(\theta) \,\|\, p(\theta \mid \mathcal{D})\bigr)

Бұл белгісіз posteriorты қамтиды, сондықтан біз орнына Evidence Lower Bound максимизациялаймыз:

L(ϕ)=Eqϕ(θ)[logp(Dθ)]KL(qϕ(θ)p(θ))\mathcal{L}(\phi) = \mathbb{E}_{q_\phi(\theta)}\bigl[\log p(\mathcal{D} \mid \theta)\bigr] - \text{KL}\bigl(q_\phi(\theta) \,\|\, p(\theta)\bigr)

Бірінші мүше qϕq_\phi-ны деректерді түсіндіруге итермелейді, екіншісі оны priordің жанында ұстайды. Bayes by Backprop (Blundell et al., 2015) бұлды репараметеризация трюкпен дифференциалды етеді: ϵN(0,I)\epsilon \sim \mathcal{N}(0, I)-ден алыңыз, θ=μ+σϵ\theta = \mu + \sigma \odot \epsilon орнатыңыз.

Практикалық түрде VI параметр санын екі еселейді, градиент дисперсиясын көтереді (әрбір алға өту әртүрлі салмақтарды қолданады) және mean-field болжамы салмақ корреляцияларын елемейді, бұл эпистемикалық белгісіздікті төмен бағалай бастайды. Сауда стекіңізде бұл қажет болса, төмендегі екі арзан әдіс әдетте жақсы кіріс нүктесі.

әдіс 2: MC Dropout

Қайталанатын dropout-қабылдатқан алға өтулер әртүрлі болжамдарға бөлінеді, олардың келіспеушілігі эпистемикалық белгісіздікті құрайды

Gal және Ghahramani (2016) dropout-пен үйретілген және тест уақытында dropout әлі қосулы бағаланатын желі терең гаусс процестегі жуық вариациялық қорытынды процедурасы екенін көрсетті. Dropout әлдеқашан subnetwork туралы үлестіруді туындайды; оны қорытынды кезінде қосып TT алға өтуді жүргізу сол жасырын posterior-дан сэмплдейді.

Бұл бұл блогтың басқа жерлерінде жоқ. Мұнда жарияланған код dropout-ты тек training-time regularizer ретінде қолданады (spread modeling, TFT dropout=0.1–0.3). Оны inference кезінде қосып қою — бір жолдық өзгеріс, бірақ мүлдем басқа мағына.

Болжамдық статистика

TT стохастикалық алға өту {y^t}t=1T\{\hat{y}_t\}_{t=1}^{T} шығарса және әр өтудің дисперсиясы σ^t2(x)\hat{\sigma}_t^2(x) болса:

Болжамдық орташа:

yˉ=1Tt=1Ty^t\bar{y} = \frac{1}{T} \sum_{t=1}^T \hat{y}_t

Эпистемикалық (өтулер арасындағы келіспеушілік):

σepi2=1Tt=1T(y^tyˉ)2\sigma^2_{\text{epi}} = \frac{1}{T} \sum_{t=1}^T (\hat{y}_t - \bar{y})^2

Алеаторикалық (болжалған шудың ортасы):

σalea2=1Tt=1Tσ^t2\sigma^2_{\text{alea}} = \frac{1}{T} \sum_{t=1}^T \hat{\sigma}_t^2

Бөлу — жалпы дисперсия заңы: шартты ортаның дисперсиясы плюс шартты дисперсияның ортасы. Жалпы болжамдық дисперсия — олардың қосындысы.

PyTorch іске асыру

import torch
import torch.nn as nn
import numpy as np

class MCDropoutNet(nn.Module):
    """
    Белгісіздікті бағалау үшін MC Dropout бар қайтарым болжау желісі.
    Болжамдық орташа мен лог-дисперсияны (алеаторикалық) шығарады.
    """
    def __init__(self, input_dim: int, hidden_dim: int = 128, dropout_p: float = 0.1):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(input_dim, hidden_dim),
            nn.ReLU(),
            nn.Dropout(p=dropout_p),
            nn.Linear(hidden_dim, hidden_dim),
            nn.ReLU(),
            nn.Dropout(p=dropout_p),
        )
        self.head_mu = nn.Linear(hidden_dim, 1)        # болжалған қайтарым
        self.head_logvar = nn.Linear(hidden_dim, 1)    # log(алеаторикалық дисперсия)

    def forward(self, x: torch.Tensor):
        h = self.net(x)
        return self.head_mu(h), self.head_logvar(h)


def heteroscedastic_loss(mu, log_var, target):
    """Үйренілген, кіріс тәуелді дисперсиясы бар гаусс үшін теріс log-likelihood."""
    precision = torch.exp(-log_var)
    return torch.mean(0.5 * precision * (target - mu) ** 2 + 0.5 * log_var)


@torch.no_grad()
def mc_predict(model: MCDropoutNet, x: torch.Tensor, n_samples: int = 100):
    """
    MC Dropout inference: dropout-ті ҚОСЫЛЫ ҰСТАҢЫЗ, T алға өтуді жинаңыз,
    болжамдық дисперсияны эпистемикалық және алеаторикалыққа бөліңіз.
    """
    model.train()  # NOT eval() — бұл dropout-ты белсенді ұстайды
    mus, log_vars = [], []
    for _ in range(n_samples):
        mu, log_var = model(x)
        mus.append(mu)
        log_vars.append(log_var)

    mus = torch.stack(mus)            # (T, batch, 1)
    log_vars = torch.stack(log_vars)  # (T, batch, 1)

    pred_mean = mus.mean(dim=0)
    epistemic_var = mus.var(dim=0)              # өтулер арасындағы дисперсия
    aleatoric_var = log_vars.exp().mean(dim=0)  # өтулер арасындағы күту

    return {
        "mean": pred_mean.squeeze(-1),
        "epistemic_std": epistemic_var.sqrt().squeeze(-1),
        "aleatoric_std": aleatoric_var.sqrt().squeeze(-1),
        "total_std": (epistemic_var + aleatoric_var).sqrt().squeeze(-1),
    }

Үйрету гетероскедастикалық жоғалуды қолданады, бұл дисперсия басына мағына береді. Өз-өзін реттейтін құрылымға назар аударыңыз: 0.5 * precision * (target - mu)**2 мүшесі кіші дисперсияны қалайды, 0.5 * log_var мүшесі оны жазайды, теңгерім нүктесі шартты шум деңгейі.

model = MCDropoutNet(input_dim=50, hidden_dim=128, dropout_p=0.1)
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-3, weight_decay=1e-4)

for epoch in range(200):
    model.train()
    for x_batch, y_batch in train_loader:
        mu, log_var = model(x_batch)
        loss = heteroscedastic_loss(mu, log_var, y_batch)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

Әдісті тынышсыз жоятын gotcha: mc_predict ішінде model.eval() шақыру. Ол dropout-ты өшіреді, әрбір өту бірдей мәнді қайтарады, epistemic_var дәл нөлге құлайды, және өлшеу ережеңіз іштей алеаторикалық дисперсияға қарап жай Келлиге орталайды. Қате жоқ сәтсіздікке ұшырайды. Inference жолында epistemic_var > 0 тексеріңіз.

Алға өту санын таңдау

  • T=30T = 30: тұрақты орташа үшін төменгі шек
  • T=100T = 100: орташа және дисперсия үшін жұмыс істейтін әдепкі
  • T=500+T = 500{+}: құйрық квантильдері қажет болмаса diminishing returns

Әдіс 3: Терең ансамбльдер

Бес тәуелсіз үйретілген нейрондық желілер болжамдарын біріктіреді, олардың келіспеушілігі эпистемикалық гало құрайды

Lakshminarayanan et al. (2017) әртүрлі кездейсоқ инициализациялардан MM тәуелсіз желілерді үйретеді және агрегациялайды. Ресми Байес болмаса да, терең ансамбльдер белгісіздік калибрациялық бенчмарктерде үнемі принципалды әдістерді жеңеді.

p(yx)1Mm=1Mp(yx,θm)p(y \mid x) \approx \frac{1}{M} \sum_{m=1}^M p(y \mid x, \theta_m^*)

Мүшелер арасындағы келіспеушілік — эпистемикалық бағалау. Ансамбльдер бұл блогтың басқа жерлерінде агрегация құрылғылары ретінде пайда болады — аномалия анықтау, HMM режим анықтау, конформалдың EnbPI block bootstrap — бірақ мүшелер арасындағы spread арқылы белгісіздік бағалаушы ретінде емес. Бұл осындағы қолдану.

Ансамбль іске асыру

Әртүрлілік тәуелсіз үйретуден келеді, MM объект құрудан емес. Үйретілмеген немесе бірдей үйретілген мүшелердің ансамблі не шумді не нөл эпистемикалық дисперсияны қайтарады:

class DeepEnsemble:
    def __init__(self, input_dim: int, n_models: int = 5, hidden_dim: int = 128):
        self.models = []
        for seed in range(n_models):
            torch.manual_seed(seed)          # әр мүше үшін әртүрлі init
            self.models.append(
                MCDropoutNet(input_dim, hidden_dim, dropout_p=0.0)
            )

    def fit(self, train_loader, epochs: int = 200, lr: float = 1e-3):
        """Әр мүше тәуелсіз үйретіледі. Мұнда әртүрлілік пайда болады —
        әртүрлі init, әртүрлі shuffle реті. Бұлды өткізіп жіберу
        epistemic_var == 0 (бірдей мүшелер) немесе таза шум (үйретілмеген) береді."""
        for seed, model in enumerate(self.models):
            torch.manual_seed(1000 + seed)   # әртүрлі shuffle/dropout stream
            opt = torch.optim.AdamW(model.parameters(), lr=lr, weight_decay=1e-4)
            model.train()
            for _ in range(epochs):
                for x_batch, y_batch in train_loader:
                    mu, log_var = model(x_batch)
                    loss = heteroscedastic_loss(mu, log_var, y_batch)
                    opt.zero_grad()
                    loss.backward()
                    opt.step()
        return self

    @torch.no_grad()
    def predict(self, x: torch.Tensor):
        mus, variances = [], []
        for model in self.models:
            model.eval()                     # мұнда дұрыс: dropout sampling жоқ
            mu, log_var = model(x)
            mus.append(mu.squeeze(-1))
            variances.append(log_var.exp().squeeze(-1))

        all_mus = torch.stack(mus)
        all_vars = torch.stack(variances)

        epistemic_var = all_mus.var(dim=0)   # мүшелер арасындағы spread
        aleatoric_var = all_vars.mean(dim=0)

        return {
            "mean": all_mus.mean(dim=0),
            "epistemic_std": epistemic_var.sqrt(),
            "aleatoric_std": aleatoric_var.sqrt(),
            "total_std": (epistemic_var + aleatoric_var).sqrt(),
        }

model.eval() DeepEnsemble.predict-те дұрыс, mc_predict-те бұрын екенін ескеріңіз. Стохастикалық көзі әртүрлі: ансамбльдер тәуелсіз үйретуден алады, MC Dropout live dropout mask-тен алады.

Трейдоффтар: MC Dropout vs Терең ансамбльдер

MC Dropout Терең ансамбльдер
Үйрету құны 1x (жалғыз модель) MMx (MM модель)
Inference құны TT алға өту MM алға өту
Жады 1x параметрлер MMx параметрлер
Белгісіздік сапасы Эпистемиканы төмен бағалай бастайды Жалпы жақсырақ калибрленген
Іске асыру оңайлығы әдетті (flag flip) әдетті (MM модельді үйретіңіз)
Параллелдік Кезек пасалар (сол модель) Қып-қынатай параллель

Прагматикалық гибрид: кіші ансамбльді (M=35M = 3{-}5) үйретіңіз, әр мүше де MC Dropout қолдансын, интермодельді келіспеушілік пен интрамодельді стохастикалықтықтың екеуін де ұстап алыңыз.

Ақша төлеу: Асимметриялық өлшеу

Алеаторикалық шум қаупі орынның кеңейтеді, эпистемикалық белгісіздік позиция өлшеу саңылауын жабады және бас тарту аймағын жасайды

Бұл нақты үлес. Гаусс Келли f=μ/σ2f^* = \mu / \sigma^2; шығару, өсу параболасы, drawdown ықтималдығ кестесі және fraction Kelly емес full Kelly жүргізудің төрт себебінің барлығы The Kelly Criterion for Strategies бар, және қайталанбайды. Төрттің бірінші-Kelly fraction-дағы f=μ/σ2f^* = \mu / \sigma^2 берік деп алыңыз.

Өзгерту — бөлгіш. Жалпы болжамдық дисперсия орнына:

σeff2=σalea2+λσepi2,λ>1\sigma^2_{\text{eff}} = \sigma^2_{\text{alea}} + \lambda \cdot \sigma^2_{\text{epi}}, \qquad \lambda > 1

λ>1\lambda > 1 үшін дәлел: алеаторикалық дисперсия — нарықтың шуы, ол бағаланған, және оны ұстау стратегияның табыс табу жолы. Эпистемикалық дисперсия — сіздің білмесушілігіңіз — оның премиясы жоқ, тіптей нашарыған, ол сіздің μ\mu бағалауыңызбен корреляцияланған кезде қате болуы мүмкін. σepi\sigma_{\text{epi}} үлкен кезде, Келлидің саны бөлгішпен бірге сенімсіз, сондықтан өлшеу қатесі күрделене түседі. Нарық шуына қарағанда оны superlinearly жазу — оның тікелей өрнегі.

def uncertainty_adjusted_position_size(
    pred_mean: float,
    epistemic_std: float,
    aleatoric_std: float,
    max_position: float = 1.0,
    lam: float = 2.0,                   # эпистемикалық penalty; validation-те tune
    max_epi_ratio: float = 0.5,         # осы epi/alea қатынасынан жоғары abstain
    base_kelly_fraction: float = 0.25,
) -> float:
    """Эпистемикалық дисперсия алеаторикалыққа қарағанда қатты жазатын Kelly өлшеу."""
    effective_var = aleatoric_std ** 2 + lam * epistemic_std ** 2
    if effective_var < 1e-10:
        return 0.0

    position = (pred_mean / effective_var) * base_kelly_fraction

    epi_ratio = epistemic_std / (aleatoric_std + 1e-8)
    if epi_ratio > max_epi_ratio:
        position *= max(0.0, 1.0 - epi_ratio)

    return float(np.clip(position, -max_position, max_position))

Шлюзге ескерту қажет. Сенімділік порогынан төмен позицияларды нөлдеу — мұнда жаңа емес — конформал мақала ноу-трейд фильтрін et=μ^/wte_t = |\hat{\mu}| / w_t min_edge порогымен жалпы түрде сипаттайды және кодтайды, соның ішінде порогты қалай таңдау және нөлді айналатын аралықтың геометриялық оқылуы. Ол машинаға conformal prediction қараңыз. Жаңасы — бөлгіш: σepi/σalea\sigma_{\text{epi}} / \sigma_{\text{alea}} бойынша гейтинг модель нарықтан гөрі өз параметрлері туралы шатысқанда арнайы өтеді — жалпы белгісіздік гейтинг алайтын күй, себебі тыныш бірақ танын емес режим төмен жалпы дисперсия және жаман эпистемикалық қатынасы болуы мүмкін.

Калибрация: Бұл басқаға беріңіз

Белгісіздік бағасы калибрацияланған кезде ғана пайдалы: номиналды 95% аралық шынның шамамен 95% уақытын қамтуы керек. Мұнда өз Гаусс-квантильді сенімділік тексеруді құрыңыз — қалың құйрықты қайтарым қалдықтарындағы параметрлік аралық — conformal prediction болатын сәтсіздік режимі, және ол артқы жағында соңғы үлгі кептілігімен target vs empirical coverage хабарлайтын жұмыс істейтін evaluate() жібереді. TFT пост та квантиль бастары үшін сол нүктені жасайды.

Пост-хок рескейлинг (σ~=ασ+β\tilde{\sigma} = \alpha \sigma + \beta validation set-те fit) арзан түзету, және бұл Adaptive Conformal Inferenceдің әлсіз ініс. ACI online miscoverage деңгейі αt\alpha_t-ні ұзақ мерзімді кептілік шекарасымен ұстайды, статикалық рескейл емес. ACI — күштірек нұсқа; сызықты рескейлді қалаудың жалғыз себебі — ол эпистемикалық/алеаторикалық қатынасты сақтайды, ACI-дің жекпе-жек ені емес.

Бұл жарияланғанға дейін өлшенуі қажет

Жоғарыдағы әдістер белгілі. Бөлудің саудада ешнәрсені сататыны — жоқ, және бұл блог тек аргумент бойынша sizing ережелерін жарияламайды. Бар:

1. Деректор және мақсат. Аспапты, бар өлшемді, нақты күн ауқымын, feature set-ті, болжау мақсатын атап атыңыз.

2. Бөлу өзі. Жалпы болжамдық дисперсияның қанша пайызы эпистемикалық ал алеаторикалық, және бұл қатынас аталған тыныш терезеден аталған волатиль терезеге қалай қозғалатыны. Бұл ақша диаграммасы және әлі жоқ. Жалпыланбаған гипотеза: қатынас жүзілік волатильділіктен бұрын шығады, себебі танынбаушылық бұзылыстан бұрын келеді.

3. Конформалмен кептілік. Сол деректердегі жарияланған мақаладанғы split-conformal аралықтарымен салыстырғанда, MC Dropout аралықтарының үлгіден тыс кептілігінің өлшенгені. Ол head-to-head өзі жаңа нәтиже және екі посттың табиғи көпірі.

4. λ\lambda ешнәрсені сатады ма? Validation-да эпистемикалық penalty-ті sweep етіңіз және λ=1\lambda = 1 baseline-ке қарсы PnL және макс drawdown хабарлаңыз. Ештеңе сатпаса, солай айтыңыз — The Honest Negative сол нәтиже үшін шаблон және жарияланатын нәтиже.

5. Inference құны. Target hardware-да әр TT-де өлшенген.

Мұндағы кез келген бағалау walk-forward optimization тәртіпімен жүреді — λ\lambda гиперпараметр, және толық үлгіде tune-делген λ\lambda нәтиже емес.

Өндіріске қолданбалы кеңестер

1. Prior-ды жылыңыз. Вариациялық қорытындыда, вариациялық орташаны random емес pretrained deterministic network-тен инициализациялаңыз. Әдетте конвергенция уақыты жартылай кемиді.

2. Дисперсия құлдырауын бақылаңыз. Үйренілген дисперсиялар σj\sigma_j шамамен нөлге drift жасап, BNN-ді тыныш deterministic network-ке қайтаруы мүмкін. Training кезінде орташа σj\sigma_j-ті бақылаңыз; қажет болса KL annealing қосыңыз.

3. Фиксированған validation set емес rolling basis қайта калибрлаңыз. Нарықтар стационар емес және бір рет fit-телген калибрациялауdecay. Walk-forward тәртіпімен rolling window-да қайта үйретіңіз немесе ACI-ге модельдің staleness-ті онлайн сіңіріңіз — конформал пост retraining frequency trade-off-ты тікелей қамтиды.

4. Ансамбль әртүрлілігі маңызды. Әртүрлі тұқымдар, әртүрлі shuffle-лер, опциялық түрде мүше бойынша әртүрлі гиперпараметрлер. Инициализация әртүрлілігі — ансамбль сапасының басты драйвері, сондықтан жоғарыдағы fit() циклы опциялық емес.

5. Бөліністі, жалпы ғана емес, жазыңыз. Екеуін де де репозициялармен сақтаңыз. Олсыз шолуда маңызды жалғыз сұраққа жауап бере алмайсыз: sizer exposition-ді қысқартқанда, бұл нарық шулы болғандықтан па, модель жоғолғандықтан па — және ол дұрыс болды ма?

6. Белгісіздік feature ретінде. Rolling эпистемикалық статистика өзі drawdown-дарды болжауы мүмкін. әбден мүмкін, өлшенбеген, жеке постқа лайық.

Шектеулер және шынайы келтірулер

  • Жуық posterior-лар әлі жуық. MC Dropout және VI шын posterior-дың шектеулі көрінісін береді. Ештеңеден жақсы, шындық емес, және екеуіне де кептілік кептігі жоқ.
  • Калибрация қажет кезінде нашарлайды. Шынайы жаңа режимде модель әлі де miscalibrated болуы мүмкін — ол тек deterministic-ке қарағанда азірақ miscalibrated болуы қайталанады. Distribution out input-тан белгісіздік бағалары өзі distribution out output-тар.
  • Алеаторикалық дисперсия эпистемикалық сигналды сіңіре алады. Егер гетероскедастикалық бас жеткілікті икемді болса, ол модель белгісіздікті деректер шуы ретінде түсіндіруге үйренеді, σepi\sigma_{\text{epi}}-ні нөлге қарай құлайды және бүкіл бөлуді тынышсыз бұзады. Бұл бұл посттағы ең маңызды сәтсіздік режимі және ол өзін хабарламайды. Режимдер арасындағы қатынасты бақылаңыз; ешқашан қозғалмайтын қатынас — сынық бөлу, тұрақты нарық емес.
  • λ\lambda еркін параметр. Tunable knob-ты sizing rule-ге енгізу — overfit sizing rules-тар қалай жасалатыны. Ол walk-forward justification-ды қажет етеді немесе 1-де бекітуі керек.

Қорытынды

Конформал болжау бұл блогқа кептілігі бар аралық ендерімен қамтамасыз етеді, Kelly бізге sizing rule береді. Екеуі де бермейтін — неге аралық кең деген сұраққа жауап. Болжамдық дисперсияны эпистемикалық және алеаторикалыққа бөлу оған жауап береді, және жауап — жалпы сияқты емес әрекеттегі: нарық шуы төленген риск, модель білмесушілігі жоқ, және sizing бөлгіші солай айтуы керек.

MC Dropout бөлуді дерлік тегін қылады — бір жол (inference-де model.train()) кез келген dropout желісін жуық Байеске айналдырады. Терең ансамбльдер MMx құнымен жақсырақ калибрлейді. Екеуі де сол асимметриялық бөлгішке σalea2+λσepi2\sigma^2_{\text{alea}} + \lambda \sigma^2_{\text{epi}} қоралайды.

λ>1\lambda > 1 шын мәнінде төлейді ме — бұл қараға жауабы жоқ эмпирикалық сұрақ. Жоғарыда аталған өлшеулер — оны жариялау бағасы.


Әдебиеттер:

  • Blundell, C., Cornebise, J., Kavukcuoglu, K., & Wierstra, D. (2015). Weight Uncertainty in Neural Networks. ICML.
  • Gal, Y. & Ghahramani, Z. (2016). Dropout as a Bayesian Approximation: Representing Model Uncertainty in Deep Learning. ICML.
  • Lakshminarayanan, B., Pritzel, A., & Blundell, C. (2017). Simple and Scalable Predictive Uncertainty Estimation using Deep Ensembles. NeurIPS.
  • Kendall, A. & Gal, Y. (2017). What Uncertainties Do We Need in Bayesian Deep Learning for Computer Vision? NeurIPS.
  • Gibbs, I. & Candes, E. (2021). Adaptive Conformal Inference Under Distribution Shift. NeurIPS.
  • Kelly, J. L. (1956). A New Interpretation of Information Rate. Bell System Technical Journal.
blog.disclaimer

Authors

Eugen Soloviov
Eugen Soloviov

Trading-systems engineer

Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.

Newsletter

Нарықтан бір қадам алда болыңыз

AI сауда талдаулары, нарық аналитикасы және платформа жаңалықтары үшін біздің ақпараттық бюллетеньге жазылыңыз.

Біз сіздің жекелігіңізді құрметтейміз. Кез келген уақытта жазылымнан шығуға болады.