Məzmuna keç
Educora

Düsturlar və asan yollar

Python · 97

Bu kursdakı bütün düsturlar və yadda saxlamağın asan yolları bir səhifədə.

1Funksiyalar və modullarOrta

Funksiyalar

Dərsə keç
F = C · 9/5 + 32F = C · 9/5 + 32
burada:
  • FFarenheyt dərəcəsi ilə temperatur
  • CSelsi dərəcəsi ilə temperatur

Bu düsturu funksiyaya çevirək

2Python dərindənİrəli

İteratorlar və generatorlar

Dərsə keç

Dekoratorlar və qapanmalar

Dərsə keç

Kontekst menecerləri və with operatoru

Dərsə keç

Tip annotasiyaları və dataclass-lar

Dərsə keç

Qabaqcıl OYP: xüsusi metodlar, xassələr və MRO

Dərsə keç

Requlyar ifadələr: re modulu

Dərsə keç

Asinxron Python: async və await

Dərsə keç

Paketlər, modullar və virtual mühitlər

Dərsə keç

Performans, Big-O və collections modulu

Dərsə keç

3Veb və avtomatlaşdırmaİrəli

JSON və CSV ilə işləmək

Dərsə keç

Veb API-lər və requests kitabxanası

Dərsə keç

FastAPI ilə veb servis

Dərsə keç

Avtomatlaşdırma skriptləri

Dərsə keç

4Verilənlər elmi: NumPy, pandas, matplotlibUniversitet

NumPy-ın əsasları: massivlər

Dərsə keç
size = d₁ · d₂ · … · dₙ nbytes = size · itemsize
burada:
  • noxların sayı (ndim)
  • dₖk-cı ox üzrə uzunluq (shape-in elementi)
  • itemsizebir elementin bayt ilə ölçüsü: float64 və int64 üçün 8, float32 və int32 üçün 4, bool və int8 üçün 1

Forması (2, 3) olan m üçün size = 2 · 3 = 6. temps üçün nbytes = 4 · 8 = 32 bayt.

h = (stop − start) / (num − 1) n = ⌈(stop − start) / step⌉h = (stop − start) / (num − 1) n = ⌈(stop − start) / step⌉
burada:
  • hlinspace nöqtələri arasındakı addım
  • narange massivindəki elementlərin sayı
  • ⌈ ⌉yuxarı yuvarlaqlaşdırma

np.linspace(0, 1, 5): h = 1 / 4 = 0,25. np.arange(0, 10, 2): n = ⌈10 / 2⌉ = 5 element.

x̄ = (1/n) · ∑ xᵢ σ = √( ∑ (xᵢ − x̄)² / (n − ddof) )x̄ = (1/n) · ∑ xᵢ σ = √( ∑ (xᵢ − x̄)² / (n − ddof) )
burada:
  • x̄ədədi orta (mean)
  • nqiymətlərin sayı
  • σstandart meyl (std), qiymətlərin ortadan orta hesabla nə qədər uzaqlaşdığı
  • ddof0 — baş məcmu üçün (NumPy-da susmaya görə), 1 — seçmə üçün (sürüşməsiz dispersiya)

np.std susmaya görə n-ə bölür, statistika dərslikləri və pandas-dakı Series.std isə n − 1-ə. Eyni nəticə üçün ddof=1 ötür.

NumPy: vektorlaşdırma və xətti cəbr

Dərsə keç
zᵢⱼ = (xᵢⱼ − μⱼ) / σⱼzᵢⱼ = (xᵢⱼ − μⱼ) / σⱼ
burada:
  • xᵢⱼi-ci nümunənin j-ci əlaməti
  • μⱼ, σⱼj-ci sütunun ortası və standart meyli
  • zᵢⱼstandartlaşdırılmış qiymət (z-bal): ortası 0, standart meyli 1
cᵢⱼ = ∑ₖ₌₁ⁿ aᵢₖ · bₖⱼ (m × n) @ (n × p) → (m × p)
burada:
  • aᵢₖA matrisinin i-ci sətir, k-cı sütundakı elementi
  • bₖⱼB matrisinin k-cı sətir, j-ci sütundakı elementi
  • nA-nın sütunlarının və B-nin sətirlərinin ortaq sayı
