İçeriğe geç
6/3030 bölümden 6. bölüm

Eğitmek ve Genellemesini Sağlamak

Kaybı ln 2’den hiç kıpırdamayan altı katmanlı ağ, ölçüm ölçüm düzeltiliyor. Sonra double descent: 40 noktada 5.000 parametre.

Bu sayfada

The network from Bölüm 5 çalışıyor. Dokuz parametresi var, XOR öğreniyor ve gradyanları PyTorch ile on altı ondalık basamağa kadar uyuşuyor.

Onu altı katman derinliğine çıkarınca öğrenmeyi tamamen bırakıyor. Yavaşça değil — tamamen. İki spiralli bir sınıflandırma probleminde, 5000 adım eğitilmiş altı katmanlı bir ağ şöyle:

TEXT
step    1: loss 0.693147
step 5000: loss 0.693147
accuracy: 50.0 %

Bu sayı rastgele değil. ln2=0.693147\ln 2 = 0.693147, her şey için 0.50.5 olasılık çıktısı veren bir modelin ikili çapraz entropisidir; dengeli bir veri kümesinde 50 %, yazı tura atmaktır. Beş bin adımdan sonra ağ tek bir basamak bile oynamadı. Hiçbir şey çökmedi, hiçbir uyarı gelmedi ve gradyanlar hâlâ tamamen doğru.

Bu bölüm, çalışan bir ağ ile iş gören bir ağ arasındaki boşlukla ilgili. Farklı konular gibi görünen ama aynı iş olan iki yarısı var: kaybı aşağı indirmek ve bunu modelin hiç görmediği veride de aşağı indirmek.

Tahmin etmek yerine bakarak başla. Bir input batch’ini ağdan geçir, her katmandaki aktivasyonların standart sapmasını ve sonra ağırlık gradyanlarının standart sapmasını yazdır:

profile.pyPYTHON
def profile(model, x):
    h = x
    for layer in model:
        h = layer(h)
        if isinstance(layer, (nn.Tanh, nn.ReLU)):
            print(f"activation std: {h.std().item():.4f}")
    model(x).sum().backward()
    for p in model.parameters():
        if p.dim() == 2:
            print(f"gradient std: {p.grad.std().item():.2e}")

Üç başlatma, aynı mimari, altı katman tanh\tanh:

başlatmaaktivasyon std, katmanlar 1→6
normal, std 0.010.010.0145 · 0.0016 · 0.0002 · 0.0000 · 0.0000 · 0.0000
normal, std 110.6573 · 0.9296 · 0.9585 · 0.9634 · 0.9637 · 0.9625
Xavier0.1579 · 0.1493 · 0.1353 · 0.1333 · 0.1325 · 0.1403
başlatmagradyan std, ilk katman → son
normal, std 0.010.013.20e-06 · 4.97e-07 · … · 6.40e-06
normal, std 111.94e+03 · 2.28e+02 · 1.22e+02 · 4.43e+01 · 1.85e+01 · 7.30e+00
Xavier2.31e+00 · 4.50e-01 · 4.26e-01 · 3.89e-01 · 4.39e-01 · 4.73e-01

İlk satır yukarıdaki ağ ve yavaş öğrenmiyor — geriye sinyal kalmamış. Dördüncü katmana gelindiğinde aktivasyon standart sapması dört ondalık basamakta sıfıra underflow etmiş. Her input aynı output’u üretiyor, output sabit ve sabitin gradyanı hiçbir şeydir. Ağırlıklar “güvenli olsun” diye küçük başlatılmıştı; küçük olmak ölümcül oldu.

İkinci satır bunun ters yöndeki hatası ve sezgiye aykırı olduğu için anlamaya değer. Aktivasyonlar sağlıklı görünüyor — 0.96 civarı — ama bu, sınırına çivilenmiş, doymuş tanh\tanh; tam da Bölüm 5’in gradyanda neredeyse on bin kat kayıp ölçtüğü rejim. Yine de gradyanlar devasa: ilk katmanda 1940. İkisi aynı anda doğru. Her geri adım WW^\top ile çarpar ve birim varyanslı 128 input ile bu faktörün kazancı yaklaşık 12811\sqrt{128} \approx 11 olur; bu da doymuş tanh\tanh kaynaklı küçülmeyi bastırır. Gradyanlar geriye doğru geometrik olarak büyür. Bu exploding gradient’tir ve gerçek bir eğitim koşusunda birkaç adım içinde nan kayıp değerleri üretir.

