Makine Öğrenimi ve Sinir Ağları - sayfa 52

 

Otomatik Kodlayıcılar (DL 22)



Otomatik Kodlayıcılar (DL 22)

Birçok derin öğrenme senaryosunda, bir sinir ağını tek bir veri kümesinde eğitme ve diğer sorunlara veya veri kümelerine uygulanabilecek verileri kodlamak için bu ağdan gizli bir katman kullanma fikriyle sıklıkla karşılaşırız. Bu kavram transfer öğrenimi olarak bilinir. Örneğin, kalıntı ağlarda ön eğitim, daha sonra farklı veri kümelerine uygulanabilen yararlı görüntü işleme tekniklerinin öğrenilmesini içerir. Önceden eğitilmiş modelin çıktı katmanlarını atıp yeni bir görev için yeni çıktı katmanları ekleyerek, esasen önceden eğitilmiş model tarafından üretilen kodlanmış verileri işleyen yeni bir ağ oluşturuyoruz.

Sözcük yerleştirmeleri, amacın gizli katmanlarda anlamlı bilgileri yakalayan bir temsili öğrenmek olduğu veri kodlama amacına da hizmet eder. Bu fikir, diğer çeşitli bağlamlara da uzanır. Bu konsepti benimseyen dikkate değer bir model, otomatik kodlayıcıdır. Bir otomatik kodlayıcı, giriş verilerinin ve çıkış verilerinin aynı olduğu denetimsiz veriler üzerinde eğitilir. Bu regresyon problemini lineer regresyon kullanarak çözmek önemsiz gibi görünse de, bir otomatik kodlayıcının birincil amacı gizli katmanlarında daha kompakt bir temsil öğrenmektir.

Otomatik kodlayıcı, gizli katmanların boyutunu kademeli olarak azaltarak, ağı girdi verilerinin sıkıştırılmış temsillerini öğrenmeye zorlar. Ağ, bu sıkıştırılmış temsilden orijinal girdiyi tutarlı bir şekilde yeniden üretebilirse, veri sıkıştırmayı etkili bir şekilde öğrenir. Örneğin, girdi olarak 200x200 piksellik bir görüntümüz varsa ve bunu 1000 nöronluk gizli bir katmana indirgersek, bu daha sonra orijinal görüntünün yakın bir yakınlığını yeniden oluşturmak için geri genişleyebilir, 20:1'lik bir sıkıştırma oranı elde ederiz.

Bununla birlikte, bir sinir ağını yalnızca veri sıkıştırma için kullanmak, özellikle kullanışlı değildir, çünkü öğrenmeye dayalı olmayan daha verimli sıkıştırma algoritmaları mevcuttur. Bunun yerine, bir otomatik kodlayıcının değeri, diğer derin öğrenme görevlerinde transfer öğrenimi için bir temsil oluşturmak üzere ağın ilk yarısını veya giriş kümesinden veri örnekleri oluşturmak için bir kod çözücü olarak ikinci yarısını kullanmakta yatar.

Transfer öğrenimi için bir otomatik kodlayıcının ilk uygulaması, derin öğrenmenin ilk günlerinde belirgindi. Ancak, o zamandan beri öğrenmeyi transfer etmek için daha iyi yaklaşımlar geliştirilmiştir. Öte yandan, veri örnekleri oluşturmak için ağın kod çözücü kısmını kullanmak, diğer birçok derin öğrenme algoritmasının temeli oldu.

En basit yaklaşım, gizli katmanın boyutunu en aza indirerek mümkün olan maksimum sıkıştırmayı elde etmeyi içerir. Bu senaryoda, kod çözücüye verilen herhangi bir makul girdi vektörü, girdi verilerinin dağılımına benzeyen veriler üretmelidir. Bununla birlikte, gizli katmanın optimal boyutunu belirlemek zordur. Ya çok küçük olabilir, bu da onu girdileri doğru bir şekilde yeniden üretemez hale getirebilir ya da çok büyük olabilir, bu da orijinal veri kümesine benzemeyen gerçekçi olmayan verilerin üretilmesine neden olabilir.

Bu sorunu çözmek için, otomatik kodlayıcıyı rastgele örneklenmiş vektörlere benzeyen gösterimleri öğrenmeye teşvik etmek için mimariyi değiştirebiliriz. Bu değişiklik bizi değişken otomatik kodlayıcıya götürür. Varyasyonel bir otomatik kodlayıcıda, ortadaki gizli vektör, ortalama ve varyansı temsil eden iki vektörle değiştirilir. Eğitim süreci, daha sonra kod çözücü için girdi oluşturmak üzere gizli kodlama vektörleri ile birleştirilen normal bir dağılım kullanarak rastgele bir vektör oluşturmayı içerir. Ek olarak, kodlayıcı ağı için kayıp, ortalama ve varyansın normal bir dağılıma yakın kalmasını teşvik eden bir sapma terimi içerir. Bu, temsillerin alanın merkezi etrafında kümelenmesine yardımcı olur ve rastgele örnekleme için onu daha güvenilir hale getirir. Böylece, varyasyonel otomatik kodlayıcı, ağ tarafından öğrenilen veri dağılımına çok benzeyen örnekler oluşturmamıza izin verir.

Özetle, bir sinir ağının gizli katmanını veri kodlama olarak kullanma kavramı, öğrenilmiş bir olasılık dağılımından örnekleme yeteneğine dönüşmüştür. Bu, üretken rakip ağlara ve çeşitli ve ilginç verilerin üretilmesine kapı açar.

Auto-Encoders (DL 22)
Auto-Encoders (DL 22)
  • 2022.11.12
  • www.youtube.com
Davidson CSC 381: Deep Learning, Fall 2022
 

Üretici Düşman Ağları (DL 23)



Üretici Düşman Ağları (DL 23)

Geçen derste, bir tür üretken modelleme yaklaşımı olan varyasyonel otomatik kodlayıcıları ele aldık. Otomatik kodlayıcının temel amacı, üretken dağılımdan örnekleme için kullanılabilecek gizli değişkenleri öğrenmektir. Bir dağılımdan örnekler üretmeyi düşünmenin başka bir yolu, hesaplamalı rasgele sayı üreteçleridir .

Programlamada bir rasgele kitaplık kullanıldığında, rasgele dağılımlardan örnekler, bir rasgele veya sözde rasgele bit dizisine dayalı olarak üretilir. Rastgele sayı üreteci, bu bit dizisini farklı bir dağılımdan örneklere dönüştürmek için hesaplamalar yapar. Bu jeneratörlerde birçok dağıtım, tekdüze dağılımların üzerine inşa edilmiştir.

Üretken modellemeye yönelik bu alternatif yaklaşım, bir üretici sinir ağının eğitilmesini içerir. Jeneratör rastgele gürültüyü girdi olarak alır ve bunu bir veri dağılımından rastgele bir örneğe dönüştürür. Örneğin, veri kümesi yavru köpeklerin görüntülerinden oluşuyorsa amaç, sinir ağını herhangi bir giriş gürültüsü verildiğinde yavruların rastgele resimlerini oluşturacak şekilde eğitmektir.