A = [[a, b], [c, d]]: det A = a·d − b·c A⁻¹ = (1 / det A) · [[d, −b], [−c, a]]A = [[a, b], [c, d]]: det A = a·d − b·c A⁻¹ = (1 / det A) · [[d, −b], [−c, a]]
burada:
  • det Adeterminant; 0-dırsa, matris cırlaşmışdır və tərsi yoxdur
  • A⁻¹tərs matris: A · A⁻¹ = I (vahid matris)
A · v = λ · v det(A − λ · I) = 0
burada:
  • vməxsusi vektor (v ≠ 0)
  • λməxsusi qiymət
  • Ivahid matris

İkinci bərabərlik xarakteristik tənlikdir: (A − λI)v = 0 sisteminin sıfırdan fərqli həlli yalnız determinant 0 olanda var.

w = (Xᵀ X)⁻¹ Xᵀ y
burada:
  • Xn × d əlamətlər matrisi (birinci sütun birlərdir)
  • yhədəf qiymətlər vektoru
  • wkvadratik xətaların cəmini minimuma endirən əmsallar

pandas-ın əsasları: Series və DataFrame

Dərsə keç
h = (n − 1) · q Q(q) = x₍ₖ₎ + (h − k) · (x₍ₖ₊₁₎ − x₍ₖ₎), k = ⌊h⌋
burada:
  • qsəviyyə: 0,25 (birinci kvartil), 0,5 (median), 0,75 (üçüncü kvartil)
  • x₍ₖ₎artan sıra ilə düzülmüş qiymətlərdən k-cısı (0-dan saymaqla)
  • hsıralanmış verilənlərdə «kəsr mövqe»

pandas və NumPy susmaya görə kvantilləri iki qonşu qiymət arasında xətti interpolyasiya ilə hesablayır.

pandas ilə verilənlərin analizi

Dərsə keç
x̄_w = ∑ wᵢ · xᵢ / ∑ wᵢx̄_w = ∑ wᵢ · xᵢ / ∑ wᵢ
burada:
  • xᵢi-ci qrupun ortası (məsələn, orta çek)
  • wᵢqrupun çəkisi — adətən müşahidələrin sayı

Çəkili orta. pandas-da: np.average(x, weights=w) və ya sadəcə ümumi cəmi ümumi saya bölmək.

Δ% = (xₜ − xₜ₋₁) / xₜ₋₁ · 100%Δ% = (xₜ − xₜ₋₁) / xₜ₋₁ · 100%
burada:
  • xₜcari dövrün göstəricisi
  • xₜ₋₁əvvəlki dövrün göstəricisi

Artım tempi; pandas-da pct_change() bunu hesablayır (100-ə vurmadan). Birinci dövr üçün əvvəlki qiymət yoxdur, ona görə NaN alınır.

matplotlib ilə vizuallaşdırma

Dərsə keç
k = ⌈log₂ n⌉ + 1 h = 2 · IQR · n^(−1/3)
burada:
  • kintervalların sayı (Sturges qaydası)
  • hintervalın eni (Freedman–Diaconis qaydası), verilənlərin vahidi ilə
  • nmüşahidələrin sayı
  • IQRkvartillərarası məsafə Q3 − Q1

Sturges normal paylanmaya yaxın və çox böyük olmayan verilənlər üçün yaxşıdır; Freedman–Diaconis kənar qiymətlərə davamlıdır. ax.hist(x, bins='fd') ikincisini avtomatik tətbiq edir.

fᵢ = nᵢ / (n · h) ∑ fᵢ · h = 1fᵢ = nᵢ / (n · h) ∑ fᵢ · h = 1
burada:
  • nᵢi-ci intervala düşən müşahidələr
  • fᵢsütunun hündürlüyü density=True rejimində (sıxlıq)
  • hintervalın eni

ax.hist(x, density=True) sütunların sahələrinin cəmini 1 edir — belə histoqramı ehtimal sıxlığının əyrisi ilə müqayisə etmək olar.

Python ilə statistika

Dərsə keç
x̄ = (1/n) · ∑ xᵢ s² = ∑ (xᵢ − x̄)² / (n − 1) s = √s²x̄ = (1/n) · ∑ xᵢ s² = ∑ (xᵢ − x̄)² / (n − 1) s = √s²
burada:
  • nseçmənin həcmi
  • s²seçmə dispersiyası (vahidi — verilənlərin vahidinin kvadratı)
  • sseçmə standart meyli (verilənlərlə eyni vahiddə); NumPy-da std(ddof=1)
