← Blog'a Dön

Yapay Zeka ile Numpy Öğrenmek

Mikail Karadeniz tarafından yazılmıştır.

Bültenimize Abone Olun

Gelişmelerden haberdar olmak için e-posta adresinizi giriniz.

Bu yazıda sizin için aşağıdaki soruları yanıtlamaya çalıştım. Keyifli okumalar!

  1. Yapay zeka çağında öğrenme sürecimizi nasıl şekillendirmeliyiz?
  2. Yeni bir kütüphane veya teknolojiyi öğrenirken hangi adımları izlemeliyiz?
  3. Yapay zeka araçlarından (ChatGPT, Grok, Gemini) nasıl faydalanarak öğrenme sürecimizi hızlandırabiliriz?
  4. Öğrendiğimiz konuları daha iyi kavramak ve hatırlamak için nasıl bir not alma ve dokümantasyon stratejisi geliştirebiliriz?
  5. Kavram odaklı bir öğrenme yaklaşımı nasıl uygulanabilir ve bunun avantajları nelerdir?
  6. Öğrenilen bilgilerin pratik uygulamalarla pekiştirilmesi için hangi yöntemler kullanılabilir?
  7. Hem Notion hem de NotebookLM gibi araçları birlikte kullanmanın öğrenme sürecine katkıları nelerdir?

Yapay Zeka Çağında Öğrenme Yaklaşımları

Her gün yeni bir yapay zeka ürünü ortaya çıkıyor ve teknolojilerin kontrolümüzden çıkıp gittiğini hissediyoruz. Geçen hafta öğrendiğimiz bilgiler bu hafta eskimiş hale geliyor. Peki yapay zeka çağında öğrenme sürecimizi nasıl şekillendirmeliyiz? Konuları derinlemesine öğrenmeli miyiz? Özellikle programlama gibi birçok yapı ve kavramı hatırlamayı gerektiren alanlarda, yeni bir teknoloji veya kütüphaneyi öğrenirken nasıl bir yaklaşım benimsemeliyiz? Eskiden olduğu gibi her bir deseni ve kavramı ayrıntılı öğrenip bunların uygulamalarını aklımızda tutmalı mıyız? Gelin bu sorulara bir konuyu birlikte öğrenerek yanıt bulmaya çalışalım.

yz-ogren.jpg

Modern Öğrenme Stratejileri

Her bir ayrıntıyı akılda tutmaya çalışmanın artık doğru bir yaklaşım olduğunu düşünmüyorum. Ancak "hiçbir şey bilmeden sadece konuşarak kod yazabiliyorum" veya "bir konuyu tamamen yapay zekaya sorarak öğrenebilirim" demek de gerçekçi değil. Bu iki uç yaklaşımın ortasını bulmamız gerekiyor. Geleneksel öğrenme yöntemleri artık geride kaldı. Öğrenme sürecimizi yeniden değerlendirmeli, kullanışsız yöntemleri elemeli ve geliştirilmeye açık olanları iyileştirmeliyiz.

NumPy Öğrenme Deneyimi

Başlıktan da anlaşılabileceği üzere bugün birlikte numpy öğreneceğiz. En baştan belirtmeliyim ki bu yazıda herhangi bir reklam yoktur. Notion, NotebookLM veya diğer markalar sponsor değildir. Tamamen kendi deneyimlerimi aktarıyorum.

Öğrenme Sürecinin İlk Adımları

Öncelikle YouTube üzerinde "crash course"ları araştırmaya başlıyorum. Bu kurslardan en çok "cheatsheet" gibi görüneni seçiyorum.

Bu durumda çalıştığım video: https://www.youtube.com/watch?v=vrDPtxnSWos

Notion'a giderek çalıştığım konu başlığında bir sayfa açıyorum. Notion not alma ve bilgi organizasyonu için mükemmel bir araç.

NotebookLM'e giderek aynı şekilde çalıştığım konu başlığında bir sayfa açıyorum. NotebookLM içerisine youtube videosunun linkini vermeyi ihmal etmiyorum.

Yapay Zeka Destekli Öğrenme Süreci