Jeneratör ağını eğitmek için ayırıcı adı verilen ek bir sinir ağı kullanılır. Ayrımcı, girdileri gerçek eğitim verilerinden veya üretici ağının çıktısından alır ve girdinin gerçek mi yoksa sahte mi olduğunu belirler. Jeneratör ağı, ayrımcıyı yanıltabilecek örnekler üretmeyi amaçlarken, ayrımcı gerçek veriyi sahte veriden ayırmayı amaçlar. Bu, iki ağ arasında düşmanca bir ilişki yaratır.

Eğitim süreci, önce ayrımcıyı eğiterek gerçek verilerin dağılımını öğrenmesini içerir. Ardından üretici, gerçek verilere benzeyen ve ayrımcıyı kandırabilecek çıktılar üretmek üzere eğitilir. Performanslarını artırmak için ayrımcı ve üretici arasında eğitim dönüşümlü olarak yapılır.

Jeneratör ağı için kayıp fonksiyonu, ayrımcının kaybının tersi veya tamamen farklı bir kayıp fonksiyonu olabilir. Gradyanlar, kayıp fonksiyonuna dayalı olarak ağırlıklarını güncellemek için ayrımcı aracılığıyla üretici ağına geri yayılabilir. Bu, oluşturucunun hedef işlevini nasıl iyileştireceğini öğrenmesini sağlar.

Özellikle amaç veri dağıtımı içindeki belirli kategoriler için örnekler oluşturmak olduğunda, üretici ve ayrımcı ağlar için farklı kayıp fonksiyonları kullanılabilir. Oluşturucu, ayrımcıyı kandırarak belirli kategorilerin çıktısını almasına neden olan numuneler üretmek için etiketler gibi ek bilgilere göre şartlandırılabilir.

Rakip ağları eğitirken dikkate alınması gereken potansiyel başarısızlık modları vardır. Bir arıza modu, hedef fonksiyonunu en aza indirmeyecek olan gerçek veri dağıtımından basitçe örnekler üreten üretici ağıdır. Oluşturucu, farklı örnekler oluşturmak yerine gerçek verileri ezberleyebileceğinden, fazla uydurma başka bir endişe kaynağıdır.

Aşırı uydurmayı önlemek için, üreticinin gerçek verilere maruz kalmasını sınırlamak ve onu ezberlemek için çok fazla fırsata sahip olmadığından emin olmak önemlidir. Gerçek veri seti doğrudan üretici ağına girilmez. Üretici, ayrımcı ağındaki ağırlıkları etkilediğinde dolaylı olarak gerçek verilerden öğrenir ve bu daha sonra üreticiye geri iletilen kaybı etkiler.

Başarılı olursa, eğitimli bir jeneratör ağı, gerçek verilere benzeyen ancak bunun ötesine geçen örnekler üretebilir. Bu, diğer sinir ağlarını eğitmede ve sanatsal amaçlarla veri artırma için yararlı olabilir. Derste, sanat ve veri büyütme için kullanılan üretken çekişmeli ağ örnekleri tartışıldı.

Ek olarak, eğitimli jeneratör ağları, veri artırma ve sanatın ötesinde çeşitli uygulamalarda değerli olabilir. Bu tür bir uygulama, diğer önemli sorunları çözmek için sinir ağlarının eğitimini geliştirmek için sentetik veriler üretmektir.

Jeneratör ağından yararlanarak, sinir ağlarının eğitimini geliştirmek için özel olarak uyarlanmış veri örnekleri üretebiliriz. Örneğin, sınıfların dengesiz olduğu bir sınıflandırma problemimiz varsa, az temsil edilen sınıf için ek örnekler oluşturmak için oluşturucuyu kullanabiliriz. Bu, veri kümesini dengelemeye ve modelin azınlık sınıfını öğrenme yeteneğini geliştirmeye yardımcı olabilir.

Ayrıca, üretken çekişmeli ağlar, farklı kategoriler veya özellik kombinasyonları arasındaki boşluğu keşfeden örnekler oluşturma potansiyeline sahiptir. Örneğin, jeneratöre 0,5 köpek ve 0,5 kedi gibi özelliklerin bir kombinasyonunu verirsek, hem köpeklerin hem de kedilerin özelliklerini birleştiren bir örnek üretebilir. Farklı kategoriler veya özellikler arasında enterpolasyon yapma yeteneği, yaratıcı ve yeni çıktılar için olanaklar açar.

Üretken çekişmeli ağlar, çeşitli alanlarda uygulamalar bulmuştur. Bilgisayarlı görü alanında, gerçekçi görüntüler oluşturmak, görüntü kalitesini artırmak ve hatta derin sahte görüntüler oluşturmak için kullanıldılar. Doğal dil işlemede, gerçekçi metin oluşturmak, diller arasında çeviri yapmak ve hatta sohbet robotları oluşturmak için kullanılmıştır.

Üretken çekişmeli ağları eğitmenin zorlu bir görev olabileceğini not etmek önemlidir. Hiperparametrelerin dikkatli bir şekilde ayarlanmasını, uygun kayıp fonksiyonlarının seçilmesini ve üretici ve ayrımcı ağlar arasındaki takasın yönetilmesini gerektirir. Ek olarak, eğitimin istikrarını sağlamak ve üreticinin yalnızca sınırlı sayıda örnek ürettiği mod çökmesinden kaçınmak önemli hususlardır.

Bu zorluklara rağmen, üretken çekişmeli ağlar, gerçekçi ve çeşitli örnekler oluşturma konusunda etkileyici yetenekler sergilemiştir. Devam eden araştırmalar, bu ağların performansını ve güvenilirliğini daha da artırmak için yeni mimariler, kayıp işlevleri ve eğitim teknikleri keşfederek alanı ilerletmeye devam ediyor.

Sonuç olarak, üretken çekişmeli ağlar, üretken modelleme için güçlü bir çerçeve sunar. Bir üreteç ve ayrımcı ağını çekişmeli bir şekilde eğiterek, gerçek veri dağılımına benzeyen örnekler üretmeyi öğrenebiliriz. Bu, çeşitli makine öğrenimi görevleri için veri artırma, yaratıcı uygulamalar ve iyileştirme eğitiminde heyecan verici olanaklar sunar.

Generative Adversarial Networks (DL 23)
Generative Adversarial Networks (DL 23)
  • 2020.11.15
  • www.youtube.com
Davidson CSC 381: Deep Learning, F'20, F'22
 

AlphaGo ve AlphaGo Sıfır (DL 24)



AlphaGo ve AlphaGo Sıfır (DL 24)

AlphaGo ve AlphaGo Zero, Google yan kuruluşu DeepMind tarafından geliştirilen iki go-playing aracısıdır. Bu sistemler, go-playing algoritmalarında önemli ilerlemeler elde etmek için derin evrişimli sinir ağlarını kendi kendine oynama takviyeli öğrenme ile birleştirir. 2016'da AlphaGo, bir insan dünya şampiyonunu yenen ilk go AI oldu. Bu videoda, DeepMind'ın bu sistemleri nasıl oluşturduğunu keşfedeceğiz ve hem AlphaGo hem de AlphaGo Zero'da yayınlanan araştırma makalelerinden elde edilen önemli bulguları tartışacağız.

