← Maqolalarga qaytish
August 15, 2026
5 daqiqa o'qish

Bir vaqtning o'zida narx, hajm va o'zgaruvchanlikni bashorat qilish uchun ko'p vazifani o'rganish

Bir vaqtning o'zida narx, hajm va o'zgaruvchanlikni bashorat qilish uchun ko'p vazifani o'rganish
#deep-learning
#multi-task
#shared-representation
#prediction
#auxiliary

Ko'p vazifali o'rganish (MTL) odatda tasdiq bilan sotiladi: kodlovchini o'zaro bog'liq maqsadlar bo'ylab baham ko'ring va asosiy vazifa yaxshilanadi. Savdoda o'zaro bog'liq maqsadlar aniq - daromadlar, hajm va amalga oshirilgan o'zgaruvchanlik hammasi bir xil buyurtma oqimidan tushadi - va tasdiqlash deyarli hech qachon sinovdan o'tkazilmaydi. Qiziqarli savol vazifalarning bog'liqligi emas. Bu umumiy gradientlar * rozi bo'ladimi yoki yo'qmi va ular bo'lmagan burmalarda nima sodir bo'ladi.

Ushbu maqola ko'pchilik MTL yozuvlari izoh sifatida qabul qiladigan ikkita narsani markazga qo'yadi:

  1. Yo'qotishlarni muvozanatlash tafsilot emas, tajribadir. Ruxsat etilgan og'irliklar, Kendall noaniqlik vazni va GradNorm uch xil modeldir. Uchalasini ham bir xil burmalarda bajaring va o'rganilgan og'irliklarni har biri uchun asosiy vazifa ko'rsatkichi bilan birga xabar qiling.
  2. Salbiy uzatishni ko‘rsatkichni ko‘rishdan oldin o‘lchash mumkin. Umumiy enkoderdagi vazifa gradientlari orasidagi kosinus o‘xshashligi sizga mashg‘ulot davomida yordamchi vazifalar tasvirni asosiy vazifa kerakli joyga tortib olayotganligini bildiradi. Kosinuslarga imzo qo'ying, so'ngra belgi bu qavatdagi natijani bashorat qilganligini tekshiring.

Quvurdagi qolgan hamma narsa - o'zgaruvchanlik jarayoni, o'quv tsikli, oqish nazorati, tekshirish protokoli - bu blogning boshqa joylarida allaqachon yoritilgan va qayta olingan emas, balki bog'langan.

Sozlash; o'rnatish

Umumiy yashirin vakillikdan kelib chiqadigan uchta bozor maqsadi

