1. Vektörler

    MatematikLineer Cebir

    Bir haritadaki yer değiştirmeyi ya da bir evin özelliklerini birkaç sayıyla anlatmak istediğimizde, bu sayıların sırası önemlidir. Vektör, sayıları bu sırayla bir arada tutarak yönleri, hareketleri ve veri kayıtlarını göstermemizi sağlar. Yapay zekâda görüntü pikselleri ve kelimelerin sayısal temsilleri de vektörlerle ifade edilir. Bu makalede gündelik örneklerle başlayıp bileşen ve boyut kavramlarını tanıyacağız. Ardından vektörleri toplamayı, bir skalerle çarpmayı, uzunluklarını bulmayı, nokta çarpımı ve kosinüs benzerliğini adım adım inceleyeceğiz.

    Birden Fazla Sayıyı Neden Bir Arada Tutarız?

    Bir evi yalnızca “120” sayısıyla anlatmaya çalıştığımızı düşünelim. Bu sayı evin metrekaresi olabilir; fakat oda sayısını, bina yaşını veya merkeze uzaklığını söylemez. Evi biraz daha ayrıntılı tanıtmak için şu bilgileri birlikte kullanabiliriz:

    • 120 metrekare,
    • 3 oda,
    • 10 yaşında,
    • merkeze 5 kilometre uzakta.

    Bu dört sayıyı belirli bir sırayla yan yana yazalım:

    $$ \mathbf{x}=[120,\ 3,\ 10,\ 5] $$

    Kalın yazılan \(\mathbf{x}\), bu sayı listesinin adıdır. Matematikte böyle düzenli sayı listelerine vektör (vector) deriz. Vektördeki her sayıya bileşen denir. Burada birinci bileşen alanı, ikinci bileşen oda sayısını, üçüncü bileşen bina yaşını, dördüncü bileşen ise merkeze uzaklığı temsil ediyor.

    Sayıların sırası da vektörün anlamını belirler. Aynı dört sayıyı \([3,120,5,10]\) biçiminde yazarsak, başlıkları değiştirmeden artık aynı evi anlatmış olmayız. İlk konum “metrekare” için ayrılmışken oraya oda sayısını koymuş oluruz. Bir vektörü okurken her konumun neyi temsil ettiğini bilmemiz gerekir.

    Ana fikir: İki evi karşılaştırırken aynı konumdaki sayıların aynı özelliği anlatması gerekir.

    Ok mu, Veri Listesi mi? İki Yararlı Bakış

    Vektör sözcüğüyle ilk kez karşılaşan biri, çoğu zaman bir oku düşünür. Bu çok yararlı bir başlangıçtır. Bir ok bize iki bilgi verir: Hangi yöne gittiğimizi ve ne kadar ilerlediğimizi. Örneğin orijinden, yani \((0,0)\) başlangıç noktasından 3 birim sağa ve 4 birim yukarı giden hareketi şöyle yazabiliriz:

    $$ \mathbf{v}= \begin{bmatrix} 3\\ 4 \end{bmatrix} $$

    Bu gösterimi “v vektörü; 3 ve 4 bileşenlerinden oluşuyor” diye okuyabiliriz. İlk bileşen yatay, ikinci bileşen dikey hareketi anlatır. Aşağıdaki görselde \([3,4]\) vektörü sağa ve yukarı; \([-2,3]\) vektörü ise sola ve yukarı yöneliyor.

    Koordinat düzleminde üçe dört ve eksi ikiye üç vektörlerinin yönleri

    Oku başka bir başlangıç noktasına taşıyabiliriz. Yatay ve dikey hareket miktarları aynı kaldığında ok yine aynı yer değiştirmeyi temsil eder. “3 birim sağa, 4 birim yukarı” hareketi nereden başlarsa başlasın aynı değişimi anlatır.

    Ev örneğindeki bileşenler fiziksel yönler göstermez: Gerçek dünyada “120 metrekare yönüne” veya “3 oda yönüne” yürümeyiz. Yine de bu bileşenleri eksenler gibi düşünerek evleri sayısal bir uzayda karşılaştırabiliriz. Burada vektör, bir nesnenin ölçülebilir özelliklerini taşıyan veri kaydıdır.

    Aynı vektör fikrine iki yönden bakabiliriz:

    • Geometrik vektör, yön ve yer değiştirme fikrini görmemizi kolaylaştırır.
    • Veri vektörü, bir nesneyi birçok sayısal özellikle birlikte temsil etmemizi sağlar.

    Yapay zekâda çoğunlukla veri vektörleriyle karşılaşacağız. Toplama, uzunluk, açı ve yön gibi geometrik fikirler, yüksek boyutlu verileri anlamamıza da yardımcı olacak.

    Vektörün Bileşenleri ve Boyutu

    Bir vektörde kaç bileşen bulunduğuna vektörün boyutu denir. \([3,4]\) iki bileşenli olduğu için iki boyutlu, \([3,4,2]\) üç bileşenli olduğu için üç boyutlu bir vektördür.

    Üç boyutlu koordinat sisteminde üçe dörde iki ve eksi ikiye üçe eksi bir vektörleri

    Genel bir \(n\) boyutlu vektörü şöyle gösterebiliriz:

    $$ \mathbf{x}= \begin{bmatrix} x_1\\ x_2\\ \vdots\\ x_n \end{bmatrix} $$

    Buradaki \(x_1\), “x vektörünün birinci bileşeni”; \(x_2\), “ikinci bileşeni” diye okunur. Alttaki küçük sayı çarpma işlemi değildir, bileşenin listedeki yerini gösterir. \(n\) ise toplam bileşen sayısıdır. Ortadaki üç nokta, aynı düzenin aradaki bütün bileşenler için sürdüğünü anlatır.

    İki ve üç boyutu çizebiliriz. Dört, yüz veya bin boyutu gözümüzde canlandırmak zordur; ama hesaplama kuralları değişmez. Örneğin 28'e 28 piksellik gri bir görüntüde her pikseli bir sayı olarak tutarsak toplam \(28\cdot28=784\) sayı elde ederiz. Bu görüntüyü 784 boyutlu bir vektör olarak işleyebiliriz. Kâğıda 784 eksen çizemememiz, bu vektör üzerinde hesap yapmamıza engel değildir.

    Bu makalede vektörleri çoğunlukla dikey, yani sütun vektörü biçiminde yazacağız. Yer kazanmak istediğimizde \([3,4]\) gibi yatay bir liste de kullanacağız. Matrislerle işlem yaparken satır ve sütun yönünün neden önemli olduğunu bir sonraki yazıda açıkça göreceğiz.

    Eşit Vektörler ve Sıfır Vektörü

    İki vektörün matematiksel olarak eşit olması için boyutları aynı olmalı ve aynı konumdaki bütün bileşenleri eşit olmalıdır:

    $$ \begin{bmatrix}2\\-1\\4\end{bmatrix} = \begin{bmatrix}2\\-1\\4\end{bmatrix} \qquad \begin{bmatrix}2\\-1\\4\end{bmatrix} \neq \begin{bmatrix}-1\\2\\4\end{bmatrix} $$

    İkinci karşılaştırmada aynı sayılar bulunsa bile ilk iki bileşenin yerleri değiştiği için vektörler eşit değildir. Veri vektörlerinde buna bir koşul daha eklemeliyiz: Bileşenlerin anlamları da aynı düzeni izlemelidir. Biri \([\text{yaş},\text{gelir}]\), diğeri \([\text{gelir},\text{yaş}]\) sırasındaysa sayıları doğrudan karşılaştırmak yanlış olur.

    Bütün bileşenleri sıfır olan vektöre sıfır vektörü denir ve \(\mathbf{0}\) ile gösterilir:

    $$ \mathbf{0}= \begin{bmatrix} 0\\ 0 \end{bmatrix} $$

    Sıfır vektörü “hiç değişim yok” anlamına gelebilir. Bir vektöre aynı boyuttaki sıfır vektörünü eklemek vektörü değiştirmez. Buna karşılık sıfır vektörünün belirli bir yönü yoktur. Bu ayrıntı, ileride bir vektörü uzunluğuna bölerek yönünü ayırmak istediğimizde önemli olacaktır.

    Vektörleri Toplamak ve Çıkarmak

    Sabah evden çıkıp 3 sokak doğuya ve 2 sokak kuzeye yürüdüğümüzü düşünelim. Ardından 2 sokak batıya ve 1 sokak kuzeye gidelim. İlk hareketi \([3,2]\), ikinci hareketi \([-2,1]\) vektörüyle gösterebiliriz. Toplam hareketi bulmak için aynı sıradaki bileşenleri toplarız:

    $$ \begin{aligned} \begin{bmatrix}3\\2\end{bmatrix} + \begin{bmatrix}-2\\1\end{bmatrix} &= \begin{bmatrix}3+(-2)\\2+1\end{bmatrix}\\ &= \begin{bmatrix}1\\3\end{bmatrix} \end{aligned} $$
    Üçe iki ve eksi ikiye bir vektörlerinin toplanarak bire üç vektörünü oluşturması

    Yatay toplam \(3+(-2)=1\), dikey toplam \(2+1=3\) olur. Sonuç, başlangıç noktasına göre 1 sokak doğuda ve 3 sokak kuzeyde olduğumuzu söyler. Geometrik olarak ikinci oku birinci okun ucuna yerleştiririz; başlangıçtan son noktaya çizilen ok toplam vektörüdür.

    Genel kural şöyledir:

    $$ \begin{bmatrix}a_1\\a_2\\\vdots\\a_n\end{bmatrix} + \begin{bmatrix}b_1\\b_2\\\vdots\\b_n\end{bmatrix} = \begin{bmatrix}a_1+b_1\\a_2+b_2\\\vdots\\a_n+b_n\end{bmatrix} $$

    Toplayacağımız vektörlerin boyutları aynı olmalıdır. Üstelik veri vektörlerinde aynı konumdaki bileşenlerin aynı şeyi ve uyumlu birimleri temsil etmesi gerekir. \([\text{yaş},\text{boy}]\) ile \([\text{boy},\text{yaş}]\) vektörlerini konumları düzeltmeden toplamak, hesap yapılabilse bile anlamlı değildir.

    Çıkarma da bileşen bileşen yapılır:

    $$ \mathbf{b}-\mathbf{a} = \begin{bmatrix} b_1-a_1\\ b_2-a_2 \end{bmatrix} $$

    Çıkarma, “A'dan B'ye gitmek için ne kadar değişmeliyim?” sorusuna cevap verir. Örneğin \(A=(1,2)\) ve \(B=(4,4)\) noktaları için:

    $$ \mathbf{B}-\mathbf{A} = \begin{bmatrix}4-1\\4-2\end{bmatrix} = \begin{bmatrix}3\\2\end{bmatrix} $$

    buluruz. Yani A'dan B'ye ulaşmak için 3 birim sağa, 2 birim yukarı gitmeliyiz. Yapay zekâda iki veri kaydının farkını almak da hangi özelliklerin ne kadar değiştiğini gösterir.

    Bir Vektörü Sayıyla Çarpmak

    Tek bir sayıya skaler denir. Bir vektörü skalerle çarptığımızda vektörün bütün bileşenlerini aynı sayıyla çarparız. Örneğin \(\mathbf{v}=[1,2]\) vektörünü 2 ile çarpalım:

    $$ 2\mathbf{v} =2 \begin{bmatrix}1\\2\end{bmatrix} = \begin{bmatrix}2\cdot1\\2\cdot2\end{bmatrix} = \begin{bmatrix}2\\4\end{bmatrix} $$
    Bire iki vektörünün ikiyle çarpılarak ikiye dört vektörüne uzatılması

    Pozitif bir sayıyla çarpmak vektörün yönünü korur. \(2\mathbf{v}\), \(\mathbf{v}\) ile aynı yöne bakar fakat iki kat uzundur. \(0{,}5\mathbf{v}\) aynı yönde yarı uzunlukta olur.

    Negatif sayı iki etkiyi birlikte getirir: Uzunluğu sayının mutlak değeri kadar ölçekler, yönü tersine çevirir. Örneğin \(-2\mathbf{v}\), iki kat uzun fakat ters yönlüdür. Sıfırla çarptığımızda ise bütün bileşenler sıfır olur ve belirli bir yönü bulunmayan sıfır vektörünü elde ederiz.

    Toplama ile skaler çarpmayı birleştirerek ağırlıklı toplamlar kurabiliriz:

    $$ c_1\mathbf{v}_1+c_2\mathbf{v}_2+\cdots+c_k\mathbf{v}_k $$

    Buradaki \(c_1,c_2,\ldots,c_k\) sayıları, her vektörün sonuca ne kadar katkı vereceğini belirler. Bir fotoğrafın iki sürümü arasında yumuşak geçiş yapmak, birden fazla hareketi birleştirmek veya farklı bilgi kaynaklarına farklı önem vermek bu fikrin kullanım örnekleridir. Matrislerin vektörleri dönüştürme gücü de temelde çok sayıda böyle ağırlıklı toplamı düzenli biçimde hesaplamasından gelir.

    Koordinatları Kuran Temel Vektörler

    “3 birim sağa, 2 birim yukarı” dediğimizde aslında iki temel hareketi birleştiririz. Yalnızca bir birim sağa giden vektöre \(\mathbf{e}_1\), yalnızca bir birim yukarı giden vektöre \(\mathbf{e}_2\) diyelim:

    $$ \mathbf{e}_1= \begin{bmatrix}1\\0\end{bmatrix} \qquad \mathbf{e}_2= \begin{bmatrix}0\\1\end{bmatrix} $$

    \(\mathbf{e}_1\) vektörünü 3 ile çarparsak 3 birim sağa, \(\mathbf{e}_2\) vektörünü 2 ile çarparsak 2 birim yukarı giden hareketi elde ederiz. Bu iki hareketi topladığımızda:

    $$ \begin{aligned} 3\mathbf{e}_1+2\mathbf{e}_2 &=3\begin{bmatrix}1\\0\end{bmatrix} +2\begin{bmatrix}0\\1\end{bmatrix}\\ &=\begin{bmatrix}3\\0\end{bmatrix} +\begin{bmatrix}0\\2\end{bmatrix}\\ &=\begin{bmatrix}3\\2\end{bmatrix} \end{aligned} $$

    olur. Bir vektörü başka vektörlerin skaler katlarını toplayarak yazmaya doğrusal birleşim (linear combination) denir. \(\mathbf{e}_1\) ve \(\mathbf{e}_2\) ise iki boyutlu düzlemin alışılmış temel vektörleridir. “Temel” sözcüğü burada, diğer vektörlerin koordinatlarını anlatmak için kullandığımız başlangıç yönleri anlamına gelir.

    Temel yönler, bileşenlerin geometrik anlamını gösterir. \([3,2]\) içindeki 3, birinci temel yönden ne kadar; 2 ise ikinci temel yönden ne kadar kullandığımızı söyler. Üç boyutta üçüncü bir temel yön ekleriz. Yüz boyutlu bir veri uzayında da yüz temel yön vardır; her bileşen kendi yönündeki miktarı taşır.

    Temel yönleri değiştirdiğimizde aynı geometrik vektör farklı bileşenlerle anlatılabilir. Bir konumu kuzey-doğu eksenleriyle tarif etmek ile birbirine eğik iki başka yönü kullanmak aynı adresi farklı dillerle söylemeye benzer. Bu makalede ve devamındaki yazılarda, aksi belirtilmedikçe birbirine dik alışılmış koordinat yönlerini kullanacağız.

    Doğrusal birleşim fikri, bir sonraki Matrisler makalesinin merkezinde yer alacak. Bir matris ile vektörü çarptığımızda, matrisin satır veya sütunlarında düzenlenmiş sayılar bu tür ağırlıklı toplamlar oluşturacaktır.

    Vektörün Uzunluğu

    Bir ok olarak düşündüğümüz vektörün ne kadar uzun olduğunu nasıl buluruz? \(\mathbf{v}=[3,4]\) vektörü yatayda 3, dikeyde 4 birim ilerliyor. Bu iki hareket dik bir üçgenin kısa kenarlarını oluşturur. Vektörün kendisi ise üçgenin uzun kenarıdır.

    Üçe dört vektörünün Pisagor bağıntısıyla beş birim uzunluğunda olduğunun gösterimi

    Pisagor bağıntısını uygulayalım:

    $$ \begin{aligned} \lVert\mathbf{v}\rVert_2 &=\sqrt{3^2+4^2}\\ &=\sqrt{9+16}\\ &=\sqrt{25}\\ &=5 \end{aligned} $$

    Çift dikey çizgiyle yazılan \(\lVert\mathbf{v}\rVert_2\), “v vektörünün Öklid uzunluğu” diye okunur. Altındaki 2, uzunluğu karelerin toplamının kareköküyle ölçtüğümüzü belirtir. \(n\) bileşenli bir vektör için aynı kural bütün bileşenlere uzanır:

    $$ \lVert\mathbf{x}\rVert_2 =\sqrt{x_1^2+x_2^2+\cdots+x_n^2} $$

    Uzunluk hiçbir zaman negatif olmaz. Uzunluğu sıfır olan tek vektör sıfır vektörüdür. Bir vektörü \(c\) sayısıyla çarptığımızda uzunluğu \(|c|\) katına çıkar; mutlak değer, negatif bir sayının yönü ters çevirmesine rağmen uzunluğu negatif yapmamasını sağlar.

    Matematikte bir vektörün büyüklüğünü ölçen kuralların genel adına norm denir. Burada yalnızca en tanıdık norm olan Öklid uzunluğunu kullandık. Aynı vektörü farklı amaçlarla ölçen Manhattan ve maksimum normlarını, Matrisler yazısından sonra gelen Normlar ve Mesafeler makalesinde ayrıntılı biçimde inceleyeceğiz.

    Yönü Uzunluktan Ayırmak: Birim Vektör

    Bazen bir vektörün ne kadar uzun olduğuyla değil, yalnızca hangi yöne baktığıyla ilgileniriz. Sıfır olmayan bir vektörü kendi uzunluğuna bölersek aynı yönü gösteren, uzunluğu 1 olan bir vektör elde ederiz. Buna birim vektör denir.

    $$ \widehat{\mathbf{v}}= \frac{\mathbf{v}}{\lVert\mathbf{v}\rVert_2} $$

    Üzerindeki şapka, \(\widehat{\mathbf{v}}\) vektörünün birim uzunlukta olduğunu hatırlatır. \(\mathbf{v}=[3,4]\) ve \(\lVert\mathbf{v}\rVert_2=5\) olduğuna göre:

    $$ \begin{aligned} \widehat{\mathbf{v}} &=\frac{1}{5} \begin{bmatrix}3\\4\end{bmatrix}\\ &= \begin{bmatrix}0{,}6\\0{,}8\end{bmatrix} \end{aligned} $$

    Kontrol edelim: \(\sqrt{0{,}6^2+0{,}8^2}=\sqrt{0{,}36+0{,}64}=1\). Yön değişmedi, yalnızca uzunluk 1'e getirildi. Bu işleme birim uzunluğa normalleştirme denir.

    Sıfır vektörü normalleştirilemez. Çünkü uzunluğu sıfırdır ve \(\mathbf{0}/0\) işlemi sıfıra bölme gerektirir. Ayrıca birim uzunluğa normalleştirme ile verideki özellikleri ortak ölçeğe getiren “ölçekleme” veya “standartlaştırma” aynı işlem değildir.

    İki Vektörden Tek Sayıya: Nokta Çarpım

    İki vektörü karşılaştırırken bazen yeni bir vektör değil, bütün eşleşmeleri özetleyen tek bir sayı isteriz. Nokta çarpım (dot product) aynı konumdaki bileşenleri çarpar ve bu çarpımları toplar:

    $$ \mathbf{a}\cdot\mathbf{b} =a_1b_1+a_2b_2+\cdots+a_nb_n $$

    Ortadaki nokta çarpma işaretidir. Sonuç bir vektör değil, tek bir sayıdır. İşlemin yapılabilmesi için iki vektör aynı boyutta olmalıdır. \(\mathbf{a}=[3,2]\) ve \(\mathbf{b}=[-2,1]\) için adımları görelim:

    $$ \begin{aligned} \mathbf{a}\cdot\mathbf{b} &=(3\cdot(-2))+(2\cdot1)\\ &=-6+2\\ &=-4 \end{aligned} $$

    Nokta çarpımı önce bir ağırlıklı toplam gibi okuyabiliriz. Bir modelin üç özelliği \(\mathbf{x}=[0{,}8,0{,}6,0{,}9]\), bu özelliklere verdiği önemler de \(\mathbf{w}=[0{,}5,0{,}3,0{,}2]\) olsun:

    $$ \begin{aligned} \mathbf{w}\cdot\mathbf{x} &=0{,}5\cdot0{,}8+0{,}3\cdot0{,}6+0{,}2\cdot0{,}9\\ &=0{,}40+0{,}18+0{,}18\\ &=0{,}76 \end{aligned} $$

    Her özellik kendi ağırlığıyla çarpıldı, sonra katkıların tamamı tek bir puanda toplandı. Yapay sinir ağlarının temel hesaplarından biri de girdiler ile öğrenilmiş ağırlıklar arasında yapılan bu tür nokta çarpımlardır.

    Nokta çarpımın geometrik bir anlamı da vardır. İki vektör arasındaki açıya \(\theta\) dersek:

    $$ \mathbf{a}\cdot\mathbf{b} =\lVert\mathbf{a}\rVert_2 \lVert\mathbf{b}\rVert_2 \cos(\theta) $$

    Bu eşitlik, sonucun neden yön bilgisi taşıdığını açıklar. Vektörler aynı yöne bakıyorsa açı \(0^\circ\), kosinüs 1 ve nokta çarpım pozitiftir. Birbirlerine diklerse açı \(90^\circ\), kosinüs 0 ve nokta çarpım sıfırdır. Zıt yönlere bakıyorlarsa kosinüs negatiftir. Ancak nokta çarpım hem yönlerden hem de vektörlerin uzunluklarından etkilenir. Yalnızca yönü karşılaştırmak için uzunluk etkisini ayırmamız gerekir.

    Bir Yöndeki Payı Bulmak: İzdüşüm

    Güneşli bir günde yere düşen gölgemizi düşünelim. Boyumuz değişmese bile ışığın yönüne göre gölgenin uzunluğu değişir. Bir vektörün belirli bir yönde ne kadar payı olduğunu bulmak da buna benzer. Bu paya izdüşüm (projection) diyebiliriz.

    Önce ilgilendiğimiz yönü uzunluğu 1 olan birim vektörle gösterelim. Bu yön \(\widehat{\mathbf{u}}\), incelediğimiz vektör de \(\mathbf{a}\) olsun. \(\mathbf{a}\)'nın bu yöndeki işaretli uzunluğu nokta çarpımla bulunur:

    $$ \text{Yöndeki pay} =\mathbf{a}\cdot\widehat{\mathbf{u}} $$

    Sonuç pozitifse vektör seçtiğimiz yönle aynı tarafa, negatifse ters tarafa katkı yapıyor demektir. Sonuç sıfırsa vektör o yöne diktir ve o doğrultuda payı yoktur.

    Örneğin \(\mathbf{a}=[3,4]\) vektörünün yatay yöndeki payını bulalım. Sağa doğru birim yön \(\widehat{\mathbf{u}}=[1,0]\) olur:

    $$ \begin{aligned} \mathbf{a}\cdot\widehat{\mathbf{u}} &=3\cdot1+4\cdot0\\ &=3 \end{aligned} $$

    \([3,4]\) vektörünün yatay yöndeki payı 3 birimdir. Seçilen yöndeki vektörü de göstermek istersek bu sayıyı birim yönle çarparız:

    $$ \operatorname{proj}_{\widehat{\mathbf{u}}}(\mathbf{a}) =(\mathbf{a}\cdot\widehat{\mathbf{u}})\widehat{\mathbf{u}} =3\begin{bmatrix}1\\0\end{bmatrix} =\begin{bmatrix}3\\0\end{bmatrix} $$

    İzdüşüm, bir hareketin belirli bir eksendeki bölümünü ayırmaktan bir veri vektörünün önemli bir yön üzerindeki bileşenini ölçmeye kadar birçok yerde kullanılır. İleride verinin daha az sayıda anlamlı yönde özetlenmesini inceleyen yöntemlerde bu “bir yön üzerindeki pay” fikri yeniden karşımıza çıkacaktır.

    Yönleri Karşılaştırmak: Kosinüs Benzerliği

    Nokta çarpımı iki vektörün uzunluklarına bölersek aradaki açının kosinüsünü elde ederiz:

    $$ \operatorname{benzerlik}(\mathbf{a},\mathbf{b}) =\frac{\mathbf{a}\cdot\mathbf{b}} {\lVert\mathbf{a}\rVert_2\lVert\mathbf{b}\rVert_2} =\cos(\theta) $$

    Bu değere kosinüs benzerliği (cosine similarity) denir. Sıfır olmayan gerçek sayı vektörlerinde sonuç \(-1\) ile \(1\) arasındadır. Üç ayrı yönü aynı \(\mathbf{a}=[4,3]\) vektörüyle karşılaştıralım.

    Birbirine Yakın Yönler

    İlk karşılaştırmada \(\mathbf{b}=[1,1]\) olsun:

    $$ \begin{aligned} \mathbf{a}\cdot\mathbf{b}&=4\cdot1+3\cdot1=7\\ \lVert\mathbf{a}\rVert_2&=\sqrt{4^2+3^2}=5\\ \lVert\mathbf{b}\rVert_2&=\sqrt{1^2+1^2}=\sqrt{2}\\ \cos(\theta)&=\frac{7}{5\sqrt{2}}\approx0{,}99 \end{aligned} $$
    Dörde üç ile bire bir vektörlerinin birbirine çok yakın yönleri

    Sonuç 1'e çok yakın olduğu için iki vektörün yönleri de birbirine çok yakındır. Uzunluklarının farklı olması bu karşılaştırmanın sonucunu belirlemez; kosinüs benzerliği esas olarak açıya bakar.

    Neredeyse Dik Yönler

    Şimdi \(\mathbf{b}=[-2,2]\) kullanalım:

    $$ \begin{aligned} \mathbf{a}\cdot\mathbf{b}&=4\cdot(-2)+3\cdot2=-2\\ \lVert\mathbf{b}\rVert_2&=\sqrt{(-2)^2+2^2}=\sqrt{8}\\ \cos(\theta)&=\frac{-2}{5\sqrt{8}}\approx-0{,}14 \end{aligned} $$
    Dörde üç ile eksi ikiye iki vektörlerinin birbirine yaklaşık dik yönleri

    Sonuç sıfıra yakın olduğu için vektörler yaklaşık olarak diktir. Değerin biraz negatif olması, açının \(90^\circ\)'den biraz büyük olduğunu gösterir.

    Neredeyse Zıt Yönler

    Son olarak \(\mathbf{b}=[-2,-2]\) olsun:

    $$ \begin{aligned} \mathbf{a}\cdot\mathbf{b}&=4\cdot(-2)+3\cdot(-2)=-14\\ \lVert\mathbf{b}\rVert_2&=\sqrt{(-2)^2+(-2)^2}=\sqrt{8}\\ \cos(\theta)&=\frac{-14}{5\sqrt{8}}\approx-0{,}99 \end{aligned} $$
    Dörde üç ile eksi ikiye eksi iki vektörlerinin neredeyse zıt yönleri

    Sonuç \(-1\)'e çok yakın olduğu için iki vektör neredeyse zıt yönlere bakar.

    Kosinüs benzerliği Geometrik yorum
    \(1\) Aynı yön
    \(0\) Dik yönler
    \(-1\) Tam zıt yönler

    Vektörler Yapay Zekâda Ne İşe Yarar?

    Bir yapay zekâ sistemi metin, görüntü veya müşteri gibi nesnelerle doğrudan matematik işlemi yapamaz. Önce bu nesneleri sayılarla temsil etmesi gerekir. Vektörler, farklı türdeki bilgileri düzenli bir sayısal dile çevirmenin temel yollarından biridir.

    Özellik Vektörleri

    Bir ev \([\text{alan},\text{oda},\text{yaş},\text{uzaklık}]\), bir müşteri \([\text{ziyaret sayısı},\text{ortalama harcama},\text{üyelik süresi}]\) biçiminde gösterilebilir. Her bileşen bir özelliktir. Model, bu sayıların geçmiş örneklerde sonuçlarla nasıl ilişkilendiğini öğrenmeye çalışır.

    Bileşenlerin birimleri ve ölçekleri hesapların sonucunu etkiler. Yaş 20 ile 70, yıllık gelir on binlerle ifade ediliyorsa gelir bileşeni uzunluk ve nokta çarpım hesaplarına sayısal ölçeği büyük olduğu için hâkim olabilir. Bu nedenle gerçek projelerde özelliklerin ölçeği incelenir; gerekirse uygun bir ölçekleme veya standartlaştırma uygulanır.

    Görüntüler ve Sesler

    Dijital bir görüntü piksellerden, her piksel de parlaklık veya renk sayılarından oluşur. Bu sayılar bir vektör ya da birazdan göreceğimiz matrisler içinde tutulabilir. Ses kaydı da zaman boyunca alınan ölçümlerin uzun bir sayı dizisidir. Böylece “resim” ve “ses” dediğimiz içerikler, modelin işleyebileceği sayısal yapılara dönüşür.

    Kelime ve Metin Temsilleri

    Bir gömme (embedding) modeli kelimeleri, cümleleri veya belgeleri çok boyutlu vektörlere dönüştürebilir. Model iyi eğitilmişse benzer bağlamlarda kullanılan ifadelerin vektörleri belirli bir yakınlık gösterebilir. Arama sistemleri bir sorunun vektörüyle belge vektörlerini karşılaştırıp uygun adayları bulabilir.

    Öneri Sistemleri

    Bir kullanıcının ilgi alanları ile bir filmin özellikleri aynı boyutlu vektörlerle temsil edilebilir. Nokta çarpım, kullanıcının önem verdiği özelliklerle filmin sunduğu özelliklerin ne kadar örtüştüğünü tek bir puanda özetleyebilir. Büyük puan, öneri için güçlü bir aday anlamına gelebilir; fakat sistemin nihai kararı yalnızca bu tek hesaba dayanmak zorunda değildir.

    Model Ağırlıkları ve Öğrenme

    Bir modelin öğrendiği ayarlar da vektörlerde saklanabilir. Basit bir tahmin modelinde özellik vektörü \(\mathbf{x}\) ile ağırlık vektörü \(\mathbf{w}\) arasındaki \(\mathbf{w}\cdot\mathbf{x}\) nokta çarpımı bir ham tahmin üretir. Eğitim sırasında ağırlıklar küçük miktarlarda değiştirilir. İleride öğreneceğimiz gradyan da her ağırlığın hata üzerindeki etkisini taşıyan bir vektördür.

    Vektörlerde Sık Yapılan Hatalar

    • Vektörü yalnızca fiziksel ok sanmak: Ok gösterimi yönü anlamamıza yardım eder; veri vektörleri ise fiziksel olmayan özellikleri de taşıyabilir.
    • Bileşen sırasını önemsememek: \([\text{yaş},\text{gelir}]\) ile \([\text{gelir},\text{yaş}]\) aynı temsil değildir.
    • Farklı boyutları toplamak: Bileşen bileşen işlem için vektörlerin boyutları aynı olmalıdır.
    • Anlamları ve birimleri kontrol etmemek: Aynı boyutta olmak tek başına yeterli değildir; karşılıklı bileşenler aynı özelliği temsil etmelidir.
    • Negatif skalerin yalnızca küçülttüğünü sanmak: Negatif sayı, uzunluğu mutlak değeri kadar ölçekler ve yönü ters çevirir.
    • Sıfır vektörüne yön vermek: Sıfır vektörünün uzunluğu sıfırdır ve belirli bir yönü yoktur.
    • Nokta çarpımın sonucunu vektör beklemek: Nokta çarpım tek bir sayı üretir.
    • Nokta çarpım ile kosinüs benzerliğini karıştırmak: Nokta çarpım uzunluklardan da etkilenir; kosinüs benzerliği uzunluk etkisini ayırarak yöne odaklanır.
    • Sıfır vektörünü normalleştirmek veya kosinüste kullanmak: Her iki işlem de sıfıra bölme oluşturur.

    İşlemleri Bir Örnekte Kullanalım

    \(\mathbf{a}=[2,-1]\) ve \(\mathbf{b}=[1,3]\) vektörlerini ele alalım. Önce toplamı ve farkı bulalım:

    $$ \begin{aligned} \mathbf{a}+\mathbf{b} &=\begin{bmatrix}2+1\\-1+3\end{bmatrix} =\begin{bmatrix}3\\2\end{bmatrix}\\ \mathbf{b}-\mathbf{a} &=\begin{bmatrix}1-2\\3-(-1)\end{bmatrix} =\begin{bmatrix}-1\\4\end{bmatrix} \end{aligned} $$

    Şimdi \(\mathbf{a}\)'yı \(-2\) ile çarpalım:

    $$ -2\mathbf{a} =-2\begin{bmatrix}2\\-1\end{bmatrix} =\begin{bmatrix}-4\\2\end{bmatrix} $$

    İki vektörün uzunlukları ve nokta çarpımı:

    $$ \begin{aligned} \lVert\mathbf{a}\rVert_2&=\sqrt{2^2+(-1)^2}=\sqrt{5}\\ \lVert\mathbf{b}\rVert_2&=\sqrt{1^2+3^2}=\sqrt{10}\\ \mathbf{a}\cdot\mathbf{b}&=2\cdot1+(-1)\cdot3=-1 \end{aligned} $$

    Buna göre kosinüs benzerliği:

    $$ \cos(\theta) =\frac{-1}{\sqrt{5}\sqrt{10}} =\frac{-1}{\sqrt{50}} \approx-0{,}14 $$

    çıkar. Değer sıfıra yakın ve biraz negatiftir; yani iki vektör yaklaşık dik, fakat aralarındaki açı \(90^\circ\)'den biraz büyüktür.

    Sonuç: Sayılardan Yönlere, Verilerden Modellere

    Bir evin özellikleriyle haritadaki yer değiştirme ilk bakışta farklı görünüyor. İkisini de bileşenleri belirli bir sırayla dizilmiş vektörlerle anlatabiliyoruz. Bileşenlerin sayısı vektörün boyutunu belirliyor; yüksek boyutları çizemediğimizde de aynı hesaplama kuralları geçerli.

    Toplama ve çıkarma, hareketleri birleştirmemizi veya iki veri kaydı arasındaki farkı görmemizi sağladı. Skalerle çarpmanın uzunluğu değiştirdiğini, negatif skalerin yönü de ters çevirdiğini gördük. Pisagor bağıntısıyla bulduğumuz Öklid uzunluğu sayesinde sıfır olmayan vektörleri birim uzunluğa getirebildik; sıfır vektöründe bu işlemin neden yapılamadığını da öğrendik.

    Nokta çarpım, eşleşen bileşenlerin katkılarını tek bir sayıda toplarken iki yön arasındaki açı hakkında da bilgi verdi. Uzunluğun etkisini ayırınca kosinüs benzerliğine ulaştık. Bu işlemlerin özellik vektörlerinde, görüntülerde, gömmelerde, öneri sistemlerinde ve model ağırlıklarında nasıl kullanıldığını gördük.

    Tek bir nesneyi veya veri kaydını vektörle gösterebiliyoruz. Çok sayıda vektörü bir arada düzenlemek ve hepsine aynı dönüşümü uygulamak içinse matrislere ihtiyacımız olacak. Bir sonraki Matrisler makalesinde sayıları satırlar ve sütunlar hâlinde düzenleyecek; matrislerin vektörleri nasıl ölçeklendirdiğini, döndürdüğünü ve yapay zekâ katmanlarındaki ağırlıklı toplamları nasıl topluca hesapladığını göreceğiz.

    Yazar: Levent KARAGÖL

    Makaleyi Paylaş:

    İlgili Makaleler