[Q1 − 1,5 · IQR; Q3 + 1,5 · IQR]
burada:
  • Q1, Q3birinci və üçüncü kvartil (25% və 75%)
  • IQRQ3 − Q1, verilənlərin ortadakı yarısının eni

Tükinin qaydası: bu intervaldan kənardakı qiymətlər kənar qiymət (outlier) sayılır. Burada: 14,75 + 1,5 · 1,75 = 17,375, deməli, 45 kənar qiymətdir.

f(x) = 1 / (σ · √(2π)) · e^(−(x − μ)² / (2σ²)) z = (x − μ) / σf(x) = 1 / (σ · √(2π)) · e^(−(x − μ)² / (2σ²)) z = (x − μ) / σ
burada:
  • μpaylanmanın ortası
  • σstandart meyl (σ > 0)
  • f(x)ehtimal sıxlığı; P(a < X < b) — əyri altında a ilə b arasındakı sahədir
  • zz-bal: standart normal paylanmada (μ = 0, σ = 1) mövqe
SE = σ / √n ≈ s / √nSE = σ / √n ≈ s / √n
burada:
  • SEortanın standart xətası
  • σ, sbaş məcmunun və seçmənin standart meyli
x̄ ± t* · s / √n, t* = t₁₋α/₂(n − 1)x̄ ± t* · s / √n, t* = t₁₋α/₂(n − 1)
burada:
  • t*t-paylanmasının kritik qiyməti; 95% üçün α = 0,05
  • n − 1sərbəstlik dərəcələrinin sayı

Orta üçün 95% etibarlılıq intervalı. stats.t.ppf(0.975, df=n - 1) t*-ı, stats.t.interval isə bütün intervalı qaytarır.

t = (x̄₁ − x̄₂) / √(s₁²/n₁ + s₂²/n₂)t = (x̄₁ − x̄₂) / √(s₁²/n₁ + s₂²/n₂)
burada:
  • x̄₁, x̄₂qrupların ortaları
  • s₁², s₂²qrupların seçmə dispersiyaları
  • n₁, n₂qrupların həcmi

Uelç t-statistikası: ortaların fərqi, onun standart xətasına bölünür. |t| nə qədər böyükdürsə, p o qədər kiçikdir.

r = ∑ (xᵢ − x̄)(yᵢ − ȳ) / √( ∑ (xᵢ − x̄)² · ∑ (yᵢ − ȳ)² )r = ∑ (xᵢ − x̄)(yᵢ − ȳ) / √( ∑ (xᵢ − x̄)² · ∑ (yᵢ − ȳ)² )
burada:
  • r−1 ≤ r ≤ 1; işarə istiqaməti, |r| gücü göstərir
  • x̄, ȳhər dəyişənin ortası

scikit-learn ilə maşın öyrənməsi

Dərsə keç
MSE = (1/n) · ∑ (yᵢ − ŷᵢ)² RMSE = √MSE R² = 1 − ∑ (yᵢ − ŷᵢ)² / ∑ (yᵢ − ȳ)²MSE = (1/n) · ∑ (yᵢ − ŷᵢ)² RMSE = √MSE R² = 1 − ∑ (yᵢ − ŷᵢ)² / ∑ (yᵢ − ȳ)²
burada:
  • yᵢ, ŷᵢhəqiqi qiymət və proqnoz
  • RMSEhədəflə eyni vahiddə orta xəta (burada min manat)
  • R²izah olunan variasiyanın payı: 1 — ideal, 0 — həmişə ortanı proqnozlaşdıran model səviyyəsi

Model əmsalları 1,48 və 11,06 tapıb — həqiqi 1,5 və 12-yə yaxındır. RMSE ≈ 9,8 verilənlərə qatdığımız küyün (σ = 10) səviyyəsidir: model siqnalı tam tutub, küyü isə proqnozlaşdırmaq mümkün deyil.

p = σ(z) = 1 / (1 + e^(−z)), z = w · x + bp = σ(z) = 1 / (1 + e^(−z)), z = w · x + b
burada:
  • σ(z)sigmoid: istənilən ədədi (0; 1) aralığına salır, σ(0) = 0,5
  • pnümunənin müsbət sinfə aid olma ehtimalı; p ≥ 0,5 olanda «1» proqnozlaşdırılır
