François Chollet, Python için önde gelen derin öğrenme çatısı Keras’ın yazarı, bir yapay zekâ ve derin öğrenme araştırmacısı ve yeni çıkan kitabının yazarı: Deep Learning with Python. Bu kitabın çıkışı vesilesiyle, François ile e-posta üzerinden bir röportaj yapma fırsatı buldum. Bize @fchollet ve @hugobowne üzerinden ulaşabilirsiniz.
François, siz Google’da yazılım mühendisi ve yapay zekâ araştırmacısınız. Ne üzerinde çalıştığınızı daha fazla öğrenmek istiyorum. Ancak önce, insanların gerçekte ne yaptığıyla bunun popüler algısı çoğu zaman farklılık gösterir. Sizce insanlar ne yaptığınızı düşünüyor?
Keskin bir tespit; genellikle insanların neyle tanındığı, neyle tanınmak istediği ve gerçekte ne üzerinde çalıştığı arasında bir uyumsuzluk olur. Benim durumumda, muhtemelen en çok, derin öğrenme çatısı olan Keras’ı yaratmış olmakla tanınıyorum.
Peki gerçekte ne yapıyorsunuz?
Google’ın Mountain View’daki Brain ekibinde çalışıyorum ve zamanımın çoğunu Keras’ı geliştirmeye harcıyorum. Bu nedenle, yaptıklarımla insanların benim yaptığımı düşündükleri arasında oldukça iyi bir uyum olduğunu söyleyebilirim.
Ayrıca, Keras’ın entegre olduğu Google’ın makine öğrenimi çatısı TensorFlow’a da katkıda bulunuyorum. Bunun yanı sıra çeşitli konularda araştırmalar yapıyorum. En son, makine çevirisi, bilgisayarlı görü ve derin öğrenmenin teorem ispatına uygulanması üzerine makaleler üzerinde çalıştım. Ana araştırma ilgi alanım, yapay zekâda soyutlama ve akıl yürütme sorununu anlamak — algıdan soyut, çok genellenebilir modellere nasıl geçileceği.
Python’da derin öğrenme için açık kaynaklı bir sinir ağı kütüphanesi olan Keras’ın yazarı olarak tanınıyorsunuz: Derin öğrenme nedir?
Derin öğrenme, önceki yaklaşımlara göre çok daha güçlü ve esnek olduğu ortaya çıkan, makine öğrenimine özgü bir yaklaşımdır. Çoğu uygulamada, “derin öğrenme” dediğimiz şey, insanlar tarafından etiketlenmiş büyük miktarda veriyi, insanların yapacağına benzer şekilde yeni verileri otomatik olarak etiketleyebilen bir yazılıma dönüstürmenin bir yolu olarak düşünülebilir. Bu yolla çok farklı görevleri otomatikleştirebilirsiniz. Derin öğrenme, özellikle görüntü, video veya ses gibi “algısal” verileri anlamlandırmada iyidir.
Somut bir örnek verelim. Her birine bazı etiketler (“köpek”, “kedi” vb.) eklenmiş büyük bir resim koleksiyonu düşünün. Derin öğrenme, yalnızca örneklerden öğrenerek, manuel ince ayar veya özel mühendislik gerektirmeden, verinizi resimleri etiketlerle eşlemeyi “anlayan” bir sisteme otomatik olarak dönüştürmenizi sağlar. Böyle bir sistem daha sonra yeni verilere uygulanabilir ve resim etiketleme görevini etkili bir şekilde otomatikleştirir.Aynı şekilde derin öğrenmeyi makine çevirisi, konuşma tanıma, metinden konuşmaya dönüştürme, optik karakter tanıma vb. gibi çok geniş bir yelpazeye uygulayabilirsiniz.
Yeni kitabınız Deep Learning with Python için tebrikler. Bu kitabı neden yazdınız?
Bu kitap, Python kodlama becerisine sahip ama önceden makine öğrenimi geçmişi olmayan birine derin öğrenmeyi öğretmek için bir müfredat oluşturma girişimimdir. Hiçbir şeyi basitleştirmeden, derin öğrenmeyi olabildiğince erişilebilir kılmaya çalışıyorum. Bunun mümkün olduğu ortaya çıkıyor; çünkü çoğu durumda derin öğrenmede zor fikirler yok.
Python, en azından yüksek gelirli ülkelerde, muhtemelen en hızlı büyüyen programlama dilidir. Hem sizin için hem de daha geniş programlama topluluğu için neden Python?
Python’u seviyorum. Öğrenmesi kolay ve ne kadar uzun süredir kullandığınıza bakmaksızın, onu kullandıkça daha verimli hale geliyor. Kullandığım çoğu dile kıyasla çok sezgisel ve zarif hissettiriyor. Ancak Python’un asıl öldürücü özelliği dilin kendisinde değil, onu çevreleyen ekosistem ve toplulukta. Yapmanız gereken ne olursa olsun — belirli bir dosya formatını ayrıştırmak, belirli bir sistemle arayüz oluşturmak — bunu yapan neredeyse kesinlikle bir Python kütüphanesi vardır; böylece onu kendiniz uygulamak için zaman harcamanız gerekmez. Bu, özellikle veri bilimi ve makine öğreniminde geçerlidir; numpy, pandas, scikit-learn, görsel çizim kütüphaneleri vb. gibi çok sayıda harika araç var. Bu da Python’u çok verimli bir dil yapıyor.
Ayrıca Python’un bir alan-odaklı dil olmamasını, bunun yerine web geliştirmeden veri bilimine ve sistem yönetimine kadar çoklu alanların kesişiminde yer almasını seviyorum. Bu, örneğin Keras modellerinizi bir web API’si olarak dağıtmak için yeni bir dile geçmek zorunda olmadığınız anlamına gelir. Yapmanız gereken ne olursa olsun — bir web uygulaması başlatmak, bir REST API’sini sorgulamak, bazı dosyaları ayrıştırmak, en son derin öğrenme modellerini eğitmek — Python genellikle oldukça sağlam bir tercihtir.
Makine öğrenimi ve yapay zekâ geliştirme disiplinlerine girmek isteyenler için algılanan bir giriş bariyeri var. Gerekli beceri ve tekniklerin demokratikleştirilmesi hakkında görüşleriniz nedir?
Ben bunun doğru olduğunu düşünmüyorum. Son 5 yılda makine öğrenimine girmek son derece kolaylaştı. Elbette, 5-7 yıl önce zordu. Muhtemelen lisansüstü eğitim gerekiyordu. Genellikle C++ veya Matlab ile kendi başınıza çok sayıda düşük seviyeli algoritma yazmanız gerekiyordu. Ben de bunu yaşadım. Bugünse farklı. Sadece Python’a ihtiyacınız var — öğrenmesi çok daha kolay — ve Keras gibi üst düzey, kullanımı kolay araçlara erişiminiz var. Ayrıca çevrimiçi çok kaliteli kaynaklardan öğrenebilir ve Kaggle üzerinde gerçek dünya problemleri üzerinde pratik yapabilirsiniz. Öğrenmek hiç bu kadar kolay olmamıştı.
Dolayısıyla, bu noktada, diyelim ki kitabımı edinin, Keras’ı kurun, bazı Kaggle yarışmalarına katılın ve birkaç ay sonra pratik problemler üzerinde makine öğrenimi ve derin öğrenmede hayli üretken hale gelmiş olursunuz.
Keras ve yeni kitabınız bu felsefeye nasıl hizmet ediyor?
Keras’ı ilk çıkardığımda, derin öğrenmeyi özellikle demokratikleştirmeye çalışmıyordum. Ancak zamanla, sayısız insanın Keras aracılığıyla derin öğrenmeyi benimsediğini ve benim beklemediğim yollardan çok çeşitli sorunları çözmek için kullandığını gördüm; bu beni gerçekten büyüledi. Derin öğrenmenin, Silikon Vadisi’ndeki insanların tahmin ettiğinden çok daha fazla alanda dönüştürücü biçimde uygulanabileceğini fark ettim. İşlerinde derin öğrenmeden fayda sağlayabilecek çok fazla insan var. Sonuç olarak, bu teknolojileri mümkün olduğunca çok insana sunmaya çok önem verir hale geldim ve bu, Keras’ın bir numaralı tasarım amacı oldu. Yapay zekâyı potansiyelinin tamamına yaymanın tek yolu, onu geniş ölçekte erişilebilir kılmaktır.
Kitabım da aynı yönde bir adım atma girişimi: Mümkün olduğunca çok insanı derin öğrenmeye doğru düzgün şekilde dahil etmeye çalışıyorum ki, bildikleri ve varlığından haberdar bile olmadığım sorunları çözmeye başlayabilsinler. Sadece kullanımı kolay araçlar sunmak yetmez; insanlara bu araçları nasıl kullanacaklarını öğretecek öğrenme materyallerini de sunmalısınız.
Yeni başlayanların öğrenmesi gereken en önemli şeyler nelerdir? Bunu nasıl yapabilirler?
Muhtemelen en önemli şey, derin öğrenmenin neyi yapabildiğine ve neyi yapamadığına dair bir fikir edinmektir. Bunun yanında, modelleri nasıl doğru değerlendireceğiniz ve aşırı uyumu nasıl engelleyeceğiniz gibi temel en iyi uygulamalara aşina olmak gerekir. Bu da resmi açıklamaların ve gerçek dünya problemleri üzerinde kapsamlı pratiğin bir kombinasyonunu gerektirir.
Yapay zekâ kavramı, pek çok kişinin aklına bilinçli robotları getiriyor. ‘Google’ın yapay zekâsı, insanlar tarafından inşa edilen sistemlerden daha gelişmiş kendi ‘çocuk’ yapay zekâsını yarattı’ gibi başlıklar görüyoruz. Yapay zekânın gerçekte ne olduğunu açıklığa kavuşturmada yardımınıza ihtiyacım var. Yapay zekâ neler yapabilir?
Alanın etrafında çok fazla abartı olduğu kesin. Yapay zekâ ve derin öğrenme üzerine medyada çıkan haberlerin çoğu, hem korku hikâyeleri hem de yapay zekânın her şeyi harika hale getireceğine dair anlatılar bakımından, gerçeklikten dramatik biçimde kopuk.
Yapay zekânın bugün neler yapabildiğine gelince, bu zor bir soru. Yapay zekânın yapabildiği şeyleri üç kategoriye ayıracağımı söylerdim:
- Yapay zekânın izlemesi gereken kuralları tam ve açık biçimde belirleyebildiğimiz görevleri yapmak. Bu özünde “sembolik yapay zekâ” veya daha pragmatik bir ifadeyle “yazılım geliştirme” olarak bilinir. Programlama yapmış herkesin bildiği gibi, bu yaklaşım kırılgandır ve ancak her şeyin kontrol altında olduğu düzeneklerde çalışır — ki bu, gerçek dünya problemlerinde nadiren geçerlidir.
- Kuralları açık biçimde belirleyemediğimiz, ancak görevin pek çok örneğini sağlayabildiğimiz basit algı ve sezgi görevlerini yapmak. Bu, tüm derin öğrenmeyi kapsar: resim sınıflandırma, konuşmayı yazıya dökme vb. Bu cephedeki önemli bir sınırlama, modellerimizin yalnızca daha önce gördüklerine son derece yakın girdileri işleyebilmesidir — eğitim verilerinizden çok uzağa gidemezsiniz. Burada yaptığımız şey, özünde, yüksek boyutlu bir eğri uydurmadan ibarettir.
- Yukarıdakilerin nispeten safdil kombinasyonları. Örneğin, çevresindeki bir dizi nesnenin türünü ve konumunu pek çok örnek üzerinden eğitilerek çıkarabilen bir derin öğrenme modülüne sahip, buna ek olarak bu nesneleri manipüle etmek için üst düzey kuralları sabitleyen bir modülle birleştirilmiş bir robot düşünebilirsiniz. Bir başka örnek de AlphaGo/AlphaZero’dur; bu, temelde brüt güç aramasının (açık programlama) çok sayıda oyun üzerinde eğitilmiş ve bir tahta durumunun değerini “sezgisel” olarak değerlendirebilen bir derin öğrenme modülü ile kombinasyonudur.
Mevcut teknikleri potansiyellerinin tamamına kadar kullandığınızda, pek çok önemli görevde insanüstü performans ve daha da fazlasında makul performans elde edebilirsiniz. Ancak bu yalnızca çok dar bağlamlarda mümkündür. Ve belki sezgilere aykırı biçimde, çok farklı dikey görevde çok iyi olmaktan, bir çocuğun bile sahip olduğu genel zekâ ve sağduyuya — hele ki onun öğrenme ve uyum yeteneklerine — uzanan gerçek bir yol yoktur.
Yine de çok dar görevlerde çok iyi olmak, çoğu endüstri için dönüştürücüdür. Bu nedenle önümüzdeki 20 yıl boyunca yapay zekânın önemli bir ekonomik katkı sağlayacağını bekleyebilirsiniz. Yapay zekâyı, çağımızın buhar makinesi gibi düşünebilirsiniz — insanın elinde çok güçlü bir araç, önümüzdeki birkaç on yılda ekonomik manzarayı yeniden biçimlendirecek. Ancak ufukta bilinçli robotlar yok.
Yapay zekâ neleri yapamaz?
Otomatikleştirmek isteyebileceğimiz tüm şeyler uzayında, yapay zekâ bugün yalnızca çok küçük bir alt kümeyi ele alabiliyor. Yapabildiğimiz şeylerden çok daha fazlasını yapamıyoruz.
Genel olarak, özellikle şunlarda kötüyüz:
- “Yerdenlik” veya “anlama” gerektiren herhangi bir şey. Örneğin, yapay zekâ doğal dilin anlamını kavrayamaz; bunun yerine dili istatistiksel bağımlılıklar ya da sabitlenmiş işleme kuralları açısından ele alır. İnsanda var olan “anlam”, bedenleşmiş insan deneyiminden türer ve yapay zekâ modellerimizin erişimi dahilinde değildir — en azından şimdilik. Dolayısıyla bugün hiçbir yapay zekâ sistemi, görevini bir insanın anlayacağı tarzda “anlayamaz”. Modeller sadece eğitim verilerinin istatistiksel manifoldunu haritalandırır.
- Yapay zekânın daha önce gördüğünden farklı verilerle uğraşmayı içeren her şey. Yapay zekâ ya açıkça kodladığınız kuralları uygulayabilir ya da eğitildiğine çok çok benzer şeyleri tanıyabilir. Bir göreve ne kadar belirsizlik veya varyasyon eklerseniz, yeteneklerimiz üstel olarak zayıflar.
- Akıl yürütme ve soyutlamayı içeren her şey. Ya makineye açık akıl yürütme kuralları kodlayabiliriz ya da hiç akıl yürütemeyiz. Mevcut yapay zekâ bir durumun soyut modellerini kendi kendine çıkaramaz. Tartışmasız bir şekilde bu, bugün yapay zekâ gelişiminin ana darboğazıdır. Bunu çözerseniz, önceki iki sorunu da hızla aşabilirsiniz.
Bu ve ilişkili konular hakkında The limitations of deep learning başlıklı bir blog yazısı yazdım.
Derin öğrenme topluluğunun karşı karşıya olduğu başlıca zorluklar nelerdir?
Abartıyla mücadele, etik farkındalık geliştirme ve bilimsel titizliği artırma.
Abartı: Bu, alanımızı kasıp kavuruyor. Bazı insanlar, yakın zamanda kaydedilen ilerlemeyi akıl almaz ölçüde abartıyor, mevcut yeteneklerimizi fevkalade pazarlıyor ve çoğu zaman insan seviyesinin eli kulağında olduğunu öne sürüyor — ki öyle değil. Uçuk beklentiler belirleyip sonra bunları karşılayamazsak, insanları kendimize karşı çeviririz. Ayrıca, bu entelektüel olarak da samimiyetsizdir ve kamusal tartışma için zehirlidir.
Etik: Bugün yapay zekâ sistemleri geliştiren çoğu kişi, özellikle çeşitli bir arka plandan gelmiyor ve inşa ettikleri sistemlerin etik sonuçları ve zararlı yan etkilerinin çoğunun farkında bile değil. Bu büyük bir sorun; çünkü bu kişiler başkaları üzerinde giderek artan bir güce sahip olacaklar. Bu meseleleri daha fazla tartışmamız ve ister insanların hayatını etkileyen önyargılı tahmin modelleri, ister yapay zekânın gerçekten tartışmalı alanlarda uygulanması, isterse davranış ve görüşlerimizi tehlikeli yollardan manipüle etmek için kullanılması olsun, yapay zekânın olası etik dışı uygulamaları konusunda farkındalığı artırmamız gerekiyor.
Bilim: Her gün tonla derin öğrenme makalesi yayımlanıyor ve çoğu, bilimsel yöntemi takip etmediği için gerçekten anlamlı yeni bilgi üretmiyor. Modelleri muğlak biçimde “değerlendiriyorlar” ya da aşırı uyum göstermiş modelleri eğitim verileri üzerinde test ediyorlar (bu, özellikle derin öğrenme araştırmalarında en hızlı büyüyen iki konu olan üretici modeller ve pekiştirmeli öğrenme için geçerli), seçmece sonuçlar paylaşıyorlar, yapay olarak zayıf kıyaslamalar kullanıyorlar, hiperparametreleri belirli bir göreve aşırı uyuma yol açacak şekilde ayarlıyorlar, modelleri yalnızca MNIST üzerinde değerlendiriyorlar vb. Derin öğrenme bilimsel olarak bir felaket alanı. Hakem değerlendirmesi çoğu zaman bu sorunları anlamlı biçimde ele almıyor; belki de bunun nedeni, alan üstel olarak büyüdüğü için çoğu hakemin alanda en fazla bir iki yıldır bulunuyor olması. Daha hızlı ilerlemek istiyorsak, araştırma tekrarlanabilirliği, kıyaslamalar, model değerlendirmesi ve istatistiksel anlamlılık konularında alana daha yüksek titizlik beklentileri aşılamamız gerekiyor. Ne yazık ki mevcut teşvik sistemimiz bilime karşı önyargılı — yayın yapmayı teşvik ediyoruz ve maalesef araştırmanızı karmaşık ve gizemli gösterirken önemini doğru değerlendirmeyi imkânsız kılmak, yayınlamayı daha kolay hale getiriyor.
Sizce derin öğrenmenin geleceği nasıl görünüyor?
Bu konuda aslında bir blog yazısı yazdım. Özetle, yapay zekânın giderek “sezgisel” örüntü tanıma modüllerini, resmi akıl yürütme modülleriyle harmanlayacağını öngörüyorum. Ayrıca yapay zekânın, bugün yazılım mühendisliğinde bulunan pek çok desen ve uygulamayı ödünç alarak, daha çok otomatik bir yazılım geliştirme biçimine evrileceğini de bekliyorum.
Siz yalnızca bir geliştirici değilsiniz. Keras blogunda, denemelerinizde, kitabınızda ve Twitter’da genel olarak derin öğrenme, yapay zekâ ve teknoloji etrafındaki etik konular üzerine düşünceli ve ses getiren paylaşımlar yapıyorsunuz. Geliştiricilerin, yaptıkları işle ilgili etik değerlendirmelerle ilgilenme sorumluluğu olduğunu düşünüyor musunuz?
Kesinlikle. Son yıllarda genel teknoloji manzarasında bunun eksik kaldığını düşünüyorum. Örneğin Facebook’a bakın. Ya da çoğu akıllı telefon oyununa. Teknoloji asla tarafsız değildir — güçlü olduğu ve hayatlarımızı etkilediği için. Ürünleri ve teknolojiyi tasarlama biçiminiz, farkında olsanız da olmasanız da, onlara aktif olarak değerler enjekte eder. O halde bunu kasıtlı yapmanız daha iyi. Bir sosyal medya platformu inşa edip “etkileşimi” maksimize etmeye çalışırsanız, bu önemli yansımaları olan, etik açıdan yüklü bir karardır. Ya önemser, inşa ettiğimiz teknoloji ve güç yapılarının açık etik tasarım hedefi olmasını sağlarız ya da değerlerimizi terk ederiz. Teknoloji içindeyseniz, “kenarda kalmayı” seçemezsiniz; bu bir yanılgıdır.
