/ Модель

Характеристики

Лицензия
Apache 2.0
Библиотека
transformers
Опубликована
2 окт 2026

liar-detector-v5

Классификация аудиоАудио → label

Компактная нейросеть классифицирует искажения в паре одномерных сигналов и определяет, какой сигнал изменён, тип искажения и его наличие.

0скачиваний за 30 дней1лайквеса обновлены2 окт 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

liar-detector-v5 — модель Sylv Q (zeechimp), представляющая собой компактную полносвязную нейронную сеть с общей MLP-основой и тремя классификационными головами. Она получает 44 признака, рассчитанных по паре выровненных одномерных сигналов, и предсказывает, какой сигнал искажён, к какому из шести семейств относится искажение и присутствует ли оно вообще. Для голов предусмотрена калибровка вероятностей; модель работает с числовыми сигналами и не предназначена для анализа речи или текста.

Модель рассчитана на исследования самосогласованности сигналов, проверки целостности и поиска аномалий без внешнего эталонного сигнала, а также на эксперименты с объединением данных датчиков. Обучение проводилось с нуля на синтетических сигналах. В описанных испытаниях точность определения искажённого потока составила 88,2% на данных того же распределения и 92,8% в целом на указанных внераспределённых семействах; результаты зависят от типа искажения.

Качество определения масштабного искажения низкое (57,4%), а голова наличия искажения лишь немного превосходит базовый уровень. Модель не проверена на реальных сенсорных данных и для их применения требует адаптации к конкретной области; для решений с высокими ставками её не рекомендуют без обширной проверки и адаптации. Лицензия — Apache 2.0.

Сценарии применения

  • поиск искажённого потока в паре выровненных сигналов датчиков
  • классификация типа искажения в синтетических одномерных сигналах
  • проверка самосогласованности пары потоков без внешнего эталона
  • сравнение методов обнаружения аномалий без эталонного сигнала
  • обучающие демонстрации многоголовой классификации и калибровки

Ограничения

Модель слабо распознаёт масштабные искажения (57,4% точности), а обнаружение наличия искажения лишь немного превосходит базовый уровень. Она обучена на синтетических сигналах и не проверена на реальных сенсорных данных; для прикладного использования нужна адаптация и проверка.

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

Liar Detector v5

Model Summary

liar-detector-v5 is a lightweight, fully-connected neural network that detects whether one of two aligned 1-D signals is "lying" — i.e., distorted by a known manipulation family. Given two streams A and B, it simultaneously predicts:

  1. Which stream lies (binary head: 0 = A lies, 1 = B lies)
  2. What kind of lie it is (family head, 6 classes)
  3. Whether any lie is present at all (presence head)

The model is designed for research on self-consistent signal verification, sensor fusion, and reference-free anomaly detection. It operates on 44 hand-crafted features extracted from the (A, B) pair and requires no external reference signal.

Model Details

  • Developed by: Sylv Q (zeechimp)
  • Model type: Multi-head MLP (3 heads, shared trunk, presence adapter)
  • Language(s): N/A (numeric signal input)
  • License: Apache 2.0
  • Finetuned from: Not applicable (trained from scratch)
  • Repository: zeechimp/liar-detector-v5

Architecture

ComponentDetail
Input44-dim feature vector extracted from (A, B)
TrunkLinear(44→96) → ReLU → Linear(96→64) → ReLU
Binary headLinear(64→2) — which stream lies (0=A, 1=B)
Family headLinear(64→6) — distortion type
Presence adapterLinear(64→64) → ReLU → Linear(64→64)
Presence headLinear(64→2) — is any lie present
Parameters~19,500
FrameworkPyTorch + 🤗 Transformers

The presence head has its own adapter between the trunk and the classifier. The trunk features that discriminate "which stream differs" are not identical to the features that discriminate "does any stream differ", so the presence head needs a learned remapping rather than competing with the binary and family heads for the same representation.

Feature Groups (44 total)

  • Raw moments — mean, log-std, skew, kurtosis for both streams (8)
  • Canonical reference — abs_mean_A - abs_mean_B, log_std_ratio_canonical (2)
  • Difference features — paired difference moments (6)
  • Residual statistics — moments, autocorrelation, cross-correlation (12)
  • Regression — residual slope / explained variance (2)
  • Reference-free signatures — quantization, stair-step, inversion, smoothness (10)
  • Uniqueness — unique-fraction ratios (4)

Intended Uses & Limitations

Direct Use

  • Research on signal integrity and self-consistency checking
  • Benchmarking reference-free anomaly detectors
  • Educational demonstrations of multi-head classification with calibration

Downstream Use

  • Sensor-fusion pipelines where one stream may be tampered
  • Audio/telemetry verification (with domain-specific retraining)

Out-of-Scope Use

  • Not a general-purpose "lie detector" for human speech or text
  • Not validated on real-world sensor data (trained on synthetic signals)
  • Not suitable for high-stakes decisions without extensive domain adaptation

