← Quay lại danh sách bài viết
July 31, 2026
5 phút đọc

Epistemic vs Aleatoric: Đo lường những gì mô hình trả lời không biết

Epistemic vs Aleatoric: Đo lường những gì mô hình trả lời không biết
#bayesian
#uncertainty
#neural-network
#risk
#position-sizing

Mọi quy tắc định kích thước vị thế trên blog này thu gọn sự không chắc chắn thành một vô hướng. Kelly chia cho phương sai. Conformal prediction chia cho chiều rộng khoảng. Volatility targeting chia cho dự báo GARCH. Cả ba đều đúng, và cả ba đều bỏ qua một sự khác biệt quan trọng cho trading: sự khác biệt giữa một thị trường ồn ào và một mô hình kém hiểu biết.

Đó không phải là cùng một rủi ro. Nhiễu thị trường được định giá — đó là thứ bạn được bồi thường vì chịu đựng. Sự thiếu hiểu biết của mô hình không được định giá, không được bồi thường, và chính xác là trạng thái mà ước tính edge của bạn đáng tin nhất. Quy tắc sizing trừng phạt cả hai như nhau đang để tiền trên bàn.

Bài viết này là về việc làm cho sự phân chia đó có thể đo lường được. Cụ thể:

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

Đặt điều đó vào mẫu số Kelly thay cho phương sai tổng. Phần còn lại của bài viết là cách ước tính hai thành phần (MC Dropout, deep ensembles), và sự phân chia trông như thế nào trên dữ liệu thực.

Luận: Hai Sự Không Chắc Yêu Câu Hai Phản Ứng

Epistemic Aleatoric
Nguồn Dữ liệu hạn chế / mô hình Nhiễu vốn có trong dữ liệu
Có thể giảm được? Có (dữ liệu thêm giúp) Không
Hành động trading Giảm vị thế hoặc kiêng rẻ Mở rộng stop, giảm đòn bẩy
Tín hiệu "Tôi chưa thấy chế độ này" "Thị trường này đang ồn ào bây giờ"

Sự bất đối xứng trong hàng "hành động trading" là toàn bộ luận điểm. Phương sai aleatoric cao là đã biết chưa biết: bạn có thể định kích thước cho nó, hedge nó, và mong đợi được bồi thường risk premium vì giữ nó. Phương sai epistemic cao là chưa biết chưa biết: mô hình đang ngoại suy, ước tính trung bình μ\mu của nó đáng ngờ như ước tính phương sai, và không có premium nào gắn liền với việc sai về các thông số của chính mình.

Một mô hình kết hợp cả hai sẽ hoặc overtrade trong các chế độ không quen (bỏ qua sự không chắc chắn epistemic) hoặc undertrade trong các chế độ quen nhưng ồn ào (trừng phạt quá mức sự không chắc chắn aleatoric). Kelly chuẩn, được áp dụng cho σtotal2\sigma^2_{\text{total}}, làm cả hai tùy thuộc vào thành phần nào chiếm ưu thế.

Phân Tách

Sự không chắc chắn epistemic đến từ sự không chắc chắn về các tham số mô hình θ\theta. Thay vì một θ\theta^* duy nhất (như trong maximum likelihood), chúng tôi duy trì một phân phối p(θD)p(\theta \mid \mathcal{D}) và tích phân:

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

Sự lan truyền được tạo ra bởi việc tích phân qua θ\theta là epistemic. Nó giảm dần khi D\mathcal{D} phát triển để bao phủ vùng đầu vào.

Sự không chắc chắn aleatoric là nhiễu điều kiện của quá trình tạo dữ liệu. Trong mạng neuron, nó được mô hình bởi một đầu ra thứ hai phát ra phương sai phụ thuộc vào đầu vào:

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

Đầu heteroscedastic này đang ước tính cùng một đối tượng mà GARCH ước tính theo cách cổ điển — phương sai điều kiện phụ thuộc vào trạng thái, cao vào ban đêm và thấp vào giờ cao điểm. Nếu bạn muốn các chiêm nghiệm của đối tượng đó trên crypto, GARCH(1,1) cho độ biến động crypto bao phủ nó đầy đủ, bao gồm cả lý do tại sao dự báo điều kiện live (không phải phương sai mẫu vô điều kiện) thuộc về mẫu số Kelly. Đầu NN chỉ là một bộ ước tính khác của cùng một đại lượng, fit chung với trung bình.

