[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:ml-engineer\u002Fdl-initialization-optimizers":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-initialization-optimizers","Dl Initialization Optimizers","tr",75,1500,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,40,43,46,49,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":8,"name":9,"count":11},{"key":41,"name":42,"count":11},"dl-losses-output-layers","Dl Losses Output Layers",{"key":44,"name":45,"count":11},"dl-normalization-regularization","Dl Normalization Regularization",{"key":47,"name":48,"count":11},"dl-sequence-attention","Dl Sequence Attention",{"key":50,"name":51,"count":11},"dl-training-dynamics-backprop","Dl Training Dynamics Backprop",{"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,117,130,143,156],{"id":86,"topic":9,"difficulty":87,"body":88,"options":89,"correct_key":94,"explanation":102},"01a0499c-f0ff-7ede-97ef-f3f17210401c",1,"Tam bağlı bir gizli katman, içindeki her birim tam olarak aynı ağırlık vektörünü ve aynı bias'ı alacak şekilde başlatılıyor. Ardından düz gradyan inişiyle eğitim yapılıyor. Eğitim ilerledikçe bu gizli birimlere ne olur?",[90,93,96,99],{"key":91,"text":92},"a","Her birim yavaşça farklı bir ağırlık vektörüne kayar, çünkü eğitim boyunca görülen mini-batch'ler adımdan adıma değişir.",{"key":94,"text":95},"b","Sürekli aynı gradyanı alırlar, dolayısıyla katman çok kez kopyalanmış tek bir birim gibi davranır.",{"key":97,"text":98},"c","Yalnızca ilk birim öğrenmeye devam eder; geri kalanlar başlangıç değerlerinde donmuş kalır.",{"key":100,"text":101},"d","Doğrusal olmayan fonksiyon uygulanır uygulanmaz birimler ayrışır, çünkü ReLU her birimin ön-aktivasyonuna farklı tepki verir.","Gelen ağırlıkları aynı olan birimler her girdi için aynı ön-aktivasyonu hesaplar; kayıp her birinin özdeş bir fonksiyonu olur ve geri yayılım onlara özdeş kısmi türevler verir. Özdeş parametre artı özdeş gradyan, sonsuza kadar özdeş güncelleme demektir; katmanın tüm çıktı uzayı tek bir yöne çöker ve fazladan genişlik hiçbir şey kazandırmaz.",{"id":104,"topic":9,"difficulty":105,"body":106,"options":107,"correct_key":100,"explanation":116},"01a0499c-f102-780a-b2ea-afa6326bccac",2,"PyTorch 2.8 ile CPU'da, `Linear(3,4) -> ReLU -> Linear(4,1)` yapısındaki iki katmanlı bir MLP'de bütün ağırlık matrisleri ve bütün bias'lar tam olarak sıfıra ayarlanıyor. Bir batch ileri geçiriliyor, MSE kaybı hesaplanıyor ve `backward()` çağrılıyor. Hangi parametreler sıfırdan farklı bir gradyan alır?",[108,110,112,114],{"key":91,"text":109},"Her iki ağırlık matrisi de, çünkü girdi batch'inin kendisi sıfırdan farklıdır ve ilk katmana olduğu gibi ulaşır.",{"key":94,"text":111},"İkinci katmanın ağırlığı ve bias'ı, çünkü kayıp doğrudan o katmanın çıktısından hesaplanır.",{"key":97,"text":113},"Ağdaki bütün bias'lar; sıfır gradyanda takılı kalan tek tensörler iki ağırlık matrisidir.",{"key":100,"text":115},"Yalnızca çıkış katmanının bias'ı; hataya hâlâ açık olan tek parametre odur.","Gizli aktivasyonlar relu(0) = 0 olduğundan, ikinci ağırlık matrisinin gradyanı bu aktivasyonlardan kurulur ve sıfırlanır. İlk katmana ulaşması gereken gradyanın ise ikinci ağırlık matrisi üzerinden geri yolculuk etmesi gerekir; o da sıfır olduğu için gradyan yine sıfırlanır. Gradyanı doğrudan ham hatanın kendisi olan tek parametre çıkış bias'ıdır; bu yüzden tamamen sıfır bir ağ o sabit noktadan hiç ayrılmaz.",{"id":118,"topic":9,"difficulty":87,"body":119,"options":120,"correct_key":91,"explanation":129},"01a0499c-f104-70aa-a86e-4a7484065712","Xavier (Glorot) başlatması, bir katmanın ağırlıklarını varyansı katmanın şekline bağlı bir dağılımdan çeker. Bu varyansın hedeflediği büyüklük hangisidir?",[121,123,125,127],{"key":91,"text":122},"Yaklaşık olarak 2 bölü fan_in ile fan_out toplamı; böylece ileri sinyal ile geri sinyal arasında uzlaşma sağlanır.",{"key":94,"text":124},"Yaklaşık olarak 2 bölü yalnızca fan_in; yani her birimin ön-aktivasyon değerine toplanan gelen bağlantıların sayısı kadar bir büyüklük.",{"key":97,"text":126},"Yaklaşık olarak batch boyutunun tersi; böylece batch büyüdükçe varyans küçülür.",{"key":100,"text":128},"Yaklaşık olarak 1 bölü fan_in ile fan_out çarpımı; bu da toplam ağırlık enerjisini sabit tutar.","Glorot türetmesi bir yandan aktivasyon varyansının ileri yönde korunmasını ister ki bu 1\u002Ffan_in'i gerektirir, bir yandan da gradyan varyansının geri yönde korunmasını ister ki bu 1\u002Ffan_out'u gerektirir. Katman kare değilse ikisi birden sağlanamaz, bu yüzden kural 2\u002F(fan_in + fan_out) uzlaşmasını alır. Batch boyutu türetmeye hiç girmez; o katmanın değil veri hattının bir özelliğidir.",{"id":131,"topic":9,"difficulty":105,"body":132,"options":133,"correct_key":97,"explanation":142},"01a0499c-f104-7beb-9a48-ef2cb287a3b8","He (Kaiming) başlatması, ardından ReLU gelen bir katman için yaklaşık 2\u002Ffan_in varyansı kullanır; aynı türetme aktivasyon olmadan yapılsaydı 1\u002Ffan_in isterdi. Buradaki fazladan 2 katsayısı nereden gelir?",[134,136,138,140],{"key":91,"text":135},"ReLU'nun pozitif tarafta eğiminin 2 olmasından; bu eğim içinden geçen sinyali ikiye katlar.",{"key":94,"text":137},"Tek bir geri yayılım adımında rol alan iki ağırlık matrisinden: biri ileri geçiş, diğeri geri geçiş için.",{"key":97,"text":139},"ReLU, simetrik bir ön-aktivasyon dağılımının kabaca yarısını sıfırlar ve katman çıktısının kare ortalamasını yarıya düşürür; ağırlıklar bunu telafi etmek için büyütülür.",{"key":100,"text":141},"Katman çıktısına ikinci bir bağımsız varyans kaynağı ekleyen bias vektörünü telafi eder.","Sıfır ortalamalı bir z ön-aktivasyonu için relu(z)'nin kare ortalaması tam olarak z'nin kare ortalamasının yarısıdır; çünkü dağılımın negatif yarısı sıfıra düşer, pozitif yarısı olduğu gibi geçer. Düzeltme yapılmazsa sinyalin ikinci momenti her katmanda yarıya iner ve derinlikle geometrik olarak söner. Ağırlık varyansını iki katına çıkarmak bunu geri kazandırır; 2\u002Ffan_in kuralının yaptığı tam olarak budur.",{"id":144,"topic":9,"difficulty":105,"body":145,"options":146,"correct_key":91,"explanation":155},"01a0499c-f105-76f0-b297-066b733c1f62","Katman başına 256 birimli, 12 katmanlı bir ReLU ağı He yerine Xavier ile başlatılıyor ve ilk ileri geçişte aktivasyonların kare ortalaması katman katman ölçülüyor. Bu ölçüm nasıl bir örüntü gösterir?",[147,149,151,153],{"key":91,"text":148},"Kare ortalama her katmanda kabaca yarıya iner, öyle ki en derin katmanda girdi değerinin çok küçük bir kesridir.",{"key":94,"text":150},"Kare ortalama derinlikle düzenli olarak büyür ve her katmanda kabaca ikiye katlanır; çünkü Xavier doğrultulmuş birimler için fazla agresiftir.",{"key":97,"text":152},"Kare ortalama katmandan katmana değişmez; çünkü Xavier ile He yalnızca geri geçişte farklıdır.",{"key":100,"text":154},"Kare ortalama ilk birkaç katmanda sabit kalır, sonra yığının derin kısmında ReLU doygunlaşmaya başladığı anda sınırsız biçimde büyümeye geçer.","Kare bir katmanda Xavier, doğrultulmuş bir katmanın ihtiyaç duyduğunun tam yarısı olan 1\u002Ffan_in ağırlık varyansını verir; üstüne ReLU ikinci momentin yarısını atar. İki etki katman başına yaklaşık yarı katsayısında birleşir ve bu derinlikte geometrik bir sönümdür. On iki katman üzerinde yapılan ölçüm girdinin birkaç kat altına iner; derin doğrultulmuş yığınların daha büyük He ölçeğini istemesinin nedeni budur.",{"id":157,"topic":9,"difficulty":87,"body":158,"options":159,"correct_key":100,"explanation":168},"01a0499c-f107-79e2-81fc-91bd48244f09","Düz stokastik gradyan inişinde bir parametreye uygulanan güncelleme, eksi öğrenme oranı çarpı o parametrenin gradyanıdır. Diğer her şey sabitken öğrenme oranı ikiye katlanırsa bu tek güncellemeye ne olur?",[160,162,164,166],{"key":91,"text":161},"Uzunluğu ikiye katlanır ve işareti döner, çünkü güncelleme bir çıkarma işlemidir.",{"key":94,"text":163},"Uzunluğu değişmez ama gradyanın en dik koordinatına doğru döner.",{"key":97,"text":165},"Uzunluğu dörde katlanır, çünkü kayıp adım boyutunun karesel bir fonksiyonudur.",{"key":100,"text":167},"Uzunluğu ikiye katlanır, yönü değişmez.","Düz SGD, negatif gradyanı tek bir skalerle ölçekler; yani öğrenme oranı adımın yalnızca ne kadar uzağa gittiğini belirler, nereye baktığını asla belirlemez. Pozitif bir skaleri ikiye katlamak büyüklüğü ikiye katlar, yönü olduğu gibi bırakır. Kaybın karesel davranışı parametre güncellemesinin büyüklüğünde değil, kaybın ne kadar değiştiğinde ortaya çıkar.",{"fields":170,"seniorities":392,"interview_shapes":393,"locales":398,"oauth":400,"question_count":403,"coach_enabled":404,"jd_match_enabled":404},[171,196,216,233,257,270,289,308,330,349,364,386],{"key":172,"name_tr":173,"name_en":173,"sort":87,"specializations":174},"backend","Backend",[175,178,181,184,187,190,193],{"key":176,"name":177,"field":172},"general","Genel",{"key":179,"name":180,"field":172},"go","Go",{"key":182,"name":183,"field":172},"python","Python",{"key":185,"name":186,"field":172},"java","Java",{"key":188,"name":189,"field":172},"csharp","C#\u002F.NET",{"key":191,"name":192,"field":172},"nodejs","Node.js",{"key":194,"name":195,"field":172},"php","PHP",{"key":197,"name_tr":198,"name_en":198,"sort":105,"specializations":199},"frontend","Frontend",[200,201,204,207,210,213],{"key":176,"name":177,"field":197},{"key":202,"name":203,"field":197},"javascript","JavaScript",{"key":205,"name":206,"field":197},"typescript","TypeScript",{"key":208,"name":209,"field":197},"react","React",{"key":211,"name":212,"field":197},"vue","Vue",{"key":214,"name":215,"field":197},"angular","Angular",{"key":217,"name_tr":218,"name_en":218,"sort":219,"specializations":220},"fullstack","Fullstack",3,[221,222,223,224,225,226,227,228,229,230,231,232],{"key":176,"name":177,"field":217},{"key":179,"name":180,"field":172},{"key":182,"name":183,"field":172},{"key":185,"name":186,"field":172},{"key":188,"name":189,"field":172},{"key":191,"name":192,"field":172},{"key":194,"name":195,"field":172},{"key":202,"name":203,"field":197},{"key":205,"name":206,"field":197},{"key":208,"name":209,"field":197},{"key":211,"name":212,"field":197},{"key":214,"name":215,"field":197},{"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":176,"name":177,"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":176,"name":177,"field":258},{"key":182,"name":183,"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":176,"name":177,"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":176,"name":177,"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":176,"name":177,"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":176,"name":177,"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":176,"name":177,"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":176,"name":177,"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":176,"name":177,"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]