Məzmuna keç
Educora
Universitet25 dəq36 / 42

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

Maşın öyrənməsinin növləri, əlamətlər və etiketlər, verilənlərin bölünməsi, itki funksiyaları, qradiyent enişi, həddən artıq uyğunlaşma və sistematik xəta–dispersiya balansı — NumPy ilə işlək nümunələrlə.

Özünü yoxla
Bu dərsdə öyrənəcəksən
  • Nəzarətli, nəzarətsiz və möhkəmləndirici öyrənməni fərqləndirmək, əlamət və etiket anlayışlarını izah etmək
  • MSE və çarpaz entropiya itkilərini əl ilə və NumPy ilə hesablamaq
  • Qradiyent enişi ilə xətti reqressiya modelini öyrətmək və öyrənmə sürətinin təsirini izah etmək
  • Öyrədici və validasiya itkilərinə baxaraq həddən artıq və zəif uyğunlaşmanı aşkar etmək

Təsəvvür et ki, Bakıda mənzilin qiymətini onun sahəsinə, otaq sayına və rayonuna görə proqnozlaşdıran proqram yazmalısan. Bütün qaydaları əl ilə yazmaq mümkün deyil: «əgər Nəsimi rayonudursa və sahə 80 m²-dən böyükdürsə...» kimi şərtlərin sonu görünmür. Maşın öyrənməsi başqa yol təklif edir: kompüterə satılmış mənzillərin minlərlə nümunəsini veririk, o isə qaydanı verilənlərdən özü öyrənir. Bu dərs bütün modulun, yəni neyron şəbəkələrin, CNN-lərin və transformerlərin riyazi bünövrəsidir.

Tərif
Maşın öyrənməsi

Proqramın hansısa tapşırıqdakı nəticəsi (ölçülən keyfiyyəti) təcrübə — yəni verilənlər — artdıqca yaxşılaşırsa, deyirik ki, proqram öyrənir. Model parametrləri olan funksiyadır, öyrənmə isə bu parametrlərin verilənlərə görə seçilməsidir.

Öyrənmənin növləri, əlamətlər və etiketlər

Hər nümunə əlamətlər (features) vektoru x ilə təsvir olunur: mənzil üçün sahə, otaq sayı, mərtəbə. Proqnozlaşdırmaq istədiyimiz kəmiyyət etiketdir (label) y: qiymət. n nümunə və d əlamət olanda verilənlər n × d ölçülü X matrisi və uzunluğu n olan y vektoru kimi saxlanılır. Etiket ədəddirsə, tapşırıq reqressiya, sinifdirsə (spam / spam deyil) — təsnifat adlanır.

NövVerilənlərMəqsədNümunə
Nəzarətli öyrənmə (supervised)(x, y) cütləriyeni x üçün y-i proqnozlaşdırmaqmənzilin qiyməti, spam filtri, rentgen şəklində xəstəliyin tapılması
Nəzarətsiz öyrənmə (unsupervised)yalnız x, etiket yoxdurverilənlərdəki quruluşu tapmaqmüştəriləri qruplara bölmək (klasterləşdirmə), ölçünün azaldılması
Möhkəmləndirici öyrənmə (reinforcement)mühitlə qarşılıqlı təsir və mükafatlarümumi mükafatı maksimuma çatdırmaqoyun oynayan agent, yeriməyi öyrənən robot

Verilənlərin bölünməsi: öyrədici, validasiya və test dəstləri

Modelin əsl yoxlaması onun görmədiyi verilənlərdir. Buna görə verilənləri təsadüfi qarışdırıb üç hissəyə bölürük (tipik nisbət 70/15/15 və ya 80/10/10):

  • Öyrədici dəst (training set) — parametrlər yalnız bunun üzərində öyrədilir.
  • Validasiya dəsti — hiperparametrləri (öyrənmə sürəti, modelin ölçüsü) seçmək və öyrənməni vaxtında dayandırmaq üçün.
  • Test dəsti — ən sonda, bir dəfə: modelin real dünyadakı keyfiyyətinin qərəzsiz qiymətləndirilməsi.
Python
import numpy as np

rng = np.random.default_rng(42)
idx = rng.permutation(10)
train, val, test = idx[:6], idx[6:8], idx[8:]
print('train:', train)
print('val:  ', val)
print('test: ', test)
▸ Gözlənilən nəticə
train: [5 6 0 7 3 2]
val:   [4 9]
test:  [1 8]
10 nümunənin indekslərini qarışdırıb 60/20/20 nisbətində bölürük. Toxum (seed) sabit olduğundan bölgü hər dəfə eyni alınır.

İtki funksiyaları