Üçüncü satır istediğin şeydir: aktivasyonlar derinlik boyunca kabaca sabit ölçekte, gradyanlar derinlik boyunca kabaca sabit ölçekte. Hiçbir şey ölmez, hiçbir şey patlamaz.

İyi başlatma, sıfırıncı adımda ölçeği düzeltir. Onu sabit tutmaz: ağırlıklar hareket eder ve beş bininci adıma gelindiğinde dikkatli varyans argümanı artık geçerli değildir.

Normalizasyon katmanları ölçeği sürekli olarak dayatır. Bir aktivasyon vektörü verildiğinde ortalamayı çıkar, standart sapmaya böl, sonra öğrenilmiş bir ölçek γ\gamma ve kaydırma β\beta uygula; böylece katman, istediği şeyin bu olduğu anlaşılırsa normalizasyonu geri alabilir:

h^=hμσ2+ϵ,y=γh^+β\hat{h} = \frac{h - \mu}{\sqrt{\sigma^2 + \epsilon}}, \qquad y = \gamma\hat{h} + \beta

Asıl soru yalnızca neyin üzerinden ortalama aldığındır. Batch normalizasyon3, μ\mu ve σ\sigma değerlerini batch boyutu boyunca alır; feature başına bir istatistik. Layer normalizasyon4 ise bunları feature’lar boyunca alır; örnek başına bir istatistik.

Bu seçim küçük görünür ve aşağı akıştaki neredeyse her şeyi belirler:

BatchNorm, her örneğin output’unu, batch’inde tesadüfen bulunan diğer örneklere bağımlı kılar. Eğitim sırasında bu hafif bir düzenleyicidir. Inference sırasında batch yoktur, bu yüzden eğitim sırasında toplanan istatistiklerin hareketli ortalamasını tutmak zorundadır — yani katman eğitim ve değerlendirme modunda farklı davranır ve mod değiştirmeyi unutmak alandaki en yaygın bug’lardan biridir. Ayrıca küçük batch’lerde bozulur ve değişken uzunluklu dizilerle hantaldır; çünkü “40. pozisyonda batch ortalaması” o uzunluğa tesadüfen ulaşan kaç dizi varsa onlardan hesaplanır.

LayerNorm her örneği kendi başına normalize eder. Batch bağımlılığı yok, hareketli istatistik yok, eğitim ve inference sırasında aynı davranış, batch boyutuna kayıtsız, dizi uzunluğuna kayıtsız. Tek bir kullanıcı için her seferinde bir token üretmeye başladığında — Bölüm 13’ün vardığı yer — bu özelliklerin her biri hoş bir ayrıntı değil, gerekliliktir.

Bu yüzden LayerNorm’u Bölüm 9’da değişmeden yeniden göreceksin: transformer bloğu onu kullanır ve soyut olarak daha iyi çalıştığı için değil, sağ sütundaki nedenlerden dolayı kullanır.

Tek seferde bir şeyi düzeltmek, yani asıl skill

Bölüme bağlantı: Tek seferde bir şeyi düzeltmek, yani asıl skill

Ölü ağ için dört aday düzeltme: Xavier başlatması, LayerNorm, residual bağlantılar ve SGD yerine Adam. Cazip olan, dördünü birden uygulayıp devam etmektir. Bunu yaparsan hangisinin önemli olduğunu asla bilemezsin ve bir sonraki sefer yöntemin olmaz — yalnızca ritüelin olur.

Bu yüzden tek tek uygula. Aynı seed, aynı veri, aynı mimari, 800 adım:

