- Nedir makine öğrenme ?
- Makine öğrenimi kodu ne işe yarar?
- Makinenin öğrendiğini söylediğimizde, kendi kodunu mu değiştiriyor yoksa belirli bir girdi kümesi için kod deneyimini içerecek olan geçmişi (veritabanı) mı değiştiriyor?
Yanıtlar:
Makine öğrenimi nedir?
Esasen, bilgisayarlara bazı verilere dayanarak tahminler veya davranışlar yapmayı ve iyileştirmeyi öğretmenin bir yöntemidir. Bu "veri" nedir? Bu tamamen soruna bağlı. Yürümeyi öğrenirken bir robotun sensörlerinden gelen okumalar veya belirli bir girdi için bir programın doğru çıktısı olabilir.
Makine öğrenimi hakkında düşünmenin başka bir yolu da "örüntü tanıma" olmasıdır - bir programa kalıplara tepki göstermeyi veya kalıpları tanımayı öğretme eylemi.
Makine öğrenimi kodu ne işe yarar?
Bağlıdır tip bahsettiğin öğrenme makinenin. Makine öğrenimi, sayısız farklı sorunu çözmek için yüzlerce farklı algoritmaya sahip çok büyük bir alandır - daha fazla bilgi için Wikipedia'ya bakın ; özellikle Algoritma Türleri bölümüne bakın .
Makinenin öğrendiğini söylediğimizde, kendi kodunu değiştiriyor mu yoksa belirli bir girdi seti için kod deneyimini içerecek olan geçmişi (Veri Tabanı) mı değiştiriyor?
Bir kez daha değişir .
Gerçekte değiştirilen kodun bir örneği Genetik Programlamadır , burada esasen bir programı bir görevi tamamlamak için geliştirirsiniz (tabii ki program kendi kendini değiştirmez - ancak başka bir bilgisayar programını değiştirir).
Sinir ağları ise hazırlanan uyaranlara ve beklenen yanıta yanıt olarak parametrelerini otomatik olarak değiştirir. Bu onların birçok davranış üretmelerine izin verir (teorik olarak herhangi bir davranışı üretebilirler çünkü yeterli zaman verildiğinde herhangi bir işlevi keyfi bir kesinliğe yaklaştırabilirler).
"Veritabanı" terimini kullanmanızın, makine öğrenimi algoritmalarının bilgileri, olayları veya deneyimleri "hatırlayarak" çalıştığını ima ettiğine dikkat etmeliyim. Bu mutlaka (hatta sıklıkla!)
Daha önce bahsettiğim sinir ağları, yalnızca öğrenme gerçekleştikçe güncellenen yaklaşımın mevcut "durumunu" korur. Ne olduğunu ve ona nasıl tepki verileceğini hatırlamak yerine, sinir ağları kendi "dünyalarının" bir tür "modelini" oluşturur. Model, girdiler daha önce hiç görmediği bir şey olsa bile, onlara belirli girdilere nasıl tepki vereceklerini söyler.
Bu son yetenek - daha önce hiç görülmemiş girdilere tepki verme yeteneği - birçok makine öğrenimi algoritmasının temel ilkelerinden biridir. Bir bilgisayar sürücüsüne trafikte otoyollarda gezinmeyi öğretmeye çalıştığınızı hayal edin. "Veritabanı" metaforunuzu kullanarak, bilgisayara milyonlarca olası durumda tam olarak ne yapması gerektiğini öğretmeniz gerekir . Etkili bir makine öğrenimi algoritması (umarım!) Farklı durumlar arasındaki benzerlikleri öğrenebilir ve bunlara benzer şekilde tepki verebilir.
Durumlar arasındaki benzerlikler her şey olabilir - "sıradan" olarak düşündüğümüz şeyler bile bir bilgisayarı gerçekten çalıştırabilir! Örneğin bilgisayar sürücüsünün, önündeki bir araba yavaşladığında yavaşlaması gerektiğini öğrendiğini varsayalım. Bir insan için, arabayı bir motosikletle değiştirmek hiçbir şeyi değiştirmez - motosikletin aynı zamanda bir araç olduğunu biliyoruz. Bir makine öğrenimi algoritması için bu aslında şaşırtıcı derecede zor olabilir! Bir veritabanının, bir arabanın önde ve bir motosikletin önünde olduğu durum hakkındaki bilgileri ayrı olarak saklaması gerekir. Makine öğrenimi algoritması ise araba örneğinden "öğrenecek" ve otomatik olarak motosiklet örneğine genelleme yapabilecektir.
Makine öğrenimi, mantıksal / prosedürel bir yaklaşımın mümkün veya uygulanabilir olmadığı karmaşık görevlerin çözülmesine izin veren bir bilgisayar bilimi, olasılık teorisi ve optimizasyon teorisi alanıdır.
Aşağıdakiler dahil (ancak bunlarla sınırlı olmamak üzere) birkaç farklı makine öğrenimi kategorisi vardır:
Denetimli Öğrenme
Denetimli öğrenmede, girdilerden çıktılara kadar gerçekten karmaşık bir işleve (eşleme) sahipsiniz, çok sayıda girdi / çıktı çifti örneğiniz var, ancak bu karmaşık işlevin ne olduğunu bilmiyorsunuz. Denetimli bir öğrenme algoritması, daha önce görmemiş olabileceğiniz bazı yeni girdi değerleri için çıktı değerini tahmin etmek için büyük bir girdi / çıktı çifti veri seti vermeyi mümkün kılar. Temel yöntem, veri setini bir eğitim seti ve bir test setine bölmenizdir. Eğitim seti üzerinden en aza indirmeye çalıştığınız ilişkili bir hata işlevine sahip bir modeliniz var ve ardından çözümünüzün test seti üzerinde çalıştığından emin olun. Model test setinde makul derecede iyi performans gösterene kadar bunu farklı makine öğrenme algoritmaları ve / veya parametreleriyle tekrarladıktan sonra, sonucu yeni girdilerde kullanmayı deneyebilirsiniz. Bu durumda, programın değişmediğini, sadece modelin (verilerin) değiştiğini unutmayın. Her ne kadar teorik olarak farklı bir program çıktılansa da, bildiğim kadarıyla bu pratikte yapılmıyor. Denetimli öğrenmeye bir örnek, postane tarafından kullanılan rakam tanıma sistemi olabilir; burada pikselleri 0 ... 9 kümesindeki etiketlerle eşleştirir ve elle 0 olarak etiketlenmiş çok sayıda rakam resmi kullanır. ... 9.
Takviye Öğrenme
Takviye öğrenmede, program karar vermekten sorumludur ve eylemleri için periyodik olarak bir tür ödül / fayda alır. Bununla birlikte, denetimli öğrenim vakasının aksine, sonuçlar anında değildir; algoritma, geniş bir eylem dizisi belirleyebilir ve yalnızca en sonunda geri bildirim alabilir. Takviye öğrenmede amaç, algoritmanın en yüksek uzun vadeli fayda / ödüle götüren kararlar dizisini oluşturacağı şekilde iyi bir model oluşturmaktır. Takviye öğrenmenin iyi bir örneği, bir robota çarpma sensörü bir nesneye çarptığını algıladığında negatif ceza vererek nasıl gezineceğini öğretmektir. Doğru kodlandıysa, robotun telemetre sensör verilerini en sonunda tampon sensör verileri ve tekerleklere gönderen yönlerle ilişkilendirmesi mümkündür.
Daha Fazla Bilgi Daha fazla bilgi
edinmek istiyorsanız , Christopher M. Bishop'un Kalıp Tanıma ve Makine Öğrenimi'ni okumanızı veya bir makine öğrenimi kursu almanızı şiddetle tavsiye ederim . Ayrıca ücretsiz olarak CIS 520: Penn'de Makine Öğrenimi ders notlarını okumak da ilginizi çekebilir .
Makine öğrenimi , bilgisayarların sensör verileri veya veritabanları gibi deneysel verilere dayalı olarak davranışları geliştirmesine izin veren algoritmaların tasarımı ve geliştirilmesiyle ilgilenen bilimsel bir disiplindir. Wikipedia'da daha fazlasını okuyun
Makine öğrenimi kodu , bir tür depolamadaki "gerçekleri" veya yaklaşımları kaydeder ve algoritmalarla farklı olasılıkları hesaplar.
Bir makine öğrendiğinde kodun kendisi değiştirilmez, yalnızca "bildiği" veri tabanı değiştirilir.
Makine öğrenimi, örneklerden (etiketlenmemiş / etiketlenmemiş) bir yarı öğrenme üreten çeşitli öğrenme algoritmalarını tanımlamak için kullanılan genel bir terimdir. Gerçek doğruluk / hata, tamamen öğrenme algoritmanıza sağladığınız eğitim / test verilerinin kalitesine göre belirlenir. Bu, bir yakınsama oranı kullanılarak ölçülebilir. Örnek vermenizin nedeni, seçtiğiniz öğrenme algoritmasının rehberlik yoluyla bilgilendirici bir şekilde genelleme yapabilmesini istemenizdir. Algoritmalar, denetimli öğrenme (sınıflandırma) ve denetimsiz öğrenme (kümeleme) teknikleri olmak üzere iki ana alanda sınıflandırılabilir. Eğitim ve test veri setlerinizi nasıl ayırmayı planladığınıza ve öğrenme algoritmanıza sağladığınız kaliteye dair bilinçli bir karar vermeniz son derece önemlidir. Veri kümeleri sağlarken, örneklerinizde aşırı uydurma ve sağlıklı bir önyargı duygusu sürdürme gibi şeylerin de farkında olmak istersiniz. Algoritma daha sonra temel olarak hem eğitim için hem de daha sonra süreçte test etmek için sağladığınız verilerden elde ettiği genelleme temelinde yazmayı öğrenir, öğrenme algoritmanızı hedeflediğiniz eğitim temelinde yeni örnekler üretmek için almaya çalışırsınız. Kümelemede çok az bilgilendirici kılavuz vardır, algoritma temelde kmeans / knearest neighbor gibi ilişkili küme kümeleri oluşturmak için veriler arasındaki model ölçümleri yoluyla üretmeye çalışır. Algoritma daha sonra temelde hem eğitim için hem de daha sonra süreçte test etmek için sağladığınız verilerden elde ettiği genelleme temelinde yazmayı öğrenir, hedeflenen eğitiminize dayanarak yeni örnekler üretmek için öğrenme algoritmanızı almaya çalışırsınız. Kümelemede çok az bilgilendirici kılavuz vardır, algoritma temelde kmeans / knearest neighbor gibi ilişkili küme kümeleri oluşturmak için veriler arasındaki model ölçümleri yoluyla üretmeye çalışır. Algoritma daha sonra temelde hem eğitim için hem de daha sonra süreçte test etmek için sağladığınız verilerden elde ettiği genelleme temelinde yazmayı öğrenir, hedeflenen eğitiminize dayanarak yeni örnekler üretmek için öğrenme algoritmanızı almaya çalışırsınız. Kümelemede çok az bilgilendirici kılavuz vardır, algoritma temelde kmeans / knearest neighbor gibi ilişkili küme kümeleri oluşturmak için veriler arasındaki model ölçümleri yoluyla üretmeye çalışır.
bazı iyi kitaplar: Makine Öğrenimine Giriş (Nilsson / Stanford), Makine Öğrenimi için Gauss Süreci, Makine Öğrenimine Giriş (Alpaydin), Bilgi Teorisi Çıkarımı ve Öğrenme Algoritmaları (çok kullanışlı kitap), Makine Öğrenimi (Mitchell), Örüntü Tanıma ve Makine Öğrenimi (standart Edinburgh ve çeşitli Unis'teki ML ders kitabı, ancak matematikle nispeten ağır bir okuma), Weka ile Veri Madenciliği ve Pratik Makine Öğrenimi (weka kullanarak teori ve Java'da uygulama)
Reinforcement Learning okuyabileceğiniz çevrimiçi ücretsiz bir kitap vardır: http://www.cs.ualberta.ca/~sutton/book/ebook/the-book.html
IR, IE, Önericiler ve Metin / Veri / Web Madenciliği genel olarak Makine Öğrenimi ilkelerinin çoğunu kullanır. Öğrenme süreçlerinizi daha da otomatikleştirmek için Meta-sezgisel / Küresel Optimizasyon Tekniklerini burada bile uygulayabilirsiniz. Örneğin, sinir ağı tabanlı yaklaşımınızı optimize etmek için GA (genetik algoritma) gibi evrimsel bir teknik uygulayın (bazı öğrenme algoritmaları kullanabilir). Buna tamamen olasılıklı bir makine öğrenimi yaklaşımı şeklinde yaklaşabilirsiniz, örneğin bayes öğrenimi. Bu algoritmaların çoğunun çok yoğun bir istatistik kullanımı vardır. Yakınsama ve genelleme kavramları, bu öğrenme algoritmalarının çoğu için önemlidir.
Makine öğrenimi, benzer bilgilerle ilgili eğitimden kalıpları öğrenerek daha önce görmedikleri bilgileri sınıflandırabilen algoritmalar yapma konusunda bilgi işlem bilimindeki çalışmadır. Bu anlamda her türden "öğrenen" vardır. Sinir ağları, Bayes ağları, karar ağaçları, k-kümeleme algoritmaları, gizli markov modelleri ve destek vektör makineleri örneklerdir.
Öğrenciye bağlı olarak, her biri farklı yollarla öğrenir. Bazı öğrenciler insan tarafından anlaşılabilir çerçeveler (örneğin karar ağaçları) üretir ve bazıları genellikle anlaşılmazdır (örneğin sinir ağları).
Öğrencilerin tümü temelde veriye dayalıdır, yani durumlarını daha sonra tekrar kullanılmak üzere veri olarak kaydederler. En azından genel olarak kendi kendini değiştirmezler.
Sanırım makine öğreniminin okuduğum en havalı tanımlarından biri Tom Mitchell'in bu kitabından. Hatırlaması kolay ve sezgisel.
Bir bilgisayar programının, T'deki görevlerdeki performansı P ile ölçüldüğü gibi, E deneyimiyle iyileşirse, bazı görev sınıfları T ve performans ölçüsü P ile ilgili olarak E deneyiminden öğrendiği söylenir.
A computer program is said to learn in the context of performing a task if its performance with respect to some measure improves with experience.
Wikipedia'dan utanmadan koparılmış: Makine öğrenimi, bilgisayarların sensör verileri veya veritabanları gibi deneysel verilere dayalı davranışları geliştirmesine olanak tanıyan algoritmaların tasarımı ve geliştirilmesiyle ilgilenen bilimsel bir disiplindir.
Basitçe söylemek gerekirse, makine öğrenimi kodu bir makine öğrenimi görevini gerçekleştirir. Bu, sensör verilerinin yorumlanmasından genetik algoritmaya kadar pek çok şey olabilir.
Değiştiğini söyleyebilirim. Hayır, kodu değiştirmek normal değildir, ancak olasılık alanı dışında değildir. Ayrıca, makine öğreniminin her zaman bir geçmişi değiştirdiğini söylemem. Bazen üzerine inşa edeceğimiz bir geçmişimiz yok. Bazen sadece çevreye tepki vermek istiyoruz ama aslında geçmiş deneyimlerimizden bir şeyler öğrenmek istemiyoruz.
Temel olarak, makine öğrenimi, 3. sorunuza 1 cevap olmasını imkansız kılan birçok yöntem ve algoritma içeren çok geniş açık bir disiplindir.
Makine öğrenimi, bir kişinin gerçek dünyasından alınan ve aslında öğrenemeyen bir şeye - bir makineye - uygulanan bir terimdir.
Diğer yanıtlara eklemek için - makine öğrenimi (genellikle) kodu değiştirmez, ancak yürütme yolunu ve kararını önceki verilere veya yeni toplanan verilere ve dolayısıyla "öğrenme" etkisine dayalı olarak değiştirebilir.
Bir makineyi "öğretmenin" birçok yolu vardır - bir algoritmanın birçok parametresine ağırlık verirsiniz ve ardından makinenin birçok durumda onu çözmesini sağlarsınız, ona cevapla ilgili her geri bildirimde bulunur ve makine ağırlıkları buna göre ayarlar. Makine cevabının cevabınıza ne kadar yakın olduğu veya cevabını verdiğiniz puana göre veya bazı sonuçlara göre test algoritması.
Bu öğrenmenin bir yolu ve çok daha fazlası var ...