Зеҳн
Омӯзиши мошинӣ ва амиқ

Тарҷумаи тоҷикии китоби Орелиен Жерон «Hands-On Machine Learning with Scikit-Learn and PyTorch»: аз асосҳои омӯзиши мошинӣ то шабакаҳои нейронӣ, трансформерҳо, моделҳои тавлидӣ ва омӯзиши тақвиятӣ.

Агенти Зеҳнӣ · 13 ноябри 2026 · 20 саҳифа · 1 писанд

ИлмБарномасозӣТехнология
Аз аввал хондан

Боби 16. Трансформерҳои биноӣ ва бисёрмодалӣ

Дар боби гузашта трансформерро аз сифр сохта, ба низоми тарҷума табдил додем; баъд моделҳои танҳо энкодер барои фаҳмиши забон (NLU), танҳо декодер барои тавлиди забон (NLG) ва ҳатто чатботи хурдеро омӯхтем. Вале дар бораи трансформерҳо ҳанӯз бисёр чиз мондааст. То ин ҷо танҳо матнро коркард кардем, аммо ин меъморӣ барои навъҳои гуногуни вуруд фавқулода хуб баромад. Дар ин боб трансформерҳои биноӣ (ViT) барои тасвир ва сипас трансформерҳои бисёрмодалӣ барои матн, тасвир, аудио, видео, ҳисгару механизмҳои робот ва воқеан ҳар навъи додаҳоро мебинем.

Қисми аввал чанд трансформери биноии таъсиргузорро фаро мегирад:

МоделМаъно ва ғояи асосӣ
DETR — Detection TransformerЭнкодер–декодери барвақтӣ барои ошкорсозии объект
ViT — Vision TransformerТанҳо энкодер, ки порчаҳои тасвирро мисли токенҳои калима мегирад ва бо додаҳои калон ба натиҷаи пешқадам мерасад
DeiT — Data-Efficient Image TransformerViT-и камдодатар, ки бо тақтири дониш омӯзонида мешавад
PVT — Pyramid Vision TransformerСохтори иерархии харитаҳои бисёрмиқёса барои сегментатсия ва пешгӯии зич
Swin — Shifted Windows TransformerМодели иерархии хеле тезтар бо равзанаҳои кӯчонидашуда
DINO — self-Distillation with NO labelsУсули нави худназоратӣ барои омӯхтани намояндагии биноӣ

Қисми дуюм бисёрмодалӣ аст:

  • VideoBERT: BERT барои токенҳои матн ва видео.
  • ViLBERT — Visio-Linguistic BERT: ду энкодери тасвир+матн, бо диққати ҳамдигарӣ (co-attention), яъне cross-attention-и дусамта.
  • CLIP — Contrastive Language–Image Pretraining: ду энкодери тасвир+матн, бо пешомӯзиши муқоисавӣ.
  • DALL·E: тавлиди тасвир аз матн; ном бозии номҳои рассом Салвадор Далӣ ва қаҳрамони Pixar — Wall-E аст.
  • Perceiver: бо ҳилаи cross-attention ҳар модалияти тафсилноки баландро ба пайдарпайии кӯтоҳ фишурда мекунад.
  • Perceiver IO — Input/Output: бо ҳилаи монанд механизми чандири баромад илова мекунад.
  • Flamingo: ба ҷойи оғоз аз сифр модели калони биноӣ ва забонии пешомӯхташударо ях карда, бо адаптери Resampler-и монанд ба Perceiver мепайвандад. Барои гуфтугӯи кушода дар бораи тасвир муносиб аст.
  • BLIP-2 — Bootstrapping Language-Image Pretraining: ду модели калони тайёрро бо трансформери сабуки пурсишгар — Q-Former — мепайвандад ва омӯзиши думарҳилавии чандҳадафӣ дорад.

Чароғҳоро фурӯзон кунед: трансформерҳо чашм мекушоянд!

Трансформерҳои биноӣ

ViT аз ҳеҷ пайдо нашуд. Пеш аз он RNN-и диққати биноӣ ва моделҳои омехтаи CNN–Transformer буданд. Аввал ин пешгузаштаҳоро мебинем.

RNN бо диққати биноӣ

Яке аз аввалин истифодаҳои диққат берун аз NLP тавсифи тасвир буд. Аввал CNN тасвирро ба харитаҳои хусусиятҳо табдил медиҳад. Баъд RNN-и декодер бо диққат тавсифро як токен дар ҳар қадам месозад.

Декодер дар ҳар қадам ба қисми мувофиқи тасвир менигарад. Дар расми 16.1 модел «Зане дар боғ фрисбӣ мепартояд» навиштааст. Пеш аз калимаи Frisbee қисми асосии диққат маҳз ба фрисбӣ равона шудааст.

Диққати биноӣ

Расми 16.1. Диққати биноӣ: тасвири вурудӣ (чап) ва тамаркузи модел пеш аз калимаи Frisbee (рост).

Шарҳпазирӣ

Бартарии иловагии диққат он аст, ки фаҳмидани сабаби баромадро осон мекунад. Ин шарҳпазирӣ (explainability) аст ва махсусан барои хато муфид мебошад. Агар акси саги барфравро «гург дар барф» номад, мебинед, ки ҳангоми wolf ба чӣ нигарист. Шояд ғайр аз саг ба барф ҳам диққат додааст: эҳтимол сагу гургро аз рӯйи барфи атроф фарқ мекунад. Бо аксҳои бештари гурги бебарф ва саги барфдор омӯзонда, инро ислоҳ мекунед. Мисол аз мақолаи соли 2016-и Марко Тулио Рибейро ва ҳамкорон аст, ки усули дигари шарҳпазириро — омӯхтани модели тафсиршавандаи маҳаллӣ дар атрофи пешгӯӣ — истифода мебарад.

Дар баъзе соҳаҳо шарҳпазирӣ танҳо воситаи ислоҳи модел нест, балки метавонад талаби ҳуқуқӣ бошад, масалан барои тасмими додани қарз.

Баъди пайдоиши трансформер онҳо зуд ҷойи RNN-ро дар меъмориҳои биноӣ, монанди тавсифи акс, гирифтанд. Вале кори асосии тасвир ҳанӯз аз CNN буд. Аз ин рӯ, онҳоро одатан ViT-и соф намешуморанд. DETR намунаи хуб аст.

DETR: омехтаи CNN–Transformer барои ошкорсозии объект

Моҳи майи 2020 муҳаққиқони Facebook Detection Transformer (DETR)-ро пешниҳод карданд (расми 16.2). CNN аввал тасвирҳоро ба харитаҳои хусусиятҳо мебарад. Онҳо ба пайдарпайии токенҳои биноӣ табдил ёфта, ба энкодер–декодери трансформер мераванд. Баромад пайдарпайии пешгӯиҳои чорчӯбаҳои иҳотакунанда мебошад.

Дер ё зуд савол пайдо мешуд: оё CNN-ро тамоман гирифта метавонем? Охир «танҳо диққат лозим аст», ҳамин тавр не? Чанд моҳ баъд ViT-и аслӣ пайдо шуд.

DETR барои ошкорсозии объект

Расми 16.2. DETR барои ошкорсозии объект.

ViT-и аслӣ

Октябри 2020 гурӯҳи Google аввалин трансформери биноии бе CNN-ро пешниҳод кард (расми 16.3). Номаш танҳо Vision Transformer — ViT буд. Ғоя сода аст: тасвирро ба порчаҳои 16 × 16 бурида, пайдарпайии онҳоро чун намояндагиҳои калима қабул кунед. Номи мақола ҳам «An Image Is Worth 16 × 16 Words» — «Як тасвир ба 16 × 16 калима меарзад» буд.

Ҳар порча ба вектори 16 × 16 × 3 = 768-ченака ҳамвор мешавад; 3 каналҳои RGB аст. Тасвири 224 × 224 ба 14 × 14 = 196 порча, яъне 196 вектори 768-ченака, ҷудо мешавад. Linear онҳоро ба андозаи embedding-и трансформер проексия мекунад. Баъд мисли embedding-и калима мавқеи омӯзишпазир илова карда, ба танҳо энкодер медиҳем. Дар оғоз токени синфии омӯзишпазир ва болои баромадаш сари таснифот меояд — услуби BERT.

Ҳамин! Модел дар таснифи ImageNet пеш гузашт, вале барои адолати муқоиса бояд гуфт, ки зиёда аз 300 миллион тасвири иловагӣ истифода шуд. Transformer нисбат ба CNN фарзияҳои сохтории пешакӣ (inductive biases)-и камтар дорад ва барои омӯхтани чизҳои дар CNN аз аввал дарҷшуда додаи бештар мехоҳад.

Эзоҳ. Inductive bias фарзияи ғайримустақими меъморист. Модели хаттӣ хаттӣ будани робитаро фарз мекунад. CNN нақши дар як ҷой омӯхташударо дар дигар ҷой ҳам муфид мешуморад ва ба маҳаллӣ будани хусусиятҳо такя мекунад. RNN тартиби вуруд ва муҳимтар будани токенҳои наздикро пешбинӣ мекунад. Агар фарзияҳо дуруст бошанд, додаи камтар лозим мешавад; агар нодуруст бошанд, ҳатто додаи калон шояд кумак накунад.

ViT барои таснифот

Расми 16.3. ViT барои таснифот.

Акнун ViT-ро аз сифр сохта метавонед.

Татбиқи ViT аз сифр бо PyTorch

Барои embedding-и порча nn.Conv2d-ро бо kernel_size=stride=patch_size=16 мегирем. Ин ба буридани порча, ҳамворкунӣ, Linear ва аз нав шаклдиҳӣ баробар аст:

import torch
import torch.nn as nn

class PatchEmbedding(nn.Module):
    def __init__(self, in_channels, embed_dim, patch_size=16):
        super().__init__()
        self.conv2d = nn.Conv2d(in_channels, embed_dim,
                                kernel_size=patch_size, stride=patch_size)
    def forward(self, X):
        X = self.conv2d(X)  # [B=баста, C=канал, H=баландӣ, W=паҳно]
        X = X.flatten(start_dim=2)  # [B, C, H * W]
        return X.transpose(1, 2)  # [B, H * W, C]

Баъди конволютсия фазоро ҳамвор ва ду андозаи охирро иваз мекунем, то embedding дар охир, мувофиқи nn.TransformerEncoder, бошад. Модел:

class ViT(nn.Module):
    def __init__(self, img_size=224, patch_size=16, in_channels=3,
                 num_classes=1000, embed_dim=768, depth=12, num_heads=12,
                 ff_dim=3072, dropout=0.1):
        super().__init__()
        self.patch_embed = PatchEmbedding(in_channels, embed_dim, patch_size)
        cls_init = torch.randn(1, 1, embed_dim) * 0.02
        self.cls_token = nn.Parameter(cls_init)  # [1, 1, E=embed_dim]
        num_patches = (img_size // patch_size) ** 2  # L
        pos_init = torch.randn(1, num_patches + 1, embed_dim) * 0.02
        self.pos_embed = nn.Parameter(pos_init)  # [1, 1 + L, E]
        self.dropout = nn.Dropout(p=dropout)
        encoder_layer = nn.TransformerEncoderLayer(
            d_model=embed_dim, nhead=num_heads, dim_feedforward=ff_dim,
            dropout=dropout, activation="gelu", batch_first=True,
            norm_first=True)  # pre-LN, as in ViT
        self.encoder = nn.TransformerEncoder(encoder_layer, num_layers=depth,
                                             enable_nested_tensor=False)
        self.layer_norm = nn.LayerNorm(embed_dim)
        self.output = nn.Linear(embed_dim, num_classes)

    def forward(self, X):
        Z = self.patch_embed(X)  # [B, L, E]
        cls_expd = self.cls_token.expand(Z.shape[0], -1, -1)  # [B, 1, E]
        Z = torch.cat((cls_expd, Z), dim=1)  # [B, 1 + L, E]
        Z = Z + self.pos_embed
        Z = self.dropout(Z)
        Z = self.encoder(Z)  # [B, 1 + L, E]
        Z = self.layer_norm(Z[:, 0])  # [B, E]
        logits = self.output(Z)  # [B, C]
        return logits

Созанда аввал PatchEmbedding, баъд embedding-и омӯзишпазири CLS-ро бо тақсимоти нормалӣ ва инҳирофи хурди маъмули 0,02 месозад. Шаклаш [1,1,E] аст. Мавқеъ [1,1+L,E] аст, зеро L порча ва як CLS дорем; он ҳам бо ҳамон тарз ибтидоӣ мешавад. Баъд dropout, энкодер, norm ва Linear-и таснифот меоянд.

forward() токенҳои порчаро месозад. expand() CLS-ро барои тамоми баста паҳн карда, ба аввали ҳар пайдарпайӣ мепайвандад. Мавқеъ илова, dropout ва энкодер иҷро мешаванд. Танҳо Z[:,0], яъне баромади CLS, гирифта ва нормализатсия мешавад; Linear логит медиҳад.

Эзоҳи тарҷумон. Дар манбаъ nn.TransformerEncoderLayer бо танзими пешфарз, яъне post-LN, сохта мешавад. ViT-и аслӣ pre-LN аст: LayerNorm пеш аз диққат ва MLP-и ҳар блок меояд ва як LayerNorm-и ниҳоӣ пеш аз сари таснифот. Бо post-LN баромади энкодер аллакай нормализатсия шудааст ва layer_norm-и охир такрорӣ мешавад. Аз ин рӯ norm_first=True илова шуд; enable_nested_tensor=False танҳо огоҳии PyTorch-ро, ки бо pre-LN пайдо мешавад, хомӯш мекунад.

Санҷиш дар тасвирҳои тасодуфӣ:

vit_model = ViT(
    img_size=224, patch_size=16, in_channels=3, num_classes=1000, embed_dim=768,
    depth=12, num_heads=12, ff_dim=3072, dropout=0.1)
batch = torch.randn(4, 3, 224, 224)
logits = vit_model(batch)  # [4, 1000]

Бо nn.CrossEntropyLoss омӯзондан мумкин аст, вале вақти зиёд мегирад. Агар додаҳоятон хеле соҳавӣ набошанд, одатан модели пешомӯхташударо аз Transformers гирифта, fine-tuning кардан беҳтар аст.

Fine-tuning-и ViT-и пешомӯхташуда

Oxford-IIIT Pet зиёда аз 7000 акси ҳайвоноти хонагӣ дар 37 синф дорад. Маҷмӯаро мегирем:

from datasets import load_dataset

pets = load_dataset("timm/oxford-iiit-pet")

Модел ва коркардгар:

from transformers import ViTForImageClassification, AutoImageProcessor

model_id = "google/vit-base-patch16-224-in21k"
vit_model = ViTForImageClassification.from_pretrained(model_id, num_labels=37)
vit_processor = AutoImageProcessor.from_pretrained(model_id, use_fast=True)

ViT-base дар ImageNet-21k, тақрибан 14 миллион тасвир ва зиёда аз 21 800 синф, пешомӯхта шудааст. ViTForImageClassification сари наву омӯзишнадидаи 37-синфаро месозад; онро бояд омӯзонем.

Коркардгар тасвирро ба 224 × 224, пикселҳоро ба −1…1 ва каналро пеш аз фазо мегузорад. use_fast=True татбиқи тезро мегирад. Баромад луғати дорои pixel_values аст.

Collator-и баста:

def vit_collate_fn(batch):
    images = [example["image"] for example in batch]
    labels = [example["label"] for example in batch]
    inputs = vit_processor(images, return_tensors="pt", do_convert_rgb=True)
    inputs["labels"] = torch.tensor(labels)
    return inputs

do_convert_rgb=True муҳим аст: баъзе аксҳо RGBA, яъне канали иловагии шаффофият, доранд. Модел RGB мехоҳад; табдил аз хатои миёнаи омӯзиш пешгирӣ мекунад. Trainer:

from transformers import Trainer, TrainingArguments

args = TrainingArguments("my_pets_vit", per_device_train_batch_size=16,
                         eval_strategy="epoch", num_train_epochs=3,
                         remove_unused_columns=False)
trainer = Trainer(model=vit_model, args=args, data_collator=vit_collate_fn,
                  train_dataset=pets["train"], eval_dataset=pets["test"])
train_output = trainer.train()

Огоҳӣ. Trainer пешфарз майдонҳои дар forward() истифоданашавандаро пеш аз collator дур мекунад. Модел pixel_values ва labels мехоҳад, пас image ҳазф ва example["image"] хато мешуд. Барои ҳамин remove_unused_columns=False лозим аст.

Баъди 3 давр дурустӣ тақрибан 91,8% мешавад. Бо афзоишдиҳии додаҳо ва омӯзиши бештар 93–95%, наздик ба пешқадамтарин натиҷа, мумкин аст. Вале аз соли 2020 ViT боз беҳтар шуд; аз ҷумла аз сифр бо тақтир камдодатар омӯзонида мешавад.

Трансформери камдодаталаби тасвир — DeiT

Танҳо ду моҳ баъди ViT муҳаққиқони Facebook DeiT-ро пешниҳод карданд. Дар ImageNet бе тасвирҳои иловагӣ рақобатпазир буд. Меъморӣ қариб ҳамон ViT аст (расми 16.4), вале дониш аз омӯзгор ба шогирд тақтир мешавад (боби 15).

Омӯзгор CNN-и пешқадами яхкардашуда аст. Ҳангоми омӯзиш ба ViT-и шогирд токени махсуси тақтир илова мешавад. Он мисли CLS embedding-и омӯзишпазир ва сари ҷудои таснифот дорад. Ҳар ду сар ҳамзамон бо кросс-энтропия омӯзонда мешаванд: CLS аз ҳадафҳои сахти one-hot, сари тақтир аз тақсимоти нарми омӯзгор. Талафот ҷамъи вазндор, одатан бо вазнҳои баробар, аст. Матни аслӣ мегӯяд, ки дар пешгӯӣ токени тақтир ва сараш гирифта мешаванд. Барои ҳамон ҳайвонот бо model_id="facebook/deit-base-distilled-patch16-224" ва DeiTForImageClassification баъди 3 давр тақрибан 94,4% дурустии тасдиқӣ меорад.

Эзоҳи тарҷумон. Дар вариантҳои тақтиршудаи DeiT баромади ҳар ду сарро дар пешгӯӣ низ истифода ва миёнагирӣ кардан мумкин аст; ҳазфи сари тақтир қоидаи ҳатмии тамоми DeiT нест. Интихоб аз синф ва checkpoint вобаста аст.

DeiT = ViT + тақтири дониш

Расми 16.4. DeiT = ViT + тақтири дониш.

То ин ҷо таснифот буд. Барои пешгӯии зич, монанди ошкорсозӣ ва сегментатсия, ҷузъиёти фазоӣ муҳим аст ва меъмориро тағйир додан лозим меояд.

PVT барои пешгӯиҳои зич

Соли 2021 барои ViT пурмаҳсул буд: қариб ҳар ду ҳафта натиҷаи нав. Феврал Pyramid Vision Transformer (PVT) аз Донишгоҳи Нанҷинг, HKU, IIAI ва SenseTime Research марҳилаи муҳим шуд. ViT барои тасниф хуб, барои харитаи дақиқи фазоӣ камтар муносиб буд. PVT мисли CNN тасвирро тадриҷан хурдтар, вале амиқтару маъноан ғанитар мекунад. Дар расми 16.5:

256 × 192 × 3 → 64 × 48 × 64 → 32 × 24 × 128 → 16 × 12 × 320 → 8 × 6 × 512

PVT барои вазифаҳои пешгӯии зич

Расми 16.5. PVT барои вазифаҳои пешгӯии зич.

Дар ҳар сатҳи пирамида монанди ViT тасвир ба порча, баъд токен, бо мавқеи омӯзишпазир ва чанд қабати энкодер коркард мешавад. Баромади пайдарпайи векторҳо боз ба шабакаи дученака баргардонда мешавад, то ҳамчун тасвири серканал ба сатҳи баъдӣ равад.

Масалан, дар сатҳи аввал тасвир ба шабакаи 64 × 48-и порчаҳои 4 × 4 бурида мешавад: 3072 токен, ҳар кадом 64-ченака. Энкодер ҳам 3072 вектори 64-ченака медиҳад; reshape онро 64 × 48 × 64 мекунад. Дар сатҳҳои 2–4 токенҳо мутаносибан 128, 320 ва 512-ченакаанд.

Порчаҳо аз ViT хеле хурданд: сатҳи аввал 4 × 4, баъдӣ 2 × 2, ба ҷойи 16 × 16. Ин барои ҷузъиёти фазоӣ хуб, вале шумораи токенҳо ва хароҷоти квадратии MHA-ро зиёд мекунад. Барои ҳамин диққати коҳиши фазоӣ (spatial reduction attention, SRA) пешниҳод шуд: key ва value фазоӣ хурд мешаванд, query не. Одатан конволютсияи қадами калон ва layer norm, баъзан average pooling, истифода мешавад.

Дар сатҳи аввал MHA-и одӣ 3072², зиёда аз 9 миллион хол мехост. Дар SRA query 3072 мемонад, key/value дар ҳар самт 8 баробар кам мешаванд: аз 64 × 48 ба 8 × 6, яъне 48 токен. Акнун 3072 × 48 = 147 456 хол — 64 баробар камтар. Дар сатҳҳои баъдӣ омилҳои коҳиш 4, 2 ва 1 ҳастанд. Чун query хурд нашуд, баромад ҳамон 3072 токен ё 64 × 48 мебошад.

Чор харитаи бисёрмиқёсаи ҳосилшударо чӣ кор мекунем? Системаҳои мавҷуда аллакай backbone-и CNN-и бисёрмиқёса доранд, пас онро бо PVT-и одатан дар ImageNet пешомӯхташуда иваз мекунем. Барои сегментатсия FCN-и боби 12 харитаҳоро калон ва муттаҳид карда, барои ҳар пиксел синф медиҳад. Mask R-CNN ҳам метавонад backbone-и PVT гирифта, ошкорсозӣ ва сегментатсияи объектҳои ҷудогона иҷро кунад.

Иерархия марҳилаи бузург буд, вале PVT ҳатто бо SRA гарон мемонад. Swin, ки як моҳ баъд омад, беҳтар миқёс мегирад.

Swin: ViT-и тезу чандир

Марти 2021 муҳаққиқони Microsoft Swin Transformer-ро пешниҳод карданд. Мисли PVT иерархӣ ва бисёрмиқёса аст, вале ҳар порча танҳо порчаҳои ҳамон равзана-ро мебинад. Window-based multi-head self-attention (W-MSA) хароҷотро ба масоҳати тасвир хаттӣ, на квадратӣ, мекунад.

Дар чапи расми 16.6 тасвир шабакаи 28 × 28-и порчаҳо дорад. Дар сатҳи аввал порча одатан 4 × 4 пиксел ва равзана 7 × 7 порча аст. 784 токен дорем, вале ҳар яке 49 токен мебинад: 784 × 49 = 38 416 хол, ба ҷойи 784² = 614 656.

Агар баландию паҳно дучанд шаванд, токенҳо чор баробар, вале ҳар токен ҳанӯз 49 ҳамсоя мебинад: ҳисоб танҳо чор баробар мешавад. ViT, DeiT ва PVT бо масоҳат квадратӣ меафзоянд: ҳамон тағйири андоза 16 баробар ҳисоб мехоҳад! Барои аксҳои хеле калон маҷбур ба хурдкунӣ мешаванд, ки махсусан ба пешгӯии зич зарар мерасонад.

Swin W-MSA

Расми 16.6. Swin W-MSA (чап) ва SW-MSA (миёна)-ро иваз мекунад; варианти беҳинаи SW-MSA шумораи равзанаҳоро мисли W-MSA нигоҳ медорад (рост).

Аммо агар токен танҳо равзанаи худро бинад, робитаи дур чӣ мешавад? Swin аз shifted windows, яъне равзанаҳои кӯчонидашуда, аст. Ҳар қабати дуюм SW-MSA дорад: равзанаҳо нимандоза, дар ин ҷо 3 порча ба поёну рост, кӯчидаанд, зеро 7/2=3,5 ба поён 3 мешавад. Порчаҳои ҳамсояи пештар ҷудо акнун дар як равзанаанд. Бо ивазшавии W-MSA/SW-MSA иттилоот тадриҷан ба тамоми тасвир мегузарад. Дар сатҳҳои боло порчаҳо дағалтар ва интиқоли дур тезтар мешавад.

Татбиқи содаи кӯчиш равзанаи зиёдатӣ мехоҳад: дар расм 16 ба 25 мерасад. Барои беҳинасозӣ ба ҷойи равзана худи тасвирро даврӣ мекӯчонанд, то қисмҳои аз канор беруномада аз тарафи муқобил дароянд. Боз 16 равзана мемонад. Аммо қисмҳои канории печондашуда, монанди минтақаҳои ①②③④, набояд якдигарро бинанд; ниқоби дуруст лозим аст.

Swin аз PVT душвортар татбиқ мешавад, вале миқёсгирии хаттӣ ва натиҷаи хуб онро қавӣ мекунад. Ноябри 2021 Swin v2 баромад: омӯзиши устувори моделҳои калон, fine-tuning-и осонтар дар аксҳои калон, ниёзи камтар ба барчасп ва ғайра. Манбаъ онро ҳанӯз васеъ истифодашаванда мегӯяд.

Акнун ViT/DeiT барои тасниф ва PVT/Swin барои пешгӯии зич дорем. Як модели биноии дигар — DINO — худназоратиро пеш мебарад.

DINO: омӯзиши худназоратии намояндагии биноӣ

Апрели 2021 Матилд Карон ва ҳамкоронаш DINO-ро пешниҳод карданд. Он бе барчасп намояндагиҳои хеле хуби тасвир меомӯзад, ки баъд барои тасниф ва вазифаҳои дигар истифода мешаванд.

Ҳангоми омӯзиш модел ду нусха дорад: омӯзгор ва шогирд (расми 16.7). Градиент танҳо шогирдро тағйир медиҳад. Вазнҳои омӯзгор миёнаи экспоненсиалии лағжандаи (EMA) вазнҳои шогирданд — омӯзгори импулсӣ (momentum teacher). Шогирд пешгӯии омӯзгорро тақлид мекунад; чун қариб ҳамон моделанд, ин худтақтиркунӣ, ва DINO — self-Distillation with NO labels, аст.

Дар ҳар қадам тасвир бо тағйири ранг, хокистарӣ, хиракунии Гауссӣ, чаппакунии уфуқӣ ва ғайра афзоиш дода мешавад. Муҳим: вариантҳои омӯзгору шогирд гуногунанд. Одатан омӯзгор намуди пурратару камтағйир ва шогирд аксар вақт қисми калонкардашуда бо тағйири қавитар мебинад. Бо вуҷуди ин, пешгӯӣ бояд мувофиқ бошад: маҷбур ба омӯхтани маънои сатҳи баланд мешаванд.

Аммо фурӯпошии режим (mode collapse) хатар дорад: ҳар ду ҳамеша як чиз бароварда, тасвирро тамоман нодида гиранд. Барои пешгирӣ DINO миёнаи лағжандаи логитҳои омӯзгорро нигоҳ дошта, аз логитҳо тарҳ мекунад — марказонидан (centering). Он омӯзгорро водор мекунад, ки ба ҳисоби миёна дар тӯли вақт пешгӯиҳоро байни ҳамаи синфҳои баромад тақсим кунад.

Аммо танҳо марказонидан метавонад омӯзгорро ба эҳтимолияти якхелаи ҳамаи синфҳо барад ва тасвир боз нодида монад. Пас тезкунӣ (sharpening) ҳам ҳаст: омӯзгор бояд ба пешгӯиҳои беҳтаринаш боварии баланд дошта бошад. Логитҳояш ба ҳарорати аз 1 хурд тақсим мешаванд. Марказонидан ва тезкунӣ якҷо гуногунии баромадро нигоҳ дошта, роҳи осони бемаъниро мебанданд: пешгӯӣ бояд ба муҳтавои воқеии тасвир такя кунад.

DINO — худтақтиркунӣ бе барчасп

Расми 16.7. DINO — худтақтиркунӣ бе барчасп.

Баъди омӯзиш яке аз ду шабака модели ниҳоӣ мешавад; дар DINO одатан омӯзгорро нигоҳ медоранд, ки дар охири омӯзиш аз шогирд каме беҳтар кор мекунад. Модел аз тасвири нав пайдарпайии embedding-ҳои заминавии порчаҳо медиҳад. Метавон болои CLS сари таснифот омӯзонд. Ҳатто сари нав шарт нест: ҳамаи аксҳои омӯзиширо рамзгузорӣ карда, миёнаи намояндагии ҳар синф-ро гиред. Барои акси нав CLS-ро ҳисоб ва синфи миёнааш наздиктаринро ёбед. Ин усули сода дар ImageNet 78,3% top-1 мегирад.

Ҷолибтар он аст, ки харитаҳои диққати CLS дар қабати охир аксар вақт объекти асосиро, бе ягон барчасп, ҷудо мекунанд. Ҳар сар гӯё қисми дигари объектро мебинад (расми 16.8). Дар дафтари боб намунаи коди чунин харита ҳаст.

Сегментатсияи беназорат бо DINO

Расми 16.8. Сегментатсияи беназорат бо DINO: сарҳои гуногун ба қисмҳои гуногуни объекти асосӣ менигаранд.

TokenCut ва усулҳои дигар аз ин барои ошкорсозию сегментатсияи тасвир ва видео истифода бурданд. Апрели 2023 Meta DINOv2-ро баровард: додаҳои интихобшудаи хеле калонтар ва хусусиятҳои ҳар порча онро на танҳо барои тасниф, балки пешгӯии зич ҳам модели бунёдии хуб карданд.

То ин ҷо DETR-и такякунанда ба CNN, ViT-и порча+энкодер, DeiT-и тақтиршуда, PVT-и иерархии SRA, Swin-и равзанавӣ ва DINO-и худназоратиро дидем. Пеш аз бисёрмодалӣ чанд модели дигарро кӯтоҳ мебинем.

Дигар моделҳо ва усулҳои муҳими биноӣ

Пешрафт идома дорад. Чанд мақолаи марҳилавӣ:

«Scaling Vision Transformers» — июни 2021

Муҳаққиқони Google миқёсдиҳии ViT-ро вобаста ба додаҳо нишон доданд. Модели 2-миллиардпараметрӣ дар ImageNet аз 90,4% top-1 гузашт. Ҳамин модел бо танҳо 10 000 тасвир — 10-то барои ҳар синф — аз 84,8% гузашт.

«BEiT: BERT Pre-Training of Image Transformers» — июни 2021

Ҳангбо Бао ва ҳамкоронаш моделсозии тасвири ниқобшуда (MIM)-ро аз MLM-и BERT илҳом гирифтанд. Аз порчаҳои намоён порчаҳои пинҳон барқарор мешаванд ва вазифаҳои минбаъда беҳтар мегарданд.

BEiT пиксели хомро не, ID-и токени ниқобшударо пешгӯӣ мекунад. Автоэнкодери вариатсионии дискретӣ (dVAE)-и боби 18 аз ҳар порча ID-и бутуни луғати собит месозад. Ҳамин ҳадаф аст, то қудрати модел барои ҷузъиёти нолозим сарф нашавад.

«Masked Autoencoders Are Scalable Vision Learners» — ноябри 2021

Гурӯҳи Facebook бо роҳбарии Каймин Ҳэ MIM-ро бе мураккабии dVAE-и BEiT пешниҳод кард. Masked Autoencoder (MAE) мустақим пикселҳоро пешгӯӣ мекунад. Меъморӣ номутақорини энкодер–декодер аст: энкодери калон танҳо порчаҳои намоёнро мебинад, декодери сабук тамоми тасвирро барқарор мекунад. 75%-и порчаҳо ниқобанд, пас ҳисоб хеле кам ва пешомӯзиш дар додаҳои азим имконпазир мешавад. Вазифаҳои баъдӣ натиҷаи қавӣ мегиранд.

«Model Soups» — марти 2022

Чанд трансформерро омӯзонда, баъд вазнҳояшонро миёнагирӣ карда, модели беҳтар сохтан мумкин аст. Ба ансамбли боби 6 монанд, вале дар охир танҳо як модел мемонад, пас хароҷоти иловагии пешгӯии ансамбл нест.

«EVA: Exploring the Limits of Masked Visual Representation Learning at Scale» — майи 2022

Оилаи ViT-ҳои калони пешомӯхташуда бо MAE-и такмилёфта ва афзоишдиҳии қавӣ аст. Он аз моделҳои бунёдии пешсафи биноӣ ба шумор меравад. EVA-02, марти 2023, бо параметри камтар баробар ё беҳтар аст. Варианти large 304 миллион параметр ва 90,0% дар ImageNet дорад.

I-JEPA — январи 2023

Янн Лекун соли 2022 joint-embedding predictive architecture (JEPA)-ро ҳамчун қисми чорчӯбаи модели ҷаҳон пешниҳод кард. Ҳадаф фаҳмиши амиқтари ҷаҳон ва пешгӯии боэътимодтар аст. I-JEPA барои тасвир ва баъдаш V-JEPA (2024) ва V-JEPA 2 (2025) барои видео омаданд.

Омӯзиш ду энкодер ва як пешгӯикунанда дорад. Омӯзгор вуруди пурра, масалан гурбаро, ва шогирд қисми онро, масалан бе гӯшҳоро, мебинад. Ҳар ду embedding месозанд. Пешгӯикунанда аз намояндагии қисмҳои намоён embedding-и омӯзгор барои қисми гумшуда, яъне гӯшҳоро, тахмин мекунад. Шогирду пешгӯикунанда якҷо омӯзонда мешаванд; омӯзгор миёнаи лағжандаи шогирд аст, мисли DINO. Кор асосан дар фазои embedding, на пиксел, аст: тезтар, кампараметртар ва маъноитар. Баъди омӯзиш манбаъ энкодери шогирдро барои намояндагии муфиди вазифаҳои дигар нигоҳ медорад.

Рӯйхат идома дорад:

ВазифаМоделҳо
Таснифи тасвирNesT, DeiT-III
Моделҳои хурду самаранок, аз ҷумла мобилӣMobileViT, EfficientFormer, EfficientViT, TinyViT
Backbone-и иерархӣ барои пешгӯии зичTwins-SVT, FocalNet, MaxViT, InternImage
Сегментатсияи умумӣMask2Former, OneFormer
Сегментатсияи фарогирSEEM
Сегментатсияи интерактивӣSAM, MobileSAM
Ошкорсозии объектViTDet, RT-DETR
Фаҳмиши видеоTimeSformer, VideoMAE, OmniMAE

Усулҳои дигар: якҷокунии токенҳо (ToMe) токенҳои монандро ҳангоми кор мепайвандад; буридани токенҳо (token pruning) номуҳимҳоро, масалан холашон пастро, дур мекунад; баромади барвақт (early exiting) ҳисобҳои амиқро маҳдуд мекунад; интихоби порча танҳо иттилоотноктаринҳоро мегирад. Худназоратӣ бо SimMIM, iBOT, CAE, DINOv2 ва ғайра ҳам рушд мекунад.

Умедворам, ин гуногунӣ барои таҳқиқи мустақили шумо кофӣ аст.

Эзоҳи тарҷумон. Манбаъ баъзе моделҳои рӯйхат, аз ҷумла OmniMAE, SEEM, SAM, MobileSAM ва DINOv2-ро бо додаҳо ё сигналҳои бисёрмодалӣ мепайвандад. Усули дақиқи пешомӯзиши ҳар модел бояд аз тавсифи худи он хонда шавад; ҳамаи онҳо бо як навъи ҷуфти тасвир–матн омӯзонда нашудаанд.

Трансформер аллакай мехонд, менавишт ва суҳбат мекард; акнун мебинад. Вақти якҷо кардани матн, тасвир ва дигар модалиятҳо расид.

Трансформерҳои бисёрмодалӣ

Инсон ҷаҳонро бо биноӣ, шунавоӣ, бӯй, мазза, ламс, тавозун, эҳсоси мавқеи бадан (proprioception) ва ҳисҳои дигар дарк мекунад ва бо ҳаракат, нутқ, навиштан ва ғайра таъсир мерасонад. Ҳар модалият сатҳи поён, масалан мавҷи садо, ё сатҳи боло, монанди калима, оҳанг ва наво дорад. Модалиятҳо гуногунсохтор мебошанд: пайваста ё дискретӣ, вақтӣ ё фазоӣ, баландтафсил, масалан аудиои 48 kHz, ё камтафсил, монанди матн, пурғавғо ё тоза.

Онҳо бо роҳҳои гуногун ҳамкорӣ мекунанд. Дар суҳбат шунидани овоз ва дидани лабҳо иттилооти ҳампӯш медиҳанд ва шинохти калимаро беҳтар мекунанд. Вале масъала танҳо тоза кардани сигнал нест: табассум ё дарҳамкашии абрӯ маънои мустақил дорад. «Ӯ коршинос аст»-ро бо чашм гардондан ё нохунаки ҳавоӣ гӯед, киноя мешавад ва маъно бармегардад; ҳаҷв ё таҳқире ҳосил мешавад, ки ҳеҷ модалият танҳо надошт.

Омӯзиши мошинии бисёрмодалӣ бояд ин додаҳои нобаробар ва робитаҳояшонро идора кунад. Ду мушкили асосӣ:

  • Муттаҳидсозӣ (fusion): чӣ гуна модалиятҳо якҷо шаванд, масалан дар фазои муштараки намояндагӣ.
  • Мувофиқсозӣ (alignment): чӣ гуна робита ёфта шавад. Масалан сабти нутқ ва матнашро дошта, вақти ҳар калимаро ёбед; ё аз дархости «саги назди дарахт» объекти мувофиқи тасвирро ёбед — visual grounding.

Тавсифи тасвир, ҷустуҷӯи акс, посух ба саволи биноӣ (VQA), нутқ→матн (STT), матн→нутқ (TTS) ва AI-и ҷисмдор, яъне мутақобилаи ҷисмонӣ бо муҳит, аз вазифаҳои маъмули чандмодалӣ мебошанд.

Соҳа даҳсолаҳо вуҷуд дошт, аммо омӯзиши амиқ ва хусусан Transformer суръат доданд. Қариб ҳар дода ба пайдарпайии токени маънодор табдил меёбад: калима, порчаи тасвир ё клипи кӯтоҳи аудиову видео. Embedding омода бошад, трансформер коркард мекунад. Embedding-ҳои модалиятҳо метавонанд ҷамъ ё часпонида шаванд ва ё аз энкодери муттаҳидсозӣ гузаранд — ҳалли fusion. MHA робитаҳои мураккабро ҳам дар дохил ва ҳам байни модалиятҳо меёбад — ҳалли alignment.

Муҳаққиқон зуд ин имкониятро диданд. Чанд моҳ баъди Transformer, дар аввали 2018 моделҳои тавсифи тасвиру видео пайдо шуданд. Аз VideoBERT оғоз мекунем.

VideoBERT: BERT барои матн ва видео

Апрели 2019 Google VideoBERT-ро пешниҳод кард. Он BERT-large-и пешомӯхташуда аст, ки дар он матритсаи embedding барои токенҳои видео васеъ карда шуда, пешомӯзиши худназоратӣ дар матн+видео идома дода шудааст. Додаҳо видеоҳои таълимии YouTube, махсусан ошпазӣ, буданд: одам амалро ҳам нишон ва ҳам шарҳ медиҳад, масалан «Помидорро ҳамин тавр тунук буред». Барои вуруд ду пайдарпайӣ лозим шуд (расми 16.9):

  • Биноӣ: клипҳои бефосилаю бе ҳампӯшии 1,5-сониягӣ бо 20 кадр/с, яъне 30 кадр, гирифта шуданд. Онҳо аз CNN-и 3D-и S3D, дар асоси inception ва конволютсияҳои ҷудошавандаи боби 12, мегузаштанд. S3D дар Kinetics, видеоҳои YouTube-и амалҳои гуногуни инсон, пешомӯхта буд. Pooling-и миёнаи 3D аз ҳар клип вектори 1024-ченакаи баландсатҳ месохт.
  • Матн: нармафзори дохилии нутқ→матни YouTube нутқро мебаровард ва треки аудио баъд партофта мешуд. LSTM-и тайёр аломатҳои китобатро илова менамуд ва матнро ба ҷумлаҳо ҷудо мекард. Пешкоркарду токенсозӣ мисли BERT буд.

VideoBERT

Расми 16.9. VideoBERT: табдили видео ба пайдарпайии матнӣ ва биноӣ.

Ҳоло матн ID-и луғати собит дорад, вале векторҳои видео не. Барои MLM бояд видеоро ҳам дискретӣ кунем. Ҳамаи векторҳои S3D-ро бо k-means-и иерархӣ гурӯҳ мекунем: аввал k=12, баъд ҳар гурӯҳ боз 12, яъне 12²=144, ва то 12⁴=20 736 гурӯҳ. Ин аз k-means-и якбораи 20 736 тезтар ва одатан гурӯҳҳои беҳтар медиҳад. Ҳар вектор ба ID-и гурӯҳ иваз мешавад. Акнун видео ҳам пайдарпайии ID, масалан 194, 3912 ва ғайра аст. Фазои пайвастаи 1024-ченака ба танҳо 20 736 қимати дискретӣ кам шуд. Иттилооти зиёд гум мешавад, вале натиҷаҳо нишон медиҳанд, ки муҳимаш нигоҳ дошта шудааст.

Эзоҳ. Embedding-и матн аз BERT-large аллакай хуб буд. Барои токенҳои видео ба ҷойи embedding-и тасодуфии омӯзишпазир, векторҳои 1024-ченакаи марказҳои гурӯҳҳо ҳамчун embedding-и яхкардашуда гирифта шуданд.

Се режими омӯзиш:

  • танҳо матн: пешгӯии токенҳои матнии ниқобшуда;
  • танҳо видео: пешгӯии токенҳои видеоии ниқобшуда;
  • матн+видео: пайдарпайиҳоро бо токени ҷудокунанда часпонда, муайян кардан, ки аз як қисми видеоанд ё не — мувофиқсозии забонӣ–биноӣ.

Барои охирин сари дуии CLS ба ҷойи NSP меояд. Намунаи манфӣ ҷумла ва видеои тасодуфии номувофиқ аст. Расми 16.10 ҳамаи режимҳоро якҷо нишон медиҳад, вале воқеан алоҳидаанд.

Пешомӯзиши VideoBERT бо токени ниқобшуда ва мувофиқсозии забонӣ–биноӣ; дар расм якҷо, дар омӯзиш алоҳида

Расми 16.10. Пешомӯзиши VideoBERT бо токени ниқобшуда ва мувофиқсозии забонӣ–биноӣ; дар расм якҷо, дар омӯзиш алоҳида.

Мувофиқсозӣ ғавғо дорад: ошпаз шояд кори анҷомёфта ё ояндаро шарҳ диҳад. Ҷумлаҳои ҳамсояро тасодуфан мепайванданд, то замина зиёд шавад. Суръати намунагирии видеоро ҳам тағйир медиҳанд, то ба ошпазҳои тезу суст устувор гардад. Тафсилот дар мақола аст.

Модели тайёрро дар вазифаҳои минбаъда санҷиданд:

Таснифи амал бе намуна ва бе fine-tuning. Видеоро бо Now let me show you how to [MASK] the [MASK] медиҳанд — «Акнун нишон медиҳам, ки чӣ гуна …-ро … кунем». Эҳтимолияти ҳар ҷуфти феълу исм ҳисоб мешавад. Барои буридани помидор slice/tomatoes аз bake/cake ё boil/egg баландтар аст.

Тавсифи видео. Аввалин меъмории трансформерии captioning гирифта шуда, вуруди энкодер бо хусусиятҳои VideoBERT иваз шуд. Аз намояндагиҳои ниҳоии токенҳои видео ва матни ниқобшуда миёна гирифтанд. Қолаб: now let’s [MASK] the [MASK] to the [MASK], and then [MASK] the [MASK]. Fine-tuning натиҷаро нисбат ба модели аслӣ беҳтар кард.

Барои VQA-и чандинтихобӣ, масалан «Ошпаз чӣ мекунад?» → «Помидор мебурад», ҳар ҷавобро бо видео иҷро карда, холи мувофиқсозиро муқоиса кардан мумкин аст; дуруст бояд баландтарин бошад.

Муваффақият ба ViLBERT, VisualBERT, Unicoder-VL, LXMERT, VL-BERT ва UNITER-и август–сентябри 2019 илҳом дод. Аксарият якҷараёна ҳастанд: модалиятҳо барвақт, одатан бо часпондан, муттаҳид мешаванд. ViLBERT ва LXMERT дуҷараёнаанд: ҳар модалият энкодери худ дорад ва баъд таъсири ҳамдигарӣ меояд. Аввал ҳар навъро хуб фаҳмида, баъд робита меомӯзад. ViLBERT махсусан таъсиргузор буд.

ViLBERT: трансформери дуҷараёнаи матн ва тасвир

Августи 2019 Georgia Tech, Facebook AI Research ва Oregon State University ViLBERT-ро пешниҳод карданд. Модели якҷараёна ду модалиятро яксон мегирад, гарчанде сатҳи коркарди лозим гуногун аст: CNN-и амиқ аллакай хусусияти биноии баландсатҳ медиҳад, вале матн ҳанӯз коркарди зиёд мехоҳад. Муаллифон ҳамчунин фарз карданд, ки «робитаи минтақаҳои тасвир метавонад аз робитаи калимаҳои ҷумла заифтар бошад». BERT аввал танҳо матн дидааст ва маҷбур карданаш ба модалияти дигар метавонад натиҷаи номуносиб ё вазнҳои вайрон диҳад.

Пас ҳар модалият энкодери алоҳида дорад ва дар қабатҳои боло бо co-attention, яъне cross-attention-и дусамта, маълумот мубодила мекунад (расми 16.11). Дар ҳар ҷуфти қабат, намояндагии query-и як ҷараён ба key/value-и ҷараёни дигар такя мекунад.

Ду қабати энкодер бо co-attention пайвастанд

Расми 16.11. Ду қабати энкодер бо co-attention пайвастанд: як ҷараён аз намояндагии ҷараёни дигар ҳамчун key/value истифода мекунад.

Қисми поёнии матн бо вазнҳои BERT-base-и 12-қабата ибтидосозӣ шуда, болояш 6 co-attention аст (расми 16.12). Тасвирро Faster R-CNN-и пешомӯхтаву яхкардашуда ба хусусиятҳои баландсатҳ мебарад. Аз ин рӯ, энкодери биноӣ танҳо 6 co-attention-и ҷуфтшуда дорад. Барои ҳар минтақаи ошкоршуда pooling-и миёна як вектор медиҳад; минтақаҳои камэътимод хориҷ мешаванд ва ҳар тасвир 10–36 вектор дорад.

Пешомӯзиши ViLBERT бо токени ниқобшуда ва мувофиқсозии забонӣ–биноӣ; боз дар расм якҷо, воқеан алоҳида

Расми 16.12. Пешомӯзиши ViLBERT бо токени ниқобшуда ва мувофиқсозии забонӣ–биноӣ; боз дар расм якҷо, воқеан алоҳида.

Минтақаҳои тасвир мисли калима тартиби табиӣ надоранд, пас ба ҷойи мавқеи пайдарпай рамзгузории фазоӣ меояд: координатаҳои нормализатсияшудаи болоии чап ва поёнии рост, ҳамроҳи ҳиссаи масоҳати фарогирифташуда, вектори 5D месозанд. Linear онро ба андозаи хусусияти биноӣ мебарад ва ба он илова мекунад.

Токени [IMG] дар аввали ҷараёни биноӣ монанди CLS тамоми тасвирро ифода мекунад. Аммо он embedding-и озоди омӯзишпазир нест: миёнаи хусусиятҳои минтақаҳо пеш аз фазо, бо иловаи рамзгузории чорчӯбаи тамоми тасвир, мебошад.

Омӯзиш мисли VideoBERT ду ҳадаф дорад:

  • Токени ниқобшуда: барои матн MLM-и BERT. Барои тасвир луғати собити дискретӣ ва clustering нест, пас тақсимоти синфҳои пешгӯикардаи CNN барои минтақа ҳамчун ҳадафи нарм пешгӯӣ мешавад. Минтақа калон аст ва барои пикселҳои аслӣ замина кофӣ нест, бинобар ин ҳадафи баландсатҳ беҳтар аст.
  • Мувофиқсозӣ: баромадҳои IMG ва CLS элементӣ зарб, баъд ба сари дуӣ дода мешаванд. Зарб хусусиятҳои дар ҳар ду қавиро тақвият медиҳад — монанди AND — ва барои робита аз ҷамъ беҳтар аст.

Модел дар grounding, ҷустуҷӯи тасвир аз тавсиф ҳатто бе намуна, VQA ва мантиқи рӯзмарраи биноӣ (VCR) пеш гузашт. Дар VCR аввал ҷавоб, баъд далел интихоб мешавад. Масалан, дар акси пешхизмат бо кулчақанд савол аст: «Чаро шахси 4 ба шахси 1 ишора мекунад?» Ҷавоб: «Ба шахси 3 мегӯяд, ки кулчақандро шахси 1 фармудааст». Далел: «Шахси 3 хӯрок тақсим мекунад ва шояд надонад фармоиш аз кист».

Ду ҷараён, co-attention ва натиҷаҳои қавӣ таъсири калон доштанд ва боз қудрати пешомӯзиши худназоратиро нишон доданд. Марҳилаи навбатии соли 2021 CLIP буд.

CLIP: ду энкодери матн–тасвир бо пешомӯзиши муқоисавӣ

OpenAI январи 2021 Contrastive Language–Image Pretraining (CLIP)-ро баровард. Пешрафт ҳам қобилият ва ҳам содагии усул буд: матну тасвири мувофиқ ба векторҳои наздик, номувофиқ ба векторҳои дур табдил меёбанд.

Баъди омӯзиш барои бисёр вазифаҳо, махсусан таснифи тасвир бе намуна, истифода мешавад. Масалан, барои гурӯҳҳои cricket, ladybug ва spider аввал номҳоро embedding мекунем; акси нав ҳам embedding шуда, номи наздиктарин бо косинус гирифта мешавад. Азбаски додаи омӯзишӣ тавсифи веб буд, қолаби «This is a photo of a ladybug» одатан аз танҳо ladybug беҳтар аст. Таҷриба бо қолаби промпт ёрӣ медиҳад.

CLIP кушодаасос ва моделҳои тайёраш дар Hub ҳастанд. Pipeline:

from transformers import pipeline

model_id = "openai/clip-vit-base-patch32"
clip_pipeline = pipeline(task="zero-shot-image-classification", model=model_id,
                         device_map="auto", dtype="auto")
candidate_labels = ["cricket", "ladybug", "spider"]
image_url = "https://homl.info/ladybug"  # момохолак дар гули қоқу
results = clip_pipeline(image_url, candidate_labels=candidate_labels,
                        hypothesis_template="This is a photo of a {}.")

Қолаби додашуда, ки худи pipeline ҳам пешфарз монандашро дорад, номи синфро ба ҷумла табдил медиҳад. Натиҷа аз рӯйи хол:

[{'score': 0.9972853660583496, 'label': 'ladybug'},
 {'score': 0.0016511697322130203, 'label': 'spider'},
 {'score': 0.0010634352220222354, 'label': 'cricket'}]

Момохолак бо зиёда аз 99,7% интихоб шуд. Барои таснифи гул танҳо номҳои гулҳоро диҳед. Агар dandelion — қоқу — дар рӯйхат бошад, метавонад ба гул диққат дода, ҳамонро бо холи баланд интихоб кунад.

Меъморӣ энкодери одии матн ва энкодери одии биноӣ дорад; co-attention нест (расми 16.13). Ҳар энкодере, ки як вектори пурра медиҳад, мувофиқ аст. Муаллифон ResNet, ViT ва барои матн модели монанд ба GPT-2-ро аз сифр санҷиданд. GPT-2 аслан декодер аст, вале ин ҷо NTP намеомӯзад; баромади токени охир намояндагии тамоми вуруд мешавад. BERT ҳам мумкин буд. Муаллиф эҳтимол медиҳад, ки таҷрибаи OpenAI бо GPT ва инфрасохтораш сабаби интихоб буд; Алек Рэдфорд муаллифи асосии ҳар ду аст. Сабабӣ будан ҳам кеш кардани оғози такрорӣ (мисли This is a photo of a)-ро имкон медиҳад.

CLIP ҷуфтҳои тасвир–тавсифро embedding карда, мувофиқҳоро наздик ва номувофиқҳоро дур мекунад

Расми 16.13. CLIP ҷуфтҳои тасвир–тавсифро embedding карда, мувофиқҳоро наздик ва номувофиқҳоро дур мекунад.

Болои энкодери тасвир pooling як вектори тамоми акс месозад. Linear-и ҳар энкодер онҳоро ба фазои ҳамандоза мебарад. Аз m ҷуфт m вектори тасвир ва m вектори матн мегирем. Дар расм m=4, вале омӯзиш m=2¹⁵=32 768 буд!

Пешомӯзиш дар 400 миллион ҷуфти вебӣ бо талафоти муқоисавӣ чунин аст:

  1. Ҳама векторҳо ℓ₂-нормализатсия, яъне дарозиашон 1, мешаванд: самт муҳим аст, на андоза.
  2. Монандии косинусии ҳамаи ҷуфтҳои имконпазири матну тасвир ҳисоб мешавад: матритсаи m × m, аз −1 то +1. Сатр барои як тасвир ҳамаи тавсифҳо ва сутун барои як тавсиф ҳамаи тасвирҳоро муқоиса мекунад.
  3. Тасвири i ба тавсифи i мувофиқ аст, пас диагонал бояд ба +1 наздик ва дигарон паст, одатан ба 0 наздик, бошанд. Чаро на −1? Векторҳои баландченакаи бегона аксар вақт қариб ортогоналӣ мешаванд (боби 7), на муқобил. Пас «бевобаста» маънои 0 дорад.
  4. Ҳар сатрро таснифот ҳисоб мекунем: синфи дуруст i, холҳо логит. Барои ҳар сутун ҳам ҳамин. Миёнаи cross-entropy-и ҳамаи сатр ва сутун талафоти ниҳоӣ аст.
  5. Косинус −1…+1 буда, миқёси хуби логит нест, пас ба ҳарорати омӯзишпазири скалярӣ тақсим мешавад.

Огоҳӣ. Барои муқоисаи мусбат бо манфиҳои кофӣ бастаи калон лозим аст; вагарна модел ба ҷузъиёти намунаҳои мусбат аз ҳад мутобиқ мешавад. Бастаи азим қисми муҳими муваффақияти CLIP буд.

Дар тақрибан 60%-и маҷмӯаҳои арзёбӣ CLIP бе омӯзиши иловагӣ аз linear probe-и ResNet-50 беҳтар шуд: ин таснифгари хаттӣ болои хусусиятҳои ResNet-и пешомӯхтаву яхкардашуда аст. Дар ImageNet ҳам пеш гузашт, гарчанде ResNet он ҷо омӯзонда шуда буд. CLIP махсусан дар синфҳои камнамунаи саҳнаҳои рӯзмарраи вебӣ қавӣ аст. Дар Stanford Cars ҳатто аз ViT-ҳои махсуси он пеш гузашт, зеро акси мошин дар веб зиёд, намунаҳои ҳар синф каманд. Дар додаҳои махсус, монанди моҳвора ё тиб, заифтар мебошад.

Хусусиятҳои биноияш ба тағйирот устуворанд ва барои ҷустуҷӯи тасвир хубанд. Аксҳоро бо embedding дар пойгоҳи векторӣ нигоҳ доред. Матн ё акси дархостро CLIP embedding карда, наздиктаринҳоро ҷустуҷӯ мекунед.

Барои гирифтани хусусиятҳо моделро бевосита, бе pipeline, иҷро мекунем:

import PIL
import urllib.request
from transformers import CLIPProcessor, CLIPModel

clip_processor = CLIPProcessor.from_pretrained(model_id)
clip_model = CLIPModel.from_pretrained(model_id)
image = PIL.Image.open(urllib.request.urlopen(image_url)).convert("RGB")
captions = [f"This is a photo of a {label}." for label in candidate_labels]
inputs = clip_processor(text=captions, images=[image], return_tensors="pt",
                        padding=True)
with torch.no_grad():
    outputs = clip_model(**inputs)

text_features = outputs.text_embeds    # [3, 512], 3 тавсиф
image_features = outputs.image_embeds  # [1, 512], 1 акси момохолак

Маслиҳат. Барои ҷудогона рамзгузорӣ кардан get_image_features() ва get_text_features() ҳастанд. Аввал CLIPTokenizer ва CLIPImageProcessor истифода мешаванд. Хусусиятҳои ин методҳо пешфарз ℓ₂-нормализатсияшуда нестанд: ба features.norm(dim=1, keepdim=True) тақсим кунед. Намуна дар дафтар аст.

outputs.text_embeds/image_embeds аллакай нормализатсия шудаанд, пас як зарби матритса косинусро медиҳад:

>>> similarities = image_features @ text_features.T  # [1, 3]
>>> similarities
tensor([[0.2337, 0.3021, 0.2381]])

Зарб ҳосили зарби скалярии сатр ва сутунро мегирад. Он косинус зарби дарозиҳои векторҳост; дарозиҳо 1, пас танҳо косинус мемонад. Дуюм — ladybug — баландтарин аст. Барои эҳтимолият аввал миқёси омӯхташуда ва баъд softmax:

>>> temperature = clip_model.logit_scale.detach().exp()
>>> rescaled_similarities = similarities * temperature
>>> probabilities = torch.nn.functional.softmax(rescaled_similarities , dim=1)
>>> probabilities
tensor([[0.0011, 0.9973, 0.0017]])

Натиҷа бо pipeline яксон аст. Дар ин код temperature аслан зарбкунандаи баръакси ҳарорат-ро нигоҳ медорад, гарчанде чунин номгузорӣ шудааст.

Баъди CLIP OpenAI тавлиди тасвир аз матнро бо DALL·E нишон дод.

DALL·E: тавлиди тасвир аз промпти матнӣ

DALL·E, ки феврали 2021 муаррифӣ шуд, аз промпт, масалан «курсии роҳат ба шакли авокадо», тасвир месозад. Меъморӣ сода аст (чапи расми 16.14): GPT-и пешгӯии токени навбатӣ, аммо дар миллионҳо ҷуфти тасвир–тавсиф ва пайдарпайии матн, баъд токенҳои биноӣ омӯхта шудааст. Ҳангоми пешгӯӣ танҳо матн медиҳед ва модел токенҳои тасвирро якто-якто месозад. dVAE тасвирро ба пайдарпайии луғати собити биноӣ рамзгузорӣ мекунад. Модел оммавӣ нашуд, вале мақолаи муфассал ба татбиқҳои кушода, монанди DALL·E mini ё Craiyon, имкон дод.

Апрели 2022 DALL·E 2 сифати баландтар овард. Меъморӣ хеле дигар аст: матн CLIP embedding мешавад ва модели диффузионӣ, ки дар боби 18 мебинем, аз он ҳамчун роҳнамоии тавлид истифода мекунад. Ин тавсифи содашуда аст. Код кушода нест; модел тавассути API ва Microsoft Designer, Bing Image Creator, Canva, ChatGPT ва дигар маҳсулот дастрас аст.

DALL·E

Расми 16.14. DALL·E (чап) ва DALL·E 2 (рост).

DALL·E 3, октябри 2023, бо API ва маҳсулот дастрас шуд. Афсӯс, ки OpenAI торафт камтар кушода мешавад: на код, на вазнҳо, на додаҳо ва на мақолаи арзёбишуда нашр шуд. DALL·E 3 диффузионӣ буда, бе CLIP кор мекунад ва бо GPT-4 барои азнавнависии промпт ҳамгиро шудааст. Он нисбат ба пешина дастурҳои таркибиро беҳтар риоя мекунад: масалан «Гурбаи сафеди серпашм рӯйи болишти махмалии сурх, пушташ гулдони офтобпараст, дар рӯшноии соати тиллоӣ, рӯ ба бинанда». Версияҳои 1–2 аксар вақт танҳо як ё ду ҷузъро мегирифтанд; версияи 3 муносибатҳои бештарро нигоҳ медорад. Сифат, воқеиятмонандӣ, сабки ҳунарӣ ва мувофиқат беҳтар ва имкониятҳои назорати муҳтаво низ илова шудаанд.

Марҳилаи навбатии ин сафар Perceiver аст.

Perceiver: пайвастани модалиятҳои баландтафсил ба фазои ниҳонӣ

То ин ҷо ҳар трансформер вурудро ба токени маънодор ҷудо мекард: калима/зеркалима, порчаи 16 × 16, клипи 1,5-сонияи видео ё аудиои кӯтоҳ. Агар ҳарф, пиксел ё кадри аудиоро мустақим диҳем, пайдарпайӣ аз ҳад дароз ва диққат квадратӣ мешавад. Порчабандӣ ҳам inductive bias-и муфид медиҳад: пикселҳои наздик аз дур вобастатар шумурда мешаванд.

Аммо ин токенсозӣ ба модалият вобаста аст ва илова ё омехтаи навъҳои навро душвор мекунад. Фарзияҳои пешакӣ бо додаи кам хубанд, вале бо корпуси калон модели камфарзия метавонад беҳтар шавад: наздикии пикселҳоро худаш меомӯзад ва нақшҳои дигарро ҳам озодона мебинад.

Барои ҳамин DeepMind марти 2021 Perceiver-ро пешниҳод кард. Он додаҳоро дар поёнтарин сатҳ — ҳарф, пиксел, кадри аудио ва ғайра — бо тарҳи мустақил аз модалият коркард мекунад (расми 16.15).

Perceiver вурудҳоро бо cross-attention мехонад; пайдарпайии асосии коркард токенҳои ниҳонии омӯзишпазир аст

Расми 16.15. Perceiver вурудҳоро бо cross-attention мехонад; пайдарпайии асосии коркард токенҳои ниҳонии омӯзишпазир аст.

Сохторро пайдарпай мебинем:

  1. Вуруд ба хурдтарин ҷузъҳо ҷудо мешавад. Барои тасвир ҳар пиксел як вектори 3D-и сурх, сабз ва кабуд аст.
  2. Рамзгузории мавқеии Фурйе ба хусусиятҳо часпонида мешавад. Ба синусии Transformer монанд, вале ҳамаи андозаҳои вурудро рамзгузорӣ мекунад. Барои тасвир x ва y, ки ба −1…1 нормализатсия шудаанд, ва sin(πfx), sin(πfy), cos(πfx), cos(πfy) барои K басомад, одатан 6, гирифта мешаванд. f аз 1 то μ/2 бо фосилаи баробар меравад; μ тафсилнокии ҳадаф, масалан 224, аст. Андоза d(2K+1), ки d барои аудио 1, тасвир 2 ва видео 3 аст.
  3. Пиксел акнун 3 + 2 × (2 × 6 + 1) = 29 андоза дорад. Linear онро ба андозаи Perceiver, масалан 512, мебарад.
  4. Блокҳои коркард, масалан 8-то, ҳар кадом як cross-attention MHA ва баъд энкодери одии трансформер, масалан 6 қабат, доранд. Дар охир cross-attention ва average pooling пайдарпайиро ба як вектор ва сари таснифоти Linear+softmax мебаранд.
  5. Токенҳои пиксел танҳо тавассути cross-attention ба модел меоянд ва key/value мебошанд.
  6. Вуруди асосии коркард пайдарпайии кӯтоҳи токенҳои ниҳонӣ, масалан 512-то, аст. Пайдарпайии аввал дар омӯзиш омӯхта мешавад ва бо гирифтани иттилоот аз пикселҳо тадриҷан нав мегардад. Ба ҳолати пинҳонии RNN монанд аст. Кӯтоҳ будан мушкили квадратиро кам мекунад: ин ҳилаи тангкунандаи ниҳонӣ (latent bottleneck) аст.
  7. Муаллифон вазнҳои блокҳоро, ғайр аз cross-attention-и аввал, муштарак карда ҳам натиҷаи хуб гирифтанд. Он гоҳ модел амалан бозгаштӣ ва токенҳои ниҳонӣ ҳолати пинҳонии он мешаванд.

Эзоҳ. Фарзияи гуногуншаклии камченака (manifold hypothesis)-и боби 7 мегӯяд, ки додаҳои воқеӣ дар наздикии сохтори камченакаанд: коғази печида дар 3D аст, вале моҳиятан 2D мебошад. Он фазои 2D то кушодан ниҳонӣ аст. Perceiver ҳам гӯё вуруди баландченакаашро «мекушояд», то дар фазои ниҳонии камченака кор кунад.

Тасвири 224 × 224 50 176 пиксел дорад. Self-attention-и одӣ 50 176² ≈ 2,5 миллиард хол мехост. Cross-attention танҳо 50 176 × 512 ≈ 25,7 миллион, тақрибан 100 баробар камтар, ҳисоб мекунад.

Эзоҳ. Бо тангкунандаи ниҳонӣ хароҷот нисбат ба токенҳои пиксел хаттӣ мешавад, на квадратӣ.

Perceiver бо омӯзиши одии назоратшаванда дар чанд модалият санҷида шуд: таснифи тасвир дар ImageNet, аудио+видео дар AudioSet ва абри нуқтаҳо дар ModelNet40, ҳама бо як меъморӣ. Натиҷа рақобатпазир ва баъзан пешқадам буд.

Видеоҳои AudioSet ба 224 × 224, 25 кадр/с ва аудиои 48 kHz оварда шуданд. Ҳар пикселу намунаи садоро ҷудо додан назариявӣ мумкин, вале барои 10 сония 224 × 224 × 25 × 10 ≈ 12,5 миллион токени тасвир ва 48 000 × 10 = 480 000 токени аудио мешуд.

Пас созиш лозим шуд: клипҳои 32-кадрӣ ё 1,28 сония, на 10 сония, ва порчаҳои видеоии 2 × 8 × 8 — ду кадр, ҳар кадом 8 × 8 пиксел. Ҳамин 224 × 224 × 32 / (2 × 8 × 8) = 12 544 токен медиҳад; ҳар кадом 128 пиксели RGB ва мавқеъ дорад. Аудио ба 128 намуна ҷудо шуда, тақрибан 480 токен медиҳад. Онҳо mel-spectrogram-ро ҳам санҷиданд, ки 4800 токен шуд. Спектрограмма усули маъмули аудио аст, вале натиҷа қариб фарқ накард: Perceiver аз хоми дода ҳам хусусияти муфид мегирад.

Пайдарпайии видео ва аудио пас аз мавқеъ якҷо часпонида шуда, embedding-и модалият низ часпонда шуд, то навъҳо фарқ кунанд.

Маҳдудият он аст, ки Perceiver асосан барои таснифи бисёрмодалӣ сохта шуд. Ба ҷойи миёнагирии ниҳонӣ ва сари таснифот метавонист барои вазифаҳои дигар ҳам истифода шавад. Чанд моҳ баъд DeepMind Perceiver IO-ро пешниҳод кард.

Perceiver IO: механизми чандири баромад

Июли 2021 Perceiver IO баромад. Ғайр аз таснифот, MLM-ро аз BERT беҳтар, ҷараёни оптикӣ (пешгӯии ҳаракати ҳар пиксел дар кадри оянда)-ро дар сатҳи пешқадам ва ҳатто StarCraft II-ро иҷро мекард.

То токенҳои ниҳонии баромад ҳамон Perceiver аст, аммо pooling ва сари таснифот бо механизми чандир иваз мешаванд (расми 16.16):

  • Cross-attention-и нави декодер ба токенҳои ниҳонии баромад нигоҳ карда, намояндагиҳои ниҳоиро месозад. Онҳо ба як ё чанд сари вазифавӣ, барои омӯзиши бисёрвазифавӣ, мераванд.
  • Шумора ва табиати токенҳои дархости баромад (output query tokens) аз вазифа вобаста аст.

Барои тасниф як query-и embedding-и омӯзишпазир ва як вектор барои сари таснифот кофист.

Барои MLM ба ҳар токени пинҳон як query ва сари Linear+softmax меояд. Query embedding-и мавқеи ҳамон токен аст. Дар The dog [MASK] the [MASK] ҷойҳо 2 ва 4 мебошанд; query-ҳои мавқеии №2 ва №4-ро медиҳем. Барои дигар модалият ҳам «токени ниқобшударо пешгӯӣ кун» кор мекунад; барои чанд модалият embedding-и навъро ба query илова мекунанд.

Барои ҷараёни оптикӣ ҳар пиксел як query мегирад. Ҳамон намояндагии пиксел бо мавқеи Фурйе ҳам вуруд ва ҳам query-и баромад аст.

Perceiver IO

Расми 16.16. Perceiver IO: барои ҳар токени баромади дилхоҳ як query ба cross-attention дода мешавад, ки токенҳои ниҳонии ниҳоиро мехонад.

Эзоҳ. Query-ҳои баромад танҳо токенҳои кӯтоҳи ниҳониро мебинанд. Аз ин рӯ, шумораи баромадҳо ҳам хеле калон шуда метавонад; хароҷот барои вуруд ва баромад хаттӣ миқёс мегирад.

Perceiver IO дусамта ва бе ниқоби сабабӣ аст. Барои авторегрессия, хусусан тавлиди токени навбатӣ ё тавсифи тасвир, самаранок нест. Метавон матн бо MASK-и охир дода, токенро гирифт ва такрор кард, вале нисбат ба модели сабабии дорои кеш хеле гарон мешавад.

Феврали 2022 Google ва DeepMind Perceiver AR — autoregressive-ро бароварданд. Токенҳои охири вуруд ниҳонӣ мешаванд, коркард нисбат ба онҳо сабабӣ ва омӯзиш NTP аст. Таъсираш аз Perceiver/IO камтар буд, вале дар пайдарпайиҳои хеле дароз ба шарофати миқёсгирии хаттӣ натиҷаи хуб дошт.

DeepMind баъд модели дигари қисман бар Perceiver асосёфта — Flamingo-ро пешниҳод кард.

Flamingo: гуфтугӯи кушодаи биноӣ

Мақолаи DeepMind, апрели 2022, модели биноӣ–забонӣ (VLM)-еро муаррифӣ кард, ки пайдарпайии ихтиёрии матну тасвирро гирифта, матни озоди мувофиқ месозад. Қобилияти чанднамуна (few-shot)-аш дар вазифаҳои зиёд хеле хуб аст.

Масалан, барои шеъри тасвир чанд акс бо шеър дода, акси навро илова мекунед; модел шеър месозад. Барои хондани рақами мошин чанд аксу рақам ҳамчун матн медиҳед; акси нав рақам мегирад. Тавсифи акс, VQA, муқоисаи ду тасвир ё тавсифи амал аз чанд кадри видео ҳам ҳамин тавр аст. Барои инҳо fine-tuning-и нав шарт нест.

Меъморӣ дар расми 16.17:

  1. Ду модели калони пешомӯхтаву яхкардашуда: як биноӣ ва як забонии танҳо декодер. Матни аслӣ номҳои Chinchilla ва CLIP-ро бо «мутаносибан» меорад, вале ҷояшон баръакс навишта шудааст: Chinchilla қисми забонӣ, модели биноӣ бошад бо омӯзиши муқоисавии монанд ба CLIP вобаста аст. Ҷойгузинҳои дигари тавоно ҳам мумкинанд.
  2. Ҳар акс аз модели биноӣ гузашта, баъд ба Resampler-и Perceiver-монанд меравад. Он пайдарпайии кӯтоҳи токенҳои ниҳонӣ медиҳад, то аз хароҷоти квадратӣ канорагирӣ шавад.
  3. Ин токенҳо key/value-и модулҳои gated xattn-dense, ки пеш аз блокҳои LLM-и яхкардашуда ворид шудаанд, мешаванд.
  4. Ҳар модул MHA-и cross-attention-и ниқобшуда ва қисми пешрав, ҳар кадом бо пайвасти ҷаҳишӣ, дорад — монанд ба нисфи cross-attention-и декодери одӣ.
  5. Баъди MHA ва қисми пешрав дарвозаи tanh аст: вуруд ба tanh(α) зарб мешавад, ки α скаляри омӯзишпазири ибтидоан 0 аст. Чун tanh(0)=0, аввал ҳама бастаанд ва танҳо skip мегузарад. Дар омӯзиш тадриҷан кушода, таъсири биноиро ба LLM ворид мекунанд.
  6. Ҳар токени матн танҳо токенҳои наздиктарин акси пеш аз худ-ро бевосита мебинад; дигар аксҳо ниқобанд. Дар мисоли расми мақолаи аслӣ калимаи is танҳо бурҷи чиниро мебинад, на гули пештарро. Аммо токенҳои матнии пешина иттилооти гулро доранд, пас тавассути self-attention-и LLM дастрасии ғайримустақим ҳаст.
  7. Матн мисли интизори LLM токенсозӣ мешавад. Ғайр аз SoS/EoS, барои ҳар порчаи тасвир–матн анҷоми порча, дар мақола , ва ба ҷойи ҳар акс **токени тасвир ** ҳаст. Ҳар ду embedding-и омӯзишпазир доранд.

Flamingo ҳар гуна пайдарпайии матну тасвирро гирифта, матни озоди мувофиқ мебарорад

Расми 16.17. Flamingo ҳар гуна пайдарпайии матну тасвирро гирифта, матни озоди мувофиқ мебарорад.

Flamingo-и аслӣ оммавӣ нашуд, вале нусхаҳо ва вариантҳо ҳастанд:

  • OpenFlamingo, аз MLFoundations-и созмони ғайритиҷоратии LAION, кушодаасос ва дар Hub дастрас аст. Масалан openflamingo/OpenFlamingo-9B-vitl-mpt7b аз CLIP ViT-L/14 ва MPT-7B истифода мебарад.
  • IDEFICS-и Hugging Face дар OBELICS, 141 миллион ҳуҷҷати омехтаи матн–тасвир аз Common Crawl, бо 350 миллион тасвир ва 115 миллиард токени матн, омӯзонида шудааст. Ҳар ду дар Hub, масалан Idefics3-8B-Llama3 ва OBELICS-и HuggingFaceM4, ҳастанд. Меъморӣ иваз кардани LLM ё энкодери биноиро осонтар мекунад. IDEFICS кушодаасос аст, вале иҷозатномаи моделҳои поя алоҳида мебошад: манбаъ версияҳои 1/3-ро ба Llama ва 2-ро ба Mistral нисбат медиҳад.
  • AudioFlamingo-и Nvidia ба ҷойи акс аудио мегирад.
  • Med-Flamingo варианти соҳавии OpenFlamingo барои ҳуҷҷатҳои тиббӣ аст.

Модели охирини муфассал BLIP ва махсусан BLIP-2-и Salesforce аст: боз ду модели калони биноӣ ва забонӣ якҷо мешаванд.

BLIP ва BLIP-2

BLIP, январи 2022, модели қавии биноӣ–забонӣ аст. Mixture of Encoder-Decoder (MED) аз энкодери танҳо матн, танҳо тасвир, энкодери матни ба тасвир такякунанда ва декодери матни ба тасвир такякунанда иборат буда, қабатҳои зиёд муштараканд. Се ҳадаф ҳамзамон омӯзонда мешаванд:

  • Мувофиқати тасвир–матн (ITM);
  • талафоти муқоисавии тасвир–матн (ITC) барои фазои муштарак, монанди CLIP;
  • моделсозии забон (LM) барои сохтани тавсиф бо токени навбатӣ.

Сабаби дигари муваффақият додаи калону тоза буд. Муаллифон ҳамзамон модули тавсифсоз барои caption-и сунъӣ ва филтр барои дур кардани ғавғо омӯзонданд. CapFilt тавсифҳои бади вебиро хориҷ кард ва тавсифҳои синтетикии босифатро илова намуд. Баъд модели ниҳоӣ дар маҷмӯи тозашуда омӯзонда шуд. Ин оғоздиҳии думарҳилавӣ сабаби номи Bootstrapping Language-Image Pretraining (BLIP) аст.

Январи 2023 BLIP-2 ғояро бо ду модели калони биноӣ ва забонии яхкардашуда беҳтар кард ва ҳатто бо андозаи хеле хурдтар аз Flamingo пеш гузашт.

Марҳилаи якум: омӯзиши Q-Former

Сохтор дар расми 16.18 аст.

Пешомӯзиши BLIP-2, марҳилаи 1

Расми 16.18. Пешомӯзиши BLIP-2, марҳилаи 1: омӯзиши Q-Former.

Ҷузъи марказӣ Q-Former — querying transformer, яъне трансформери пурсишгар, аст. Ба BERT-base монанд ва бо вазнҳои он ибтидоӣ мешавад, вале ҳар қабати дуюм байни self-attention ва қисми пешрав cross-attention-и тасодуфан ибтидоишуда дорад, то токенҳои энкодери биноиро бинад.

Q-Former бо се пайдарпайӣ кор мекунад:

  • токенҳои матн бо токенсозиву embedding-и BERT;
  • токенҳои биноии энкодери пешомӯхта;
  • токенҳои ниҳонии омӯзишпазири Perceiver-монанд, ки дар BLIP-2 query tokens ном доранд, чун баъд барои пурсиши LLM истифода мешаванд.

Ҳамон се ҳадафи BLIP, вале бо ниқобҳои гуногун, меояд:

ITM. Query ва матн ҳамдигарро мебинанд. Query хусусиятҳои биноии ба матн такякунанда ва матн хусусиятҳои забонии ба акс такякунанда медиҳад. Аз ҳар query сари Linear ду логит — мувофиқ/номувофиқ — мебарорад. Логитҳо дар query-ҳо миёна шуда, талафоти таснифоти дуӣ ҳисоб мешавад.

ITC. Query ва матн ҳамдигарро намебинанд: намояндагии софи тасвир ва софи матн ҳосил мешавад. Барои ҳар ҷуфти имконпазири акс–тавсифи баста баландтарин монандии баромадҳои query бо CLS гирифта мешавад. Матритсаи монандиҳо сохта шуда, мисли CLIP диагонал баланд ва дигарон паст омӯзонда мешаванд.

LM. Токенҳои матн танҳо токенҳои гузаштаи матн, вале ҳамаи query-ҳоро мебинанд. Query ҳеҷ матнро намебинад. Пас query хусусиятҳои софи биноӣ ва матн намояндагии сабабии ба акс такякунанда медиҳад. Ҳар баромади матн токени баъдии тавсифро пешгӯӣ мекунад.

Чӣ гуна як Q-Former ҳам матнро рамзгузорӣ ва ҳам тавлид мекунад? Аз BERT хусусиятҳои хуб дорад ва аз сифр оғоз намекунад, пас NTP-ро нисбатан зуд меомӯзад. Барои муайян кардани режим дар LM ба ҷойи CLS токени decode мегузоранд.

Баъди марҳилаи 1 модел аксу матнро дар як фазо хуб рамзгузорӣ мекунад: акси шимпанзе ба «Акси шимпанзе» наздик аст. Муҳимтар, query-ҳо барои пешгӯии токени навбатӣ муфид омӯхта шудаанд.

Маслиҳат. Барои ITM манфии тасодуфӣ аз ҳамон баста аксар вақт хеле осон аст. Муаллифон интихоби манфиҳои душвор (hard negative mining) доранд: барои акси шимпанзе «горилла» эҳтимолитар аз «киштии кайҳонӣ» интихоб мешавад. Душвориро аз холҳои ITC меёбанд.

Марҳилаи дуюм: пайвастшавӣ ба LLM

Дар расми 16.19:

  1. Энкодери биноӣ ва Q-Former нигоҳ дошта шуда, сарҳои боқимондаи марҳилаи аввал дур карда мешаванд; болои Q-Former Linear-и нави тасодуфӣ илова мешавад.
  2. Query-ҳо хусусиятҳои акси энкодерро мехонанд ва аз Linear гузашта, ба пайдарпайии векторҳои барои LLM мувофиқ табдил мешаванд.
  3. Онҳо бо намояндагиҳои токенҳои матн часпонида шуда, ба LLM-и яхкардашуда мераванд. BLIP-2 токени навбатии caption-ро пешгӯӣ мекунад.

Модел меомӯзад, ки query-и биноиро ба фазои вуруди LLM дуруст барад. Баъди омӯзиш ҳамин роҳ матни ба тасвир такякунанда тавлид мекунад.

Пешомӯзиши BLIP-2, марҳилаи 2

Расми 16.19. Пешомӯзиши BLIP-2, марҳилаи 2: мутобиқ кардани query-ҳо ба фазои вуруди LLM тавассути қабати хаттӣ.

Тавсифи акс бо BLIP-2:

from transformers import Blip2Processor, Blip2ForConditionalGeneration
from PIL import Image

model_id = "Salesforce/blip2-opt-2.7b"
blip2_processor = Blip2Processor.from_pretrained(model_id)
blip2_model = Blip2ForConditionalGeneration.from_pretrained(
    model_id, device_map=device, dtype=torch.float16)

image_url = "http://images.cocodataset.org/val2017/000000039769.jpg"  # ду гурба
image = Image.open(urllib.request.urlopen(image_url))
inputs = blip2_processor(images=image, return_tensors="pt")
inputs = inputs.to(device, dtype=torch.float16)
with torch.no_grad():
    generated_ids = blip2_model.generate(**inputs)

generated_text = blip2_processor.batch_decode(generated_ids)

Эзоҳи тарҷумон. from PIL import Image дар порчаи аслӣ набуд; барои равшан будани истифодаи Image.open() илова шуд. device, torch ва urllib.request аз муҳити мисолҳои пешинаанд.

Модел чӣ дид?

>>> generated_text
['[...]two cats laying on a couch\n']

Маъно хуб: ду гурба рӯйи диван хобидаанд. Барои дур кардани токенҳои махсус:

>>> generated_text = blip2_processor.batch_decode(generated_ids,
...                                               skip_special_tokens=True)
...
>>> generated_text
['two cats laying on a couch\n']

Аъло!

Маслиҳат. InstructBLIP-ро ҳам бинед: BLIP-2 бо instruction tuning-и биноӣ–забонӣ.

Моделҳои дигари бисёрмодалӣ

Меъморӣ ва ҳадафҳои гуногуни зиёдро дидем, вале боз бисёранд. Чанд модели дигар:

Модел ва созандаСанаХусусият
LayoutLM — Microsoftдекабри 2019Фаҳмиши ҳуҷҷат аз матн, тасвир ва ҷойгиршавии саҳифа; версияи 3 — апрели 2022
GLIP — Microsoftдекабри 2021Grounding ва ошкорсозии объект; GLIP-2 — 2022
Stable Diffusion — Stability AIдекабри 2021Модели тавонои матн→тасвир
OFA — Microsoftфеврали 2022Чорчӯбаи ягонаи One For All барои вазифаҳои гуногуни биноӣ–забонӣ
CoCa — Googleмайи 2022Пешомӯзиши муқоисавӣ ва captioning; таъсир ба PaLI-X ва Flamingo-2
PaLI — Googleсентябри 2022VQA ва captioning-и чандзабонӣ бо zero-shot-и қавӣ; PaLI-X/PaLI-3 — 2023, PaliGemma — майи 2024
Kosmos-1 — Microsoftфеврали 2023Дастгирии қавии grounding; Kosmos-2 ва 2.5 — 2023
PaLM-E — Googleмарти 2023PaLM бо тасвир ва ҳисгарҳои ҷисмдор; декодер фармони матнӣ, масалан «болғаро бигир», медиҳад ва низоми поёнӣ дар робот иҷро мекунад
LLaVA — Ҳ. Лю ва ҳамкоронапрели 2023Аз чатмоделҳои қавии кушодаи биноӣ–забонӣ
ImageBind — Metaмайи 2023CLIP-монанд барои 6 модалият: тасвир, матн, аудио, IMU, умқ ва гармӣ
RT-2 — DeepMindиюли 2023Модели биноӣ–забонӣ барои идораи робот, дар додаҳои бузурги пайравии дастур омӯзонида шудааст
SeamlessM4T — Metaавгусти 2023Нутқ→матн, нутқ→нутқ, матн→нутқ ва матн→матн дар қариб 100 забон
Qwen-VL — Alibabaсентябри 2023Оилаи кушодаи биноӣ–забонӣ, аз 7 то 72 миллиард параметр; идомаҳо Qwen2-VL — августи 2024 ва Qwen3-Omni — сентябри 2025 барои видео/аудио
Fuyu — Adept AIоктябри 2023Як трансформер барои матну тасвири омехта дар вақти воқеӣ
EMO — Alibabaфеврали 2024Акси шахс ва сабти сухан/сурудро гирифта, видеои бо аудио мувофиқ месозад; EMO-2 — январи 2025
GLaMM — Ҳ. Рашид ва ҳамкорониюни 2024Ҷавобҳои матнӣ бо ниқобҳои сегментатсияи объект
LaViDa — UCLA, Panasonic, Adobe, Salesforceмайи 2025Оилаи моделҳои кушодаи биноӣ–забонии диффузионӣ

Маслиҳат. Барои моделҳои боб пайвандҳои кӯтоҳи homl.info ҳаст: номи хурдҳарфи бе дефис, масалан https://homl.info/qwen2vl.

Моделҳои тиҷоратии бисёрмодалӣ ҳам ҳастанд, ки ҷузъиёти меъмориашон нашр нашудааст. Масалан, GPT-4.1 ва Sora-и OpenAI, Gemini 2.5 Pro-и Google, Veo-3-и DeepMind ва Claude 4 Opus-и Anthropic. Одатан ҳисоб ва пешниҳоди пулакӣ ё сатҳи ройгон лозим шуда, аз барнома, масалан Google AI Studio дар https://aistudio.google.com, ё API истифода мебаранд.

Намунаи Gemini: аввал API key-ро аз AI Studio гирифта, дар мудири сир ё роҳи бехатари мувофиқ нигоҳ доред. Барои Colab усули боби 15 муносиб аст:

from google import genai

gemini_api_key = [...]  # аз сиррҳои Colab ё манбаи дигари танзимот хонед
gemini_client = genai.Client(api_key=gemini_api_key)
cats_photo = gemini_client.files.upload(file="my_cats_photo.jpg")
question = "What animal and how many? Format: [animal, number]"
response = gemini_client.models.generate_content(
    model="gemini-2.5-flash",  # ё "gemini-2.5-pro"
    contents=[cats_photo, question])
print(response.text)  # натиҷаи намунавӣ: "[cat, 2]"

Савол «Кадом ҳайвон ва чандто? Қолаб: [ҳайвон, шумора]» аст. Код китобхонаи google-genai-ро истифода мебарад, ки дар Colab насб аст. Ҳамчунин файли my_cats_photo.jpg бояд дар ҳамон ҷузвдони notebook бошад. [...] ҷойнишини қимати воқеӣ аст, на калиди омода.

Боб анҷом ёфт. Акнун трансформерҳо метавонанд бубинанд, бишнаванд, ламсро коркард кунанд ва бештар! Дар боби оянда усулҳои нисбатан пешрафтаи тезондан ва миқёсдиҳии онҳо меоянд. Ба қавли Daft Punk: пуркӯшиштар, беҳтар, тезтар, қавитар.

пешина
аз 20
навбатӣ