Machine Learning” nedir sorusuna verilebilecek bir çok cevap var aslında. Günümüzdeki popülerliğinden dolayı dışarı çıkıp sorsak eminim herkesin söyleyecek bir şeyi olacaktır. Yapay zeka, robotlar, otomasyon, tahmin etme gibi gibi günümüzün bir çok konseptiyle ilişkili olduğundan hepimizin bir fikri olacaktır. Ve bu söylenen şeylerin büyük bir kısmı da doğru(?) olarak nitelendirilebilir. Açıkcası profesyonel olarak uğraştığım bir konu değil; araştırma-öğrenme şeklinde takip ettiğim, belli PoC(Proof of Concept) çalışmaları yaptığım bir konu. Dolayısıyla “dışarı çıkıp sorsak” kısmında, benim de söyleyecek bazı şeylerim oluştu ve ben de kendimce paylaşmak istedim, buyrun efenim… 🙂

Peki gerçekten nedir bu “Machine Learning”?

Çok basit ve yalın olması için, “Machine Learning” ’in bilgisayar sistemlerinin bir öğrenme süreci olduğunu söyleyebilirim. Verilerin, bilgiye dönüşmesi için bilgisayar sistemlerinin gücünün kullanıldığı teknik bir süreç… Açıkcası ne olduğu sorusundan çok, nasıl olduğu sorusunun, “Machine Learning” ‘in anlaşılması ve öğrenilmesi için daha önemli olduğunu düşünüyorum. “Nasıl?” sorusunun cevabı tabi ki çok geniş ve ayrıntılı. Ben sadece giriş tadında olması için bazı fikirlerimi paylaşmaya çalışacağım.

Peki nasıl öğreniyor bu sistemler?

Verilerdeki belli kalıpların bulunması, “Machine Learning” sürecinin temeli. Verilerdeki kalıpların bulunması ve bunların üzerinde çeşitli algoritmalar çalıştırılması ile sistemler öğrenebilir hale gelmeye başlıyor. Bu süreç aslına bakarsanız iteratif yani kendini tekrarlayan bir süreç. Sistemlerin öğrenebildiğinin doğrulanması ve geçerli olduğunun kabul edilmesi gerekiyor. Bu sayede öğrenme hızı ve şeklide gelişiyor doğal olarak. Bu doğrulamayı ve kabulu de, aslında biz ya da bizim oluşturduğumuz sistematik süreçler yapıyor. Bilgisayar sistemlerinin öğrenme yaklaşımı çeşitli “tahmin etme” yaklaşımları ile somutlaşıyor. Bizim için en önemli çıktı bu şekilde oluşuyor aslında. Bu tahminlere göre, belli durumlarda da tanımlı aksiyonlar gerçekleştiriliyor. Bu sayede bir çok kolaylık insanoğlu için sağlanıyor. (Yapay zekanın temeli de bu aslında.)

Biraz daha anlaşılır olması için hepimizin geçtiği bir süreçten bir örnek verebilirim. Açıkcası okuma-yazma öğrenme süreci bütün bu “Machine Learning” konseptinin anlaşılması için güzel bir giriş noktası bence. Hepimiz okuma yazmayı; hatırlarsınız belli çizgiler çizerek harfleri öğrenerek başladık. Daha sonra harflerin bir araya geldiği kalıpları bulup, bu kalıpların tekrarlanmasını çıkartıp kelimeleri tanımlayabilir hale gelmiştik. Kelimelerin anlamlarını da çıkartıp, benzer kelimelerin anlamlarının ne olabileceğini tahmin edip, yeni kelimelerin anlamını çıkarmıştık. Bu sürecin sürekli tekrarlanması ile kelime dağarcığımız gelişmiş ve okumayı da böyle böyle çözmüştük. Çok geçmiş zaman kullandım ama temel olarak öğrenme süreci hala böyle aslında. 🙂

“Machine Learning” de direkt olarak böyle aslında. Verilerdeki kalıpları bulup, bu kalıplara anlam yüklememiz ve bu anlamları, artan verilerde yine bulup bilgisayar sistemlerinin belli tahminler yaparak veri kalıplarını öğrenme süreci ve bilgi üretme de direkt böyle oluyor.

İnsanoğlu olarak verilerin altında ezildiğimiz bir çağdayız ne yazık ki. Artık öyle bir zamanda yaşıyoruz ki, çok fazla veri de bizimle birlikte yaşıyor, varlığını sürdürüyor ve zaman içerisinde de sürekli veri artışı oluyor. Bu verileri bilgiye çevirmek, bu bilgilerden başka ihtiyaçlar için belli sonuçlar çıkartmak, problemleri katma değeri yüksek çözümler ile gidermek en önemli amaçlarımızdan. Bu dediğim şeyleri hızlı ve tutarlı bir şekilde ancak bilgisayar sistemleri kolaylıkla yapabiliyor. Temel olarak bilgisayar sistemlerinin bütün bunları yapabilmesi de “Machine Learning” yaklaşımı ile gerçekleşiyor.