Bu videoların genellikle uzunluğu bir saat civarında oluyor. Evet, bir saatte uzman olamayacağımın farkındayım — sonuç kısmında bu konuya da değineceğiz. Videoyu izlerken yanımda IDE açık olarak, öğrendiklerimi pratik yaparak ilerliyorum. Anlamadığım bir nokta olduğunda ChatGPT, Grok veya Gemini'den yardım alıyorum (bazen üçünü birden kullanıyorum 🤭). Örneğin, numpy.sum() fonksiyonunda axis parametresini anlamakta zorlanıyorsam, "numpy.sum() fonksiyonunu ayrıntılı bir şekilde açıkla ve 5 örnek ver. axis kullanımını özellikle belirt." şeklinde bir soru soruyorum. Aldığım yanıtlardaki farklı örnekler sayesinde konuyu daha iyi kavrayabiliyorum.

Not Alma ve Dokümantasyon Stratejisi

sema.jpg

Son zamanlarda fark ettim ki dil modelleri önce İngilizceye çeviri yapıp sonra düşünme işlemini tamamlıyor, bu yüzden sorularımı Türkçe yazmayı tercih ediyorum. Özellikle mantık yürütme odaklı modeller, bilginin en zengin olduğu dile çeviri yapıp düşündükten sonra Türkçe yanıt veriyor. Aldığım yanıtları Notion'daki sayfama yeni başlıklar altında ekliyorum — örneğin "Numpy sum Fonksiyonu" başlığı altında LLM'in ürettiği bilgiyi yapıştırıyorum. Bu yöntemi karşılaştığım her sorun için uyguluyorum. Bazen internet üzerindeki kaynaklara da başvuruyorum ve bu sayfaları NotebookLM'e kaynak olarak ekliyorum. Kendi notlarımı da Notion üzerine alıyorum. Peki neden hem Notion hem NotebookLM'i birlikte kullanıyorum? Çünkü Notion yazı düzenleme konusunda çok gelişmiş ve dil modellerinin ürettiği sözdizimini (markdown) bozmadan PDF'e dönüştürebiliyor. Önce notlarımı Notion'a alıyor, sonra bunları PDF'e çevirerek NotebookLM'e kaynak olarak ekliyorum.

Kavram Odaklı Öğrenme Yaklaşımı

Burada kendi aldığım notların daha çok kavramlar üzerine olduğunu belirtmeliyim. Numpy'daki broadcast özelliği buna iyi bir örnek. Her fonksiyonun detaylarını tek tek not almak yerine, genel yöntemlere odaklanıyorum. Bir fonksiyonun genel mantığını kavramam ve birkaç kullanım örneğini görmem, ileride onu kullanabilmem için genellikle yeterli oluyor. Kod yazarken fonksiyonların detaylarını ve implementasyonunu cursor, roocode, aider gibi yapay zeka araçları benim için hallediyor. Ben tarif etmeme yetecek kadar bilgiyi almaya odaklanıyorum. İşin matematik kısmı varsa (makine öğrenmesi algoritmaları vs) onlara odaklanıyorum.

Pratik Uygulama ve Problem Çözme

Konunun temelini ve kavramlarını kavradıktan sonra pratik aşamasına geçiyorum. Bunun için de yine ChatGPT, Gemini veya Grok'tan yardım alıyorum. Bu konuda kullandığım prompt şöyle: "Python ile NumPy pratiği yapmak istiyorum. Benim için kolaydan zora olacak şekilde, 10 adet, gerçek hayat sorunlarını içeren problem üretir misin?" İşte aldığım cevap (soruların cevaplarını tabiki ben ekledim 🙂):


Harika bir fikir! NumPy, veri analizi, bilimsel hesaplama ve makine öğrenmesi gibi alanlarda temel bir kütüphanedir. İşte size kolaydan zora doğru sıralanmış, gerçek hayat senaryolarını içeren 10 NumPy pratik problemi:

Kolay Seviye

  1. Haftalık Harcama Takibi:
  2. Kitap İndirim Hesaplama:
  3. Hava Durumu Kayıtları:

Orta Seviye

  1. Öğrenci Not Analizi:
  2. Aylık Satış Verilerini Düzenleme:
  3. Sensör Verisi Dönüşümü ve Filtreleme:

Zor Seviye

  1. Alışveriş Sepeti Toplam Maliyeti:
  2. Müşteri Konumlarına Göre Mesafe Hesabı:
  3. Stok Getiri Korelasyonu:
  4. Basit Görüntü İşleme (Parlaklık Ayarı):

Bu problemlerle NumPy'nin temelinden başlayarak daha karmaşık operasyonlarına kadar pratik yapabilirsiniz. Başarılar dilerim!


