• ingilizcesi directional derivative. bir fonksiyonun bir birim vektör yönündeki türevini ifade eder
  • optimizasyon ve dolayısıyla mühendislik uygulamalarında çok büyük öneme sahip bir kalkulus konusudur.

    x = a noktasında türevlenebilir bir f(x) fonksiyonunun u birim vektörü yönündeki yönlü türevi, fonksiyonun x = a noktasındaki gradyanı ile u vektörünün iç çarpımına (bkz: inner product) eşittir. yani

    u yönündeki yönlü türev = < grad f(a), u >

    olarak verilir. yönlü türev temel olarak size f(x) fonksiyonunun x = a noktasından u birim vektörü yönünde hareket ettiğinizdeki değişim hızını verir. yönlü türev pozitif ise fonksiyon x = a noktasında u yönünde artar, negatif ise u yönünde azalır, sıfır ise de u yönünde sabit kalır (burada infinitesimal bir hareket düşünülmelidir).

    optimizasyonda f(x) fonksiyonunu x'e göre maksimize/minimize etmek istersiniz. bunun için x vektörünün uzayında bir yerden başlayıp fonksiyonun değerlerine bakarak fonksiyonun değerlerini artıracak/azaltacak adımlar atmanız ve bu adımlarla birlikte fonksiyonu maksimize/minimize eden x değerine ulaşmanız gerekir. değişik optimizasyon yöntemleri bu adımların nasıl atılması gerektiğini size söyler. bu entry'de basitlik olması açısından, genellik kaybı olmadan, maksimizasyon yapılan bir optimizasyon problemi düşünülecektir. bu optimizasyon problemini

    xm = arg max f(x)

    şeklinde gösterdiğimizde, f(x)'i maximize etmek istediğimiz ve maximuma ulaşılan x vektörünü de (argument of maximization) xm olarak adlandırıldığımız anlaşılmaktadır. öncelikle yukarıdaki şekilde verilen optimizasyon probleminin her f(x) fonksiyonu için bir çözümü olması gerekmez, çözüm olsa bile çözüm tek olmayabilir, tek çözüm olsa bile bu çözüm öyle kolayca bulunamayabilir. biz burada f(x)'in bu problemin çözümü olacak şekilde seçildiğini, ama çözümün f(x)'in gradyanını sıfıra eşitleyip ortaya çıkan denklemlerin çözümü ile kolayca bulunamadığını varsayacağız. bu durum genellikle mühendislik problemlerinde çok sayıda değişkene (x) göre optimize etmeniz gereken karışık doğrusal olmayan bir f(x) fonksiyonunuz (örn. enerji, zaman, maliyet vs.) olduğu zaman karşılaşacağınız durumdur. bu durumda numerik optimizasyon algoritmalarına başvurmak dışında bir çareniz yoktur. bu algoritmalar yukarıda da bahsedildiği gibi bir başlangıç noktasından yola çıkıp fonksiyonun değerlerine bağlı olarak değişik yönlerde adımlar atıp xm çözümüne ulaşmaya çalışır. algoritmanın başlangıç noktası x0 olarak adlandırıldığı takdirde, bir adım sonra ulaşılacak noktaya x1 dersek, x1 noktası

    x1 = x0 + alpha * u0

    olarak verilebilir. burada birim vektör u0 adım atılacak yönü, alpha gerçel sayısı da adım uzunluğunu göstermektedir. bu tür bir adım atma tekrar tekrar yapılacağından, i >= 0 için

    xi+1 = xi + alpha *ui

    özyinelemesi (bkz: recursion) yazılabilir. yukarıda görüldüğü gibi optimizasyon problemi bu noktada başlangıç noktası x0'ın, adım uzunluğu alpha'nın ve adım yönleri ui'nin seçimine dönüşmüştür. biz burada ui'nin yani adım yönlerinin seçiminde yönlü türevin işlevine odaklanacağız.

    öncelikle amacımız maksimizasyon olduğundan, fonksiyonun değerini her adımda biraz daha artırabilmek için ui adım yönleri fonksiyonu bulunduğumuz noktada artıracak, yani fonksiyonun ui yönündeki yönlü türevi pozitif olacak, yönler arasından seçilmelidir. bu yüzden birim vektör ui fonksiyonun xi noktasındaki gradyanı ile pozitif iç çarpıma sahip olmalıdır. yani < grad f(xi), ui > iç çarpımı pozitif olmalı ve

    < grad f(xi), ui > > 0

    eşitsizliği sağlanmalıdır. ui birim vektörlerini seçmek için en bilinen strateji ui vektörlerini gradyan ile aynı yönde seçmektir. yani ui birim vektörü

    ui = grad f(xi) / || grad f(xi) ||

    şeklinde gradyanın normalize edilmiş hali olmalıdır (burada gradyanın sıfırdan farklı bir vektör olduğu varsayımı vardır). bu durumda bulunduğumuz xi noktasında fonksiyonun (ui yönündeki) artış hızını maksimize etmiş oluruz. bunu görmek için aralarında theta açısı bulunan herhangi x ve y vektörlerinin iç çarpımı olan < x , y >'nin her zaman

    < x , y > = ||x|| * ||y|| * cos( theta )

    ifadesini sağladığını hatırlamalıyız. bu ifade matematikte temel olarak cauchy-schwarz eşitsizliği'nin bir versiyonudur. bu ifadeyi ilgilendiğimiz yönlü türev olan < grad f(xi), ui > iç çarpımına uygularsak

    < grad f(xi), ui > = ||grad f(xi)|| * ||ui|| * cos(theta) = ||grad f(xi)|| * cos(theta)

    olduğunu görürüz. yukarıda ikinci eşitliği yazarken ui'ni birim vektör olduğunu, yani ||ui|| = 1 olduğunu kullandık. bulunduğumuz xi noktasında gradyan vektörünün uzunluğu ||grad f(xi)|| sabit olduğu için yönlü türev < grad f(xi), ui >'yi maximize eden ui birim vektörünün gradyan yönünde olduğunu, yukarıda sağdaki ifadenin theta = 0 iken, yani gradyan ile ui arasındaki açı sıfırken, maximize edilmesinden çıkarabiliriz. dolayısıyla ui adım yönümüzü gradyan yönünde seçerek fonksiyonun xi noktasındaki artış hızını maximize etmiş oluruz. gidiş yönünü gradyan yönünde seçen optimizasyon algoritmalarına bu yüzden steepest ascent algoritmaları adı verilir. eğer maksimizasyon yerine minimizasyon yapmaya çalışsaydık, bu durumda gidiş yönümüzü tam tersine çevirmemiz ve ui'yi gradyanın tersi yönünde seçmemiz gerekirdi. bu tür bir algoritmaya da doğal olarak steepest descent algoritması adı verilecekti.

    steepest ascent algoritması ile ui'yi gradyan yönünde seçmek her ne kadar iyi bir fikir gibi gözükse de bu uzun vadede ui'leri seçmek için iyi bir strateji olmayabilmektedir. yeterince usturuplu her fonksiyon f(x) maximum veya minimum noktaları etrafında karesel (bkz: quadratic) bir fonksiyona dönüşür ve bazı karesel fonksiyonlar için stepest ascent tipi adım yönü seçimlerinin sadece kısa vadede iyi olduğu, uzun vadede ise çok daha iyi seçimler yapılabileceği gösterilebilmektedir. bu açıdan adım yönünü gradyan yönü olarak seçmek miyop veya hırslı (bkz: greedy) bir seçim olarak adlandırılmaktadır. adım yönleri gradyan yönünde seçilmediği takdirde dahi seçilen gidiş yönü için yönlü türevin hala pozitif kalması koşulu sağlanmalıdır. bu koşulun sağlanması için yukarıda türetilen

    < grad f(xi), ui > = ||grad f(xi)|| * cos(theta)

    ifadesine göre ui ile gradyan vektörünün arasındaki açı her zaman dar açı (yani -90 < theta < 90) olmalıdır. çünkü yukarıdaki eşitliğin sağ tarafındaki cos(theta) terimi sadece theta bu koşulu sağladığında pozitif kalabilmektedir. bu koşulu sağlayan birim ui vektörleri gradyan vektörünü positive definite bir matrisle çarparak elde edilebilmektedir. çünkü herhangi bir vektör positive definite bir matris ile çarpılırsa, çarpım sonucunda elde edilen vektör her zaman ilk vektörle dar açı yapar (bkz: #107727837). bu sebeple bahsedilen genel durumda birim vektör ui, p positive definite bir matris olmak üzere

    ui = p * grad f(xi) / ||p * grad f(xi)||

    şeklinde elde edilebilmektedir. örneğin karesel veya konveks özelliklere sahip fonksiyonlar için p matrisinin fonksiyonun xi noktasindaki hessian'ının tersi ile ilgili olarak seçmek newton optimizasyon algoritmasının temelini oluşturur. hessian'ın indefinite olabileceği başka fonksiyonlar için ise quasi newton metotları kullanılabilmektedir.
hesabın var mı? giriş yap