Berilgan kiritish xususiyatlari xRd\mathbf{x} \in \mathbb{R}^d (OHLCV, texnik ko'rsatkichlar, buyurtma oqimi), uchta maqsad:

  • 1-topshiriq (asosiy): keyingi davr qaytishi y(1)=rt+1y^{(1)} = r_{t+1}
  • 2-topshiriq (yordamchi): keyingi davr jurnalining hajmi y(2)=logVt+1y^{(2)} = \log V_{t+1}
  • 3-topshiriq (yordamchi): keyingi davrda amalga oshirilgan o'zgaruvchanlik y(3)=σt+1y^{(3)} = \sigma_{t+1}

Ko'p vazifali model bir vaqtning o'zida uchtasini ishlab chiqaradi, y^=fθ(x)\hat{\mathbf{y}} = f_\theta(\mathbf{x}), va ko'p vazifa xavfi har bir vazifa uchun xavflarning og'irlashtirilgan yig'indisidir:

RMTL(θ)=k=1KwkE[(k)(fθ(k)(x),y(k))]\mathcal{R}_{\text{MTL}}(\theta) = \sum_{k=1}^{K} w_k \cdot \mathbb{E}\bigl[\ell^{(k)}(f_\theta^{(k)}(\mathbf{x}), y^{(k)})\bigr]

Butun maqola haqida wkw_k va har bir topshiriq gradientlari bir-biriga nima qilishlari haqida.

Nega qo'shma trening yordam berishi mumkin, bir paragrafda. Yordamchi vazifalar bir vaqtning o'zida imkoniyatlarni nazorat qilish va induktiv tarafkashlik bo'lgan bir nechta bozor hodisalarini tushuntirish uchun umumiy vakillikni cheklaydi; va "kutilayotgan qaytish" bo'lmasa-da, hajm va o'zgaruvchanlik bevosita kuzatilganligi sababli, yordamchi boshlar asosiy boshga qaraganda tozaroq gradient signalini beradi. Ko'p natijalarni chiqaradigan bitta model uchun ishi uzoq muhokama qilinadi - izohlash mexanizmi biriktirilgan holda - ko'p ufqli prognozlash uchun vaqtincha termoyadroviy transformatorlar, bu ko'p ufqli kvantlar uchun bir xil umumiy kodlovchi-ko'p boshli argumentni yaratadi.

Arxitektura, qisqacha

Qattiq parametrlarni almashish: umumiy kodlovchi gϕg_\phi ozuqalar KK vazifaga oid boshliqlar hψkh_{\psi_k}, shunday y^(k)=hψk(gϕ(x))\hat{y}^{(k)} = h_{\psi_k}(g_\phi(\mathbf{x})). Bu yerda oʻlchangan versiya, chunki u gradient ziddiyatli versiya ϕ\phi yaxshi belgilangan.

Yumshoq parametrlarni almashish har bir vazifaga bogʻlanish jazosi bilan oʻz kodlovchisini beradi λkjϕkϕj2\lambda \sum_{k \neq j} \|\phi_k - \phi_j\|^2 — koʻproq parametrlar, koʻproq moslashuvchanlik va ziddiyatni oʻlchash uchun yagona umumiy parametr vektori yoʻq. Kross-tikuv tarmoqlari o‘rganilgan matritsa orqali har bir topshiriq uchun funksiyalarni aralashtirib, o‘rtasida joylashgan. αkj\alpha_{kj} har bir darajada. Agar qattiq baham ko'rish ziddiyatli bo'lsa va ikkalasi ham quyidagi o'lchov doirasidan tashqarida bo'lsa, ikkalasini ham sinab ko'rish kerak.

Muhim bo'lgan tajriba: uchta yo'qotishlarni muvozanatlash sxemasi

Raqobatchi vazifa gradientlari umumiy neyron yadro atrofida muvozanatlashgan

Oddiy yo'qotish L=kwkL(k)\mathcal{L} = \sum_k w_k \mathcal{L}^{(k)} masshtabga sezgir. Qaytish zarar atrofida yashaydi bo'lsa 0.010.01 va atrofdagi hajmning yo'qolishi 1.01.0, hajm gradientga egalik qiladi va qaytish boshi och qoladi. Uchta javob:

Ruxsat etilgan og'irliklar. O'rnatish wk=1w_k = 1 har bir maqsadni standartlashtirgandan keyin. Halol bazaviy variant - agar u yutsa, moslashuvchan sxemalar shunchaki rasmiyatchilik.

Noaniqlikni o'lchash (Kendall va boshq., 2018). Gomoskdastik shovqin shkalasini o'rganing σk\sigma_k har bir vazifa uchun:

LMTL=k=1K12σk2L(k)+logσk\mathcal{L}_{\text{MTL}} = \sum_{k=1}^{K} \frac{1}{2\sigma_k^2} \mathcal{L}^{(k)} + \log \sigma_k

Noaniqlik darajasi yuqori bo'lgan vazifalar avtomatik ravishda kamaytiriladi; logσk\log \sigma_k atamasi arzimas σk\sigma_k \to \infty yechimiga to'sqinlik qiladi. Bunga e'tibor bering: σk\sigma_k bu mashg'ulot vaqtidagi yo'qotishlarni o'lchaydigan qurilma, bashoratli interval emas - noaniqlik uchun siz haqiqatda pozitsiyani o'lchashingiz mumkin, qarang konformal bashorat.

GradNorm (Chen va boshq., 2018). Yo'qotish shkalasidan ko'ra gradientni kattaliklarni muvozanatlang. Har bir qadam: hisoblash Gk=ϕwkL(k)2G_k = \|\nabla_\phi w_k \mathcal{L}^{(k)}\|_2 va o'rtacha Gˉ\bar{G}, nisbiy tayyorgarlik tezligini hisoblang r~k=L(k)(t)/L(k)(0)rˉ\tilde{r}_k = \frac{\mathcal{L}^{(k)}(t)/\mathcal{L}^{(k)}(0)}{\bar{r}}, va yangilang wkwkηwwkkGkGˉr~kαw_k \leftarrow w_k - \eta_w \nabla_{w_k} \sum_k |G_k - \bar{G} \cdot \tilde{r}_k^\alpha|. Keyin barcha vazifalar yo'qotish miqyosidan qat'i nazar, taqqoslanadigan stavkalarda o'qitiladi.

MTL-ga xos kod - bu boshlar, ro'yxatni qaytarish va yo'qotishlarni yig'ish. Linear/BatchNorm/ReLU/Dropout stek, Adam/kosinus/klipli qozon plitasi va davr halqasi bu bo'limda ko'rsatilgan standart naqshdir. DeepLOB va bu erda o'tkazib yuborilgan.

import torch
import torch.nn as nn


class MultiTaskTradingModel(nn.Module):
    """Hard parameter sharing: one encoder, K heads."""

    def __init__(self, encoder: nn.Module, repr_dim: int, n_tasks: int = 3):
        super().__init__()
        self.shared_encoder = encoder          # any MLP/CNN/GRU trunk
        self.task_heads = nn.ModuleList(
            nn.Linear(repr_dim, 1) for _ in range(n_tasks)
        )

    def forward(self, x):
        h = self.shared_encoder(x)
        return [head(h).squeeze(-1) for head in self.task_heads]

    def shared_repr(self, x):
        return self.shared_encoder(x)


class UncertaintyWeightedLoss(nn.Module):
    """Kendall et al. (2018) homoscedastic weighting."""

    def __init__(self, n_tasks: int = 3):
        super().__init__()
        self.log_vars = nn.Parameter(torch.zeros(n_tasks))  # log(sigma^2)

    def forward(self, losses: list) -> torch.Tensor:
        return sum(
            torch.exp(-self.log_vars[i]) * loss + self.log_vars[i]
            for i, loss in enumerate(losses)
        )

    def get_weights(self) -> list:
        with torch.no_grad():
            return [torch.exp(-lv).item() for lv in self.log_vars]

UncertaintyWeightedLoss parametrlarga ega, shuning uchun u model bilan birga optimallashtiruvchiga kirishi kerak: optim.Adam(list(model.parameters()) + list(uw.parameters()), ...). Buni unutish "noaniqlik vaznini o'lchash" va o'rniga sobit og'irliklarni jimgina ishlatishning eng keng tarqalgan usuli hisoblanadi.

Nima haqida xabar berish kerak

Har bir sxema uchun, har bir qavatda: o'rganilgan yakuniy vazifa og'irliklari, asosiy vazifa ko'rsatkichi va - tortish sxemasi namunaviy tanlov bo'lgani uchun - birini tanlashdan oldin qancha sxema solishtirilgan.

Sxema wreturnw_{\text{return}} wvolumew_{\text{volume}} wvolw_{\text{vol}} Asosiy vazifa koʻrsatkichi va bitta vazifa
Ruxsat etilgan (wk=1w_k = 1) 1.00 1.00 1.00
Noaniqlik og'irligi
GradNorm

Uch sxemalar marta bir necha marta allaqachon kichik model qidirish. Bu yerda bildirilgan har qanday yaxshilanish maqolada tasvirlangan ko‘p sinovli tuzatishdan omon qolishi kerak deflated Sharpe va bir nechta sinov biror narsani anglatishidan oldin.

Salbiy uzatish: Gradientlarni imzolang

Umumiy taqdimotda tekislangan va ziddiyatli vazifa gradientlari

Bu saqlashga arziydigan qism. Salbiy uzatish - yordamchi vazifalar asosiy vazifani yomonlashtirganda va u to'g'ridan-to'g'ri diagnostikaga ega: umumiy parametr maydonidagi vazifa gradientlari orasidagi burchak.

cos(ϕL(k),ϕL(j))<0    conflicting tasks\cos\bigl(\nabla_\phi \mathcal{L}^{(k)}, \nabla_\phi \mathcal{L}^{(j)}\bigr) < 0 \implies \text{conflicting tasks}

Faqat umumiy enkoderda o'lchanadi - boshlar konstruktsiyasi bo'yicha vazifaga xosdir va har doim ahamiyatsiz "rozi" bo'ladi.

import torch.nn.functional as F


def shared_grad(model, x, y, task_idx, criterion=nn.MSELoss()):
    """Gradient of task `task_idx` w.r.t. the shared encoder, flattened."""
    model.zero_grad(set_to_none=True)
    loss = criterion(model(x)[task_idx], y)
    loss.backward()
    return torch.cat([
        p.grad.detach().flatten()
        for p in model.shared_encoder.parameters()
        if p.grad is not None
    ])


def task_conflict(model, x, y_by_task, task_names):
    """Pairwise cosine similarity between per-task shared-encoder gradients."""
    grads = {
        name: shared_grad(model, x, y_by_task[name], i)
        for i, name in enumerate(task_names)
    }
    return {
        (a, b): F.cosine_similarity(
            grads[a].unsqueeze(0), grads[b].unsqueeze(0)
        ).item()
        for i, a in enumerate(task_names)
        for b in task_names[i + 1:]
    }

Buni mashg'ulot paytida bir marta emas, balki belgilangan kadansda ushlab turilgan partiyada chaqiring. Kodlovchi ixtisoslashgani sari juftlik hizalanishi va ajralib chiqishi mumkin; mashg'ulot yakuni bo'yicha bitta raqam buni yashiradi.

Izlash va nashr qilish uchun topilma:

Juftlash cos sim, erta ta'lim cos sim, kech mashg'ulot MTL asosiy vazifaga yordam berdimi?
qaytish ↔ ovoz balandligi
qaytish ↔ o'zgaruvchanlik
hajmi ↔ o'zgaruvchanlik

Agar hajm va o'zgaruvchanlik gradientlari bir-biriga mos keladigan bo'lsa, ikkalasi ham qaytish gradientiga zid bo'lsa, to'g'ri xulosa shundaki, ikkita yordamchi vazifa orqaga qaytish vazifasi tegishli bo'lmagan izchil blokni tashkil qiladi - va tuzatish - bu ko'proq imkoniyatlar emas, balki vazifalarni guruhlash. Mojaro haqiqiy bo'lsa, standart choralar PCGrad (Yu va boshq., 2020) bo'lib, ular har bir ziddiyatli gradientni boshqasining normal tekisligiga proyeksiya qiladi; CAGrad (Liu va boshq., 2021), u hech qanday vazifaga zarar keltirmaydigan tushish yo'nalishini qidiradi; yoki yordamchi vazifani butunlay tark etish.

Qasddan yo'q bo'lgan narsaga e'tibor bering: maqsadli qiymat bo'yicha ranglangan umumiy vakillikning t-SNE syujeti. Bu dekorativdir - yuqoridagi kosinus raqamlari joylashtirish imo-ishorasini bildiradi va ular buni raqamlar sifatida aytadilar.

Tasdiqlash protokoli

Tadqiqot xronologiyasi bo'ylab oldinga qarab tekshirish oynalari ajratilgan

Yuqoridagi o'lchov noto'g'ri protokol ostida befoyda va MTL odatdagi tuzoqlarni yomonlashtiradi, chunki bitta o'rniga uchta maqsad oqishi mumkin.

Simulyator emas, haqiqiy maʼlumotlar. Maqsadlar haqiqiy OHLCV/savdo maʼlumotlaridan olinishi kerak. Qattiq kodlangan GARCH o'yinchog'i o'zgaruvchanlikni keltirib chiqaradi, bu * qurilish bo'yicha * rentabellik bilan bog'liq, bu aniq sinovdan o'tgan narsa - tajriba o'z generatorini o'lchash bo'ladi. Agar siz o'rnatilgan o'zgaruvchanlik jarayonini xohlasangiz, Kripto uchun GARCH o'zgaruvchanligini prognozlash GARCH(1,1) ga haqiqiy BTC/ETHda maksimal ehtimollik bilan mos keladi va standartlashtirilgan qoldiqlarni tasdiqlaydi va assimetrik GARCH va kaldıraç effekti Gauss simmetrik javob simulyatori nima uchun birinchi navbatda kripto o'zgaruvchanligini noto'g'ri ko'rsatishini qamrab oladi. Sintetik ma'lumotlar faqat boshqariladigan asosiy haqiqatni ta'minlagandagina himoya qilinadi - siz tiklashga harakat qilayotgan ma'lum, muallif tomonidan o'rnatilgan vazifa korrelyatsiyasi - bu erdagidan farqli tajriba.

Skalerlar faqat poyezdga mos keladi. Xususiyat shkalasi va uchta maqsadli o‘lchagichni har bir mashg‘ulot qavatiga joylashtiring va tekshirish uchun qo‘llang; global fit_transform bo'linishidan oldin oqish test-to'siq lahzalarni ta'limga. Aynan shu nosozlik katalogda keltirilgan oldinga qarashning tarafkashlik taksonomiyasi.

Tozalangan, embargo qilingan oldinga burmalar. Bitta 80/20 xronologik bo‘linish MTL yaxshilanishini katlama effektidan ajrata olmaydi - bu butun argument. oldinga qarab optimallashtirish, bu uchta xulosani keltirib chiqaradigan uchta bo'linishni ko'rsatadi. Kengaytirilgan oynani qayta ishlating purged_walk_forward dan generator mashinani o'rganish bilan modellashtirishni yoyish: bo'shliqni kamaytiradi horizon Har bir chegaraning har ikki tomonidagi qatorlar, bu muhim ahamiyatga ega, chunki bir-biriga o'xshash amalga oshirilgan o'zgaruvchanlik oynalari chegaradan oqib chiqadi, hatto qaytish maqsadi bo'lmasa ham.

Klassik tayanch chiziq. MTL tarmog‘i uchta bitta vazifali tarmoqdan ustun kelgan bo‘lsa, har bir maqsadli gradientni kuchaytiruvchi yoki tizma modeli to‘rttasini ham yengsa, hech narsa isbotlanmagan. Har bir nishonga bitta modelni LightGBM yoki tizma bilan bir xil burmalar va bir xil xususiyatlarga moslang va bir xil jadvalda hisobot bering.

Model Asosiy vazifa ko'rsatkichi Eslatmalar
Ridge, maqsad uchun Klassik asosiy chiziq
LightGBM, har bir maqsad uchun Klassik asosiy chiziq
Har bir maqsad uchun bitta vazifali MLP Uchta alohida to'r
MTL, eng yaxshi yo'qotish sxemasi Bitta to'r, uchta bosh

Bu erda MTL nimaga arziydi

Ko'p vazifali model murakkabligi uchun o'lchangan qaror chegarasi

MTL yutishi kerak bo'lgan shartlar nazorat ro'yxati sifatida emas, balki yuqoridagi burmalarni tekshirish uchun gipotezalar sifatida ko'rsatilgan:

  • Yordamchi teglar asosiy yorliqdan ko'ra tozaroq. Ovoz to'g'ridan-to'g'ri kuzatiladi; "kutilayotgan daromad" emas. Qaytish boshi asosan mos keladigan shovqin bo'lsa, yordamchi boshlardan gradient signali maqsadning yagona yaxshi joylashtirilgan qismidir.
  • O'quv ma'lumotlari enkoder quvvatiga nisbatan cheklangan, shuning uchun yordamchi cheklov faqat parametrlar uchun raqobat qilishdan ko'ra haqiqiy tartibga solish ishlarini bajaradi.
  • Xulosa qilishning kechikishi muhim va bitta oldinga o'tish uchtadan oshadi.

Va qarshi ish, teng darajada sinovdan: o'lchangan bo'lsa cos_sim(return, ·) qiymatlar doimiy ravishda salbiy, umumiy kodlovchi asosiy vazifadan uzoqlashtirilmoqda va yordamchi boshlar tartibga soluvchi emas, soliq hisoblanadi.

Xulosa

Uyg'unlashtirilgan bashorat oqimlari ko'p vazifali xulosaga aylanadi

Qaytishlar, hajm va o'zgaruvchanlik bir xil mikro tuzilmadan kelib chiqadi, shuning uchun umumiy vakillik oqilona oldingi hisoblanadi - lekin oldingi natija natija emas. Ushbu sozlama haqiqatda o'rnatishi mumkin bo'lgan ikkita narsa - bu ma'lumotlar qaysi yo'qotishlarni muvozanatlash sxemasini afzal ko'rishi (nafaqat g'olib nomi bilan emas, balki o'rganilgan og'irliklar haqida xabar berilgan) va umumiy kodlovchidagi vazifa gradientlari mos keladimi yoki yo'qmi, maqsadlar o'zaro bog'liqligidan ko'ra o'lchov bilan o'lchanadi.

Agar tozalangan oldinga burmalar MTL tarmog'i maqsadli gradientni kuchaytiruvchi modelni yengib chiqa olmasligini ko'rsatsa, bu topilma va u shunday nashr etiladi - shablon samimiy salbiy. Salbiy transferdagi salbiy natija hamon salbiy transfer natijasidir.

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

Bozordan bir qadam oldinda bo'ling

Sun'iy intellekt savdo tahlillari, bozor tahlili va platforma yangiliklari uchun bizning xabarnomaga obuna bo'ling.

Biz sizning maxfiyligingizni hurmat qilamiz. Istalgan vaqtda obunadan chiqishingiz mumkin.