Go, basit kuralları olan iki kişilik bir oyundur: oyuncular sırayla tahtanın boş bir kesişim noktasına siyah ve beyaz taşları yerleştirir. Rakibin taşlarıyla çevrili taşlar veya taş grupları yakalanır ve tahtadan çıkarılır. Oyun, her iki oyuncu da pas geçtiğinde sona erer ve skor, çevredeki taşların ve boş kavşakların sayısına göre belirlenir.

Go için bir AI algoritması geliştirmek, birden fazla hamleyi önceden planlamayı gerektirir. Deep Blue gibi satranç motorları bunu, olası tüm hareket dizilerini göz önünde bulundurarak ve ortaya çıkan tahta konumlarını değerlendirerek başardı. Bununla birlikte, bir tahta pozisyonunun kalitesini değerlendirmek, oyunun karmaşıklığı ve daha yüksek dallanma faktörü nedeniyle daha zordur. Arama alanını gelecek vaat eden hamlelerle sınırlamak ve pano konumu kalitesini belirlemek, AlphaGo'nun derin öğrenmeyi kullanarak ele aldığı önemli sorunlardı.

AlphaGo, yönetim kurulu durumlarının değerini ve politikasını tahmin etmek için derin sinir ağlarını eğiterek bu sorunları çözdü. Değer ağı, belirli bir durumdan kazanma olasılığını tahmin ederken, politika ağı hareket kalitesini tahmin eder. Bu modeller, dikkati gelecek vaat eden hareketlerle sınırlayarak ve kaliteli tahminler sağlayarak planlama algoritmasına rehberlik eder.

AlphaGo ve AlphaGo Zero'nun mimarisi farklıdır. Orijinal AlphaGo, ayrı ilke ve değer ağları kullanırken, AlphaGo Zero, ilke ve değer çıktıları için ayrı kafalara sahip tek bir ağ kullanıyordu. Her iki mimari de, önemli kart durumu bilgilerini çıkarmak için artık bloklar içerir. AlphaGo için eğitim verileri, üst düzey amatörler tarafından oynanan oyunları içerirken, AlphaGo Zero yalnızca kendi kendine oyundan alınan verileri kullandı.

Değer ağını eğitmek, pano durumu temsilleri ve kazan/kaybet etiketleri kullanılarak nispeten basittir. İlke ağını eğitmek, taşıma kalitesinin tahmin edilmesini gerektirdiğinden daha karmaşıktır. AlphaGo Zero, ilke ağını kullanıma sunmalar sırasında arama algoritması tarafından oluşturulan hareket kalitesi tahminleri konusunda eğiterek bunu geliştirdi. Zamanla, politika ağı geleceğe birkaç adım öteye taşıma kalitesini tahmin etmeyi öğrenir.

Hem AlphaGo hem de AlphaGo Zero, planlama algoritması olarak Monte Carlo Ağaç Arama'yı (MCTS) kullanır. MCTS, hareket dizisi değerleri ve belirsizlik hakkında bilgi toplamak için sunumlar gerçekleştirir. Arama algoritması, pano durumlarını değerlendirmek ve hareket kalitesini tahmin etmek için ilke ve değer ağlarını kullanır. Kendi kendine oynayarak pekiştirmeli öğrenme yoluyla, her iki sistem de ağlarının kalite tahminlerini geliştirir ve daha güçlü go oyuncuları haline gelir.

Genel olarak, AlphaGo ve AlphaGo Zero'nun geliştirilmesi, go-oynama yapay zekasında önemli bir kilometre taşını temsil ediyor. Bu sistemler, go oyununda olağanüstü performans ve stratejik oyun elde etmek için derin öğrenmeyi takviyeli öğrenme ve planlama algoritmalarıyla birleştirir.

AlphaGo & AlphaGo Zero (DL 24)
AlphaGo & AlphaGo Zero (DL 24)
  • 2022.11.20
  • www.youtube.com
Davidson CSC 381: Deep Learning, Fall 2022
 

Hesaplama Grafikleri (DL 25)



Hesaplama Grafikleri (DL 25)

Bu ders, bir programdaki veri akışının ve hesaplama sırasının görsel temsilleri olan hesaplamalı grafiklere odaklanır. Hesaplamalı grafikler, sinir ağlarında ileri ve geri yayılımı anlamak için yaygın olarak kullanılsa da, herhangi bir programa uygulanabilir. Hesaplama grafikleri, bir sinir ağındaki örtük işlemleri açık hale getirerek, ilgili hesaplamaların daha net anlaşılmasını sağlar.

Hesaplamalı bir grafikte, her düğüm, ağırlıkları aktivasyonlarla çarpma, ağırlıklı girdileri toplama, aktivasyon fonksiyonlarını hesaplama veya kaybı hesaplama gibi bir hesaplamayı temsil eder. Düğümler arasındaki bağlantılar, programdaki değişkenler arasındaki bağımlılıkları temsil eder. Grafikteki herhangi bir düğümün türevinin nasıl alınacağını bilerek, bir sinir ağında hem ileri hem de geri yayılım adımlarını temsil edebiliriz.

Bir sinir ağında gradyan iniş için gereken kısmi türevleri hesaplamak için, zincir kuralını kullanarak türevleri ağ boyunca geriye doğru yayarız. Her adımda, mevcut işlemin türevini önceki düğümün türevi ile çarpıyoruz. Bir düğüm birden çok çıktıya sahip olduğunda, her bir çıktıdan gelen türevleri toplarız.

Hesaplama grafiği, bir sinir ağının çıktılarını hesaplamamıza ve her ağırlığa göre kaybın kısmi türevlerini hesaplamamıza izin verir. Grafiğin bir topolojik türünde geriye doğru çalışarak ve türevleri yayarak, ağdaki herhangi bir parametre için kısmi türevleri belirleyebiliriz.

Ders ayrıca, ara değerlerin ve türevlerin nasıl hesaplandığını gösteren hesaplamalı grafik örnekleri sunar. Fonksiyonları daha küçük hesaplamalara ayırarak ve ara değerlere isimler atayarak, hesaplama grafiğini kullanarak hem fonksiyon çıktılarını hem de bunların kısmi türevlerini hesaplayabiliriz.

Ayrıca, hesaplama grafikleri yalnızca skaler değişkenleri değil aynı zamanda vektörleri, matrisleri veya tensörleri temsil eden değişkenleri de işleyebilir. Aktivasyon vektörleri ve ağırlık matrisleri gibi daha yüksek boyutlu nesnelere karşılık gelen değişkenleri kullanarak, yoğun şekilde bağlı sinir ağlarına ve diğer karmaşık hesaplamalara hesaplama grafikleri uygulayabiliriz.

