[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:ml-engineer\u002Fdl-training-dynamics-backprop":4,"config":169},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":8,"topic_name":9,"spec_key":7,"spec_name":7,"locale":10,"cell_total":11,"field_total":12,"seniorities":13,"topics":17,"specs":76,"samples":84},"ml-engineer","ML Engineer","","dl-training-dynamics-backprop","Dl Training Dynamics Backprop","tr",75,1500,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,48,51,52,55,58,61,64,67,70,73],{"key":19,"name":20,"count":11},"cml-distance-clustering-dimreduction","Cml Distance Clustering Dimreduction",{"key":22,"name":23,"count":11},"cml-gradient-boosting-mechanics","Cml Gradient Boosting Mechanics",{"key":25,"name":26,"count":11},"cml-linear-logistic-internals","Cml Linear Logistic Internals",{"key":28,"name":29,"count":11},"cml-probabilistic-models-calibration","Cml Probabilistic Models Calibration",{"key":31,"name":32,"count":11},"cml-svm-kernels-margins","Cml Svm Kernels Margins",{"key":34,"name":35,"count":11},"cml-trees-randomforest-internals","Cml Trees Randomforest Internals",{"key":37,"name":38,"count":11},"dl-architecture-layers","Dl Architecture Layers",{"key":40,"name":41,"count":11},"dl-initialization-optimizers","Dl Initialization Optimizers",{"key":43,"name":44,"count":11},"dl-losses-output-layers","Dl Losses Output Layers",{"key":46,"name":47,"count":11},"dl-normalization-regularization","Dl Normalization Regularization",{"key":49,"name":50,"count":11},"dl-sequence-attention","Dl Sequence Attention",{"key":8,"name":9,"count":11},{"key":53,"name":54,"count":11},"ml-data-preparation","Ml Data Preparation",{"key":56,"name":57,"count":11},"ml-deployment-serving","Ml Deployment Serving",{"key":59,"name":60,"count":11},"ml-experimentation-reproducibility","Ml Experimentation Reproducibility",{"key":62,"name":63,"count":11},"ml-model-selection-tuning","Ml Model Selection Tuning",{"key":65,"name":66,"count":11},"ml-model-training-evaluation","Ml Model Training Evaluation",{"key":68,"name":69,"count":11},"ml-monitoring-drift","Ml Monitoring Drift",{"key":71,"name":72,"count":11},"ml-problem-framing","Ml Problem Framing",{"key":74,"name":75,"count":11},"ml-scaling-performance","Ml Scaling Performance",[77,81],{"key":78,"name":79,"count":80},"classical-ml","Classical ML",450,{"key":82,"name":83,"count":80},"deep-learning","Deep Learning",[85,103,116,129,143,156],{"id":86,"topic":9,"difficulty":87,"body":88,"options":89,"correct_key":97,"explanation":102},"01a0499c-f329-7f00-afa4-830caa1efa0e",2,"İleri beslemeli bir ağ h1 = f1(x), h2 = f2(h1), ... , h5 = f5(h4) hesaplıyor ve h5'ten skaler bir L kaybı üretiliyor. Geri yayılım, L'nin ilk katman f1 içindeki bir ağırlığa göre gradyanını oluştururken bu gradyan neyden meydana gelir?",[90,93,96,99],{"key":91,"text":92},"a","Yalnızca L'nin h5'e göre türevinden; çünkü eğitim sinyalinin tek kaynağı kayıptır.",{"key":94,"text":95},"b","Yalnızca h1'in o ağırlığa göre türevinden; sonraki katmanlar yalnız kendi ağırlıklarını yönetir.",{"key":97,"text":98},"c","Kayıp ile f1 arasındaki her katmanın yerel türev çarpanının zincirleme çarpımından; buna h1'in o ağırlığa göre yerel türevi de eklenerek çarpılır.",{"key":100,"text":101},"d","Katman başına türevlerin, her katmanın parametre sayısıyla ağırlıklandırılmış ortalamasından.","Zincir kuralı derin bir bileşkeyi çarpıma çevirir: kaybın erken bir ağırlığa göre türevi, kaybın h5'e göre türevi çarpı her katmanın çıktısının girdisine göre türevi çarpı h1'in o ağırlığa göre yerel türevidir. Bu çarpımsal yapı, derinliğin gradyan büyüklüğünü iki yönde de bu kadar sert değiştirmesinin sebebidir.",{"id":104,"topic":9,"difficulty":87,"body":105,"options":106,"correct_key":91,"explanation":115},"01a0499c-f32a-791a-ab63-f1abba9d386b","Lojistik sigmoid s(z) = 1\u002F(1+e^-z) fonksiyonunun türevi s(z)(1-s(z))'dir. Çok sayıda sigmoid katmanı üst üste koyan bir ağda, derinlik arttıkça erken katman gradyanlarını sıfıra doğru iten şey neden tek başına bu türevdir?",[107,109,111,113],{"key":91,"text":108},"Türevin alabileceği en büyük değer z = 0'da ulaşılan 0.25'tir; yani her katman geri sinyali en fazla dörtte biriyle çarpar.",{"key":94,"text":110},"Türev negatif ön-aktivasyonlarda işaret değiştirir, böylece katmanlar arasında işaretler birbirini götürür.",{"key":97,"text":112},"Sigmoid çıktısı açık birim aralıkta sınırlı olduğu için türev bu aralığın dışında tam olarak sıfırdır ve zincir ilk doygun katmanda kopar.",{"key":100,"text":114},"Türev |z| ile birlikte büyür, bu yüzden derin katmanlar giderek daha büyük çarpanlarla çarpar.","s(z)(1-s(z)) ifadesi s(z) = 0.5 iken en büyüktür ve 0.25 verir (PyTorch 2.8'de türev bir ızgara üzerinde hesaplanarak doğrulandı). Geri yayılım her sigmoid katmanı için böyle bir çarpan uyguladığından, on katman sinyali 0.25^10 ile sınırlar; ağırlık matrisleri hesaba katılmadan bile bu milyonda birin altındadır.",{"id":117,"topic":9,"difficulty":87,"body":118,"options":119,"correct_key":100,"explanation":128},"01a0499c-f32b-7199-93cf-0901273a97b6","y = xW^T doğrusal katmanının geri adımı elle yazılıyor (PyTorch 2.8, CPU):\n\n    W = torch.tensor([[1., 2., 3.], [0., 1., -1.]])\n    x = torch.tensor([[1., 0., 2.], [3., 1., 0.]])\n    delta = torch.ones(2, 2)   # L = tüm çıktıların toplamı için dL\u002Fdy\n    gW = delta.T @ x\n\ngW nedir?",[120,122,124,126],{"key":91,"text":121},"[[7.5, -2.5], [5.5, 0.5]] — kaybın topladığı katman çıktıları.",{"key":94,"text":123},"[[1., 0., 2.], [3., 1., 0.]] — girdi yığınının kendisi, çünkü kayıp doğrusaldır.",{"key":97,"text":125},"[[1., 2., 3.], [0., 1., -1.]] — ağırlık matrisi, çünkü doğrusal bir dönüşümün türevi kendisidir.",{"key":100,"text":127},"[[4., 1., 2.], [4., 1., 2.]] — her satır girdi yığınının sütun toplamıdır.","Doğrusal katmanda ağırlık gradyanı, geri yayılan sinyal ile katman girdisinin dış çarpımının yığın boyunca toplamıdır. delta tamamen birlerden oluştuğunda delta.T @ x ifadesi x'in sütun toplamlarına indirgenir ve her çıktı birimi için tekrarlanır: [[4,1,2],[4,1,2]]; aynı kurulum autograd ile koşturulduğunda da bu değerler çıkar. Katmanın kendi çıktıları ifadeye hiç girmez.",{"id":130,"topic":9,"difficulty":131,"body":132,"options":133,"correct_key":91,"explanation":142},"01a0499c-f32b-7875-9a58-a7ce0d3e1d5d",3,"Bir mühendis, tüm gizli katmanları aynı şekle sahip 9 katmanlı sigmoid bir MLP eğitiyor ve bir geri geçişten sonra her ağırlık matrisinin gradyan normunu yazdırıyor (PyTorch 2.8, CPU, seed 0): katman 1 ~ 2.6e-7, katman 2 ~ 4.8e-6, katman 3 ~ 3.1e-5, ... , katman 8 ~ 5.8e-1, katman 9 ~ 4.0. Bu profil neyi söyler?",[134,136,138,140],{"key":91,"text":135},"Geri sinyal katman başına yaklaşık sabit bir çarpanla küçülüyor, dolayısıyla erken katmanlara neredeyse hiç eğitim sinyali ulaşmıyor.",{"key":94,"text":137},"Öğrenme oranı çok küçük, her katmanın gradyanı bu yüzden küçük.",{"key":97,"text":139},"Son katmanlar patlıyor ve ilk ıraksayacak olanlar onlar olacak.",{"key":100,"text":141},"Farklı katmanların gradyan normları karşılaştırılamaz, bu yüzden profil bilgi taşımaz.","Normlar geriye doğru katman başına bir büyüklük mertebesine yakın oranda düşüyor; bu, birin epeyce altında çarpımsal bir katman çarpanının imzasıdır — burada sigmoid türevi ile ağırlık matrislerinin bileşimi. En derin katman hâlâ kullanılabilir gradyan alıyor, yani sorun küresel olarak küçük bir adım boyu değil, geri sinyalin derinliğe bağlı sönümlenmesi. Katmanlar aynı şekilde olduğu için normlar doğrudan karşılaştırılabilir.",{"id":144,"topic":9,"difficulty":87,"body":145,"options":146,"correct_key":94,"explanation":155},"01a0499c-f32c-7221-910e-de42c72e7528","Bir gizli birim tanh kullanıyor; türevi 1 - tanh(z)^2. Loglara göre birimin ön-aktivasyonu z neredeyse tüm örneklerde 3 civarında; PyTorch 2.8'de ölçüldüğünde oradaki türev yaklaşık 0.0099, z = 0'da ise 1.0. Bu, o birimi besleyen ağırlıklar için ne demektir?",[147,149,151,153],{"key":91,"text":148},"Tam güçte gradyan alırlar, çünkü tanh her noktada türevlenebilir ve türevi hiçbir yerde sıfır değildir.",{"key":94,"text":150},"Birime ulaşan sinyalin %1'inden azını alırlar, dolayısıyla çok yavaş hareket ederler.",{"key":97,"text":152},"Ters işaretli gradyan alırlar, çünkü tanh o bölgede aşağı doğru bükülür.",{"key":100,"text":154},"Tam olarak sıfır gradyan alırlar, çünkü tanh türevi |z| 2'yi geçtiğinde sıfırlanır ve birim tümden ölür.","Birime ulaşan gradyan, girdi ağırlıklarına varmadan önce yerel tanh türeviyle çarpılır; z = 3 çalışma noktası bu sinyali yaklaşık yüz kat söndürür. Türev hâlâ kesin olarak pozitif olduğundan öğrenme ölü değil sadece yavaştır ve sinyalin işareti korunur.",{"id":157,"topic":9,"difficulty":131,"body":158,"options":159,"correct_key":97,"explanation":168},"01a0499c-f32c-7b47-8a95-2cfd3e0f9800","Bir eğitim koşusu önce sonlu kayıplar, bir adımda inf, ardından her adımda NaN yazdırıyor — sorunlu yığın çoktan geçmiş olmasına rağmen. Bu durumun neden hiç düzelmediğini hangi mekanizma açıklar?",[160,162,164,166],{"key":91,"text":161},"Eğitim döngüsü son yazdırdığı kaybı önbellekte tutup tekrar tekrar basıyor.",{"key":94,"text":163},"NaN yalnızca bir yazdırma artefaktı; parametreler arka planda iyileşmeye devam ediyor.",{"key":97,"text":165},"Sonsuz gradyanla atılan tek bir güncelleme parametreleri +\u002F-inf'e taşıdı ve sonsuz bir parametre üzerindeki her sonraki işlem inf ya da NaN üretiyor.",{"key":100,"text":167},"Optimizer bir NaN görünce adım atmayı bırakır, model son sağlıklı parametrelerinde donar.","PyTorch 2.8'de doğrulandı: sonsuz gradyanla atılan tek bir SGD adımından sonra parametre -inf oluyor ve sonraki sonlu gradyanlar onu -inf'te bırakıyor, çünkü inf eksi sonlu bir sayı yine inf'tir. Sonsuz ağırlıktan geçen ileri geçişler inf ve inf eksi inf çarpımları üretir; bunlar NaN'dır, dolayısıyla veri ne olursa olsun kayıp sonsuza kadar NaN kalır.",{"fields":170,"seniorities":392,"interview_shapes":393,"locales":398,"oauth":400,"question_count":403,"coach_enabled":404,"jd_match_enabled":404},[171,197,217,233,257,270,289,308,330,349,364,386],{"key":172,"name_tr":173,"name_en":173,"sort":174,"specializations":175},"backend","Backend",1,[176,179,182,185,188,191,194],{"key":177,"name":178,"field":172},"general","Genel",{"key":180,"name":181,"field":172},"go","Go",{"key":183,"name":184,"field":172},"python","Python",{"key":186,"name":187,"field":172},"java","Java",{"key":189,"name":190,"field":172},"csharp","C#\u002F.NET",{"key":192,"name":193,"field":172},"nodejs","Node.js",{"key":195,"name":196,"field":172},"php","PHP",{"key":198,"name_tr":199,"name_en":199,"sort":87,"specializations":200},"frontend","Frontend",[201,202,205,208,211,214],{"key":177,"name":178,"field":198},{"key":203,"name":204,"field":198},"javascript","JavaScript",{"key":206,"name":207,"field":198},"typescript","TypeScript",{"key":209,"name":210,"field":198},"react","React",{"key":212,"name":213,"field":198},"vue","Vue",{"key":215,"name":216,"field":198},"angular","Angular",{"key":218,"name_tr":219,"name_en":219,"sort":131,"specializations":220},"fullstack","Fullstack",[221,222,223,224,225,226,227,228,229,230,231,232],{"key":177,"name":178,"field":218},{"key":180,"name":181,"field":172},{"key":183,"name":184,"field":172},{"key":186,"name":187,"field":172},{"key":189,"name":190,"field":172},{"key":192,"name":193,"field":172},{"key":195,"name":196,"field":172},{"key":203,"name":204,"field":198},{"key":206,"name":207,"field":198},{"key":209,"name":210,"field":198},{"key":212,"name":213,"field":198},{"key":215,"name":216,"field":198},{"key":234,"name_tr":235,"name_en":235,"sort":236,"specializations":237},"devops-cloud","DevOps \u002F Cloud",4,[238,239,242,245,248,251,254],{"key":177,"name":178,"field":234},{"key":240,"name":241,"field":234},"aws","AWS",{"key":243,"name":244,"field":234},"gcp","GCP",{"key":246,"name":247,"field":234},"azure","Azure",{"key":249,"name":250,"field":234},"kubernetes","Kubernetes",{"key":252,"name":253,"field":234},"terraform","Terraform",{"key":255,"name":256,"field":234},"linux","Linux",{"key":258,"name_tr":259,"name_en":259,"sort":260,"specializations":261},"ai-engineer","AI Engineer",5,[262,263,264,267],{"key":177,"name":178,"field":258},{"key":183,"name":184,"field":258},{"key":265,"name":266,"field":258},"llm-rag","LLM\u002FRAG",{"key":268,"name":269,"field":258},"mlops","MLOps",{"key":271,"name_tr":272,"name_en":273,"sort":274,"specializations":275},"database","Veritabanı","Database",6,[276,277,280,283,286],{"key":177,"name":178,"field":271},{"key":278,"name":279,"field":271},"postgresql","PostgreSQL",{"key":281,"name":282,"field":271},"mysql","MySQL",{"key":284,"name":285,"field":271},"mongodb","MongoDB",{"key":287,"name":288,"field":271},"redis","Redis",{"key":290,"name_tr":291,"name_en":292,"sort":293,"specializations":294},"mobile","Mobil","Mobile",7,[295,296,299,302,305],{"key":177,"name":178,"field":290},{"key":297,"name":298,"field":290},"ios-swift","iOS (Swift)",{"key":300,"name":301,"field":290},"android-kotlin","Android (Kotlin)",{"key":303,"name":304,"field":290},"flutter","Flutter",{"key":306,"name":307,"field":290},"react-native","React Native",{"key":309,"name_tr":310,"name_en":311,"sort":312,"specializations":313},"security","Güvenlik","Security",8,[314,315,318,321,324,327],{"key":177,"name":178,"field":309},{"key":316,"name":317,"field":309},"appsec","AppSec",{"key":319,"name":320,"field":309},"offensive-pentest","Offensive \u002F Pentest",{"key":322,"name":323,"field":309},"cloud-security","Cloud Security",{"key":325,"name":326,"field":309},"devsecops","DevSecOps",{"key":328,"name":329,"field":309},"blue-team-incident","Blue Team \u002F Incident",{"key":331,"name_tr":332,"name_en":333,"sort":334,"specializations":335},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[336,337,340,343,346],{"key":177,"name":178,"field":331},{"key":338,"name":339,"field":331},"test-automation","Test Automation",{"key":341,"name":342,"field":331},"sdet","SDET",{"key":344,"name":345,"field":331},"performance-testing","Performance Testing",{"key":347,"name":348,"field":331},"mobile-qa","Mobile QA",{"key":350,"name_tr":351,"name_en":351,"sort":352,"specializations":353},"data-engineer","Data Engineer",10,[354,355,358,361],{"key":177,"name":178,"field":350},{"key":356,"name":357,"field":350},"pipelines-etl","Pipelines \u002F ETL",{"key":359,"name":360,"field":350},"streaming","Streaming",{"key":362,"name":363,"field":350},"warehousing","Warehousing",{"key":365,"name_tr":366,"name_en":367,"sort":368,"specializations":369},"game-dev","Oyun Geliştirme","Game Development",11,[370,371,374,377,380,383],{"key":177,"name":178,"field":365},{"key":372,"name":373,"field":365},"unity-csharp","Unity (C#)",{"key":375,"name":376,"field":365},"unreal-cpp","Unreal (C++)",{"key":378,"name":379,"field":365},"gameplay","Gameplay",{"key":381,"name":382,"field":365},"graphics-rendering","Graphics \u002F Rendering",{"key":384,"name":385,"field":365},"multiplayer-netcode","Multiplayer \u002F Netcode",{"key":5,"name_tr":6,"name_en":6,"sort":387,"specializations":388},12,[389,390,391],{"key":177,"name":178,"field":5},{"key":78,"name":79,"field":5},{"key":82,"name":83,"field":5},[14,15,16],{"junior":394,"mid":396,"senior":397},{"questions":395,"median_sec":3},20,{"questions":395,"median_sec":3},{"questions":395,"median_sec":3},[10,399],"en",[401,402],"google","github",28050,true]