Điều mà GARCH không thể cung cấp cho bạn là số hạng kia. Đó là mục đích của phần còn lại của bài viết này.

Vị Trí Tương Đối Với Những Gì Đã Xuất Bản

Hai bài viết trước bao phủ các lĩnh vực lân cận và đáng đọc trước, vì bài viết này cố ý không lặp lại chúng:

  • Conformal prediction cho định kích thước vị thế nhận biết rủi ro cung cấp cho bạn các khoảng với bảo hiểm bao phủ mẫu hữu hạn, không giả định phân phối, plus sizing inverse-width và bộ lọc no-trade tỷ số edge. Nó là công cụ mạnh hơn nếu tất cả những gì bạn muốn là một khoảng có kích thước đúng.
  • Temporal Fusion Transformers phát ra các quantile trực tiếp và đã cảnh báo rằng các quantile pinball-loss không được hiệu chuẩn tự động ngoài mẫu.

Sự đánh đổi rõ ràng. Conformal cho bạn một bảo đảm nhưng một con số — chiều rộng khoảng không thể phân tách được, vì vậy nó không thể nói tại sao nó rộng. Phương pháp Bayesian cho bạn một phân tách nhưng không có bảo đảm — các khoảng của MC Dropout chỉ tốt như posterior xấp xỉ. Bài viết này là về việc mua sự phân tách; bạn nên giữ conformal ở trên cùng của nó để bảo hiểm.

Phương Pháp 1: Suy Diễn Variational (Bayes by Backprop)

Một posterior trọng số Bayesian dày được nén thành một xấp xỉ variational có thể xử lý trước khi tạo ra phân phối dự đoán lợi nhuận

Một mạng neuron Bayesian đặt một prior p(θ)p(\theta) trên các trọng số và tìm kiếm posterior p(θD)p(Dθ)p(θ)p(\theta \mid \mathcal{D}) \propto p(\mathcal{D} \mid \theta) p(\theta). Bộ chuẩn hóa yêu cầu tích phân qua mọi cấu hình trọng số, điều này không khả thi đối với bất cứ thứ gì có nhiều hơn một vài tham số.

Suy diễn variational thay thế posterior không khả thi bằng một họ có thể xử lý qϕ(θ)q_\phi(\theta) — thường là một Gaussian nhân tử qϕ(θ)=jN(θj;μj,σj2)q_\phi(\theta) = \prod_j \mathcal{N}(\theta_j; \mu_j, \sigma_j^2) — và giảm thiểu:

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

