Derin öğrenmeyi pratiğe nasıl dökebilirim?


#1

Merhabalar,

Sorunumu kısaca özetleyecek olursam andrew ng nin önce machine learning , ardından da deep learning kurslarını izledim. Teorik bilgi açısından mükemmel olmasada belirli bir seviye kat ettiğime inanıyorum.

Merak ettiğim noktalar ise bu kurslardaki teorik bilgiyi pratiğe nasıl dökmem gerektiği hakkında. Logistic regression anlatırken herkesin kedi-köpek ayrımı , lineer regresyon anlatırken herkesin ev metre karesi - fiyat tahmini örneği verdiği gibi bu kursları izlediysen şu uygulamayı yapmayı deneyebilirsin, çok daha kolay olacaktır şeklinde bir tavsiyeniz var mıdır ?
Özellikle buna benzer bir video serisi olur, bir blog olur varsa bildiğiniz, direkt olarak gerçek projelerde bu bilgilerin kullanımını gösteren benimle paylaşırsanız çok sevinirim.

Ve bir ikincisi sizce öğrendiğim teorik bilgileri oturup el ile tek tek pythona kendi kodlarımla yazmalı mıyım?Bunun gerçekten bir faydası var mı?(Olduğunu ve olmadığını savunan insanlar var sanırım aşağıdaki link de bunun üzerine yazılmış bir yazı.) Şu ana dek genellikle hazır yazılmış olanlarını inceledim ancak oturup hepsini baştan yazacak vakiti ayırmadım(üniversitede aldığım derslere de vakit ayırmak zorundayım üşendiğimden değil :slight_smile: ).

https://machinelearningmastery.com/dont-implement-machine-learning-algorithms/


#2

Kod yazarak pratiğe dökersin. İster aç bir Kaggle hesabı oradaki taskleri yap, yarışmalara katıl; ister kendine bir pet project belirle, aç bir github hesabı, o pet project’i bitirmeye çalış.

Hayır c/p yaparsan sadece c/p yapan random bir insan olursun, bir şey öğrendim sanırsın; ama c/p yapamayacağın tasklerde iş göremezsin. Daha doğrusu görürsün ama o da bu alana giren insanların %90’ının yaptığı “github’da kod vardı, kendi datasetimizi verdik ve sonuç aldık; ama bu alanda ilkiz” tadında saçma salak prim kasmaya benzer. İşi bilmeyenler prim verir, ama bilenler sizi iş mülakatına bile çağırmaz.


#3

Aslında burada anlatmak istediğim copy paste yapmak değildi.
Bu algoritmaların koda dökerken sizce hazır kütüphaneler çağırarak mı yapmalıyım. Yoksa ileri yayılımı yazıyım , sonra buna bir de regularization nasıl yapılır onu yazayım şeklinde sıfırdan kendim mi yazmalıyım. 2. söyledigim seçenek güzel bir öğrenme yolu mudur ? Ileri yayılım geri yayılım gibi nisbeten basit kodların ardından gidip te k-NN gibi daha karmaşık işler de bu şekilde öğrenilebilir mi? Yoksa o topa hiç girmemeli miyim?
Cevabınız için teşekkür ederim.


#4

Library kullanmak her zaman daha mantıklı bence.

Sonuçta libraryler senin hali hazırda yazılmış blokları tekrar implement etmeni engellemiyor. Ne biliyim eğer gerçekten L2 regularization’ı daha iyi anlamak için kodlamak istersen, PyTorch’ta weight decay’i kaldırır kendin kodunu yazarsın gibi.

Ha ben illa en ince detayına kadar anlamak istiyorum diyorsan da basit bir CNN-classifier/reggressor’ı yazmak PyTorch/Tensorflow’suz yazmayı denersin. Ama hani bunu bir kere yaptıktan sonra öyle ya da böyle librarylere geçiş yapacaksın ve hayatının geri kalanını zaten o library’i kullanarak geçireceksin. O yüzden öncesinde bu kısım tamamen kişisel tercih. Library’de nn.Conv2d() diye çağırdığın şeyin gerçekten nasıl çalıştığını merak ediyorsan, önce kendin yazmayı deneyebilirsin her zaman.

Ha son not olarak da eğer product’tan ziyade işin research+product kısmındaysan, gidip Keras öğrenme. Gerçekten öğrenme. Library’nin high level framework’ü yerine kendisini öğrenmek, uzun vadede aklına gelebilecek ilginç fikirleri kodlamanı kolaylaştırır. Üstelik librarynin low level’ına ne kadar hakim olursan da altta yürüyen işlerde bir sıkıntı olduğunda problemi çözebilmek için daha az efor sarfedersin. Ama bu benim kişisel düşüncem ve tecrübelerim tabii. Keras’a (ve hatta Tensorflow’a) son 1 senedir karşıyım, çok basic şeyleri yapabilmek için bile saçma salak hackler yapmak zorunda kalmamdan dolayı. (hatta Tensorflow, 2.0 versiyonuyla PyTorch’laşacağı göz önüne alınırsa tek karşı olan da ben değilmişim =))


#5

Bu konu son cevaptan 60 dakika sonra otomatik olarak kapatıldı. Yeni cevap girilmesine izin verilmiyor.