G = 1 − ∑ₖ pₖ² Gsplit = (nL / n) · GL + (nR / n) · GRG = 1 − ∑ₖ pₖ² Gsplit = (nL / n) · GL + (nR / n) · GR
burada:
  • pₖdüyündə k sinfinin payı
  • G0 — düyün təmizdir (bir sinif), iki sinif üçün maksimum 0,5
  • nL, nRsol və sağ övlad düyünlərdəki nümunələrin sayı
Accuracy = (TP + TN) / N Precision = TP / (TP + FP) Recall = TP / (TP + FN) F1 = 2 · P · R / (P + R)Accuracy = (TP + TN) / N Precision = TP / (TP + FP) Recall = TP / (TP + FN) F1 = 2 · P · R / (P + R)
burada:
  • Precision«spam» dediklərimizin neçə faizi həqiqətən spamdır
  • Recallbütün spamın neçə faizini tuta bildik
  • F1precision və recall-un harmonik ortası
  • Nbütün nümunələrin sayı
CV = (1/k) · ∑ᵢ₌₁ᵏ scoreᵢCV = (1/k) · ∑ᵢ₌₁ᵏ scoreᵢ
burada:
  • kqatların sayı, adətən 5 və ya 10
  • scoreᵢi-ci qat test olanda alınan nəticə

5Süni intellekt və PyTorchUniversitet

Maşın öyrənməsinin əsas anlayışları

Dərsə keç
MSE = (1/n) · ∑ᵢ₌₁ⁿ (yᵢ − ŷᵢ)²MSE = (1/n) · ∑ᵢ₌₁ⁿ (yᵢ − ŷᵢ)²
burada:
  • nnümunələrin sayı
  • yᵢi-ci nümunənin həqiqi qiyməti (etiket)
  • ŷᵢmodelin proqnozu

Orta kvadratik xəta (mean squared error). Kvadrata yüksəltmə böyük səhvləri daha ağır cəzalandırır; vahidi etiketin vahidinin kvadratıdır.

CE = −∑ₖ₌₁ᴷ yₖ · ln pₖ = −ln pₜ
burada:
  • Ksiniflərin sayı
  • yₖk sinfi düzgündürsə 1, əks halda 0 (one-hot)
  • pₖmodelin k sinfinə verdiyi ehtimal
  • pₜdüzgün sinfin ehtimalı

Çarpaz entropiya (cross-entropy). İki sinif üçün: BCE = −[y · ln p + (1 − y) · ln(1 − p)]. Düzgün sinfin ehtimalı 1-ə yaxınlaşdıqca itki 0-a yaxınlaşır.

θ ← θ − η · ∇L(θ)
burada:
  • θmodelin bütün parametrləri (çəkilər və sürüşmələr)
  • ηöyrənmə sürəti, adətən 0,0001–0,1
  • ∇L(θ)itkinin hər parametrə görə xüsusi törəmələrindən ibarət qradiyent vektoru

Qradiyent enişinin yeniləmə qaydası. Hər təkrar bir addımdır; bütün öyrədici dəstdən bir dəfə keçməyə epoxa deyilir.

∂L/∂w = (2/n) · ∑ᵢ (ŷᵢ − yᵢ) · xᵢ ∂L/∂b = (2/n) · ∑ᵢ (ŷᵢ − yᵢ)∂L/∂w = (2/n) · ∑ᵢ (ŷᵢ − yᵢ) · xᵢ ∂L/∂b = (2/n) · ∑ᵢ (ŷᵢ − yᵢ)
burada:
  • w, bxəttin bucaq əmsalı (çəki) və sərbəst həddi (sürüşmə)
  • ŷᵢ − yᵢi-ci nümunədə səhv
E[(y − f̂(x))²] = Bias[f̂(x)]² + Var[f̂(x)] + σ²
burada:
  • f̂(x)təsadüfi öyrədici dəstdən öyrədilmiş modelin proqnozu
  • Biassistematik xəta: modelin çox sadə fərziyyələrindən yaranan orta səhv
  • Vardispersiya: proqnozun konkret öyrədici dəstdən nə qədər asılı olduğu
  • σ²verilənlərdəki aradan qaldırılmayan küy

MSE üçün sistematik xəta–dispersiya ayrılışı. Model mürəkkəbləşdikcə sistematik xəta azalır, dispersiya artır; ən yaxşı model cəmi minimuma endirir.