ne eklendison kayıpdoğruluk
hiçbir şey0.693150.0 %
Xavier başlatması0.569260.4 %
LayerNorm0.623061.5 %
residual bağlantılar0.665156.6 %
Adam0.678758.7 %
dördü birden0.0000100.0 %

Bu tabloyu gece 2’de okuyacağın gibi oku; varacağın sonuç şudur: tek başına hiçbir şey çalışmıyor, her şey birlikte çalışıyor, demek ki deep learning simya. Bu sonuç yanlış ve nedenini bulmak bu bölümdeki en faydalı şey.

Her koşuya altı kat bütçe ver — 800 yerine 5000 adım — ve tablo tamamen değişir:

ne eklendi5000’de son kayıpdoğruluk
hiçbir şey0.693150.0 %
Xavier başlatması0.0007100.0 %
LayerNorm0.0002100.0 %
residual bağlantılar0.665356.7 %
Adam0.690853.4 %
Xavier + Adam0.0000100.0 %
Xavier + LayerNorm0.0001100.0 %

Artık resim net ve bu bir ritüel değil, teşhis.

Tek başına başlatma düzeltir. Tek başına normalizasyon düzeltir. Her biri gerçek hastalığı — ileri sinyalin sıfıra çökmesini — hedefler ve ikisi de yeterlidir. 800 adımda yalnızca kısmi başarı gibi görünmüşlerdi; çünkü problemi çözmüş ama hâlâ çukurdan çıkıyorlardı.

Residual bağlantılar ve Adam hiçbir bütçede bunu düzeltmez. Kötü oldukları için değil, farklı bir hastalığı tedavi ettikleri için. Residual bağlantı, gradyana tıkayan katmanın etrafından bir yol verir; problem gradyansa bu çok değerlidir, ama ileri sinyal zaten sıfırsa hiçbir işe yaramaz, çünkü ölü katmanın etrafındaki kestirme de ölü bir değer taşır. Adam, her parametrenin adımını kendi gradyan geçmişine göre yeniden ölçekler; gradyanlar çok farklı büyüklüklerde olduğunda yardımcı olur ve output’u input’una bağlı olmayan bir ağı diriltemez.

Ve “hiçbir şey” beş bin adımdan sonra hâlâ tam olarak 0.6931. 0.6929 değil. Yavaş değil; ölü. Bu ayrım artık daha önce görünmediği kadar görünür, çünkü karşılaştırmak için bir düzeltmenin işe yaradığını söyleyen satırın var.

Buradan sonra bu kurs PyTorch kullanıyor. Bunun ilan edilmek yerine hak edilmesi gerekir; bu yüzden, onun yaptıklarının senin zaten yapmayı bildiğin kısmı tam olarak şöyle.

Optimizer, gradyanları parametre güncellemelerine dönüştüren kuraldır. Düz gradient descent gradyanı kullanır. Momentum, gradyanın hareketli ortalamasını kullanır; bu da gürültüyü yumuşatır ve tutarlı kalan yönlerde hız biriktirir:

optim_by_hand.pyPYTHON
v = beta * v + p.grad          
p -= lr * v                    

Adam5 iki hareketli ortalama tutar — gradyanın ve gradyanın karesinin — ve birini diğerinin kareköküne böler; böylece her parametre kendi yakın dönem gradyan büyüklüğüne göre ölçeklenmiş bir adım alır:

optim_by_hand.pyPYTHON
m = b1 * m + (1 - b1) * g          # mean of the gradient          
v = b2 * v + (1 - b2) * g * g      # mean of the squared gradient  
m_hat = m / (1 - b1 ** t)          # bias correction: both averages start at zero
v_hat = v / (1 - b2 ** t)
p -= lr * m_hat / (v_hat.sqrt() + eps)   

On satır. İkisini de aynı problemde 50 adım boyunca torch.optim karşısında çalıştır:

TEXT
SGD+momentum   by hand [2.7781870365142822, -1.0304985046386719]
               torch   [2.7781870365142822, -1.0304983854293823]   max |diff| = 1.19e-07
Adam           by hand [0.4893140196800232, -0.46317872405052185]
               torch   [0.48931416869163513, -0.46317875385284424]   max |diff| = 1.49e-07