Her bir soruyu ciddiye alarak ve mümkünse yapay zeka yardımı almadan çözmeye çalışıyorum. Takıldığım noktalarda konu bazında sorular soruyorum. Örneğin, np.clip() ipucu verildiğinde ve işlevini bilmediğimde şöyle bir soru soruyorum: "NumPy kütüphanesinde clip fonksiyonu ne işe yarar? Benim için 5 farklı kullanım örneği verir misin? Başka konularla bağlantısı varsa onları da açıklar mısın?" Aldığım cevabı önce Notion'a, oradan da PDF olarak NotebookLM'e aktarıyorum. Tüm soruları cevapladıktan sonra hem soruları hem cevapları NotebookLM'e aktarıp bilgiyi çağırma ve tekrar aşamasına geçiyorum.

notebooklm.png

Bu aşamada NotebookLM içerisinde biriktirdiğimiz kaynaklar işe yaramaya başlıyor. NotebookLM tarafından sağlanan "Özet Belge", "Çalışma Klavuzu" , "Sıkça Sorulan Sorular" gibi hızlı promptlar genelde tekrar etmemi kolaylaştırıyor ve konuyu kavrıyorum. Ayrıca kendi aldığım notlar arasında da "şöyle bir şey vardı o notu bana hatırlatır mısın" demem notuma kolayca ulaşmamı sağlıyor.

Sonuç

Bir saat içinde belki uzman olamadım ama konuyu iyi kavradığıma eminim. Artık ihtiyaç duyduğumda NumPy'ı rahatlıkla kullanabilir, karşıma çıkan NumPy kodlarını kolayca anlayabilirim. En önemlisi de yapay zekaya fikirlerimi aktarırken NumPy kavramlarını prompt'a ekleyebilir ve çalıştığım kodu buna göre şekillendirebilirim.

Yapay zeka tek bir prompt ile karşılaştığımız karmaşık problemleri çözene kadar bu öğrenme yaklaşımımı sürdürmeyi planlıyorum. Sam Altman'ın yakın zamanda yaptığı bir konuşmada belirttiği gibi: "Biz yazılımcıların yerini alacak değil, onları 10x mühendis yapacak araçlar geliştirmeye çalışıyoruz." Yapay zekayı hayatımıza entegre etmeli, onu nasıl kullanacağımızı ve nasıl 10x mühendis olacağımızı sürekli düşünmeliyiz. Saygılarımla, Mikail Karadeniz.

NotebookLM tarafından üretilen özet metin:

NumPy Briefing Belgesi

Giriş:

Bu belge, sağlanan çeşitli kaynaklardaki temel temaları, önemli fikirleri ve gerçekleri özetlemektedir. Kaynaklar, NumPy kütüphanesinin temellerini, özelliklerini, kullanım alanlarını ve temel kavramlarını kapsamaktadır.

Ana Temalar ve Önemli Fikirler:

1. NumPy'ın Temel Amacı ve Avantajları

2. NumPy Dizileri (ndarray) ve Python Listeleri Arasındaki Fark

3. Vektörleştirme (Vectorization)

4. Yayınlama (Broadcasting)

5. Çok Boyutlu Diziler (N-dimensional Arrays)

6. NumPy'da Temel İşlemler

7. Rastgele Sayı Üretimi

8. NumPy'ın Bilimsel Python Ekosistemindeki Rolü

9. Derin Öğrenme Kütüphaneleri ve NumPy İlişkisi

10. Matris Boyut Kavramı ve Geometrik İlişkiler

11. Görüntü Parlaklığını Artırma ve NumPy İlişkisi

12. NumPy ile Fonksiyon Uygulama Yöntemleri

13. NumPy'da Eleman Bazında İşlemler

14. NumPy ve Korelasyon

15. NumPy'da Toplama (numpy.sum()) Fonksiyonu

16. NumPy'da Görüntü Piksel Değerleri

Sonuç:

Sağlanan kaynaklar, NumPy'ın bilimsel hesaplamalar, veri analizi, görüntü işleme ve derin öğrenme gibi çeşitli alanlarda temel bir araç olduğunu açıkça göstermektedir. N-boyutlu diziler, vektörleştirme, yayınlama ve zengin fonksiyonellik gibi özellikleri sayesinde NumPy, Python'ı güçlü ve verimli bir bilimsel programlama dili haline getiren temel taşlardan biridir.