Makine Öğrenmesi Terminolojisi

Ceren Belhan
Deeper Deep Learning TR
11 min readMar 16, 2021

--

Bu yazı, AdresGezgini Ar-Ge Merkezi’nde gerçekleştirdiğimiz çalışmalar kapsamında yazılmıştır.

Herkese merhabalar! Bu yazımızda sizlere derin öğrenmede muhakkak bilinmesi gereken bazı kelimelere kısa kısa değinmeye çalışacağız. Ele alacağımız terimler sırası ile:

  • Denetimli-Denetimsiz Öğrenme
  • Feature
  • Korelasyon
  • Weight
  • Bias
  • Hiper Parametre
  • Batch_Size
  • Epoch-İterasyon
  • Learning Rate
  • Overfit-Underfit
  • Aktivasyon Fonksiyonları
  • Train-Test-Validation Veri Setleri

İlk terminolojimiz olan denetimli ve denetimsiz öğrenmeye başlamadan önce makine öğrenmesinden kısaca bahsedelim.Yapay zekanın alt bilim dalı olan makine öğrenmesi günümüzde analitik modellerin yetersiz kaldığı problemlere çözüm bulmaktadır. Makine öğrenmesi temeli ise insan yardımı olmaksızın eldeki verilerden öğrenim yapıp deneyimler oluşturan mekanizmalardır. Bu anlamda makine öğrenmesi 2 alt başlığa ayrılır. Bunlar denetimli (supervised) ve denetimsiz (unsupervised) öğrenmedir.

Denetimli Öğrenme:

Girdi özelliklerine dayalı etiketleri tahmin etme süreci, denetimli öğrenme yoluyla ele alınır. Her özellik-etiket kombinasyonu bir örnek olarak anılır. Karşılık gelen etiketler bilinmese bile anlam açık olduğunda bir dizi girdiye atıfta bulunmak için örnekler terimini kullanabiliriz. Amacımız, herhangi bir girdiyi verilen özelliklerini kullanarak bir etiketle eşleştirebilen bir model oluşturmaktır.

“Girdi özelliklerine göre etiketleri tahmin etme” olarak adlandırılan denetimli öğrenme, karşımıza pek çok biçimde çıkabilir. Bu biçimlere ya da modellemelere ise girdi ve çıktıların türüne, boyutuna ve sayısına gibi parametreler göz önüne alınarak karar verilir.

Genel olarak denetimli öğrenme süreci aşağıda verilen diyagram gibidir. Öncelikle veri setini alalım ve her bir veri için etiket verelim. Bu etiketli veri hazır olarak verilmiş olabilir ya da veri analisti olarak bu veriyi etiketleyip daha anlamlı ve sistemi eğitmeye hazır hale getirebiliriz. Sonra da eğitim setini girdi olarak alan ve etiketli çıktı olarak veren bir denetimli öğrenim algoritmasına verip süreci tamamlıyoruz.

Denetimsiz Öğrenme:

Denetimsiz öğrenme de temelinde girdi özelliklerine göre veriler hakkında bilgi edinmeye çalışan verilerin dağılımını gösteren modeller oluşturan öğrenme şeklidir ancak buradaki en önemli fark işlenmemiş verinin eğitime verilmesidir. Bu sebeple model gözlem yaparak öğrenmeye çalışır ve veriler arasındaki ilişkileri bulur ancak etiketleme işlemini yapamaz.

Denetimsiz öğrenme süreci aşağıdaki diyagram gibidir. İşlenmemiş ve etiketsiz veri modele verilerek eğitim ve verilerin yapısı ve dağılım hakkında edinimler çıkarılır. Eğitime verilen girdi sonucunda model etiketlenmemiş çıktılar verir.

Ufak çapta bir karşılaştırma yapacak olursak, denetimli öğrenmenin aksine denetimsiz öğrenme algoritmaları, kullanıcıların daha karmaşık bilgi işlem görevlerini gerçekleştirmesine olanak tanır. Öte yandan denetimsiz öğrenme, diğer doğal öğrenme süreçlerinden daha karmaşık ve tahmin edilemez olabilir.

Feature:

Türkçe karşılığı öznitelik olarak geçmektedir. Bazı kaynaklarda variable veya attributes olarak geçer. Aslında veri setimizdeki her sütuna, görseldeki her bir piksele feature denir. Bu featureler sayesinde bağımlı değişkenimize en yakın tahmini yapmaya çalışırız. Elimizdeki problemi çözmek için ihtiyaç duyduğumuz özelliklerdir. Köpek ve kuş sınıflandırma problemimiz olduğunu varsayalım. Ayak sayıları bizim bir feature’ımız olabilir. Anlaşılabileceği üzere değişkenlerin birbiri arasındaki ayrımını ortaya koyar.