Yoğun bir şekilde bağlı bir sinir ağı için hesaplama grafiğini genişletmek için, aktivasyon vektörlerine veya ağırlık matrislerine karşılık gelen değişkenleri tanıtabiliriz. Ağın tüm bu katmanındaki aktivasyon vektörünü bir vektör şapka sembolü (^) ile gösterilen "a1" olarak adlandıralım. Benzer şekilde, ağırlıkları bir W1 matrisi olarak gösterebiliriz.

Bu genişletilmiş grafikte, katmandaki her bir düğümün girdisi, aktivasyon vektörünün (a1) ve karşılık gelen ağırlık matrisinin (W1) iç çarpımıdır. Bu işlemi bir matris çarpımı olarak gösterebiliriz: a1 * W1.

Ayrıca, katmandaki her bir düğümle ilişkili bir sapma vektörü (b1) ekleyebiliriz. Önyargı terimi, bir aktivasyon fonksiyonu uygulanmadan önce aktivasyonların ve ağırlıkların iç çarpımına eleman bazında eklenir.

Ardından, elde edilen vektöre element bazında bir aktivasyon fonksiyonu (sigmoid veya ReLU gibi) uygularız. Bu vektörü bir sonraki katmanın aktivasyonlarını temsil eden "a2" (şapka sembollü) olarak gösterelim.

Bu işlemi sinir ağındaki sonraki katmanlar için tekrarlayabilir, düğümleri kenarlarla bağlayabilir ve aktivasyonları ve ağırlıkları grafik boyunca yayabiliriz.

Bu genişletilmiş hesaplamalı grafikte ileri geçişi hesaplamak için, girdi değerleriyle (bir görüntü için piksel yoğunlukları gibi) başlar ve her bir düğümde matris çarpımları, eleman bazında eklemeler ve aktivasyon fonksiyonları uygulayarak bunları grafik boyunca ileriye doğru yayardık. son çıktıyı elde edene kadar.

Geri yayılım söz konusu olduğunda amaç, ağdaki her ağırlığa göre kayıp fonksiyonunun kısmi türevlerini hesaplamaktır. Hesaplama grafiğini genişleterek, zincir kuralını kullanarak bu kısmi türevleri verimli bir şekilde hesaplamamızı sağlayarak, ağ üzerinden geriye doğru gradyan akışını izleyebiliriz.

Geri yayılım sırasında, kayıp fonksiyonunun nihai çıktıya göre türevi ile başlarız ve bunu grafik boyunca geriye doğru yaymak için zincir kuralını kullanırız. Her düğümde, gelen türevi karşılık gelen işlemin (aktivasyon fonksiyonu, matris çarpımı vb.) girdilerine göre türevi ile çarpıyoruz.

Bu süreci takip ederek ağdaki her ağırlık için gradyanları hesaplayabiliriz, bu da gradyan iniş ve varyantları gibi optimizasyon algoritmalarını kullanarak ağırlıkları güncellememize olanak tanır.

Özetle, hesaplama grafiğini yoğun bir şekilde bağlı bir sinir ağını temsil edecek şekilde genişletmek, ileri ve geri yayılma adımlarını görselleştirmemize ve hesaplamamıza olanak tanır. Gradyanların verimli bir şekilde hesaplanmasını sağlar ve ağırlık güncellemeleri yoluyla ağın optimizasyonunu kolaylaştırır.

Computation Graphs (DL 25)
Computation Graphs (DL 25)
  • 2020.09.29
  • www.youtube.com
Davidson CSC 381: Deep Learning, F'20, F'22
 

Otomatik Farklılaşma (DL 26)



Otomatik Farklılaşma (DL 26)

Ters mod otomatik farklılaşma (AD), fonksiyonların gradyanlarını hesaplamak için kullanılan bir tekniktir. Julia'da Zygote kitaplığı, otomatik farklılaştırma yetenekleri sağlar. Julia'da büyük ölçekli makine öğrenimi projeleri üzerinde çalışırken, Zygote üzerine inşa edilmiş Flux derin öğrenme kitaplığı yaygın olarak kullanılır.

Zygote, başka bir işlevi ve giriş argümanlarını alan bir "gradyan" işlevi sunar ve bu noktalardaki gradyanı otomatik olarak hesaplar. Örneğin, bir fonksiyon ve (1, 2, -1) girişi verildiğinde, Zygote gradyanı (22, 4, -12) olarak hesaplayabilir. Bu özellik uygundur ancak Project Zero'da uygulamış olabileceğiniz şeye benzer.

Otomatik türev almanın gücü, daha karmaşık fonksiyonlar için gradyanları hesaplama yeteneğinde yatmaktadır. Örneğin, Fibonacci dizisinin n'inci öğesini hesaplayan bir işlev düşünelim. Zygote'un gradyan fonksiyonunu kullanarak, bu Fibonacci fonksiyonunun gradyanını hesaplayabiliriz. (0, 1, 12) girişlerinde "a"ya göre kısmi türev 89 ve "b"ye göre kısmi türev 144'tür. Ancak sürekli olmadığı için "n"ye göre kısmi türev yoktur. bu fonksiyonda değişken

Zygote'un bu tür işlevler için gradyanı nasıl hesapladığını anlamak için ters mod otomatik farklılaştırmaya bakabiliriz. AD ters modunda, fonksiyon yürütülürken bir hesaplama grafiği oluşturulur ve kısmi türevler grafik boyunca geri yayılır. Bunu başarmak için değişkenlerin sayısal değerleri, türev hesaplaması için hem değeri hem de ek bilgileri depolayan nesnelerle değiştirilir.

Bu nesnelerde iki tür bilgi saklanabilir: (1) değişkenin değeri ve her girdiye göre kısmi türevleri (ileri mod AD) veya (2) değişkenin değeri ve hesaplamadaki önceki değişkenler ve değerini hesaplamak için kullanılan fonksiyon (ters mod AD). Derin öğrenme için ters mod AD, girdi sayısından (örneğin, bir sinir ağındaki ağırlık parametreleri) çıktı sayısında (tipik olarak bir) daha iyi ölçeklendiği için daha kullanışlıdır.

Bu ters mod otomatik fark nesnelerini oluşturarak ve fonksiyon değerlendirmesi sırasında bir hesaplama grafiği oluşturarak, daha sonra geri yayılım gerçekleştirebiliriz. Ara değişkenler, hesaplamaların sonuçlarını saklar ve nesnelerdeki ana kenarlar, grafikteki düğümler arasındaki bağımlılıkları gösterir. Fonksiyon düğümleri ve bağımlılıklar da dahil olmak üzere hesaplama grafiği dolaylı olarak oluşturulur. Zincir kuralını her bir düğüme uygulayarak, türevler grafik boyunca geriye doğru yayılabilir.

Değerleri, ebeveynleri ve işlevleriyle birlikte bu ters mod otomatik fark nesneleri koleksiyonu, genellikle bir degrade bandında depolanır. Bu yaklaşımla, bileşenlerin türevleri bilindiği sürece daha karmaşık ara hesaplamalara sahip fonksiyonlar bile ayırt edilebilir. Bu değişkenlerin değerleri skaler, vektör, matris veya tensör olabilir ve çeşitli veri türleri ile fonksiyonların farklılaşmasını sağlar.