Float32 hassasiyetinde aynı. torch.optim.Adam bu beş satırdır; üstüne uç durumlar için onlarca yıllık özen ve bir C++ kernel’i. Buradan sonra yaptığın takas bu: anlamak yerine sihir değil, zaten yazdığın satırlar karşılığında hız.

Adam’ın olağan açıklaması “parametre başına adaptive learning rate”tir; bu bir neden değil, betimlemedir. Neden geometridir ve ölçülebilir.

Eğriliği yönler arasında farklı olan bir kayıp al: bir yönde dik, diğerinde sığ. SGD’nin tek bir global learning rate’i vardır; bu yüzden en dik yönde kararlı olacak kadar küçük bir değer seçmek zorundadır — ve bu değer sığ yönde fazlasıyla küçük kalır, ilerleme sürünür. gradient descent’in dar bir vadide zikzak çizerek aşağı inmesini gösteren klasik resim bu yüzden oluşur.

İki eğrilik oranı, üç optimizer, 300 adım ve kimse dezavantajlı olmasın diye her optimizer’a bir sweep’ten çıkan en iyi learning rate:

eğrilik oranıSGDSGD + momentumAdam
10 : 1hata 0.000002hata 0.000000hata 0.000000
1000 : 1hata 1.925485hata 0.001432hata 0.000000
(1000:1)’de diverge etti8 orandan 4’ü8 orandan 4’ü6 orandan 0’ı

On oranında her şey çalışır ve tartışacak bir şey yoktur. Binde ise düz SGD denenen hiçbir learning rate’te cevaba ulaşamaz — en iyi sonucu hâlâ 1.93 hatadır — ve oranların yarısında doğrudan diverge eder. Adam hedefin tam üstüne iner ve hiçbirinde diverge etmez.

Son sütun, Adam’ın varsayılan olmasının pratik nedenidir. Adam’ın daha iyi çözümler bulması değil; iyi koşullandırılmış problemlerde ayarlanmış SGD çoğu zaman ona yetişir veya onu geçer. Mesele, Adam’ın seçtiğin learning rate’e çok daha az hassas olmasıdır ve gerçek ağlarda milyonlarca parametre boyunca eğrilik oranları binden çok daha kötüdür.

Buraya ait iki parça daha var ve ikisi de tek satır. Gradient clipping, normu bir eşiği aştığında gradyan vektörünü yeniden ölçekler; bu da teşhis tablosundaki “kayıp aniden devasa bir değere sıçrar” satırını olay olmaktan çıkarır. Ve learning rate schedules: ilk birkaç yüz adımda sıfıra yakından başlayan kısa bir warmup, çünkü Adam’ın varyans tahminleri birkaç gradyan görmeden çöptür ve çöp üzerinde atılan tam boy bir adım başlatmayı mahvedebilir; sonra sıfıra doğru cosine decay, çünkü bir koşuyu başladığın adım boyutuyla bitirmek minimuma yerleşmek yerine onun etrafında titremek demektir.

İkinci yarı: kusursuz uyan ve hiçbir şey tahmin etmeyen model

Bölüme bağlantı: İkinci yarı: kusursuz uyan ve hiçbir şey tahmin etmeyen model

Şimdiye kadarki her şey kaybı düşürmekle ilgiliydi. Şimdi daha zor yarı geliyor; çünkü kaybın düşmesi hedef değildir — hedefin proxy’sidir ve proxy belirli, meşhur bir şekilde başarısız olur.

Biraz gürültülü pürüzsüz bir fonksiyondan on iki nokta. Artan derecelerde polinomlar uydur:

derecetrain RMSEtest RMSE
10.7644990.6985
30.2526050.3031
50.1644370.1568
90.0889600.2347
110.0000001.2094

12 nokta üzerinden derece 11, her birinden tam olarak geçer — train hatası altı ondalık basamakta sıfır — ve görmediği veride derece 5’ten sekiz kat daha kötüdür. Derece 3 ve derece 11’den, eğitim aralığının hemen dışında x=3.25x = 3.25 noktasında tahmin yapmasını iste:

TEXT
degree  3: predicts   -1.053   (truth -0.012)
degree 11: predicts  +61.224   (truth -0.012)

Cevabın yaklaşık sıfır olduğu yerde altmış bir. Model fonksiyonu öğrenmedi; on iki noktayı öğrendi ve aralarında aritmetiğin gerektirdiği her şeyi yapıyor.

Bu overfitting’dir; tersi — eğriyi hiç temsil edemeyen ve her yerde kötü olan derece 1 — underfitting’dir. Klasik anlatım, bir modelin beklenen hatasını üç parçaya ayırır: bias, modelin gerçeği temsil edemeyecek kadar katı olmasından kaynaklanan hata; variance, modelin bu belirli örnekteki gürültüyü kovalayacak kadar esnek olmasından kaynaklanan hata; ve indirgenemez gürültü, ki hiçbir şey onu düzeltmez. Basit modeller bias’lıdır, esnek modeller yüksek variance’lıdır ve klasik reçete ortadaki tatlı noktayı bulmaktır — yukarıdaki tabloda derece 5.

Standart araçların hepsi variance terimine saldırır:

  • L2 regularisation (weight decay), kayba λw2\lambda \lVert w \rVert^2 ekler; ağırlıkları sıfıra doğru çeker ve fonksiyonu daha pürüzsüz yapar. Yukarıdaki tabloda derece 11’in en büyük katsayısı hasarı verir; büyüklüğü cezalandırmak bunu etkisizleştirir.
  • L1 bunun yerine λwi\lambda \sum |w_i| ekler. Fark kozmetik değildir: L2’nin gradyanı ağırlıkla orantılıdır, bu yüzden ağırlık küçüldükçe o da küçülür ve sıfıra varamadan yaklaşır; L1’in gradyanı ise sabit ±λ\pm\lambda’dir ve sonuna kadar itmeye devam eder. Bu yüzden L1 tam olarak sıfır olan ağırlıklar üretir — feature seçer. L2 küçük ağırlıklar üretir. Pürüzsüzlük istediğinde L2, seyreklik istediğinde L1 kullan.
  • Dropout7, her eğitim adımında aktivasyonların rastgele bir alt kümesini sıfırlar; böylece hiçbir birim belirli başka bir birimin varlığına güvenemez.
  • Early stopping, validation kaybını izler ve yukarı döndüğünde durur.
  • Data augmentation, sahip olduğun örneklerden daha fazla eğitim örneği üretir; bu problemi kaynağından hedefler: overfitting, parametre fazlalığı kadar veri eksikliğidir.
  • Cross-validation, veriyi kk parçaya böler ve kk kez eğitir; ayrı bir held-out set ayıracak kadar verin olmadığında test hatasının güvenilir bir tahminini satın alır.

Double descent, ya da önceki bölüm neden hikâyenin tamamı değil

Bölüme bağlantı: Double descent, ya da önceki bölüm neden hikâyenin tamamı değil

Şimdi resmi bozan gerçek.

Bias-variance hikâyesi, tatlı noktanın ötesinde daha fazla parametrenin daha kötü genelleme anlamına geldiğini söyler. Modern dil modelleri, gördükleri veri için klasik kuralların izin verdiğinden çok daha fazla parametreye sahiptir ve mükemmel geneller. Bu iki ifade de doğrudur ve onları uzlaştırmak bu bölümdeki en faydalı şeydir.

Kırk eğitim noktası, yirmi boyutlu input’lar, rastgele ReLU feature’lar ve feature sayısı PP, 2’den 5000’e taranıyor — sığan birçok çözüm olduğunda minimum-norm çözüm seçilerek:

PPP/nP/ntrain RMSEtest RMSEw\lVert w \rVert
100.250.88221.25201.89
200.500.59621.16342.59
300.750.38961.53234.15
380.950.17693.716310.25
401.000.00005.814014.83
421.050.00003.16239.35
601.500.00001.10582.78
2005.000.00000.66380.98
150037.500.00000.58590.33
5000125.000.00000.56640.18