Modelin nə qədər səhv etdiyini bir ədədlə ölçmək lazımdır — bu ədədi itki funksiyası L verir. Öyrənmə itkini minimuma endirən parametrləri axtarmaqdır. Reqressiyada adətən orta kvadratik xəta, təsnifatda isə çarpaz entropiya işlədilir.

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.

Nümunə 1: itkiləri əl ilə hesablayaq

a) Həqiqi qiymətlər y = (3; 5; 2,5), proqnozlar ŷ = (2,5; 5; 3,5). MSE-ni tap.
b) Şəkil təsnifatçısı «pişik, it, quş» sinifləri üçün p = (0,7; 0,2; 0,1) ehtimallarını verib. Şəkildə pişik olduqda və quş olduqda çarpaz entropiyanı tap.

Həllini göstər
a) Səhvlər: 0,5; 0; −1. Kvadratları: 0,25; 0; 1. Cəmi 1,25.
MSE = 1,25 / 3 ≈ 0,4167.
b) Pişik: CE = −ln 0,7 ≈ 0,357 — model əmin idi və haqlı çıxdı, itki kiçikdir.
Quş: CE = −ln 0,1 ≈ 2,303 — düzgün sinfə cəmi 10% verilib, itki 6 dəfədən çox böyükdür.
Python
import numpy as np

y = np.array([3.0, 5.0, 2.5])
y_hat = np.array([2.5, 5.0, 3.5])
mse = np.mean((y - y_hat) ** 2)
print(f'MSE = {mse:.4f}')

p = np.array([0.7, 0.2, 0.1])
print(f'CE (true class 0) = {-np.log(p[0]):.4f}')
print(f'CE (true class 2) = {-np.log(p[2]):.4f}')
▸ Gözlənilən nəticə
MSE = 0.4167
CE (true class 0) = 0.3567
CE (true class 2) = 2.3026

Qradiyent enişi və öyrənmə sürəti

Dumanlı dağda aşağı enmək istədiyini təsəvvür et: ətrafı görmürsən, amma ayağının altındakı yamacı hiss edirsən. Ən dik eniş istiqamətində kiçik addım atırsan və bunu təkrarlayırsan. Qradiyent ∇L itkinin ən sürətlə artdığı istiqaməti göstərir, deməli, onun əksinə getmək lazımdır. Addımın uzunluğunu öyrənmə sürəti η müəyyən edir.

θ ← θ − η · ∇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.

Xətti reqressiyada ŷᵢ = w · xᵢ + b və L = MSE-dir. Zəncir qaydası ilə törəmə alsaq, (ŷᵢ − yᵢ)² ifadəsinin w-yə görə törəməsi 2(ŷᵢ − yᵢ) · xᵢ, b-yə görə isə 2(ŷᵢ − yᵢ) olur. Bütün nümunələr üzrə orta qiymət götürürük:

∂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
Nümunə 2: bir addım qradiyent enişi

Model ŷ = w · x, yeganə nümunə (x = 2, y = 6), başlanğıc w = 1, L = (ŷ − y)². η = 0,1 və η = 0,3 üçün bir addım at və yeni itkini tap.

Həllini göstər
ŷ = 2, L = (2 − 6)² = 16.
dL/dw = 2(ŷ − y) · x = 2 · (−4) · 2 = −16.
η = 0,1: w = 1 − 0,1 · (−16) = 2,6; ŷ = 5,2; L = 0,64 — itki 25 dəfə azaldı.
η = 0,3: w = 1 + 4,8 = 5,8; ŷ = 11,6; L = 31,36 — minimumun (w = 3) üstündən tullandıq və itki artdı!
Burada L(w) = 4(w − 3)², ikinci törəmə 8-dir; kvadratik itki üçün eniş yalnız η < 2/8 = 0,25 olanda yığılır.

İndi eyni ideyanı 50 nöqtəli sintetik verilənlərə tətbiq edək. Verilənlər y = 3x + 4 düzxəttindən küy əlavə etməklə yaradılıb; model w və b-ni heç nə bilmədən, sıfırdan başlayaraq tapmalıdır. Kodu işə sal — itki qrafiki avtomatik göstəriləcək.

Python
import numpy as np
import matplotlib.pyplot as plt

rng = np.random.default_rng(42)
x = rng.uniform(0, 5, size=50)
y = 3 * x + 4 + rng.normal(0, 1, size=50)

w, b, lr = 0.0, 0.0, 0.05
losses = []
for epoch in range(500):
    error = (w * x + b) - y
    losses.append(np.mean(error ** 2))
    dw = 2 * np.mean(error * x)
    db = 2 * np.mean(error)
    w -= lr * dw
    b -= lr * db
    if epoch % 100 == 0:
        print(f'epoch {epoch:3d}  loss {losses[-1]:.4f}')