Korelasyon:

Kısaca korelasyon, iki değişken arasında ilişkinin yönü ve kuvveti hakkında bilgi verir. Korelasyon değerleri -1 ile 1 arasındadır. Bu değerler yönü ve kuvveti olarak iki şekilde incelenebilir. Eğer korelasyon soncunda iki değer arasındaki korelasyon katsayısı -1 ya da 1 ise bu iki değişken arasında mükemmel bir doğrusal ilişki var demektir. Eğer bu katsayı 0 sa bu iki değişken arasında hiçbir ilişkinin olmadığını gösterir. Son olarak korelasyon katsayısı 0 ile -1 ya da 1 aralığındaysa bu iki değişken arasında bir ilişkinin olduğunu ama doğrusal olarak birebir eşleşmediğini anlatır. Katsayıların işareti ise ilişkinin yönünü anlatır. Pozitif değerler bu iki değişken arasında doğru orantı olduğunu gösterirken negatif katsayılar ise tam tersi biri artarken bir diğer değişkenin değerinin azaldığını işaret eder.

Korelasyonu neden uyguladığımıza gelirsek, regresyon gibi tahminleme algoritmaları temelinde birbirinden bağımsız x ve bağımlı y verisine göre modelleme yapan algoritmalardır. Dolayısıyla modelleme yaparken, elimizdeki veri setinde birbirinden bağımsız mı değil mi bilemediğimiz x değişkenlerini gözlemlemek ve birbirine bağımlı x değişkenleri varsa (korelasyon katsayısı 1,-1 ya da uç değerlere çok yakınsa) bu değişkenlerden birinin devre dışı bırakılması gerekir. Korelasyon bize bu ilişkileri bir matriks halinde verir ve kolaylıkla hangi değişkenlerin modele dahil edilmemesi gerektiğini gösterir.

Weight:

Türkçe karşılığı ağırlıktır. Temelde bağımsız değişkenlerimizdeki değişimler sonucu bağımlı değişkenimizin ne kadar etkileyeceğini belirleyen parametredir. Daha net anlaşılması için formül üzerinden inceleyelim:

Formülümüze bakacak olursak weight değerimizin bağımsız değişken ile çarpıldığını ve bias ile toplanarak tahmin sonucuna ulaşıldığını görüyoruz. Gerçek hayattan bir örnek vermek gerekirse (bias’i henüz tanımlamadığım için 0 olarak değerlendirip, yok sayıyorum) hava sıcaklığının dondurma satışlarına etkisini inceleyelim. Hava sıcaklığının 27° olduğunu, hava sıcaklığının ağırlığının da 5 olduğunu varsayıyorum. Bu durumda modelimiz:

Tahmin edilen dondurma satışı 135 olacaktır.

Hava sıcaklığı 22° olduğunda ise tahmin edilen dondurma satışı 110 olur. Hava sıcaklığının 5° düşmesi dondurma satışını 25 birim düşürdü. Bu durumda hava sıcaklığındaki 1° değişim dondurma satışını 5 birim artırır veya azaltır. Bu da bize dondurma satışının ağırlığını verir.

Ağırlık aynı zamanda tahmin için çizilen doğrunun eğimidir.

Görüldüğü gibi eğimi 5’tir. (110–100/22–20)

Bias:

Bazı kaynaklarda “y-intercept” olarak da geçer. Aslında x = 0 iken y’nin değerini alır. Karmaşık gelmiş olabilir, hemen gerçek hayattan bir örnek ile açıklıyorum. Klima ve garaj sayısının ev fiyatı üzerindeki etkisi ve tahmini problemini ele alalım. Klima ve garaj sayısı ev fiyatı üzerinde etkilidir ama bunlara sahip olmayan bir evin fiyatı 0 olmayacaktır. Aslında ev fiyatını etkileyen 1000 farklı özellik olabilir ama bizim elimizde sadece 2 tane özellik var. Bias ekleyerek, sonucumuza ekleyemediğimiz 998 özelliği temsil eden bir değer olmasını, sonucumuzu gerçek değere yaklaştırmasını bekleriz. Grafik üzerinden gösterdiğimde daha anlaşılır olacak.