Üç parça halinde oku. P/n=0.5P/n = 0.5 değerine kadar klasik hikâye tam olarak geçerli: hata düşer, sonra yükselmeye başlar. P=n=40P = n = 40 noktasında — modelin her eğitim noktasından geçmeye tam yetecek kadar parametresi olduğu interpolation threshold — test hatası 5.81 ile zirve yapar, küçük modelden beş kat kötüdür. Bu zirve klasik uyarıdır ve gerçektir.

Sonra yeniden iner. Ve inmeye devam eder; P=5nP = 5n ötesine, P=37nP = 37n ötesine, ta P=125nP = 125n noktasına kadar. Orada 0.5664 test hatası, en iyi under-parameterised modelin ulaştığından bile daha iyidir. 40 noktaya uydurulmuş 5000 parametreli model, tablodaki en iyi modeldir.

Bu double descent’tir,89 ve mekanizma son sütunda görünür. P>nP > n olduktan sonra eğitim verisine tam olarak uyan sonsuz sayıda parametre ayarı vardır ve hangisini elde ettiğin nasıl seçtiğine bağlıdır. Minimum-norm çözüm en küçüğü seçer ve w\lVert w \rVert bunun ne anlama geldiğini gösterir: eşikte 14.83 ile zirve yapar — çünkü orada tam uyan tek çözüm vardır ve ne kadar uç olursa olsun ona mahkûmsundur — sonra PP büyüdükçe monoton olarak düşer, çünkü daha fazla parametre, aralarından seçilecek daha fazla tam uyan çözüm demektir; bu da eldeki en küçük çözümün küçülmesi demektir. P=5000P = 5000 noktasında norm 0.18’dir; eşiktekinin seksende biri.

Yani ekstra parametreler karmaşıklık eklemiyor. Seçenek ekliyorlar ve seçim kuralı bu seçeneği sadeliğe harcıyor. Regularisation kayıp fonksiyonunda değil; algoritmanın içinde. Küçük bir başlatmadan yapılan gradient descent’in küçük normlu çözümlere doğru belgelenmiş bir eğilimi vardır; bu yüzden bu davranış yalnızca yukarıdaki lineer cebirde değil, sıradan şekilde eğitilen gerçek ağlarda da ortaya çıkar.

Chapter 10’un dayandığı pratik sonuç şu: “modelin veriden daha fazla parametresi var, bu yüzden overfit edecek” geçerli bir argüman değildir. Modeller eşiğin solunda yaşarken iyi bir kuraldı. Şimdi ilginç olan her şey onun çok sağında yaşıyor; orada kural tersine dönüyor.

Bu bölümdeki araçlar, tabloya koyabileceğin veriler üzerinde çalışan bir ağ eğitmek için yeterli: sayı satırları, etiket sütunu.

Dil öyle değildir. Bir model bir sonraki kelimeyi tahmin etmeden önce, bir şeyin “kelime”nin ne olduğuna karar vermesi gerekir — ve cevap ne harflerdir ne de kelimeler; modelin eğitim verisinin ham byte’larından öğrendiği bir vocabulary’dir. Eğitim başlamadan önce bir kez verilen bu karar, modelin kaç şey söyleyebileceğini, bir isteğin ne kadar tuttuğunu ve hukuk sınavını geçebilen modellerin strawberry içindeki harfleri neden güvenilir biçimde sayamadığını belirler.

Bölüm 7 bir tokenizer inşa eder.