J(θ) = L(θ) + λ · ∑ⱼ θⱼ²
burada:
  • λrequlyarlaşdırma gücü (hiperparametr, validasiya ilə seçilir)
  • ∑ⱼ θⱼ²çəkilərin kvadratları cəmi — böyük çəkiləri cəzalandırır

L2 requlyarlaşdırma (weight decay): model daha «hamar» funksiyalar seçir və küyü əzbərləməyə daha az meyl edir.

PyTorch: tenzorlar

Dərsə keç
numel = d₁ · d₂ · … · dₖ memory = numel · s
burada:
  • d₁ … dₖshape-in ölçüləri
  • numelelementlərin sayı (x.numel())
  • sbir elementin ölçüsü, bayt (x.element_size())
C = A @ B, Cᵢⱼ = ∑ₖ Aᵢₖ · Bₖⱼ, (m × n) @ (n × p) → (m × p)
burada:
  • A, Bölçüləri m × n və n × p olan matrislər
  • ndaxili ölçü — hər iki matrisdə eyni olmalıdır
  • CᵢⱼA-nın i-ci sətri ilə B-nin j-ci sütununun skalyar hasili

Matris hasili neyron şəbəkələrin əsas əməliyyatıdır: (N, D) ölçülü girişləri (D, K) çəkilər matrisinə vurmaqla bütün paketi bir anda emal edirik. Daha çox ölçülü tenzorlarda @ son iki oxa tətbiq olunur, qalan oxlar isə paket oxları sayılır.

PyTorch: autograd və avtomatik törəmə

Dərsə keç
dL/dx = dL/dy · dy/dx ∂L/∂w = ∂L/∂ŷ · ∂ŷ/∂wdL/dx = dL/dy · dy/dx ∂L/∂w = ∂L/∂ŷ · ∂ŷ/∂w
burada:
  • Litki (qrafın kökü)
  • y, ŷaralıq qiymətlər (qrafın daxili düyünləri)
  • x, wyarpaqlar: girişlər və parametrlər

Mürəkkəb funksiyanın törəməsi lokal törəmələrin hasilinə bərabərdir. Bir dəyişən bir neçə yolla itkiyə təsir edirsə, bütün yollar üzrə hasillər toplanır: ∂L/∂x = ∑ₖ ∂L/∂yₖ · ∂yₖ/∂x.

σ(z) = 1 / (1 + e⁻ᶻ) σ′(z) = σ(z) · (1 − σ(z))σ(z) = 1 / (1 + e⁻ᶻ) σ′(z) = σ(z) · (1 − σ(z))
burada:
  • σ(z)siqmoid funksiyası, qiymətləri (0; 1) aralığında
  • σ′(z)onun törəməsi; ən böyük qiyməti z = 0-da 0,25-dir

İsbat: σ′(z) = e⁻ᶻ / (1 + e⁻ᶻ)² = σ(z) · e⁻ᶻ / (1 + e⁻ᶻ), sonuncu kəsr isə 1 − σ(z)-dir.

PyTorch: neyron şəbəkələrin qurulması

Dərsə keç
z = w · x + b = ∑ᵢ₌₁ⁿ wᵢxᵢ + b a = φ(z)
burada:
  • xgiriş vektoru (n əlamət)
  • wçəkilər — hər girişin əhəmiyyəti
  • bsürüşmə (bias) — aktivləşmə həddini sürüşdürür
  • φaktivasiya funksiyası (ReLU, siqmoid…)
  • aneyronun çıxışı (aktivasiya)
ReLU(z) = max(0, z) σ(z) = 1 / (1 + e⁻ᶻ) tanh(z) = (eᶻ − e⁻ᶻ) / (eᶻ + e⁻ᶻ)ReLU(z) = max(0, z) σ(z) = 1 / (1 + e⁻ᶻ) tanh(z) = (eᶻ − e⁻ᶻ) / (eᶻ + e⁻ᶻ)
burada:
  • ReLUmənfi qiymətləri sıfırlayır; törəməsi z > 0 üçün 1, z < 0 üçün 0
  • σsiqmoid: qiymətlər (0; 1) aralığında, ehtimal kimi şərh olunur
  • tanhhiperbolik tangens: qiymətlər (−1; 1) aralığında, sıfıra görə simmetrik