Eğer bias değerimiz olmasaydı siyah çizgiyi kullanarak tahmin yapıyor olacaktık ve bu bizi oldukça yanlış bir sonuca götürecekti. Bias değerimiz 4 olduğu zaman, turuncu çizgimiz veri ile gayet uyumlu bir şekilde birleşmektedir.

Hiper Parametre:

Veri setini hazırlarken, modeli oluştururken veya eğitimi gerçekleştirirken bizim belirlememiz gereken bazı bileşenler vardır. Bunlar learning rate, mini batch, epoch gibi parametreler de olabilirken modelin kaç gizli katman içereceği, kaç node içereceği, modelin başlangıç ağırlıklarının ne olacağı ve hangi aktivasyon fonksiyonlarını nerede kullanacağımıza kadar direkt olarak bizim belirlediğimiz her şey bizim modelimizin hiper parametresidir.

Batch_Size:

Kısaca modele tüm veri setini girdi olarak vermek yerine veriyi gruplandırarak küçük parçalar halinde bölmemizi sağlayan hiper parametredir. Eğitim esnasında parametrelerin güncellenerek en optimal sonuca ulaşıldığından bahsetmiştik. Güncelleme işleminin tüm veri seti işlendikten sonra gerçekleştirilmesi hem zaman kaybına hem de işlem maliyetinin artmasına neden olacaktır. Bu nedenle veri seti parçalara ayrılarak güncelleme işleminin yapılması tercih edilir. Bu parçaların büyüklüğü de batch_size olarak adlandırılır.

Batch_size ın büyüklüğünün belirlenmesi konusunda veri setinin büyüklüğü ile verinin dağılımı ve elimizdeki makinenin işlem gücü belirleyici unsurlardır. Örnek verecek olursak, batch_size=1 seçilmesi her veri sonrası güncelleme yapılması anlamına gelir. Sırasıyla gelen veriler birbirlerinden çok farklı değerlere sahipse tahmin sonuçlarımız da o kadar farklı olacaktır. Bu da bizim istemediğimiz bir durumdur. Öte yandan batch_size= toplam veri sayısı seçilirse, güncelleme sayısı artacağından makinenin işlem gücü yetersiz kalacaktır (batch_size a değer atanmazsa otomatik olarak batch_size=toplam veri sayısı olur.) .

Örneğin bir öğrencinin bir şiir yarışmasına katılmak için bir şiir ezberlediğini varsayalım. Bu şiiri kıtalara bölerek de ezberleyebilir, mısra mısra da veya kelime kelime de… İşte bu “ezberleme” yönteminin nasıl yapılacağına karar verdiğimiz yöntem aslında batch_size’dır. Örneğin 10 kıtalık 4'er mısradan oluşan bir şiirde ezberlemesi için her seferinde öğrenciye 4 mısra verirsek batch_size’ımız 4 olur.

Epoch-İterasyon:

Baştan sona tüm verilerin ağ tarafından bir kere işlenmesine 1 epoch denir.

Batch_size’da bahsettiğimiz şiir örneğini yeniden ele alalım. Bu şiiri baştan sona 1 defa okuması bizim için 1 epoch olarak sayılacaktır.

Model eğitilirken tüm verinin tek seferde işlenip parametrelerin güncellenmediği, minibatch’lere bölünüp işlendiğinden bahsetmiştik. Bu şekilde işlenen her bir minibatch’e 1 iterasyon denmektedir. Örneğimize geri dönecek olursak öğrencinin şiiri düz yazı gibi baştan sona değil de kıtalarına ayırarak okuduğunu varsayalım. Şiir boyunca her kıta okuma işlemi bizim için bir iterasyon olarak adlandırılır.

Kavramların pekişmesi için örneğimizi biraz matematikselleştirelim. Şiirimiz 12 kıtadan (12 kıta = 1 epoch) oluşsun ve öğrencimiz de çalışırken 2’şer kıta (2’şer kıta = batch büyüklüğü) okuyarak ve her 2 kıta sonunda da okuduğunu sindirerek ilerlesin. Öğrenci şiiri 6 parçaya (6 = iterasyon sayısı) bölmüş oldu.

Learning Rate:

Kayıp fonksiyonu üzerinde optimum noktaya yani kayıp değerinin minimum olduğu noktaya ulaşmak için gradyan iniş kullanırız. Bu iniş esnasında izlenen yolda atılacak adım büyüklüğü learning rate olarak tanımlanır. Learning rate, eğitimden önce belirlenen bir hiperparametredir. Değerinin çok küçük seçilmesi eğitim için gerekli epoch sayısının artmasına ve dolayısıyla eğitimin süresinin uzamasına neden olurken; çok büyük seçilmesi minimum noktanın atlanması ve sonrasında noktadan uzaklaşılmasıyla optimuma asla ulaşılamayacağı anlamına gelebilir. Bu gibi durumların önlenmesi için ideal bir learning rate değeri seçilmesi oldukça önemlidir.

Bir örnekle desteklemek gerekirse learning rate’i kendi adımlarımıza benzetebiliriz. Bir hedefe ulaşmaya çalışan sabit adım büyüklüklerine sahip bir bebek, bir yetişkin ve bir dev düşünelim. Bebek her adımında yalnızca çok küçük yol alabileceğinden hedefe ulaşması oldukça uzun sürecektir. Devinse adımları çok büyük olduğundan hedefi geçecek ve geri dönemeyecektir. En ideal sürede ulaşan kişi ise yetişkin olacaktır.

Overfitting-Underfitting:

Bir modelin eğitimi esnasında veriler (x) ile birlikte verilerden almak istediğimiz gerçek değerleri (y) de modele dahil ettiğimiz durumları ele alalım. Bu şekilde gerçekleştirilen eğitimlerde model bir nevi x-y ilişkisini tanımlayan bir tahmin fonksiyonu (ŷ) elde etmeye çalışır. Bu fonksiyonun veri setine çok fazla uyması yani veri setini ezberlemesi overfitting olarak adlandırılır. Overfitting, modelin gereğinden fazla karmaşıklaşması yani her veriye tamamen uyacak şekilde bir fonksiyon geliştirebilecek karmaşıklıkta fonksiyonlar üretebilmesi durumlarında ortaya çıkmaktadır. Bu durumda modelin daha önce görmediği bir veri tahmin edilmesi için verildiğinde model, eğitildiği veri setini ezberlediğinden doğru tahmin yapamaz. Bir örnekle açıklamak istersek bir sınava hazırlanan öğrenciyi ele alalım. Bu öğrenci konu çalışmak yerine önceki çıkmış soruları ezberlerse sınavında daha önce hiç görmediği sorular geldiğinde başarısız olacaktır.

x-y ilişkisini tanımlayan fonksiyonun veri setinden çok bağımsız olması başka bir deyişle veri setinin ilişkisini yansıtamaması underfitting olarak adlandırılır. Underfitting, modelin çok basit olması yani verinin yalnızca çok küçük bir kısmını ifade edebilecek yeterlilikte fonksiyon üretebilmesi durumlarında ortaya çıkar. Örneğimize geri dönecek olursak öğrenci eğer konuların yalnızca çok küçük bir kısmını çalışırsa sınavda tüm konulardan sorumlu olacağı için yine başarısız olacaktır.

Modelden beklentimiz veri setini ezberlememesi ama aynı zamanda veri setinin geneline de hakim olmasıdır. Yani aslında örneğimizdeki öğrencimizin konuların hepsine çalışmasını ama soruları da ezberlememesini istiyoruz. Bu durumda öğrencimiz -modelimiz- daha önce hiç görmediği sorularla karşılaştığında konunun geneline hakim olduğundan oldukça doğru sonuçlar verme kapasitesine sahip olur.

Modelin overfitting ve underfitting durumu, train ve test loss function grafikerinden incelenebilir.

Modelin train esnasındaki kaybının düşük olduğu durumlarda; eğer test kaybı da düşükse modelimiz ideal, test kaybı yüksekse modelimiz ezberlemiş yani overfitting olmuş çıkarımı yapabiliriz. Train esnasında ve test esnasında kaybımız yüksekse o zaman modelimiz öğrenememiş yani underfitting olmuş çıkarımı yapabiliriz.

Aktivasyon Fonksiyonları:

Aktivasyon fonksiyonu, mevcut nöronu besleyen giriş ile bir sonraki katmana giden çıkışı arasındaki matematiksel bir “kapı” dır. Temel olarak nöronun aktive edilip edilmeyeceğine karar verirler. Aktivasyon fonksiyonlarının amacı modelin lineerliğini bozmak, başka bir deyişle non-lineerlik katmaktır. Derin öğrenmenin temelini oluştururlar. Neural network’ün çıktısını belirleyen matematiksel denklemlerdir. Ancak bundan da fazlasıdır! Aynı zamanda neural network’ü hızlandırır ki milyonlarca verinin olduğu düşünülürse hayat kurtarıcıdır da diyebiliriz. Ayrıca tahminlerinin doğruluğunu arttırır ve normalizasyon işlemini de gerçekleştirir.