Özetle, Julia'daki Zygote gibi kitaplıklar tarafından desteklenen ters mod otomatik farklılaştırma, işlevler için gradyanları verimli bir şekilde hesaplamamıza olanak tanır. Bir hesaplama grafiği oluşturarak ve bunun aracılığıyla türevleri yayarak, gradyanları hesaplama sürecini otomatikleştirerek derin öğrenme ve diğer karmaşık uygulamalar için uygun hale getirebiliriz.

Automatic Differentiation (DL 26)
Automatic Differentiation (DL 26)
  • 2020.10.29
  • www.youtube.com
Davidson CSC 381: Deep Learning, F'20, F'22
 

Coursera Neural Networks for Machine Learning — Geoffrey Hinton - Ders 1.1 — Makine öğrenimine neden ihtiyacımız var?



Ders 1.1 — Makine öğrenimine neden ihtiyacımız var [Makine Öğrenimi için Sinir Ağları]

Makine öğrenimi için sinir ağları konulu Coursera kursuna hoş geldiniz! Bu derste, sinir ağlarının büyüleyici alanını ve bunların makine öğrenimindeki uygulamalarını keşfedeceğiz. Sinir ağı öğrenme algoritmalarının inceliklerine dalmadan önce, makine öğreniminin önemini ve kullanımlarını tartışmak ve yeteneklerini göstermek için bazı örnekler vermek için biraz zaman ayıralım.

Makine öğrenimi, geleneksel programlama yaklaşımlarıyla ele alınması zor olan karmaşık sorunları çözmek için gereklidir. Örneğin, üç boyutlu bir nesneyi farklı bakış açılarından, değişen aydınlatma koşullarında ve karmaşık sahnelerde tanımak zorlu bir iştir. Karmaşıklık, beynimizin bu tür bir tanımayı nasıl gerçekleştirdiğini tam olarak anlamamamız gerçeğinde yatmaktadır, bu da bu sorunları çözmek için açık programlar yazmayı zorlaştırmaktadır. Altta yatan programı ortaya çıkarmış olsak bile, etkili bir şekilde uygulanması son derece karmaşık olabilir.

Başka bir örnek, hileli kredi kartı işlemlerini tespit etmektir. Geleneksel kural tabanlı sistemler, zaman içinde sürekli değişen çok sayıda güvenilmez kuralın birleştirilmesini gerektirdiğinden, dolandırıcılık kalıplarının inceliklerini yakalamakta zorlanır. Makine öğrenimi, verilen girdiler için doğru çıktıları belirten çok sayıda örnekten yararlanarak alternatif bir yaklaşım sunar. Bir öğrenme algoritması, görevi etkili bir şekilde ele alan bir program üretmek için bu örnekleri işler. Ortaya çıkan program, potansiyel olarak milyonlarca ağırlıklı sayı içeren geleneksel el yapımı programlardan farklı görünebilir. Bununla birlikte, doğru bir şekilde uygulanırsa, yeni durumlara iyi bir şekilde genellenebilir ve güncellenmiş bilgiler üzerinde yeniden eğitim alarak değişen verilere uyum sağlayabilir.

Makine öğrenimi, gerçek sahnelerdeki nesneler, yüz ifadeleri veya konuşulan kelimeler gibi kalıpları tanımada çok başarılıdır. Aynı zamanda, sıra dışı kredi kartı işlemleri veya bir nükleer santraldeki anormal sensör okumaları gibi anormallikleri belirlemede de güçlüdür. Ek olarak, makine öğrenimi, hisse senedi fiyatlarını tahmin etme veya geçmiş seçimlerine ve diğerlerinin davranışlarına göre kullanıcı tercihlerini tahmin etme gibi tahmin görevlerinde değerlidir.

Bu kurs boyunca, birçok makine öğrenimi algoritmasını açıklamak için standart bir örnek olarak el yazısı rakamlardan oluşan MNIST veri tabanını kullanacağız. Bu veri tabanı yaygın olarak kullanılmaktadır ve farklı yöntemlerin etkili bir şekilde karşılaştırılmasına izin vermektedir. Bu tür görevleri kullanarak, makine öğreniminin temel kavramlarını ve ilkelerini daha iyi kavrayabiliriz.

Bu örnekler, yalnızca makine öğreniminin ve sinir ağlarının olağanüstü yeteneklerinin yüzeyini çiziyor. Teknolojik ilerlemeler ve kolayca bulunabilen bilgi işlem kaynaklarıyla, karmaşık makine öğrenimi modelleri verimli bir şekilde eğitilebilir ve dağıtılabilir. Bu modeller, makine öğrenimi ile başarabileceklerimizin sınırlarını zorlayarak, giderek daha karmaşık hale gelen görevlerin üstesinden gelme potansiyeline sahiptir.

Bu derste sinir ağlarının inceliklerini inceleyeceğiz, mimarilerini, eğitim algoritmalarını ve pratik uygulama tekniklerini tartışacağız. Kursun sonunda, sinir ağlarında güçlü bir temele sahip olacak ve bunları çok çeşitli problemlere uygulayabilecek donanıma sahip olacaksınız.

Makine öğrenimi için sinir ağları dünyasına yapılan bu heyecan verici yolculukta bize katılın. Bilginizi genişletmeye, becerilerinizi geliştirmeye ve bu dönüştürücü teknolojinin potansiyelini ortaya çıkarmaya hazır olun!