softmax(z)ᵢ = eᶻⁱ / ∑ⱼ₌₁ᴷ eᶻʲsoftmax(z)ᵢ = eᶻⁱ / ∑ⱼ₌₁ᴷ eᶻʲ
burada:
  • zK sinif üçün xam ballar (logitlər)
  • softmax(z)ᵢi sinfinin ehtimalı; hamısı müsbətdir və cəmi 1-dir

Softmax çoxsinifli təsnifatda son qatın logitlərini ehtimallar paylanmasına çevirir.

Y = X · Wᵀ + b params = (nin + 1) · nout
burada:
  • Xgirişlər paketi, forma (N, nin)
  • Wçəkilər, forma (nout, nin) — layer.weight
  • bsürüşmələr, forma (nout,) — layer.bias
  • Yçıxışlar, forma (N, nout)

Hər çıxış neyronunun nin çəkisi və bir sürüşməsi var, buna görə tam əlaqəli qatda (nin + 1) · nout parametr olur.

PyTorch: modelin öyrədilməsi dövrü

Dərsə keç
steps per epoch = ⌈N / B⌉ updates = epochs · ⌈N / B⌉steps per epoch = ⌈N / B⌉ updates = epochs · ⌈N / B⌉
burada:
  • Nöyrədici dəstdəki nümunələrin sayı
  • Bpaketin ölçüsü (batch size)
  • ⌈ ⌉yuxarı yuvarlaqlaşdırma: son natamam paket də bir addımdır
L = −zₜ + ln ∑ⱼ₌₁ᴷ eᶻʲ
burada:
  • zmodelin xam logitləri
  • tdüzgün sinfin nömrəsi

nn.CrossEntropyLoss log-softmax ilə çarpaz entropiyanı birləşdirir: −ln softmax(z)ₜ = −zₜ + ln ∑ eᶻʲ. Paket üçün itkilərin orta qiyməti götürülür.

mₜ = β₁·mₜ₋₁ + (1 − β₁)·gₜ vₜ = β₂·vₜ₋₁ + (1 − β₂)·gₜ² θₜ = θₜ₋₁ − η · m̂ₜ / (√v̂ₜ + ε)mₜ = β₁·mₜ₋₁ + (1 − β₁)·gₜ vₜ = β₂·vₜ₋₁ + (1 − β₂)·gₜ² θₜ = θₜ₋₁ − η · m̂ₜ / (√v̂ₜ + ε)
burada:
  • gₜt addımındakı qradiyent
  • mₜ, vₜqradiyentin və onun kvadratının sürüşən orta qiymətləri (impuls və miqyas)
  • m̂ₜ, v̂ₜbaşlanğıc sürüşməsi düzəldilmiş qiymətlər: mₜ/(1 − β₁ᵗ), vₜ/(1 − β₂ᵗ)
  • β₁, β₂, ε, ηPyTorch-da susmaya görə 0,9; 0,999; 10⁻⁸; 0,001

Adam optimallaşdırıcısı. Hər parametr öz addım ölçüsünü alır: qradiyenti daim böyük olan parametr ehtiyatla, kiçik olan isə daha cəsarətlə yenilənir. SGD-nin impulslu (momentum) variantı isə v ← μ·v + g, θ ← θ − η·v düsturu ilə işləyir.

accuracy = (1/N) · ∑ᵢ [argmax(zᵢ) = yᵢ]accuracy = (1/N) · ∑ᵢ [argmax(zᵢ) = yᵢ]
burada:
  • argmax(zᵢ)i-ci nümunə üçün ən böyük logitin sinfi — proqnoz
  • [ … ]şərt doğrudursa 1, əks halda 0

Konvolyusiya neyron şəbəkələri (CNN)

Dərsə keç
x′ = (x − μ) / σx′ = (x − μ) / σ
burada:
  • x[0; 1] aralığındakı piksel qiyməti
  • μ, σkanalın öyrədici dəst üzrə orta qiyməti və standart meyli (MNIST üçün 0,1307 və 0,3081)

Normallaşdırmadan sonra girişlər təxminən sıfır ətrafında və vahid miqyasdadır — bu, qradiyent enişini sürətləndirir.