Bu fonksiyonlar olmasaydı bir node’a bağlanan diğer node’ların çarpımı (dot product) ve ilgili node’a bağlanan bias’ın toplamından (Wx+b) ileriye gidemezdi ki bu da lineer regresyon olarak tanımlanır ve modelimizi çok düşük bir kapasitede tutardı.

Aktivasyon fonksiyonları çözmek istediğimiz soruna göre değişiklik göstermekle birlikte, modeldeki bir çok sorunu aşmamıza da yardımcı olmaktadır. Örneğin classification problemi için Softmax aktivasyon fonksiyonu kullanılırken exploding gradient problemi için ReLu aktivasyon fonksiyonu kullanılır. Özel bir çözüm gerektiren durumlarda kendi aktivasyon fonksiyonumuzu bile yazabiliriz! Fonksiyon çeşitlerine buralardan ulaşabilirsiniz.

NOT: Neden lineerlik ve non-lineerlik bizim için bu kadar önemli? Yukarıda da bahsettiğimiz gibi aktivasyon fonksiyonu olmasaydı modelimiz ne kadar katman eklersek ekleyelim lineer regresyondan öteye gidemeyecekti. Yani sinir ağımız kaç katmana sahip olursa olsun, yine de tek katmanlı bir ağ gibi davranacaktır çünkü bu katmanları toplamak bize elimizdeki verileri modellemek için oldukça güçsüz bir doğrusal işlev verecektir.

Genel olarak, sinir ağları, ağın karmaşık verileri öğrenmesine, bir soruyu temsil eden hemen hemen her işlevi hesaplamasına ve öğrenmesine ve doğru tahminler sağlamasına yardımcı olan fonksiyonlardır.

Train (Eğitim) Veri Seti:

Modeli eğitmek için kullandığımız veri setidir. Model bu verileri görür ve ondan öğrenir.

Validation (Doğrulama) Veri Seti:

Model hiper parametrelerini ayarlarken eğitim veri kümesine uyan bir modelin tarafsız bir değerlendirmesini sağlamak için kullanılan veri örneğidir. Sistemin uygun parametrelerini seçmek için kullanılır. Doğrulama seti aslında eğitim setinin bir parçası olarak kabul edilebilir, çünkü modelinizi, sinir ağlarını veya diğerlerini oluşturmak için kullanılır.

→ Bu iki veri setini kullanma konusunda dikkat etmeliyiz. Sebebi ise bunların içindeki verileri makineye öğrenmesi için verdiğimizden dolayı bunları modelin doğruluğunu (accuracy) kontrol etmek için kullanılmamalıdır. Model zaten bu verileri gördüğü için normalden daha iyi sonuçlar vererek bizi yanıltacaktır.

Prensip olarak, tüm hiperparametrelerimizi seçinceye kadar test setimize dokunmamalıyız. Model seçim sürecinde test verilerini kullanacak olsaydık, test verilerini overfit etme riski vardır.

Test Veri Seti:

Modelin doğruluğu daha önce hiç görmediği bir veri seti ile test edilir. Bu verilerin oluşturduğu kümeye ise test seti denir. Tek amacı sistemin doğruluğunu test etmek ve söylemektir.

Eğitim veri setinde ne kadar az örnek olursa, overfit’le karşılaşma olasılığımız o kadar ortaya çıkıyor. Eğitim verisi miktarını artırdıkça, genelleme hatası (general error) tipik olarak azalır.

Neden validation ve test olarak ayırmak zorunda hissetmişiz?

Doğrulama seti son modeli seçmek için kullanıldığından, doğrulama verileri üzerindeki son modelin döndürdüğü hata oranı önyargılı (yüksek bias’lı) olacaktır ki böylelikle gerçek hatadan daha küçük çıkacaktır. Test setindeki son modeli değerlendirdikten sonra modelin asıl başarısı ortaya çıkar. Test veri seti objektiftir.

KAYNAKLAR

YAZAR DESTEĞİ

--

--

Ceren Belhan
Deeper Deep Learning TR

İzmir Ekonomi Üniversitesi Yazılım Mühendisliği ve Endüstri Mühendisliği 4. sınıf öğrencisi