Yukarıda kullanılan residual bağlantılar için: He ve diğerleri, Deep Residual Learning for Image Recognition (arXiv:1512.03385). Andrej Karpathy’nin Building makemore Part 3: Activations & Gradients, BatchNorm çalışması, gerçek bir model üzerinde aktivasyon histogramı teşhisinden geçer ve bu bölümün ilk yarısının en iyi uygulamalı anlatımıdır. Yaser Abu-Mostafa’nın Learning From Data dersleri 8 ve 11–13, klasik genelleme teorisini, bu bölümün bir paragrafa sıkıştırdığı kısımlar dahil, hakkıyla verir.

  1. Glorot, X. and Bengio, Y. Understanding the difficulty of training deep feedforward neural networks. AISTATS (2010). Yukarıdaki kutuda yeniden verilen varyansı koruma argümanı.

  2. He, K., Zhang, X., Ren, S. and Sun, J. Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification. arXiv:1502.01852 (2015).

  3. Ioffe, S. and Szegedy, C. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift. arXiv:1502.03167 (2015). Başlıktaki “internal covariate shift” açıklamasının o zamandan beri ciddi biçimde tartışıldığını not et; katman çalışıyor, neden çalıştığına dair özgün açıklama ise tartışmalı.

  4. Ba, J. L., Kiros, J. R. and Hinton, G. E. Layer Normalization. arXiv:1607.06450 (2016).

  5. Kingma, D. P. and Ba, J. Adam: A Method for Stochastic Optimization. arXiv:1412.6980 (2014).

  6. Loshchilov, I. and Hutter, F. Decoupled Weight Decay Regularization. arXiv:1711.05101 (2017).

  7. Srivastava, N., Hinton, G., Krizhevsky, A., Sutskever, I. and Salakhutdinov, R. Dropout: A Simple Way to Prevent Neural Networks from Overfitting. JMLR 15, pp. 1929–1958 (2014).

  8. Belkin, M., Hsu, D., Ma, S. and Mandal, S. Reconciling modern machine-learning practice and the classical bias–variance trade-off. PNAS 116(32), pp. 15849–15854 (2019). Olguya adını veren makale.

  9. Nakkiran, P., Kaplun, G., Bansal, Y., Yang, T., Barak, B. and Sutskever, I. Deep Double Descent: Where Bigger Models and More Data Hurt. arXiv:1912.02292 (2019). Etkiyi gerçek derin ağlarda ve model boyutu ekseninin yanı sıra training time ekseninde de gösterir.


Hazırlayan

David Vicente Campos

NeuraLIA Labs kurucusu ve MyRealFood kurucu ortağı

León Üniversitesinden mezun bir bilgisayar mühendisiyim. MyRealFood’un kurucu ortaklarındanım; orada CTO olarak milyonlarca insanın daha iyi beslenmek için kullandığı uygulamayı geliştirdim. Ayrıca NeuraLIA Labs’i kurdum ve burada AI ürünleri geliştiriyorum. Bu sitede yol boyunca anlamak zorunda kaldığım şeyleri, keşke biri bana böyle anlatsaydı dediğim şekilde yazıyorum.

Yazar hakkında daha fazla

Yayımlayan: NeuraLIA Labs.

Yeni yazılar gelen kutuna gelsin

AI haberleri, rehberler ve ürün güncellemeleri — zamanına değecek bir şey yayımladığımızda kısa bir e-posta.

Mesajlaşmayı mı tercih ediyorsun? Aynı yazılar, burada:WhatsApp topluluğu (yeni sekmede açılır)Telegram kanalı (yeni sekmede açılır)

Kurs dizini

Abstract software decision engine with branching paths, probability nodes, and glowing gates.
jev10 dk okuma

Jev AI modeli düzyazı için değil, kararlar için tasarlandı

TypeSafe AI’ın Jev’i dikkat çekiyor çünkü yazılım zekâsını bir olasılık problemi olarak ele alıyor: doğru dalı seç, güven düzeyini ekle ve kodun bir karara ihtiyacı varken bir LLM’ye metin yazdırmak için ödeme yapma.

Abstract agent runtime sorting documents, memory blocks and pointer nodes inside a bounded context frame.
context-engineering10 dk okuma

Uzun süreli AI ajanları için bağlam mühendisliği

Uzun süre çalışan ajanlar yalnızca pencere küçük olduğu için başarısız olmaz. Dosyalar, araç çıktıları ve bayatlamış geçmiş, ajanın tamamlaması gereken görevi arka plana ittiğinde başarısız olurlar.

Seçimi LIA'ya bırakmaya hazır mısın?

Tüm yapay zeka modelleriyle tek yerde üret — bugün ücretsiz başla.