Y[i, j] = ∑ₘ ∑ₙ X[i + m, j + n] · K[m, n] + b
burada:
  • Xgiriş şəkli (və ya əvvəlki qatın xəritəsi)
  • KK × K ölçülü filtr — öyrədilən çəkilər
  • bfiltrin sürüşməsi
  • Y[i, j]əlamətlər xəritəsinin (i, j) elementi

Bir kanal üçün 2D konvolyusiya. Bir neçə giriş kanalı olanda cəm kanallar üzrə də aparılır.

O = ⌊(W − K + 2P) / S⌋ + 1O = ⌊(W − K + 2P) / S⌋ + 1
burada:
  • Wgirişin eni (və ya hündürlüyü), piksel
  • Kfiltrin ölçüsü
  • Pdoldurma (padding): kənarlara əlavə olunan sıfır piksellər
  • Saddım (stride): filtr neçə piksel sürüşür
  • Oçıxışın eni; ⌊ ⌋ aşağı yuvarlaqlaşdırmadır

Çıxış ölçüsü düsturu. Hündürlük üçün də eynidir. Pooling üçün adətən P = 0 və S = K götürülür.

params = (K · K · Cin + 1) · Cout
burada:
  • Cin, Coutgiriş və çıxış kanallarının sayı

Konvolyusiya qatının parametrləri şəklin ölçüsündən asılı deyil — çəkilər bütün mövqelərdə paylaşılır.

Transformerlər və böyük dil modelləri

Dərsə keç
Q = X · WQ K = X · WK V = X · WV
burada:
  • X(T, d) ölçülü tokenlərin vektorları
  • WQ, WK, WVöyrədilən (d, dₖ) matrislər
Attention(Q, K, V) = softmax(Q · Kᵀ / √dₖ) · VAttention(Q, K, V) = softmax(Q · Kᵀ / √dₖ) · V
burada:
  • Q · Kᵀ(T, T) ballar matrisi: hər sorğunun hər açarla oxşarlığı
  • √dₖmiqyas əmsalı, dₖ — açar vektorunun ölçüsü
  • softmaxhər sətirdə tətbiq olunur: diqqət çəkiləri müsbətdir və cəmi 1-dir
  • Vqiymətlər; nəticə onların çəkili ortasıdır

Miqyaslı skalyar hasil diqqəti (scaled dot-product attention).

MultiHead(X) = Concat(head₁, …, headₕ) · WO, headᵢ = Attention(X·WQⁱ, X·WKⁱ, X·WVⁱ)
burada:
  • hbaşların sayı; hər başın ölçüsü d / h-dir
  • WObaşların birləşmiş çıxışını qarışdıran (d, d) matris

Hər baş fərqli münasibətə «diqqət yetirməyi» öyrənə bilər: biri qrammatik əlaqələrə, digəri əvəzliyin kimə aid olduğuna. Parametrlər: WQ, WK, WV, WO üçün 4 · d² çəki və 4 · d sürüşmə.

PE(pos, 2i) = sin(pos / 10000^(2i/d)) PE(pos, 2i + 1) = cos(pos / 10000^(2i/d))PE(pos, 2i) = sin(pos / 10000^(2i/d)) PE(pos, 2i + 1) = cos(pos / 10000^(2i/d))
burada:
  • postokenin mövqeyi: 0, 1, 2, …
  • ivektor komponentləri cütünün nömrəsi; kiçik i — sürətli, böyük i — yavaş rəqs
  • dembeddinqin ölçüsü
L = −(1/T) · ∑ₜ₌₁ᵀ ln p(xₜ₊₁ | x₁, …, xₜ) PPL = eᴸL = −(1/T) · ∑ₜ₌₁ᵀ ln p(xₜ₊₁ | x₁, …, xₜ) PPL = eᴸ
burada:
  • xₜmətndəki t-ci token
  • p(xₜ₊₁ | x₁, …, xₜ)əvvəlki tokenlərə görə modelin düzgün növbəti tokenə verdiyi ehtimal
  • PPLperpleksiya; nə qədər kiçikdirsə, model bir o qədər yaxşıdır
pᵢ = exp(zᵢ / τ) / ∑ⱼ exp(zⱼ / τ)pᵢ = exp(zᵢ / τ) / ∑ⱼ exp(zⱼ / τ)
burada:
  • τtemperatur: τ < 1 — daha əmin və təkrarlanan, τ > 1 — daha müxtəlif və riskli mətn

Temperaturlu softmax ilə növbəti tokenin seçilməsi.