print(f'w = {w:.3f}, b = {b:.3f}')
plt.plot(losses)
plt.yscale('log')
plt.xlabel('epoch')
plt.ylabel('MSE loss')
plt.show()
▸ Gözlənilən nəticə
epoch   0  loss 158.9249
epoch 100  loss 0.6019
epoch 200  loss 0.5740
epoch 300  loss 0.5735
epoch 400  loss 0.5735
w = 3.024, b = 3.769
Model w ≈ 3,02 və b ≈ 3,77 tapdı. Bunlar dəqiq 3 və 4 deyil, çünki küylü 50 nöqtə üçün ən yaxşı düzxətt (ən kiçik kvadratlar həlli) məhz budur; itki də 0-a deyil, küyün səviyyəsinə yaxınlaşır.

Praktikada qradiyent hər addımda bütün verilənlər üzrə deyil, B ölçülü kiçik paket (mini-batch, məsələn, B = 32) üzrə hesablanır. Buna stoxastik qradiyent enişi (SGD) deyilir: addımlar daha küylü, amma çox ucuzdur, küy isə bəzən pis lokal minimumlardan çıxmağa kömək edir.

Həddən artıq uyğunlaşma, zəif uyğunlaşma və sistematik xəta–dispersiya

Çox sadə model verilənlərdəki qanunauyğunluğu tuta bilmir — bu zəif uyğunlaşmadır (underfitting). Çox mürəkkəb model isə qanunauyğunluqla birlikdə təsadüfi küyü də əzbərləyir: öyrədici dəstdə səhvi demək olar ki, sıfırdır, yeni verilənlərdə isə böyükdür — bu həddən artıq uyğunlaşmadır (overfitting). Aşağıdakı kodda sin(2πx) funksiyasından 15 küylü nöqtəyə müxtəlif dərəcəli çoxhədlilər uyğunlaşdırılır:

Python
import numpy as np
from numpy.polynomial import Polynomial

rng = np.random.default_rng(1)
x_train = np.sort(rng.uniform(0, 1, 15))
x_val = np.sort(rng.uniform(0, 1, 15))
f = lambda x: np.sin(2 * np.pi * x)
y_train = f(x_train) + rng.normal(0, 0.2, 15)
y_val = f(x_val) + rng.normal(0, 0.2, 15)

for deg in [1, 3, 9, 12]:
    model = Polynomial.fit(x_train, y_train, deg)
    train_mse = np.mean((model(x_train) - y_train) ** 2)
    val_mse = np.mean((model(x_val) - y_val) ** 2)
    print(f'degree {deg:2d}: train {train_mse:.3f}, validation {val_mse:.3f}')
▸ Gözlənilən nəticə
degree  1: train 0.264, validation 0.235
degree  3: train 0.032, validation 0.037
degree  9: train 0.008, validation 1.894
degree 12: train 0.005, validation 67.532
Dərəcə 1 — zəif uyğunlaşma (hər iki itki böyükdür). Dərəcə 3 — ən yaxşısı. Dərəcə 9 və 12 — öyrədici itki azalmağa davam edir, validasiya itkisi isə partlayır.
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.

Öyrədici itkiValidasiya itkisiDiaqnozNə etməli
böyükböyükzəif uyğunlaşma (böyük sistematik xəta)daha böyük model, yeni əlamətlər, daha uzun öyrətmə
kiçikxeyli böyükhəddən artıq uyğunlaşma (böyük dispersiya)daha çox verilən, requlyarlaşdırma, erkən dayandırma, sadə model
kiçikona yaxınyaxşı uyğunlaşmatest dəstində bir dəfə yoxla
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.

Əsas fikirlər

  • Nəzarətli öyrənmə (x, y) cütlərindən öyrənir; etiket ədəddirsə reqressiya, sinifdirsə təsnifatdır.
  • Öyrədici dəst parametrlər, validasiya dəsti hiperparametrlər üçündür; test dəstinə yalnız ən sonda baxılır.
  • Reqressiyada MSE = (1/n)∑(y − ŷ)², təsnifatda çarpaz entropiya CE = −ln pₜ işlədilir.
  • Qradiyent enişi: θ ← θ − η · ∇L; η çox böyük olanda itki artır, çox kiçik olanda öyrənmə ləngiyir.
  • Öyrədici itki kiçik, validasiya itkisi böyükdürsə — həddən artıq uyğunlaşma; hər ikisi böyükdürsə — zəif uyğunlaşma.

Özünü yoxla

10 sual. Hər düzgün cavab XP qazandırır.

1 / 10
Hansı tapşırıq nəzarətli öyrənmə ilə həll olunan reqressiyadır?