Lecture 1.1 — Why do we need machine learning [Neural Networks for Machine Learning]
Lecture 1.1 — Why do we need machine learning [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
For more cool AI stuff, follow me at https://twitter.com/iamvriad.Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton ...
 

Ders 1.2 — Sinir ağları nelerdir



Ders 1.2 — Sinir ağları nedir [Makine Öğrenimi için Sinir Ağları]

Bu videoda, bu derste inceleyeceğimiz yapay sinir ağlarının temelini oluşturan beyindeki gerçek nöronları tartışacağım. Kursun büyük bölümünde gerçek nöronlara fazla odaklanmayacak olsak da, başlangıçta kısa bir genel bakış sağlamak istedim.

Nöron ağlarının nasıl hesaplama yapabildiğini incelemek için birkaç neden vardır. Birincisi, beynin işleyişini anlamamıza yardımcı olur. Doğrudan beyin üzerinde deneyler yapmak mantıklı görünse de, manipülasyona pek dayanamayan karmaşık ve hassas bir organdır. Bu nedenle, ampirik bulguların anlaşılması için bilgisayar simülasyonları gereklidir.

İkinci olarak, sinir ağlarını incelemek, beynin görece yavaş nöronlardan oluşan geniş bir ağ aracılığıyla hesaplama yapma yeteneğinden ilham alan paralel hesaplama kavramını kavramamızı sağlar. Bu paralel hesaplama tarzını anlamak, geleneksel seri işlemcilerden önemli ölçüde farklı olan paralel bilgisayarlarda ilerlemelere yol açabilir. Görme gibi beynin mükemmel olduğu görevler için özellikle etkilidir, ancak çarpma gibi görevler için pek uygun değildir.

Bu dersle ilgili üçüncü neden, beyinden ilham alan yenilikçi öğrenme algoritmalarını kullanarak pratik problemlerin çözülmesini içerir. Bu algoritmalar, beynin işlemlerini tam olarak taklit etmeseler bile oldukça değerli olabilir. Bu nedenle, beynin nasıl çalıştığını derinlemesine incelemeyecek olsak da, büyük paralel nöron ağlarının karmaşık hesaplamalar yapabileceğini gösteren bir ilham kaynağı olarak hizmet ediyor.

Bu videoda beynin işleyişi hakkında daha fazla bilgi vereceğim. Tipik bir kortikal nöron, bir hücre gövdesinden, diğer nöronlara mesaj göndermek için bir aksondan ve diğer nöronlardan mesajlar almak için bir dendritik ağaçtan oluşur. Bir nöronun aksonunun başka bir nöronun dendritik ağacıyla birleştiği noktada bir sinaps buluruz. Bir aktivite artışı akson boyunca ilerlediğinde, postsinaptik nörona yük enjekte eder.

Bir nöron, dendritik ağacında alınan yük, akson tümseği adı verilen bir bölgeyi depolarize ettiğinde sivri uçlar üretir. Bir kez depolarize edildiğinde, nöron aksonu boyunca esasen bir depolarizasyon dalgası olan bir sivri uç iletir.

Sinapsların kendileri ilginç bir yapıya sahiptir. Verici kimyasallarla dolu veziküller içerirler. Bir sivri uç aksona ulaştığında, bu veziküllerin sinaptik yarığa göçünü ve salınmasını tetikler. Verici moleküller, sinaptik yarık boyunca yayılır ve postsinaptik nöronun zarı üzerindeki reseptör moleküllerine bağlanır. Bu bağlanma, moleküllerin şeklini değiştirerek zarda belirli iyonların postsinaptik nöronun içine veya dışına akmasına izin veren delikler oluşturarak depolarizasyon durumunu değiştirir.

Sinapslar, bilgisayar belleğine kıyasla nispeten yavaştır, ancak bilgisayarlardaki rasgele erişim belleğine göre avantajları vardır. Küçük, düşük güçlü ve uyarlanabilirler. Uyarlanabilirlik, yerel olarak mevcut sinyalleri kullanarak sinapsların güçlerini değiştirmesini sağladığı için çok önemlidir. Bu uyarlanabilirlik, öğrenmeyi ve karmaşık hesaplamalar yapma becerisini kolaylaştırır.

O zaman şu soru ortaya çıkar: Sinapslar güçlerini nasıl değiştireceklerine nasıl karar verirler? Adaptasyonları için kurallar nelerdir? Bunlar önemli hususlardır.

Özetlemek gerekirse beyin, diğer nöronlardan girdi alan nöronlar aracılığıyla çalışır. Nöronların yalnızca küçük bir kısmı duyu reseptörlerinden girdi alır. Nöronlar, aktivite artışlarını ileterek korteks içinde iletişim kurarlar. Bir girdinin bir nöron üzerindeki etkisi, pozitif veya negatif olabilen sinaptik ağırlığına bağlıdır. Bu sinaptik ağırlıklar uyum sağlayarak tüm ağın nesne tanıma, dil kavrama, planlama ve motor kontrol gibi çeşitli hesaplamaları öğrenmesine ve gerçekleştirmesine izin verir.

Beyin, her biri yaklaşık 10^4 sinaptik ağırlığa sahip yaklaşık 10^11 nörondan oluşur. Sonuç olarak, beyin, birçoğu milisaniyeler içinde devam eden hesaplamalara katkıda bulunan çok sayıda sinaptik ağırlık içerir. Bu, modern iş istasyonlarına kıyasla beyine bilgi depolamak için üstün bant genişliği sağlar.

Beynin bir başka ilgi çekici yönü de modülerliğidir. Korteksin farklı bölgeleri sonunda farklı işlevlerde uzmanlaşır. Duyulardan gelen girdiler, nihai işlevselliklerini etkileyen genetik olarak belirli bölgelere yönlendirilir. Beyindeki yerel hasar, dili kavrama veya nesne tanıma kaybı gibi belirli etkilere neden olur. Beynin esnekliği, erken hasara yanıt olarak işlevlerin beynin diğer bölümlerine yer değiştirebilmesi gerçeğinde açıkça görülmektedir. Bu, korteksin deneyime dayalı olarak belirli görevlere uyum sağlayabilen esnek, evrensel bir öğrenme algoritması içerdiğini gösterir.

Sonuç olarak beyin, öğrendikten sonra olağanüstü bir esneklikle birlikte hızlı paralel hesaplamalar gerçekleştirir. Standart paralel donanımın oluşturulduğu ve sonraki bilgilerin gerçekleştirilecek özel paralel hesaplamayı belirlediği bir FPGA'ya benzer. Geleneksel bilgisayarlar, sıralı programlama yoluyla esneklik elde eder, ancak bu, program satırlarına erişmek ve uzun sıralı hesaplamalar yapmak için hızlı merkezi işlemler gerektirir.

Lecture 1.2 — What are neural networks [Neural Networks for Machine Learning]
Lecture 1.2 — What are neural networks [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
For cool updates on AI research, follow me at https://twitter.com/iamvriad.Lecture from the course Neural Networks for Machine Learning, as taught by Geoffre...
 

Ders 1.3 — Bazı basit nöron modelleri



Ders 1.3 — Bazı basit nöron modelleri [Makine Öğrenimi için Sinir Ağları]

Lineer nöronlar, eşik nöronları ve daha karmaşık modeller dahil olmak üzere bazı basit nöron modellerini anlatacağım. Bu modeller gerçek nöronlardan daha basittir ancak yine de makine öğrenimi için sinir ağları oluşturmamıza izin verir. Karmaşık sistemleri anlarken, işleyişini kavramak için onları basitleştirmemiz ve idealleştirmemiz gerekir. Bu, gerekli olmayan ayrıntıların çıkarılmasını ve matematik ve analojilerin uygulanmasını içerir. Temel özellikleri gözden kaçırmamak önemli olsa da, yanlış olduğu bilinen ancak uygulamada yine de faydalı olan modelleri incelemek değerli olabilir. Örneğin, sinir ağları, gerçek kortikal nöronlar farklı davransalar bile, genellikle ayrı sivri uçlar yerine gerçek değerleri ileten nöronları kullanır.

En basit nöron türü, hesaplama sınırlamaları olan ancak daha karmaşık nöronlar hakkında bilgi sağlayan doğrusal nörondur. Çıktısı, bir sapma ve girdi etkinliklerinin ağırlıklı toplamı tarafından belirlenir. Önyargı artı ağırlıklı faaliyetlerin grafiği düz bir çizgi oluşturur. Buna karşılık, McCulloch ve Pitts tarafından tanıtılan ikili eşik nöronları, ağırlıklı toplam bir eşiği aşarsa bir aktivite artışı gönderir. Bu sivri uçlar, nöronların kendi doğruluk değerlerini üretmek için bir araya getirdiği doğruluk değerlerini temsil eder. Bir zamanlar mantık, zihni anlamak için ana paradigma olarak görülürken, şimdi beynin çeşitli güvenilmez kanıt kaynaklarını birleştirerek mantığı daha az uygun hale getirdiği düşünülüyor.

İkili eşik nöronları, iki eşdeğer denklemle tanımlanabilir. Toplam girdi, ağırlıklarla çarpılan girdi aktivitelerinin toplamıdır ve toplam girdi eşiğin üzerindeyse çıktı birdir. Alternatif olarak, toplam girdi bir yanlılık terimi içerir ve toplam girdi sıfırın üzerindeyse çıktı birdir. Doğrultulmuş bir doğrusal nöron, doğrusal nöronların ve ikili eşik nöronlarının özelliklerini birleştirir. Doğrusal ağırlıklı bir toplam hesaplar ancak çıktıyı belirlemek için doğrusal olmayan bir işlev uygular. Toplam sıfırın altındaysa çıktı sıfırdır ve sıfırın üzerindeyse toplama eşittir, bu da doğrusal olmayan ancak sıfırın üzerinde doğrusal bir çıktıyla sonuçlanır.

Sigmoid nöronlar yapay sinir ağlarında yaygın olarak kullanılmaktadır. Toplam girdinin pürüzsüz ve sınırlı bir fonksiyonu olan gerçek değerli bir çıktı sağlarlar. Çıktının bir bölü bir artı toplam girdinin negatif üssü olduğu lojistik fonksiyon sıklıkla kullanılır. Büyük pozitif girdiler için çıktı bir, büyük negatif girdiler için çıktı sıfırdır. Sigmoid işlevi, sinir ağlarında öğrenmeyi kolaylaştıran yumuşak türevlere sahiptir.

Stokastik ikili nöronlar, lojistik birimlerle aynı denklemleri kullanırlar, ancak olasılığı gerçek bir sayı olarak çıkarmak yerine, olasılıksal bir karar verirler ve ya bir ya da sıfır verirler. Olasılık, bir ani yükselme olasılığını temsil eder. Girdi çok pozitifse, muhtemelen bir üretecekler, çok olumsuz bir girdi ise muhtemelen sıfırla sonuçlanacak. Doğrultulmuş lineer birimler benzer bir prensibi takip eder ancak spike üretiminde rastgelelik getirir. Doğrultulmuş bir lineer birimin çıktısı, ani yükselmeler üretme oranını temsil eder ve gerçek ani yükselme süreleri, birim içindeki rastgele bir Poisson işlemi tarafından belirlenir.

İkili nöronlardaki ve düzeltilmiş doğrusal birimlerdeki bu stokastik davranışlar, sinir ağına içsel rastgeleliği getirir. Spike üretim hızı belirleyici olmakla birlikte, ani artışların gerçek zamanlaması rastgele bir süreç haline gelir. Bu rastgelelik, sisteme değişkenlik ve stokastiklik katar.

Bu farklı nöron modellerini anlamak, bize bir dizi hesaplama yeteneği sağlar. Doğrusal nöronlar, hesaplama açısından sınırlıdır, ancak daha karmaşık sistemler hakkında fikir verebilir. İkili eşik nöronları, eşik karşılaştırmalarına dayalı olarak karar vermeyi sağlar. Doğrultulmuş lineer nöronlar, lineerlik ve lineer olmayanlığı birleştirerek, aynı anda karar verme ve lineer işlemeyi mümkün kılar. Sigmoid nöronlar düzgün, sınırlı çıktılar sağlar ve farklılaşabilen yapıları nedeniyle sinir ağlarında yaygın olarak kullanılır. Stokastik ikili nöronlar ve düzeltilmiş lineer birimler, olasılıksal karar vermeye izin vererek ve değişkenliği tanıtarak sisteme rastgelelik getirir.

Sinir ağlarında farklı nöron türlerini birleştirerek, makine öğrenimi görevleri için güçlü modeller oluşturabiliriz. Bu ağlar verilerden öğrenebilir, ağırlıklarını ve önyargılarını uyarlayabilir ve öğrenilen kalıplara dayalı tahminler veya sınıflandırmalar yapabilir. Bu nöron modellerinin ilkelerini ve davranışlarını anlamak, etkili sinir ağları tasarlamamıza ve eğitmemize yardımcı olur.

Ancak, bu nöron modellerinin beyindeki gerçek nöronların basitleştirilmiş soyutlamaları olduğunu unutmamak önemlidir. Beyin inanılmaz derecede karmaşık ve dinamik bir sistemdir ve bu modeller, nöral işlemenin belirli yönlerini yakalamak için yaklaşık değerler olarak hizmet eder. Gerçek nöronların tüm karmaşıklığını yakalayamayabilirler ancak hesaplamalı modeller oluşturmak ve etkileyici makine öğrenimi yetenekleri elde etmek için yararlı araçlar sağlarlar.

Doğrusal nöronlar, eşik nöronları, doğrultulmuş doğrusal nöronlar, sigmoid nöronlar ve stokastik ikili nöronlar dahil olmak üzere farklı nöron modellerini incelemek, çeşitli hesaplama özelliklerini ve davranışlarını anlamamızı sağlar. Bu modeller, sinir ağları oluşturmak için temel oluşturur ve çeşitli makine öğrenimi görevlerini gerçekleştirmemizi sağlar. Basitleştirilmiş olmakla birlikte, sinir sistemlerinin işleyişine ilişkin değerli bilgiler sunarlar.

Lecture 1.3 — Some simple models of neurons [Neural Networks for Machine Learning]
Lecture 1.3 — Some simple models of neurons [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
For cool updates on AI research, follow me at https://twitter.com/iamvriad.Lecture from the course Neural Networks for Machine Learning, as taught by Geoffre...
 

Ders 1.4 — Basit bir öğrenme örneği



Ders 1.4 — Basit bir öğrenme örneği [Makine Öğrenimi için Sinir Ağları]

Bu makine öğrenimi örneğinde, rakamları tanımayı öğrenen basit bir sinir ağını keşfedeceğiz. Süreç boyunca, temel bir öğrenme algoritması kullanarak ağırlıkların gelişimine tanık olacaksınız.

Odak noktamız, el yazısı şekilleri tanımlamak için basit bir ağ eğitmektir. Ağ iki katmandan oluşur: piksel yoğunluklarını temsil eden giriş nöronları ve sınıfları temsil eden çıkış nöronları. Amaç, belirli bir şekle karşılık gelen çıkış nöronunun, o şekil sunulduğunda aktif hale gelmesidir.

Her aktif piksel, parçası olduğu şekiller için "oy verir" ve bu oyların değişen yoğunlukları vardır. Çıktı birimleri arasında rekabet olduğu varsayılarak en çok oyu alan şekil kazanır. Bu rekabetçi yönü daha sonraki bir derste inceleyeceğiz.

Ağırlıkları görselleştirmek için binlerce ağırlığı barındırabilecek bir ekrana ihtiyacımız var. Ağırlıkları girdi ve çıktı birimleri arasındaki bireysel bağlantılara yazmak yerine, her çıktı birimi için küçük haritalar oluşturacağız. Bu haritalar, siyah beyaz lekeler kullanılarak giriş piksellerinden gelen bağlantıların gücünü temsil eder. Renk, bağlantının işaretini temsil ederken, her blobun alanı büyüklüğü gösterir.

Başlangıçta, ağırlıklara küçük rasgele değerler atanır. Ağırlıkları iyileştirmek için ağa veriler sunacağız ve ağırlıkları buna göre ayarlaması için eğiteceğiz. Bir görüntü gösterildiğinde, ağırlıkları aktif piksellerden doğru sınıfa yükseltiriz. Bununla birlikte, ağırlıkların aşırı büyük olmasını önlemek için, ağırlıkları aktif piksellerden ağın tahmin ettiği sınıfa da indiririz. Bu eğitim yaklaşımı, ağın başlangıçtaki eğilimlerine bağlı kalmak yerine doğru kararları almasına rehberlik eder.

Ağa birkaç yüz eğitim örneğini gösterdikten sonra ağırlıkları tekrar gözlemliyoruz. Düzenli kalıplar oluşturmaya başlarlar. Daha ileri eğitim örnekleriyle, ağırlıklar değişmeye devam eder ve sonunda sabitlenir. Bu noktada, ağırlıklar şekiller için şablonlara benzer. Örneğin, "bir" birime giren ağırlıklar, olanları tanımlamak için bir şablon görevi görür. Benzer şekilde, "dokuz" birimine giren ağırlıklar, belirli özelliklerin varlığına veya yokluğuna bağlı olarak dokuzlar ve yediler arasında ayrım yapmaya odaklanır.

Ağın basitliği nedeniyle bu öğrenme algoritmasının şekilleri ayırt etme konusunda yalnızca sınırlı bir yeteneğe ulaşabileceğini belirtmekte fayda var. Öğrenilen ağırlıklar etkili bir şekilde şablon işlevi görür ve ağ kazananı şablon ile mürekkep arasındaki örtüşmeye göre belirler. Bununla birlikte, el yazısı rakamlardaki varyasyonların karmaşıklığı ile karşı karşıya kalındığında bu yaklaşım yetersiz kalıyor. Bunu ele almak için, tüm şekillerin basit şablon eşleştirmesi sorunu yeterince çözemeyeceğinden, özellikleri çıkarmamız ve düzenlemelerini analiz etmemiz gerekir.

Özet olarak, örnek, basit bir sinir ağının rakamları tanımak için eğitimini göstermektedir. Ağın ağırlıkları gelişirken ve şekiller için şablonlara benzerken, bu yaklaşımın sınırlamaları, el yazısı rakamlardaki karmaşık varyasyonlarla karşılaşıldığında ortaya çıkıyor.

Lecture 1.4 — A simple example of learning [Neural Networks for Machine Learning]
Lecture 1.4 — A simple example of learning [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
For cool updates on AI research, follow me at https://twitter.com/iamvriad.Lecture from the course Neural Networks for Machine Learning, as taught by Geoffre...
 

Ders 1.5 — Üç tür öğrenme



Ders 1.5 — Üç tür öğrenme [Makine Öğrenimi için Sinir Ağları]

Bu videoda üç ana makine öğrenimi türünü tartışacağım: denetimli öğrenme, pekiştirmeli öğrenim ve denetimsiz öğrenme. Kurs, öncelikle ilk yarısında denetimli öğrenmeye ve ikinci yarısında denetimsiz öğrenmeye odaklanacaktır. Ne yazık ki, zaman kısıtlamaları nedeniyle, takviyeli öğrenmeyi ele almayacağız.

Denetimli öğrenme, bir girdi vektörü verilen bir çıktıyı tahmin etmeyi içerir. Amaç, gerçek bir sayıyı veya bir sınıf etiketini doğru bir şekilde tahmin etmektir. Regresyon, hisse senedi fiyatlarını tahmin etmek gibi gerçek sayılarla ilgilenirken, sınıflandırma, pozitif ve negatif durumları ayırt etmek veya el yazısı rakamları tanımak gibi etiketler atamayı içerir. Denetimli öğrenme, sayısal parametreleri (W) kullanarak girdileri çıktılara eşleyen işlevlerle temsil edilen bir dizi aday model olan bir model sınıfına dayanır. Bu parametreler, tahmin edilen çıktı (Y) ile doğru çıktı (t) arasındaki tutarsızlığı en aza indirecek şekilde ayarlanır.

Takviyeli öğrenme, alınan ödülleri en üst düzeye çıkarmak için eylemleri veya eylem dizilerini seçmeye odaklanır. Eylemler, ara sıra elde edilen ödüllere göre seçilir ve amaç, gelecekteki ödüllerin beklenen toplamını en üst düzeye çıkarmaktır. Bir indirim faktörü, genellikle uzak ödüller yerine acil ödüllere öncelik vermek için kullanılır. Takviyeli öğrenme, gecikmiş ödüller ve skaler ödüller tarafından iletilen sınırlı bilgi nedeniyle zorluklar sunar.

Kursun ikinci yarısında kapsamlı bir şekilde ele alınacak olan denetimsiz öğrenme, girdi verilerinin yararlı dahili temsillerini keşfetmeyi içerir. Denetimsiz öğrenmenin hedeflerini tanımlamanın zor olması nedeniyle uzun yıllar boyunca denetimsiz öğrenme kümeleme lehine göz ardı edildi. Bununla birlikte, denetimsiz öğrenme, sonraki denetimli veya takviyeli öğrenme için faydalı dahili temsiller oluşturmak da dahil olmak üzere çeşitli amaçlara hizmet eder. Altta yatan manifoldları tanımlayarak, görüntüler gibi yüksek boyutlu girdilerin kompakt, düşük boyutlu temsillerini oluşturmayı amaçlar. Denetimsiz öğrenme, girdilerin ikili veya seyrek kodlarla ifade edilebildiği, öğrenilen özellikleri kullanarak ekonomik temsiller de sağlayabilir. Ek olarak, denetimsiz öğrenme, küme başına bir özellik ile seyrek özellikler bulmanın aşırı bir durumu olarak görülebilen kümelemeyi kapsar.

Bu video, üç ana makine öğrenimi türünü kapsar: denetimli öğrenme, pekiştirmeli öğrenim ve denetimsiz öğrenme. Denetimli öğrenme, çıktıları tahmin etmeye odaklanırken, takviyeli öğrenme, eylem seçimi yoluyla ödülleri en üst düzeye çıkarmaya odaklanır. Denetimsiz öğrenme, düşük boyutlu temsiller veya öğrenilmiş özellikler gibi faydalı dahili temsilleri keşfetmeyi amaçlar ve altta yatan kümelerin tanımlanmasını içerir.

Lecture 1.5 — Three types of learning [Neural Networks for Machine Learning]
Lecture 1.5 — Three types of learning [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
For cool updates on AI research, follow me at https://twitter.com/iamvriad.Lecture from the course Neural Networks for Machine Learning, as taught by Geoffre...