yazan rusen birben @fictionstudios
Sevdiğin işi yap ya da yaptığın işi sev. Çünkü sadece bir kez yaşıyorsun.
Merhaba, benim adım Ruşen. İTÜ'nün yapay zeka ve veri mühendisliği programından mezun oldum. Yaptığım işe ve içinde bulunduğum alana BAYILIYORUM. Tutkulu bir yapay zeka araştırmacısı olma yolculuğum boyunca, keşke biri bana söyleseydi dediğim şeyler oldu. İşte bu yüzden buradayım; içgörülerimi genç nesillerle paylaşıyorum ki onlar da faydalanabilsin. Faydalı olmayı diliyorum. Bol şans!
İlgi Alanların ve Hedeflerinle İlişkini Tanımak
Yukarıdaki başlığı okuyunca bu sayfanın bir kişisel gelişim sayfası gibi geldiğini biliyorum. Ama karakterimizi, mesleki rollerimizden/kariyer hedeflerimizden soyutlamanın iyi bir yaklaşım olmadığına inanıyorum. Biz insanların pek çok yönü olsa da, günün sonunda bir bütünüz. Bu yüzden size (özlü bir şekilde) üst düzey ilgi alanlarımızın hangi yöne yönelmesi gerektiğini anlatacağım.
İyi hedefler nelerdir
- Bizi değerli kılan şeyleri öğrenmek
- İnsanlarla gerçek bağlar kurmak
- İnsanlara değer katmak
İyi OLMAYAN hedefler nelerdir
- Yüksek notlar almak
- Çok sayıda arkadaşa sahip olmak
- Zengin olmak
Kısa bir gerekçe:
İçsel motivasyon, etkinliklere kendi doğal tatminleri için katılmayı içerirken, dışsal motivasyon dışsal ödüller ya da cezadan kaçınma ile yönlendirilir. Araştırmalar, içsel motivasyonun daha yüksek yaratıcılık, kararlılık ve genel iyi oluş ile ilişkili olduğunu gösteriyor (Ryan & Deci, 2000). Buna karşılık, dışsal motivasyon kaynakları —özellikle kontrol edici olarak algılandıklarında— bazen içsel ilgiyi azaltabilir (Deci, Koestner, & Ryan, 1999). Her iki motivasyon türü arasında bir denge kurmak, optimal performans ve tatmine yol açabilir.
Değerli beceriler öğrenmek, gerçek bağlar kurmak ve başkalarına değer katmak gibi iyi hedefler, tipik olarak içsel motivasyonla yönlendirilir. Bu hedefler tatmin edicidir çünkü büyüme, bağ kurma ve katkıda bulunma yönündeki daha derin ihtiyaçlarımızı karşılarlar. Örneğin yeni şeyler öğrenmek bir başarı ve kişisel gelişim duygusu getirirken, insanlarla gerçek bağlar kurmak sosyal ihtiyaçlarımızı karşılar ve bir aidiyet duygusu besler. Başkalarına değer katmak ise, eylemlerimizin olumlu etkisine tanık oldukça derin bir amaç ve tatmin duygusu sunar.
Öte yandan yüksek notlar almak, çok sayıda arkadaşa sahip olmak ya da zengin olmak gibi hedefler genellikle dışsal faktörlerle motive edilir. Bu hedefler, dışsal ödüller için ya da sosyal onay kazanmak veya maddi servet biriktirmek gibi olumsuz sonuçlardan kaçınmak için takip edilir. Bu hedeflere ulaşmak geçici bir tatmin sağlayabilse de, çoğu zaman uzun vadeli mutluluğa ya da tatmine yol açmaz. Hatta dışsal hedeflere aşırı odaklanmak, içsel motivasyonu ve genel iyi oluşu zayıflatabilir.
TLDR; iyi hedeflerin olsun. Aldığın şeylerden değil, yaptığın şeylerden motive ol.
Büyük Roma imparatoru Marcus Aurelius'un meşhur sözüyle:
Dış olaylar üzerinde değil, zihnin üzerinde gücün var. Bunu anla, gücü bulacaksın.
Bunları söyledikten sonra, çalışmalarına yön vermesi ve kaynakların 'hedeflerine' ulaşmana yardımcı olması için önerilerim burada :)
Nasıl öğrenilir?
Python
Herhangi bir programlama dilini öğrenmekte olduğu gibi, kod yazmaya İHTİYACIN var. "LLM'ler zaten programlama yapıyor" gibi şeyler söyleyerek şikâyet etme; evet bu görevleri yapabiliyorlar. Ama büyük resim belirli bir dili öğrenmek değil, kişinin kendisini programlama kavramına aşina kılmasıdır. Ve LLM'leri beynimize entegre etmenin bir yolunu bulana kadar, programlamadaki büyük fikirleri gerçekten kavramak için çalışmamız ve deney yapmamız gerekiyor. Programlama fikirleri, onları duyduğunda ya da gördüğünde değil, onlarla deney yaptığında yerine oturur. Çünkü kavramlara dair sahip olduğun perspektifi yalnızca sen bilebilirsin ve yanlış yollarla deneyip başarısız olmak (ve neden başarısız olunduğunu anlamak) programlama kavramlarını gerçekten anlamanın TA KENDİSİDİR.
Bununla birlikte, belirli araçları kullanarak daha iyi pekiştirmeler elde edebilir, neyi deneyeceğini ve neyi denemeye bile değmeyeceğini anlayabilirsin. LLM'leri mükemmel açıklayıcılar olarak buldum (özellikle perplexity gibi RAG modelleri); dokümantasyonları hızlıca tarayıp tam olarak sorunu işaret edebiliyorlar. Bir şeylerin neden çalıştığına ya da çalışmadığına dair bilgi ve teorik içgörüler sağlayabiliyorlar.
Unutma: Genel olarak ÖĞRENME amacıyla LLM kullanırken, tembellik edip sonuçları kopyala/yapıştır yapma. Bu sana hiçbir şey öğretmez; unutma, büyük fikir kendine karmaşıklık katmaktır. LLM'ler iyi açıklayıcılardır (yazarlardır), onlara doğru bilgiyi (dokümantasyonu) verirsen harika öğretmenlere sahip olursun (perplexity benzeri RAG yöntemleri). İlkokulda değilsin, cevap anahtarından kopya çekme.
İpucu:
1- Süreçten keyif almak hayatını fazlasıyla kolaylaştırır. Üzerinde çalışabileceğin projeler bul. Bu belki daha sonra uzmanlaşmak isteyeceğin alanı bulmana da yardımcı olur ;)
ör. python kullanarak (öğrenirken) anime sitelerinden veri kazıdım ve indirdim (anime izlemeyi seviyorum), bu da beni selenium (python kütüphanesi) ile otomasyona yöneltti; bu da web botları/oyun botları konusunda meraklandırdı ve sonunda beni yapay zeka üzerine çalışmaya götürdü.
İlgimi bu alanda keşfetmemi sağlayan tek şey bu değildi, ama benim için önemli bir kilometre taşıydı.
İşte hayatını kolaylaştıracak bazı kaynaklar:
Unutma: hiçbir kaynak kendi çabandan daha iyi bir öğretmen değildir.
Makine Öğrenmesinin Temelleri
Makine öğrenmesi (ML), bilgisayarların açıkça programlanmadan veriden öğrenmesini sağlayan bir yapay zeka alt dalıdır. Açıkça programlanan geleneksel programlamanın aksine, ML veriden öğrenen ve görevleri kendi kendine geliştiren modeller oluşturur.
ML yaklaşımları arasında denetimli öğrenme (etiketli veri kullanarak), denetimsiz öğrenme (etiketsiz veride örüntü bularak) ve pekiştirmeli öğrenme (etkileşim yoluyla öğrenerek) yer alır. ML'yi anlamak, veri gösterimi için doğrusal cebir (Strang & 3B1B), optimizasyon için kalkülüs (Tek Değişkenli & Çok Değişkenli & 3B1B) ve veri analizi için olasılık ve istatistik (Bertsekas) bilgisi gerektirir. ML algoritmalarını uygulamak için programlama becerileri, özellikle Python, da gereklidir.
ML yolculuğuna başlarken, doğrusal regresyon, lojistik regresyon, karar ağaçları, destek vektör makineleri (SVM'ler) ve sinir ağları gibi temel algoritmalara aşina olmak önemlidir. Bu algoritmaları uygulamak ve veriyle çalışmak için muhtemelen popüler ML kütüphanelerini ve çerçevelerini kullanacaksın (ama yine de onları python ile ve LLM'lerin yardımıyla sıfırdan uygulamayı denemeni öneririm). Önemli olanlardan bazıları: geleneksel ML algoritmaları için scikit-learn, derin öğrenme için TensorFlow ve PyTorch, veri manipülasyonu ve sayısal işlemler için pandas ve NumPy.
ML algoritmalarını uygulamadan önce, veriler genellikle ön işleme ve öznitelik mühendisliği olarak bilinen bir süreçten geçirilmek zorundadır. Bu, verinin temizlenmesini (eksik değerlerin ve aykırı değerlerin ele alınması), dönüştürülmesini (özniteliklerin normalleştirilmesi veya ölçeklenmesi) ve potansiyel olarak yeni öznitelikler oluşturulmasını ya da ilgili olanların seçilmesini içerir. Bu işlemlerin arkasındaki mantığı anlamaya çalış. Bir modeli eğittikten sonra, performansını nasıl değerlendireceğini anlamak çok önemlidir. Yaygın metrikler arasında doğruluk (accuracy), kesinlik (precision), duyarlılık (recall), F1-skoru ve ROC-AUC yer alır. Hangisini ne zaman kullanacağını bilmek için her performans metriğinin zayıf ve güçlü yönlerini bilmelisin. Ayrıca çapraz doğrulama ve hold-out kümeleri gibi doğrulama tekniklerine ve düzenlileştirme (regularization) ile erken durdurma (early stopping) gibi aşırı öğrenmeyi (overfitting) önleme yöntemlerine de aşina olmalısın.
Bu kavramları gerçekten kavramak için pratik projeler üzerinde çalışmak şarttır. Basit olanlarla başla ve karmaşıklığı kademeli olarak artır. Yeni başlayanlar için uygun bazı projeler: iris çiçeği sınıflandırması, ev fiyatı tahmini, film yorumlarının duygu analizi ve MNIST veri kümesiyle görüntü sınıflandırması.
Andrew Ng'nin Coursera'daki Machine Learning kursu gibi çevrimiçi kurslar (videolar YouTube'da da mevcut ama kodlama alıştırmaları olmadan; yine de kodlar GitHub'da bulunabilir) mükemmel bir başlangıç noktasıdır. Müller ve Guido'nun "Introduction to Machine Learning with Python" ve Aurélien Géron'un "Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow" gibi kitapları kapsamlı bir bakış sunar. Kaggle gibi platformlar veri kümeleri, yarışmalar ve eğitimler sunarken, Google Colab ücretsiz bulut tabanlı Jupyter notebook'ları sağlar. Belirli kodlama soruları için perplexity paha biçilmezdir ve Reddit'in r/MachineLearning topluluğu tartışmalar ve alandaki güncel gelişmeleri takip etmek için harikadır.
Bu kitapların (aslında herhangi bir kitabın) PDF'lerine erişmek için libgen kullanabilirsin, ama bunu KESİNLİKLE önermiyorum; bunun yerine onları satın almanı öneririm çünkü telif hakkıyla korunan kitapların PDF'lerine sahip olmak (ve yaymak) yasa dışıdır. Basılı haliyle birebir aynı olsa bile (ve libgen sitesinden ücretsiz edinebilecek olsan bile) :)
Unutma, ML'de ustalaşmanın anahtarı uygulamalı pratiktir. Bu kaynakları rehber olarak kullan, ama algoritmaları kendin uygulamaya ve ilgini çeken projeler üzerinde çalışmaya odaklan. Teorik bilgiyi pratik uygulamayla birleştirerek, makine öğrenmesi ilkelerine dair derin bir anlayış geliştirir ve alandaki daha ileri konuları ele almaya hazır hâle gelirsin.
İşte hayatını kolaylaştıracak bazı kaynaklar:
- Hands on Machine Learning kitabının GitHub deposu - ŞİDDETLE TAVSİYE EDİLİR
- StatQuest (YouTube)
- Google Colab - TAVSİYE EDİLİR (yerel GPU yoksa)
- Kaggle
- Andrew Ng's ML Specialization (Coursera) - ŞİDDETLE TAVSİYE EDİLİR
- Andrew Ng's ML Course (YouTube, ücretsiz)
- 3Blue1Brown - Neural Networks
- Perplexity - ŞİDDETLE TAVSİYE EDİLİR
- Stanford's ML Course by Andrew Ng
Unutma: hiçbir kaynak kendi çabandan daha iyi bir öğretmen değildir.
Derin Öğrenmeyi Öğrenmek
(Sezgiyi kazanmak & tipik mimarilere aşina olmak)
İleri beslemeli sinir ağlarının (feedforward neural networks) temellerinde ustalaşarak başla; bunlar derin öğrenmenin temelini oluşturur. Geri yayılım (backpropagation) ve gradyan inişi (gradient descent) gibi kavramları anlamak çok önemli, çünkü bunlar sinir ağlarının nasıl öğrendiğinin bel kemiğini oluşturur.
İlerledikçe en yaygın derin öğrenme mimarilerine aşina ol:
- Evrişimli Sinir Ağları (CNN'ler): Bilgisayarlı görü görevlerinin yük beygirleridir. CNN'ler, görüntülerden otomatik olarak öznitelik öğrenmek için evrişim katmanları kullanır; bu da onları görüntü sınıflandırma, nesne tespiti ve görüntü bölütleme gibi görevlerde inanılmaz güçlü kılar.
- Yinelemeli Sinir Ağları (RNN'ler): Bu ağlar sıralı veriyi işlemek için tasarlanmıştır; bu da onları zaman serisi veya doğal dil içeren görevler için ideal kılar. Verideki uzun vadeli bağımlılıkları yakalamada öne çıkan bir RNN türü olan Uzun Kısa Süreli Bellek (LSTM) ağlarına özellikle dikkat et.
- Otokodlayıcılar (Autoencoders): Bu denetimsiz öğrenme modelleri boyut indirgeme ve öznitelik öğrenme için harikadır. Girdi verisini daha düşük boyutlu bir temsile sıkıştırıp ardından onu yeniden inşa ederek çalışırlar.
- Çekişmeli Üretici Ağlar (GAN'ler): Bu büyüleyici mimariler birbirleriyle yarışan iki sinir ağından oluşur ve eğitim kümesine benzeyen yeni, sentetik veri üretmeyi mümkün kılar.
Sezgini geliştirmek için bu mimarileri Python ve NumPy gibi kütüphaneler kullanarak sıfırdan uygula [ilk başta korkutucu görünebilir, ve öyle :') ama öne çıkmak istiyorsan bu konulara bir şekilde aşina olmalısın]. Bu uygulamalı yaklaşım, her bir bileşenin ağın genel işleyişine nasıl katkıda bulunduğuna dair anlayışını derinleştirecek. Zorluklarla karşılaştığında perplexity, çevrimiçi forumlar ya da kıdemli arkadaşların gibi kaynakları kullanmaktan çekinme.
Unutma, derin öğrenmede ustalaşmanın anahtarı pratiktir. İlgini çeken projeler üzerinde çalış, farklı mimarilerle deney yap ve hata yapmaktan korkma. Her hata, öğrenmek ve anlayışını derinleştirmek için bir fırsattır.
İpucu:
Andrew Ng'nin Coursera'daki derin öğrenme kursu (deeplearning.ai) konuları temelden anlatmakta olağanüstü bir iş çıkarıyor. Mimarileri uygulayarak derinlemesine anlama şansın olacak.
Yine, 3Blue1Brown altın değerinde. Ayrıca bu noktada araştırma makaleleri okumaya başlayabilirsin.
İşte hayatını kolaylaştıracak bazı kaynaklar (hepsini şiddetle öneriyorum, d2l ile udl arasında seçim yapabilirsin):
- Deep Learning Specialization (Coursera) (veya dersleri YouTube'da arayabilirsin)
- 3Blue1Brown - Neural Networks
- Dive into Deep Learning (d2l.ai) (etkileşimli notebook'ları var)
- Understanding Deep Learning (UDL) (etkileşimli notebook'ları var)
- Deep Learning Book by Goodfellow et al.
- Hugging Face
Unutma: hiçbir kaynak kendi çabandan daha iyi bir öğretmen değildir.
Derin Öğrenmede Ustalaşmak
(Derinlemesine bilgi sahibi olmak ve niş, karmaşık, deneysel ya da göreve özgü mimarileri bilmek)
Derin öğrenmede ustalaşmak açık uçlu bir görevdir; kimse herhangi bir şeyde gerçekten ustalaştığını iddia edemez (çünkü bu, senin anlayışından daha büyük hiçbir şey olmadığı anlamına gelirdi). Ama burada kastettiğim 'her şeyi bilmek' değil, kendi mimarini yapabilecek ya da farklı yöntemlerin neden çalıştığını veya başarısız olduğunu derinlemesine anlayabilecek kapsamlı bir anlayışa sahip olmaktır. Tabii ki bu tanımlar bile bir miktar eksik. Çünkü 'neden çalıştığını' bilmediğimiz şeyler var. Ama bilim tam da burada başlıyor, değil mi!?
Mevcut araştırmayı geliştirmekle ilgilenmiyorsan ve sadece var olanı uyguluyorsan (bu arada bu utanılacak bir şey değil; sahip olduğun bilgiyle start-up'lar kurabilir ya da mükemmel bir mühendis olabilirsin), bu bölgelerin çok ötesine geçmek istemeyebilirsin. Ama bir araştırmacı olmak istiyorsan, neyin en iyi işe yaradığına dair fikirlerimi naçizane paylaşayım.
Bildiğim kadarıyla, devam eden araştırmaya ve bir şeylerin neden çalışıp neden başarısız olduğuna dair anlayışını geliştirmek için yapabileceklerin:
- Makale oku:
- Derin öğrenmede makale okumak şart. Henüz ders kitaplarında olmayan en taze içgörüleri ve yöntemleri öğrenirsin. İnsanlığın sunabileceğinin sınırını görürsün! Ayrıca eleştirel düşünme yeteneğini keskinleştirir ve hatta kendi çılgın fikirlerini bile ateşleyebilirsin.
- Makale okuma videolarını da faydalı buluyorum. YouTube'da iyi (genellikle) araştırma makalelerini okuyup açıklayan insanlar var. Bunlar senin için iyi bir başlangıç noktası olabilir (kaynaklara bak).
- Derin öğrenmedeki önemli yayıncılar, araştırma grupları, konferanslar ve dergiler:
- Yayıncılar: MIT Press, Springer, O'Reilly Media
- Araştırma Grupları: Google AI, OpenAI, DeepMind, Facebook AI Research (FAIR), Microsoft Research
- Konferanslar: NeurIPS, ICML, ICLR, CVPR, ACL
- Dergiler: Journal of Machine Learning Research (JMLR), IEEE Transactions on Pattern Analysis and Machine Intelligence (TPAMI), Artificial Intelligence (AIJ)
- Kaynak kodunu, GitHub depolarını ve dokümantasyonu oku:
- Ellerini kirletmekten korkma. İlginç bulduğun araştırmaların kaynak kodlarını oku. Tüm o teorik kavramların kodda nasıl hayat bulduğunu görmenin uygulamalı bir yolu bu. Etrafı kurcalayarak akıllıca optimizasyon hilelerini fark edersin, belirli mimarilerin neden daha iyi çalıştığını çözersin ve alandaki profesyonellerden bazı şık kodlama hamleleri öğrenirsin.
- Gerçekten kavrayana kadar pes etme:
- Bak, bu kolay olmayacak. Duvarlara toslayacaksın, kendini aptal hissedeceksin ve pes etmek isteyeceksin. Ama sihir tam da orada gerçekleşir! O kavramlar çatlayana kadar kafanı onlara vurmaya devam et. LLM'lere aptalca sorular sor, arkadaşlarını rahatsız et, gerekirse bir milyon YouTube videosu izle. Kafana dank etmesi için ne gerekiyorsa yap. Çünkü bir kez dank ettiğinde durdurulamaz olacaksın. Unutma, o yapay zeka dahileri bile habersiz acemiler olarak başladı. O yüzden mücadeleyi kucakla.
- Bir şeyin "NEDEN" çalıştığını anlamaya çalış; bana göre bu en kritik soru. Bir şeyin 'NE' olduğunu ya da o şeyin 'NASIL' çalıştığını ezberleyebilirsin, ama kavramları gerçekten kavramadan 'NEDEN' çalıştığını ezberleyemezsin.
Derin öğrenmenin arkasındaki matematiği kapsamlı bir şekilde anlayarak başla. Buna doğrusal cebir, kalkülüs ve olasılık teorisindeki ileri konular dahil. Sağlam bir matematiksel temel, karmaşık kavramları kavramanı ve yeni mimariler geliştirmeye katkıda bulunmanı sağlar.
Şunlar gibi ileri mimarileri ve teknikleri keşfet:
- Transformer modelleri: Dikkat (attention) tabanlı bu mimariler doğal dil işlemede devrim yarattı. Öz-dikkat (self-attention) mekanizmasını ve bunun bu modellerin sıralı veride uzun menzilli bağımlılıkları yakalamasını nasıl mümkün kıldığını anla.
- Çizge Sinir Ağları (GNN'ler): Bu modeller çizge yapılı veriyle çalışmak için tasarlanmıştır; bu da onları sosyal ağlar, moleküler yapılar ya da içsel ilişkisel bilgi taşıyan herhangi bir veri içeren görevler için değerli kılar.
- Kapsül Ağları (Capsule Networks): İnsan görsel sisteminden esinlenen bu ağlar, veri içindeki hiyerarşik ilişkileri yakalamayı amaçlar ve geleneksel CNN'lere kıyasla potansiyel olarak daha iyi gürbüzlük ve yorumlanabilirlik sunar.
- Nöro-sembolik yapay zeka: Sinir ağlarını sembolik akıl yürütmeyle birleştiren bu gelişen alan, hem örüntü tanıma hem de mantıksal akıl yürütme yapabilen yapay zeka sistemleri yaratmayı hedefler.
- Meta-öğrenme: "Öğrenmeyi öğrenmek" olarak da bilinen bu yaklaşım, minimum veriyle yeni görevlere hızla uyum sağlayabilen modeller eğitmeyi içerir; daha esnek yapay zeka sistemlerine doğru kritik bir adımdır.
NeurIPS, ICML ve ICLR gibi en üst düzey konferanslardan makaleleri düzenli olarak okuyarak en güncel araştırmaları takip et. Bu son teknoloji modelleri uygula ve son teknoloji tekniklerle pratik deneyim kazanmak için açık kaynak projelere katkıda bulun.
Derin öğrenmede ustalaştıkça, farklı mimariler arasındaki ödünleşimleri ve her birini ne zaman uygulayacağını anlamaya odaklan. Hesaplama verimliliği, yorumlanabilirlik ve performans gibi faktörleri göz önünde bulundurarak belirli görevler için özel mimariler tasarlama becerisini geliştir.
Sonuç olarak, derin öğrenmede ustalaşmak hiç bitmeyen heyecan verici bir yolculuktur. Alan sürekli evriliyor; yeni mimariler ve teknikler her zaman ortaya çıkıyor. O merak duygusunu canlı tut, sürekli öğrenmeyi kucakla ve o alışılmadık fikirleri keşfetmekten çekinme. Kim bilir? Senin eşsiz bakış açın ve deneylerin, derin öğrenmedeki bir sonraki büyük atılıma yol açabilir ;)
İşte hayatını kolaylaştıracak bazı kaynaklar:
Makale İncelemeleri:
- Gabriel Mongaras (YouTube)
- Yannic Kilcher (YouTube)
- Sasha Rush (YouTube)
- Two Minute Papers (YouTube)
- Samuel Albanie (YouTube)
Saklı Hazineler:
- Emergent Garden (YouTube)
- Outlier (YouTube)
- Efficient NLP (YouTube)
- Mutual Information (YouTube)
- Rational Animations (YouTube)
- Artem Kirsanov (YouTube)
Ek Kaynaklar:
Bloglar & Dersler:
- Anthropic Research (yayınları gerçekten iyi)
- Transformer Circuits
- Distill - Circuits: Zoom In
- Rycolab ACL 2023 Tutorial
- Rycolab LLM Course
Bültenler:
Unutma: hiçbir kaynak kendi çabandan daha iyi bir öğretmen değildir.
Bilgisayarlı Görü
Bilgisayarlı görü, yapay zekadaki en heyecan verici ve somut alanlardan biridir — görebilen sistemler inşa edersin. Verinin soyut metin olduğu NLP'nin aksine, burada girdiler ve çıktılar görseldir; bu da hem başarıları hem de başarısızlıkları anında sezgisel kılar.
Derin öğrenme yaklaşımlarına dalmadan önce klasik bilgisayarlı görü ile başla. Görüntü filtreleme, kenar tespiti (Canny, Sobel), öznitelik çıkarımı (SIFT, HOG) ve geometrik dönüşümleri anlamak, sinir ağlarının aslında ne öğrendiğini anlamak için sana gereken sözcük dağarcığını verir. OpenCV burada en iyi dostundur — onlarca yıldır CV'nin bel kemiği olmuştur ve ön işleme, veri artırma (data augmentation) ve dağıtım (deployment) için hâlâ vazgeçilmezdir.
Klasik temele sahip olduğunda, görü için derin öğrenmeye geç. CNN'lerle derin öğrenme bölümünde zaten karşılaştın, ama işte burada daha derine iniyorsun:
- Görüntü Sınıflandırma: CV'nin "merhaba dünya"sı. ResNet ile başla, atlama bağlantılarını (skip connections) ve neden önemli olduklarını anla. Sonra EfficientNet'i ve mimari aramanın (architecture search) oyunu nasıl değiştirdiğini keşfet.
- Nesne Tespiti: R-CNN'den (yavaş, iki aşamalı) YOLO'ya (hızlı, tek aşamalı) doğru evrimi anla. YOLO ailesi (özellikle Ultralytics'in uygulamaları) inanılmaz pratik — dakikalar içinde çalışan bir tespit modeline sahip olabilirsin. Ama çapa kutularının (anchor boxes) neden çalıştığını, maksimum olmayanı bastırmanın (non-max suppression) ne yaptığını ve hız ile doğruluk arasındaki ödünleşimleri anla.
- Anlamsal & Örnek Bölütleme: Piksel düzeyinde anlama. Tıbbi görüntüleme için U-Net, örnek bölütleme için Mask R-CNN. Öznitelik piramidi ağlarının (FPN) çok ölçekli tespiti nasıl mümkün kıldığını anlamak kilit noktadır.
- Görü Transformer'ları (ViT): Transformer istilası görüye de ulaştı. ViT'ler görüntüleri yamalara böler ve onları token olarak ele alır. Bunun neden çalıştığını (ve CNN'lerin hâlâ ne zaman kazandığını) anlamak önemli. Son teknoloji için DINOv2 ve SAM'e (Segment Anything) bak.
- Görü için Üretici Modeller: GAN'ler DL bölümünde işlendi, ama difüzyon modelleri burada parlıyor. Gürültü giderme (denoising) sürecini ve Stable Diffusion gibi modellerin metinden görüntü nasıl ürettiğini anlamak hem büyüleyici hem de giderek daha pratik.
- Çok Kipli (Multimodal) Modeller: CLIP, görü ile dili alanı değiştirecek şekilde birbirine bağladı. Karşılaştırmalı öğrenmeyi (contrastive learning) ve görü-dil modellerinin nasıl çalıştığını anlamak, görüntü arama, sıfır-atış (zero-shot) sınıflandırma ve görsel soru yanıtlama gibi modern uygulamaların kapısını açar.
Pratik bir not: CV projeleri son derece tatmin edicidir çünkü sonuçlar görseldir. Gösterebileceğin şeyler inşa et — web kameranda gerçek zamanlı bir nesne tespit modeli, bir stil aktarımı uygulaması, bir tıbbi görüntü sınıflandırıcısı. Bu projeler yalnızca öğrenmek için harika olmakla kalmaz, aynı zamanda mükemmel portföy parçaları da olur.
İşte hayatını kolaylaştıracak bazı kaynaklar:
- Stanford CS231n: Deep Learning for Computer Vision - O temel kurs
- First Principles of Computer Vision (YouTube) - klasik CV için mükemmel bir kanal
- OpenCV Documentation & Tutorials
- Ultralytics (YOLO) - pratik nesne tespiti
- PyImageSearch - uygulamalı eğitimler
- Papers with Code - Computer Vision - kıyaslamalar ve son teknoloji
- Hugging Face Vision Models
Unutma: hiçbir kaynak kendi çabandan daha iyi bir öğretmen değildir.
Doğal Dil İşleme
NLP, yapay zekadaki en çarpıcı ilerlemelerden bazılarının yaşandığı yerdir. Modern NLP'yi gerçekten anlamak için yolculuğu anlaman gerekir — yalnızca nerede olduğumuzu değil, buraya nasıl geldiğimizi ve değişimlerin neden olduğunu.
Temellerle başla: tokenizasyon, gövdeleme (stemming), kök bulma (lemmatization), kelime torbası (bag-of-words), TF-IDF. Bunlar eski moda görünebilir, ama sana metni veri olarak düşünmeyi öğretirler. Kelime gömmelerini (word embeddings) (Word2Vec, GloVe) anlamak çok önemli — kelimelerin, anlamsal ilişkilerin geometrik olarak yakalandığı yoğun vektörler olarak temsil edilebileceği fikri ("kral - erkek + kadın = kraliçe") bir paradigma değişimiydi.
Sonra modern yapay zekadaki en önemli mimari geçiş geliyor: yinelemeli modellerden transformer'lara geçiş. Bunun neden olduğunu anlamak, mimarileri ezberlemekten daha önemli:
- RNN'ler ve LSTM'ler dizileri her seferinde bir token, soldan sağa işler. Bu sıralı doğa, etkili bir şekilde paralelleştirilememeleri anlamına gelir ve kapı mekanizmalarına rağmen uzun menzilli bağımlılıklarla mücadele ederler. Eğitim yavaş ve ölçeklendirme zahmetlidir.
- Transformer'lar bunu, her token'ın diğer her token'a eşzamanlı olarak dikkat etmesini sağlayan öz-dikkat mekanizmasıyla değiştirdi. Asıl içgörü budur: paralellik. Transformer'lar tüm dizileri GPU'larda bir anda işleyebilir, bu da donanımla ölçeklendikleri anlamına gelir. Bu yalnızca bir mühendislik kolaylığı değildi — neyin mümkün olduğunu temelden değiştirdi. Devasa veri kümeleri üzerinde verimli eğitim yapabilme yeteneği, LLM'leri doğuran şeydir.
LLM'lerin tam olarak ne öğrendiğini anlamak kritik. Onlar gerçeklerin veritabanları değil. Arama motorları değil. Özünde, devasa miktarda metin üzerinde eğitilmiş bir sonraki token tahmincisidirler. Ama bu basit hedef aracılığıyla, sözdizimini, anlambilimi, akıl yürütme örüntülerini, dünya bilgisini ve hatta anlamaya benzeyen bir şeyi yakalayan içsel temsiller geliştirirler. Bunun "gerçek" bir anlama oluşturup oluşturmadığı tartışması büyüleyici ve sürmekte — ama yadsınamaz olan, öğrendikleri temsillerin dikkat çekici biçimde zengin olduğudur. Mekanistik yorumlanabilirliği (mechanistic interpretability) (bireysel nöronların ve devrelerin belirli davranışları nasıl uyguladığını) incelemek, bu modellerin içinde aslında ne olup bittiğine dair daha derin bir kavrayış kazandırır.
Modern NLP manzarası bu temel üzerine kuruludur:
- BERT ve kodlayıcı (encoder) modelleri: Çift yönlü anlama; sınıflandırma, varlık ismi tanıma (NER) ve anlama görevleri için harika. Bir kez ön eğit, her şey için ince ayar yap.
- GPT ve kod çözücü (decoder) modelleri: Otoregresif üretim. Modern sohbet botlarının ve kod asistanlarının temeli.
- Diziden diziye (sequence-to-sequence) modeller (T5, BART): Çeviri, özetleme ve diğer dönüştürme görevleri için kodlayıcı-kod çözücü mimarileri.
- İnce ayar ve RLHF: Ham dil modellerinin nasıl faydalı asistanlara dönüştüğü. Talimat ayarını (instruction tuning) ve hizalamayı (alignment) anlamak giderek daha önemli.
- RAG (Geri Getirmeyle Artırılmış Üretim): Halüsinasyonu azaltmak ve güncel kalmak için LLM'leri dış bilgi geri getirmesiyle birleştirmek.
Pratik NLP çalışması için temel araçlar:
- Hugging Face Transformers: Önceden eğitilmiş modellerle çalışmak için fiili (de facto) kütüphane. İnce ayar yapmayı, çıkarım yapmayı ve model hub'ını keşfetmeyi öğren.
- spaCy: Harika tokenizasyon, NER ve bağımlılık ayrıştırma ile üretime hazır NLP. Hızlı ve pratik.
- NLTK: NLP temellerini öğrenmek için klasik kütüphane. Tokenizasyonu, sözcük türü etiketlemeyi (POS tagging) ve ayrıştırmayı ilk ilkelerden anlamak için harika.
- Zemberek: Türkçe NLP için vazgeçilmez — Türkçe metin için biçimbilimsel analiz, tokenizasyon ve yazım denetimi. Türkçe sondan eklemeli (agglutinative) bir dildir; bu da standart, İngilizce merkezli NLP araçlarının onda sıklıkla başarısız olması anlamına gelir. Zemberek bu boşluğu doldurur.
İşte hayatını kolaylaştıracak bazı kaynaklar:
- Stanford CS224N: NLP with Deep Learning - O NLP kursu
- Hugging Face NLP Course - uygulamalı ve ücretsiz
- Speech and Language Processing (Jurafsky & Martin) - NLP ders kitabı, çevrimiçi ücretsiz
- The Illustrated Transformer (Jay Alammar) - transformer'ların en iyi görsel açıklaması
- Andrej Karpathy - Let's build GPT (YouTube) - sıfırdan bir transformer inşa et
- Attention Is All You Need (orijinal makale) - bunu oku, bunu anla
- Zemberek NLP - Türkçe NLP araç seti
Unutma: hiçbir kaynak kendi çabandan daha iyi bir öğretmen değildir.
Veri Mühendisliği
Veri mühendisliği, yapay zekadaki her şeyin üzerinde koştuğu, cazibesiz ama kesinlikle kritik bir temeldir. Dünyanın en parlak model mimarisine sahip olabilirsin, ama veri hattın (pipeline) bozuksa, özniteliklerin bayatsa ya da eğitim verin çöpse — hiçbirinin önemi kalmaz. Deyişte olduğu gibi: çöp girer, çöp çıkar (garbage in, garbage out).
Makine öğrenmesi motorsa, veri mühendisliği yakıt sistemi, yollar ve benzin istasyonlarıdır. İşte buna nasıl yaklaşacağın:
SQL ile başla. Bu tartışmaya kapalı. SQL onlarca yıldır var ve hiçbir yere gitmiyor. Onda ustalaş — sadece SELECT ve WHERE değil, pencere fonksiyonları (window functions), CTE'ler, sorgu optimizasyonu ve yürütme planlarını (execution plans) anlamak. İster bir ML mühendisi, ister veri bilimci, ister veri mühendisi ol, SQL'i her gün kullanacaksın. Gerçek dünyadaki "veri işinin" çoğu Python değil, SQL'dir.
Veri modellemeyi ve depolamayı anla:
- OLTP (işlemsel) ile OLAP (analitik) veritabanları arasındaki farkı ve her birini ne zaman kullanacağını öğren.
- Veri ambarı (data warehousing) kavramlarını anla: yıldız şemaları, kar tanesi şemaları, yavaş değişen boyutlar (slowly changing dimensions).
- Farklı depolama biçimlerine aşina ol: Parquet (sütunlu, sıkıştırılmış, hızlı), CSV (basit, her yerde, yavaş), JSON (esnek, iç içe) ve her birinin ne zaman uygun olduğu.
- Veri gölleri (data lakes), veri ambarları ve veri göl-evleri (data lakehouses) ile aralarındaki ödünleşimleri öğren.
Veri hatları inşa etmeyi öğren:
- ETL ve ELT: Klasik tartışma. ETL (Extract, Transform, Load) veriyi yüklemeden önce dönüştürür. ELT (Extract, Load, Transform) önce ham veriyi yükler ve ambarda dönüştürür. Modern veri yığınları ELT'ye yöneliyor çünkü bulut ambarları dönüşümleri kaldıracak kadar güçlü.
- Orkestrasyon: Apache Airflow, veri hatlarını zamanlamak ve yönetmek için standart. DAG'leri (yönlü çevrimsiz çizgeler), görev bağımlılıklarını ve başarısızlıklar ile yeniden denemelerin nasıl ele alınacağını anla.
- Toplu (Batch) ve Akış (Streaming): Veri işinin çoğu toplu işlemedir (veriyi parçalar hâlinde işle, ör. günlük). Ama bazı uygulamalar gerçek zamanlı veriye ihtiyaç duyar — işte akış burada devreye girer. Olay akışı için Apache Kafka ve akış işleme için Apache Spark Structured Streaming ya da Flink tercih edilen araçlardır.
Bulut platformları şarttır:
- Birini seç (AWS, GCP ya da Azure) ve onu iyi öğren. Kavramlar platformlar arasında aktarılabilir. Nesne depolama (S3/GCS), yönetilen veritabanları (RDS, BigQuery, Redshift) ve sunucusuz hesaplama (serverless compute) hakkında bilgi edin.
- Kod olarak altyapı (Infrastructure as code) (Terraform) ve konteynerleştirme (Docker) giderek beklenen beceriler.
Veri kalitesi ve gözlemlenebilirlik:
- Veri testi (Great Expectations, dbt testleri), verinin modellere ulaşmadan önce doğru olmasını sağlar.
- Veri soyağacı (data lineage) — verinin nereden geldiğini ve nasıl dönüştürüldüğünü bilmek — hata ayıklama ve uyumluluk için kritiktir.
- Veri hatlarını izlemek, ML modellerini izlemek kadar önemlidir.
Aşina olunması gereken modern veri yığını:
- dbt (data build tool): Sürüm kontrolü, test ve dokümantasyon ile SQL tabanlı dönüşümler. Bu, analitik mühendisliği için standart hâline geldi.
- Apache Spark: Büyük ölçekli veri kümeleri için dağıtık veri işleme. PySpark, Python kullanmana olanak tanır.
- Apache Kafka: Gerçek zamanlı veri hatları için olay akışı platformu.
- Apache Airflow: İş akışı orkestrasyonu ve zamanlama.
Pratik bir not: veri mühendisliği teknolojide en çok talep gören rollerden biridir ve iyi kazandırır. Hedefin bir ML araştırmacısı olmak olsa bile, veri mühendisliğini anlamak seni belirgin biçimde daha etkili kılar. Tanıdığım en iyi ML mühendisleri, tüm hattı —ham veri alımından model sunumuna kadar— sahiplenebilenlerdir.
İşte hayatını kolaylaştıracak bazı kaynaklar:
- Fundamentals of Data Engineering (Joe Reis & Matt Housley) - O veri mühendisliği kitabı
- DataTalksClub Data Engineering Zoomcamp - ücretsiz, uygulamalı kurs
- Seattle Data Guy (YouTube) - pratik veri mühendisliği içeriği
- Designing Data-Intensive Applications (Martin Kleppmann) - dağıtık sistemler ve verinin incili
- Mode SQL Tutorial - mükemmel etkileşimli SQL öğrenimi
- dbt Documentation & Tutorial
- Apache Airflow Documentation
- Start Data Engineering (Blog)
Unutma: hiçbir kaynak kendi çabandan daha iyi bir öğretmen değildir.
Öğrenmenin Ötesinde
Buraya kadar okuduğun şeyler (atlamadıysan) sana benim, yalnızca ilgilendiği alanda çalışan ve başka hiçbir şey yapmayan (doğru değil) bir inek (öyleyim) olduğumu düşündürebilir.
Lütfen şunun farkında ol: hayatın, bileşenlerinden daha fazlasıdır. İşin kesinlikle son derece önemli bir bileşen, ama tek şey olmayacak. Sadece tadını çıkarmak için bir fincan kahve içmeye ve sadece onlarla vakit geçirmek için arkadaşlarınla takılmaya biraz zaman ayır. Hobilerin olsun (benimkiler kahve, sinema ve kitaplar <3) ve fiziksel aktivitelerle ilgilen. Bunların genel geçer öneriler gibi göründüğünü biliyorum ama onları değerli buluyorum. Üniversite zorlayıcı olabilir; insanların ya çalışmalarına fazla odaklandığını ya da hiç çalışmadığını görüyorum.
Dengeyi korumanın zor olduğunu biliyorum, ama çalışmalarında hayatını kolaylaştıracak kaynaklar ve yollar var. Bu sayfada, içgörüler sunarak ve seni kaynaklara yönlendirerek bu dengeyi korumana yardımcı olmaya çalıştım.
Umarım faydalı olabilmişimdir :)