Vì điều này liên quan đến posterior chưa biết, thay vào đó chúng tôi tối đa hóa 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)`

Số hạng đầu tiên đẩy qϕq_\phi về hướng giải thích dữ liệu; số hạng thứ hai giữ nó gần prior. Bayes by Backprop (Blundell et al., 2015) làm cho điều này có thể vi phân được với reparameterization trick: mẫu ϵN(0,I)\epsilon \sim \mathcal{N}(0, I), đặt θ=μ+σϵ\theta = \mu + \sigma \odot \epsilon.

Trong thực tế VI làm tăng số lượng tham số gấp đôi, làm tăng phương sai gradient (mỗi forward pass sử dụng các trọng số khác nhau), và giả định mean-field bỏ qua các tương quan trọng số, có xu hướng đánh giá thấp sự không chắc chắn epistemic. Đối với một trading stack mà bạn đã có một mô hình deterministik đã được huấn luyện, hai phương pháp rẻ hơn dưới đây thường là điểm nhập tốt hơn.

Phương Pháp 2: MC Dropout

Nhiều forward passes có bật dropout phân tách thành các dự đoán khác nhau mà sự bất đồng của chúng tạo thành sự không chắc chắn epistemic

Gal và Ghahramani (2016) cho thấy một mạng được huấn luyện với dropout và được đánh giá với dropout vẫn hoạt động tại thời điểm test là một thủ tục suy diễn variational xấp xỉ trong một quá trình Gauss sâu. Dropout đã tạo ra một phân phối trên các mạng con; giữ nó hoạt động trong suy diễn và chạy TT forward passes mẫu từ posterior ngầm đó đó.

Không có chỗ nào khác trên blog này. Mã được xuất bản ở đây sử dụng dropout chỉ như một bộ điều chỉnh thời gian huấn luyện (mô hình hóa spread, TFT tại dropout=0.1–0.3). Giữ nó hoạt động trong suy diễn là một thay đổi một dòng với ý nghĩa hoàn toàn khác.

Thống Kê Dự Báo

Cho TT forward passes ngẫu nhiên tạo ra {y^t}t=1T\{\hat{y}_t\}_{t=1}^{T} và các phương sai mỗi lần σ^t2(x)\hat{\sigma}_t^2(x):

Trung bình dự đoán:

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

Epistemic (sự bất đồng giữa các passes):

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

Aleatoric (trung bình của nhiễu dự đoán):

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

Sự phân tách chính xác là luật phương sai tổng: phương sai của trung bình điều kiện, cộng với trung bình của phương sai điều kiện. Phương sai dự đoán tổng là tổng của chúng.

Triển Khai PyTorch

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

class MCDropoutNet(nn.Module):
    """
    Mạng dự đoán lợi nhuận với MC Dropout để ước tính sự không chắc chắn.
    Cả trung bình dự đoán và log-phương sai (aleatoric) đều được đưa ra.
    """
    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)        # lợi nhuận dự đoán
        self.head_logvar = nn.Linear(hidden_dim, 1)    # log(phương sai aleatoric)

    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):
    """Negative log-likelihood cho Gaussian với phương sai phụ thuộc vào đầu vào đã học."""
    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):
    """
    Suy diễn MC Dropout: giữ dropout BẬT, thu thập T forward passes,
    phân tách phương sai dự đoán thành các phần epistemic và aleatoric.
    """
    model.train()  # KHÔNG eval() -- đây là những gì giữ dropout hoạt động
    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)              # Var qua các passes
    aleatoric_var = log_vars.exp().mean(dim=0)  # E qua các passes

    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),
    }

Huấn luyện sử dụng mất mát heteroscedastic, điều làm cho đầu phương sai có nghĩa. Lưu ý cấu trúc tự điều chỉnh: số hạng 0.5 * precision * (target - mu)**2 muốn phương sai nhỏ, số hạng 0.5 * log_var trừng phạt nó, và điểm cân bằng là mức nhiễu điều kiện.

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 âm thầm giết phương pháp: gọi model.eval() bên trong mc_predict. Nó tắt dropout, mỗi pass trả về giá trị giống hệt, epistemic_var sập xuống đúng bằng không, và quy tắc sizing của bạn âm thèm revert về Kelly đơn giản trên phương sai aleatoric. Nó thất bại mà không có lỗi. Hãy assert rằng epistemic_var > 0 trong đường dẫn suy diễn của bạn.

Chọn Số Lượng Forward Pass

  • T=30T = 30: giới hạn dưới hợp lý cho một trung bình ổn định
  • T=100T = 100: mặc định có thể dùng được cho trung bình và phương sai
  • T=500+T = 500{+}: lợi suất giảm trừ khi bạn cần các quantile đuôi

Phương Pháp 3: Deep Ensembles

Năm mạng neuron được huấn luyện độc lập kết hợp các dự đoán của chúng trong khi sự bất đồng của chúng tạo thành hào quang epistemic

Lakshminarayanan et al. (2017) huấn luyện MM mạng độc lập từ các khởi tạo ngẫu nhiên khác nhau và tổng hợp. Mặc dù không chính thức Bayesian, deep ensembles consistently đánh bại các phương pháp chính xác hơn trên các benchmark hiệu chuẩn sự không chắc chắn.

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

Sự bất đồng giữa các thành viên là ước tính epistemic. Ensembles xuất hiện ở nơi khác trên blog này như các thiết bị tổng hợp — phát hiện bất thường, phát hiện chế độ HMM, EnbPI block bootstrap của conformal — nhưng chưa bao giờ như một bộ ước tính sự không chắc chắn qua sự lan truyền liên thành viên. Đó là cách sử dụng ở đây.

Triển Khai Ensemble

Sự đa dạng đến từ huấn luyện độc lập, không phải từ việc xây dựng MM đối tượng. Một ensemble của các thành viên chưa được huấn luyện hoặc được huấn luyện giống hệt trả về nhiễu hoặc phương sai epistemic bằng không:

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 khác nhau cho mỗi thành viên
            self.models.append(
                MCDropoutNet(input_dim, hidden_dim, dropout_p=0.0)
            )

    def fit(self, train_loader, epochs: int = 200, lr: float = 1e-3):
        """Mỗi thành viên được huấn luyện độc lập. Đây là nơi sự đa dạng đến từ
        -- init khác, thứ tự trộn khác. Bỏ qua điều này
        cho epistemic_var == 0 (các thành viên giống hệt) hoặc nhiễu thuần (chưa huấn luyện)."""
        for seed, model in enumerate(self.models):
            torch.manual_seed(1000 + seed)   # luồng trộn/dropout khác
            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()                     # đúng ở đây: không có 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)   # lan TRONG CÁC thành viên
        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(),
        }

Lưu ý rằng model.eval() đúng trong DeepEnsemble.predict và sai trong mc_predict. Nguồn của tính ngẫu nhiên khác nhau: ensembles lấy nó từ huấn luyện độc lập, MC Dropout lấy nó từ các dropout mask trực tiếp.

Sự Đánh Đổi: MC Dropout vs Deep Ensembles

MC Dropout Deep Ensembles
Chi phí huấn luyện 1x (mô hình đơn) MMx (MM mô hình)
Chi phí suy diễn TT forward passes MM forward passes
Bộ nhớ 1x tham số MMx tham số
Chất lượng sự không chắc chắn Có xu hướng đánh giá thấp epistemic Hiệu chuẩn tốt hơn tổng thể
Dễ triển khai Vô cùng (flip cờ) Vô cùng (huấn luyện MM mô hình)
Tính song song Các passes tuần tự (cùng mô hình) Song song cực kỳ dễ

Một kết hợp thực tế: huấn luyện một ensemble nhỏ (M=35M = 3{-}5) trong đó mỗi thành viên cũng sử dụng MC Dropout, nắm bắt cả sự bất đồng liên mô hình và tính ngẫu nhiên nội mô hình.

Phần Thưởng: Sizing Bất Đối Xứng

Nhiễu aleatoric mở rộng bao bọc rủi ro trong khi sự không chắc chắn epistemic thu hẹp khẩu độ sizing và tạo ra vùng kiêng

Đây là đóng góp thực sự. Gaussian Kelly là f=μ/σ2f^* = \mu / \sigma^2; sự phái sinh, parabol tăng trưởng, bảng xác suất drawdown và bốn lý do để chạy Kelly fractional thay vì đầy đủ đều có trong The Kelly Criterion for Strategies, và không được lặp lại ở đây. Lấy f=μ/σ2f^* = \mu / \sigma^2 tại một phần Kelly như cho.

Sửa đổi là ở mẫu số. Thay vì phương sai dự đoán tổng:

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

Lập luận cho λ>1\lambda > 1: phương sai aleatoric là nhiễu thị trường, nó được định giá, và chịu đựng nó là cách một chiến lược kiếm tiền. Phương sai epistemic là sự thiếu hiểu biết của bạn — nó không mang theo premium, và tệ hơn, nó tương quan với việc ước tính μ\mu của bạn bị sai. Khi σepi\sigma_{\text{epi}} lớn, tử số của Kelly không đáng tin vào cùng thời điểm với mẫu số, do đó lỗi sizing được cộng gộp. Trừng phạt nó siêu tuyến tính so với nhiễu thị trường là biểu hiện trực tiếp của điều đó.

def uncertainty_adjusted_position_size(
    pred_mean: float,
    epistemic_std: float,
    aleatoric_std: float,
    max_position: float = 1.0,
    lam: float = 2.0,                   # hình phạt epistemic; tune trên validation
    max_epi_ratio: float = 0.5,         # kiêng ở trên tỷ lệ epi/alea này
    base_kelly_fraction: float = 0.25,
) -> float:
    """Sizing Kelly nơi phương sai epistemic bị trừng phạt nặng hơn aleatoric."""
    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))

Cổng đáng được ghi chú. Zeroing các vị thế dưới ngưỡng tin cậy không phải là mới ở đây — bài viết conformal quy định và mã bộ lọc no-trade chung là et=μ^/wte_t = |\hat{\mu}| / w_t với ngưỡng min_edge, bao gồm cả cách chọn ngưỡng và cách đọc hình học của một khoảng straddling zero. Xem conformal prediction cho machinery đó. Điều mới là mẫu số: gating trên σepi/σalea\sigma_{\text{epi}} / \sigma_{\text{alea}} kích hoạt cụ thể khi mô hình bối rối hơn về các tham số của chính nó so với thị trường ồn ào — một trạng thái mà gating tổng-uncertainty không thể phát hiện, vì một chế độ êm nhưng lạ có thể có phương sai tổng thấp và tỷ lệ epistemic tồi.

Hiệu Chuẩn: Giao Điều Này

Một ước tính sự không chắc chắn chỉ hữu ích khi đã hiệu chuẩn: một khoảng 95% danh định nên chứa chân lý ~95% thời gian. Đừng tự kiểm tra độ tin cậy Gaussian-quantile ở đây — một khoảng tham số trên residuals lợi nhuận đuôi dày chính xác là chế độ thất bại mà conformal prediction tồn tại để tránh, và nó ships một evaluate() đang hoạt động báo cáo mục tiêu so với bao phủ thực nghiệm với bảo đảm mẫu hữu hạn phía sau. Bài viết TFT thực hiện cùng một điểm cho các đầu quantile.

Post-hoc rescaling (σ~=ασ+β\tilde{\sigma} = \alpha \sigma + \beta fit trên một validation set) là bản sửa giá rẻ, và là em họ kém hơn của Adaptive Conformal Inference, duy trì mức miscoverage trực tuyến αt\alpha_t với ràng buộc bao phủ dài hạn thay vì rescale tĩnh. ACI là lựa chọn mạnh hơn; lý do duy nhất để ưa chuổi rescale tuyến tính là nó bảo toàn tỷ số epistemic/aleatoric, mà chiều rộng đơn của ACI không làm.

Những Gì Phải Được Đo Trước Khi Xuất Bản

Các phương pháp trên đã được thiết lập. Tuyên bố rằng sự phân chia mua được bất cứ điều gì trong trading thì chưa, và blog này không xuất bản các quy tắc sizing dựa trên lập luận một mình. Ngưỡng:

1. Dataset và mục tiêu. Đặt tên công cụ, kích thước thanh, phạm vi ngày rõ ràng, bộ tính năng và mục tiêu dự báo.

2. Sự phân chia chính nó. Phần trăm phương sai dự đoán tổng là epistemic so với aleatoric, và tỷ số đó di chuyển như thế nào giữa một cửa sổ êm được đặt tên và một cửa sổ biến động được đặt tên. Đây là biểu đồ tiền và nó chưa tồn tại. Giả thuyết đáng để falsify: tỷ số pike trước khi độ biến động thực tế làm, vì sự lạ đến trước sự nhiễu loạn.

3. Bao phủ so với conformal. Bao phủ out-of-sample được đo lường của các khoảng MC Dropout so với danh định, so sánh với các khoảng split-conformal từ bài viết đã xuất bản trên cùng dữ liệu. Head-to-head đó tự nó là một kết quả mới và cây cầu tự nhiên giữa hai bài viết.

4. λ\lambda mua được gì không? Sweep hình phạt epistemic trên validation và báo cáo PnL và max drawdown so với baseline λ=1\lambda = 1. Nếu nó không mua được gì, hãy nói vậy — The Honest Negative là mẫu cho kết quả đó và là một kết quả có thể xuất bản.

5. Chi phí suy diễn. Được đo lường, trên phần cứng mục tiêu, tại mỗi TT.

Bất kỳ đánh giá nào ở đây chạy dưới kỷ luật walk-forward optimizationλ\lambda là một siêu tham số, và một λ\lambda được tune trên mẫu đầy đủ không phải là một kết quả.

Mẹo Thực Tiễn Cho Sản Xuất

1. Warm-up prior. Với suy diễn variational, khởi tạo trung bình variational từ một mạng deterministik đã được huấn luyện trước thay vì ngẫu nhiên. Thường làm giảm thời gian hội tụ một nửa.

2. Theo dõi sự sụp đổ phương sai. Các phương sai được học σj\sigma_j có thể trôi xuống gần bằng không, âm thèm revert BNN thành một mạng deterministik. Theo dõi trung bình σj\sigma_j trong quá trình huấn luyện; thêm KL annealing nếu cần.

3. Hiệu chuẩn lại trên cơ chế xoay, không phải tập validation cố định. Thị trường là không stationary và một hiệu chuẩn fit một lần sẽ decay. Hoặc retrain trên một cửa sổ xoay dưới kỷ luật walk-forward, hoặc để ACI hấp thụ sự cũ của mô hình trực tuyến — bài viết conformal bao phủ trade-off tần suất retrain trực tiếp.

4. Sự đa dạng của ensemble quan trọng. Các hạt giống khác nhau, các trộn khác nhau, tùy chọn các siêu tham số khác nhau cho mỗi thành viên. Sự đa dạng khởi tạo là driver chính của chất lượng ensemble, đó là lý do vòng lặp fit() ở trên không phải là tùy chọn.

5. Ghi log sự phân tách, không chỉ tổng. Lưu cả hai thành phần cùng với các kết quả thực hiện. Không có điều này, bạn không thể trả lời câu hỏi duy nhất quan trọng trong rà soát: khi sizing cắt giảm phơi nhiễm, đó là vì thị trường ồn ào hay vì mô hình bị lạc — và nó có đúng không?

6. Sự không chắc chắn như một tính năng. Thống kê epistemic xoay có thể tự nó dự đoán drawdown. Khả thi, chưa đo, và đáng một bài viết riêng.

Hạn Chế Và Lưu Ý Trung Thực

  • Các posterior xấp xỉ vẫn là xấp xỉ. MC Dropout và VI đưa ra cái nhìn hạn chế về posterior thật. Tốt hơn không có gì, không phải ground truth, và không có bảo đảm bao phủ gắn với cái nào.
  • Hiệu chuẩn suy giảm chính khi bạn cần nó. Trong một chế độ thực sự mới mô hình vẫn có thể miscalibrated — nó chỉ có xu hướng ít miscalibrated hơn một deterministik. Các ước tính sự không chắc chắn từ một đầu vào out-of-distribution tự nó là các output out-of-distribution.
  • Phương sai aleatoric có thể hấp thụ tín hiệu epistemic. Nếu đầu heteroscedastic đủ linh hoạt, nó học để giải thích sự không chắc chắn của mô hình là nhiễu dữ liệu, làm sụp đổ σepi\sigma_{\text{epi}} về không và âm thèm đánh bại toàn bộ sự phân tách. Đây là chế độ thất bại quan trọng nhất trong bài viết này và nó không tự thông báo. Theo dõi tỷ số qua các chế độ; một tỷ số không bao giờ di chuyển là một sự phân tách bị hỏng, không phải một thị trường ổn định.
  • λ\lambda là một tham số tự do. Việc giới thiệu một nút có thể tune vào quy tắc sizing là cách các quy tắc sizing overfit được xây dựng. Nó cần một sự biện minh walk-forward hoặc cần được cố định ở 1.

Kết Luận

Conformal prediction đã cung cấp cho blog này chiều rộng khoảng với bảo đảm bao phủ, và Kelly đã cung cấp cho nó một quy tắc sizing. Cả hai đều không đưa ra câu trả lời tại sao khoảng rộng. Phân tách phương sai dự đoán thành các phần epistemic và aleatoric trả lời điều đó, và câu trả lời có thể hành động theo cách mà tổng không thể: nhiễu thị trường là rủi ro được bồi thường, sự thiếu hiểu biết của mô hình thì không, và mẫu số sizing nên nói điều đó.

MC Dropout làm cho sự phân tách gần như miễn phí — một dòng (model.train() tại suy diễn) biến bất kỳ mạng dropout nào thành một Bayesian xấp xỉ. Deep ensembles có giá MMx và hiệu chuẩn tốt hơn. Cả hai đều cho cùng một mẫu số bất đối xứng σalea2+λσepi2\sigma^2_{\text{alea}} + \lambda \sigma^2_{\text{epi}}.

Việc λ>1\lambda > 1 thực sự trả hay không là một câu hỏi thực nghiệm mà bản dự thảo này chưa trả lời. Các phép đo được liệt kê ở trên là giá của việc xuất bản nó.


References:

  • 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.
Tuyên bố miễn trừ trách nhiệm: Thông tin được cung cấp trong bài viết này chỉ nhằm mục đích giáo dục và thông tin, không cấu thành lời khuyên về tài chính, đầu tư hoặc giao dịch. Giao dịch tiền mã hóa tiềm ẩn rủi ro thua lỗ đáng kể.

Tác Giả

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

Đi Trước Thị Trường

Đăng ký nhận bản tin của chúng tôi để có những thông tin chuyên sâu độc quyền về AI trading, phân tích thị trường và các cập nhật nền tảng.

Chúng tôi tôn trọng quyền riêng tư của bạn. Hủy đăng ký bất kỳ lúc nào.