Training Details

Training Data

Synthetic 1-D signals generated as sums of three sinusoids (frequencies 0.01–0.15 Hz, amplitudes 0.5–2.0), with additive Gaussian noise (noise_std ~ U(0.05, 0.15) * std(x)). Distortions are injected via the following families:

FamilyTypeDescription
offsetIDAdditive constant bias
scaleIDMultiplicative gain (0.85–1.15×)
saturationIDHard clipping at ±M
quantizationIDRounding to a grid
lagIDInteger time shift (1–4 samples)
harmonicIDQuadratic self-interaction term
deadzoneOODZeroing of near-zero values
dropoutOODRandom sample-and-hold
driftOODCumulative Gaussian random walk
inversionOODSign flip for small values

Training Procedure

  • Epochs: 200
  • Batch size: 64
  • Optimizer: AdamW (lr = 3e-3, weight_decay = 1e-5)
  • Loss: Masked cross-entropy. Binary and family heads train only on single-lie pairs; presence head trains on all pairs with class weights [1.47, 0.76] to compensate for the 66/34 scenario split.
  • Calibration: Temperature scaling fitted per head on a held-out 20% split.

Evaluation Results

In-Distribution (ID)

ConditionAccuracyECE
Binary (which stream lies)88.2%0.091
Family (distortion type)92.3%0.224
Presence (any lie)71.5%0.143

Per-Family Binary Accuracy (ID)

FamilyAccuracy
offset95.8%
scale57.4%
saturation100.0%
quantization76.0%
lag99.4%
harmonic99.4%

Out-of-Distribution (OOD)

FamilyBinary Accuracy
deadzone93.6%
dropout96.8%
drift90.4%
inversion90.4%

Overall OOD binary accuracy: 92.8% (ECE 0.148)

Known Limitations

  • scale family is weak (57.4%). When two streams differ only by a multiplicative factor, the difference is proportional to the signal itself. Without a reference, this is hard to distinguish from amplitude noise.
  • Presence head is 5.5 points above the majority baseline (66%). The head has learned to detect some distortions but not all. Distinguishing "signal-difference" from "noise-difference" at small magnitudes requires noise-normalized features that this version does not include.

Usage

Load from the Hub

import json
import torch
import numpy as np
from huggingface_hub import hf_hub_download
from liar_detector_v5 import (
    LiarDetectorModel,
    FeatureScaler,
    synth_true,
    apply_lie,
    extract_features,
)

REPO = "zeechimp/liar-detector-v5"

# 1. Load model and feature scaler
model = LiarDetectorModel.from_pretrained(REPO).eval()
scaler = FeatureScaler.load(hf_hub_download(REPO, "feature_extractor.json"))

# 2. Build a synthetic pair (A honest, B distorted)
rng = np.random.default_rng(0)
A_clean = synth_true(rng)
sx = float(np.std(A_clean)) + 1e-9
noise_std = rng.uniform(0.05, 0.15) * sx
A = A_clean + noise_std * rng.standard_normal(len(A_clean))
B = apply_lie(A_clean, rng, "offset") + noise_std * rng.standard_normal(len(A_clean))

# 3. Extract features, normalize, predict
x = scaler(A, B)
with torch.no_grad():
    out = model(features=torch.from_numpy(x).unsqueeze(0))

print("binary  :", out.binary_probs[0].tolist())    # [P(A lies), P(B lies)]
print("family  :", out.family_probs[0].tolist())    # 6-class distribution
print("presence:", out.presence_probs[0].tolist())  # [P(both honest), P(somebody lies)]

### Run the full CLI

The training, evaluation, and demo scripts live in the
[`example_usage.py`](example_usage.py) companion file. Download it from this
repo and run:

```bash
# Demo over 20 trials, reports per-head vote
python liar_detector_v5.py demo --model . --family offset

# Full ID/OOD evaluation
python liar_detector_v5.py eval --model .

Calibration

Temperatures fitted on the held-out validation split are stored in config.json and applied automatically inside forward():

HeadTemperature
Binary32.43
Family19.09
Presence0.53

The *_probs fields in LiarDetectorOutput are already calibrated. The raw *_logits are available if you want to apply your own scaling.

Citation

@misc{zeechimp2026liardetector,
  author       = {Sylv Q},
  title        = {Liar Detector v5: Self-Consistent-Liar Detection
                  with Multi-Head Classification and Per-Head Calibration},
  year         = {2026},
  publisher    = {Hugging Face},
  howpublished = {\url{https://huggingface.co/zeechimp/liar-detector-v5}}
}

Model Card Contact

For questions or issues, please open a discussion on the model page or contact zeechimp.

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers · audio-classification

Нельзя запустить

В репозитории нет config.json: не понять архитектуру модели.

Ревизия весов
9a5d73d

0 моделей