Kullanım açısından örnekler ile neden ihtiyacımız var sorusu da kendiliğincen cevaplanmış olacaktır diye düşünüyorum. Tek tek kullanım noktalarına girmek mümkün değil ne yazık ki. Çünkü kullanılabilecek, ihtiyaçların çözülebileceği bir çok sektör ve konu var;

  • İnsanların sevdiği tarzda müzikler/filmler/yemekler sunmak
  • Yapılan harcama işlemlerinin geçerlilik kontrolü
  • Enerji üretim ihtiyaçları
  • Hastalık teşhisleri
  • Müşteri memnuniyeti
  • İstatistiksel bilgi analizleri
  • ….
  • ..
  • ve çok daha fazlası…

Bunlar sadece benim ilk aklıma gelen, gündelik hayatta herkesin karşısına çıkabilecek başlıklar. Bu başlıklar dışında çeşitli iş modelleri doğrultusunda bir çok farklı konu için de “Machine Learning” tercih edilmekte.

Çok fazla verinin olduğu bir zamanda yaşıyor olmamızla beraber, bilgisayar hesaplamalarınında çok hızlandığı bir zaman da yaşıyor olmamız, “Machine Learning” ile bir çok ihtiyacımızı karşılamamızın önünü açıyor. Güçlü veri merkezleri ve “Cloud” platformlarında yüksek hızda ve tutarlı hesaplamaları yapabiliyor olmamız, büyük verilerden bilgi üretmemizi kolaylaştırıyor. Böylece bir çok problemimizi kolaylıkla çözebiliyor ya da farklı ihtiyaçlarımıza kolay cevap bulabiliyoruz. Kuantum bilgisayarların gelişmesi gibi bilgisayar biliminin de gelişmesi “Machine Learning” için basamak atlama olacak.

Sistemlere peki biz nasıl öğreteceğiz?

Öğrenme süreci için gerekli en temel kavramı; veriyi, biz yani insanlar sağlıyor ve üretiyor. Bizim yönlendirmemiz ya da ürettiğimiz veriler ile bilgisayar sistemleri öğrenmek için çeşitli aksiyonlar alıyor. Haaaa yarın öbür gün, bilgisayar sistemleri kendi verilerini üretip, kendi ihtiyaçları doğrultusunda öğrenmeye başlar ise işte o zaman farklı bir çağa geçmiş olacağız. (Yapay zeka çağı :P)

Bizim şu an öğrenme olayımız, bilgisayar sistemlerine ne öğretmek gerektiği ve nasıl öğretmek şeklinde biraz farklılaşıyor. Açıkcası “Machine Learning”‘in gerçek katma değerlerinin farkında olmak, belli ihtiyaçların nasıl karşılanabileceğimizi bilmek şu an için en önemli konumuz olmalı diye düşünüyorum. Özetle “Machine Learning” şu sıralar sıcak konu diye girişmek yerine, gerçekten ne katma değer katar, biz çözümlerimizde “Machine Learning” kullanarak nasıl katma değerlerli çözümler geliştirebilirizi bilip, öğrenmek bizim için en önemli konular.

Bilgisayar sistemlerinin öğrenebilmesi için bizim de çeşitli teknik çalışmalar yapmamız gerekiyor tabi ki. Açıkcası o kadar derinlere girecek çok fazla ne bilgim var, ne zamanım şu an için… 🙂 Ama ilerleyen yazılar ile belli platformlardan bahsedip, onlarda “Machine Learning” çalışmalarının nasıl yapılabileceğini, öğrendiğim şekilde, basitçe paylaşmaya çalışacağım. Ama merak eden ve ciddi şekilde ilgili olan kişilere R dili ve Python dili ile yapılan çalışmalara göz atarak başlamalarını tavsiye ederim. İstatiksel hesaplamaların yapılması, çeşitli algoritmaların oluşturulması gibi “Machine Learning” konularında, R şu an oldukça popüler bir dil ve platform. Sahip olduğu kütüphaneler ve diğer platformların desteği sayesinde başlangıç için güzel bir nokta. Bir çok platform tarafında desteğinin olması da artısı… Mesela, SQL Server da bile aktif olarak R desteği mevcut artık.

Microsoft Azure, Google Cloud, Amazon AWS gibi “Cloud” platformlarında, “Machine Learning” konusunda ciddi anlamda kullanılan özellikler de var. Bunlara da giriş yapmak, ilginizi pekiştirmek için tavsiye edebileceğim noktalar.

“Machine Learning” sürecinde bizim rolümüz ne?

“Machine Learning” sürecinde en önemli rol veri bilimcisinin yani daha havalı ifadesi ile “Data Scientist“‘in. Gerçek anlamda verinin farkında olan, istatistiksel çalışmalar konusunda yetkin olan, istenilen bilgiyi modelleyebilen kişiler mutlaka “Machine Learning” sürecinde bulunmalı. Sürecin efektif olması için açıkcası böyle bir rolün gerekliliğine canı gönülden inanıyorum. Teknik, yazılım vs. yaklaşımlarının yanında bu yetkinliklerin olması süreçten çıktıların daha katma değerli olmasında katkı sağlayacaktır.

Umarım bazı soru işaretlerini yok edip, yenilerine yer açmışımdır 🙂 Şimdilik benden bu kadar…