Anahtar sözcük: hedef

Hedefler, AI 'nin öğrenme konusunda üst düzey bir belirtimdir. Eğitim altyapısının erken sonlandırma için uygun yeniden işlevleri ve koşulları otomatik olarak belirlemesini sağlamak için hedefleri kullanın.

Hedef tabanlı bir özgeçmiş Bonsai , Özet yeniden puanları yerine, belirttiğiniz somut amaçlar açısından eğitim ilerleme durumunu bildirir.

Kullanım

Hedefleri kullanmak için, Inkling dosyanızın başına ad alanını ekleyin Goal ve goal (bir veya daha fazla hedefle birlikte), özgeçmiş tanımınızda ifadesini ekleyin.

using Goal

...

curriculum {

...

    goal (state: SimState, action: Action) {
        avoid Fall: Math.Abs(state.angle) in Goal.RangeAbove(MaxAngle)
        drive SmallAngle: Math.Abs(state.angle) in Goal.Range(0, MaxAngle/6)
        drive StayCentered: Math.Abs(state.position) in Goal.Range(0, MaxPosition/10)
        minimize EnergyUsed: action.force**2 in Goal.RangeBelow(TargetMeanSquaredForce)
    }
    training {
        EpisodeIterationLimit: MaxIterationCount
    }
}

Deyimin durum parametresi goal gereklidir. Eylem parametresi isteğe bağlıdır ve ortamı geçerli duruma sahip olan eyleme başvurur.

Hedeflerinizi belirttiğiniz sıralama ne kadar önemlidir. Eğitim altyapısı, hepsi için başarı ölçütlerini karşılamaya çalışır.

Önemli

Hedefleri kullanamaz ve açık yeniden ve Terminal işlevleri tanımlayamazsınız

Desteklenen amaçlar

Hedefler aşağıdaki hedefleri destekler:

  • avoid: Tanımlı bir bölgeden kaçının.
  • drive: Bir hedef aralığa olabildiğince hızlı bir şekilde ulaşın ve bu aralıkta kalmalarına çalışın.
  • maximize: Hedef değeri mümkün olduğunca yüksek olarak gönderin.
  • minimize: Hedef değeri mümkün olduğunca düşük gönderin.
  • reach: Bir hedef aralığa mümkün olduğunca hızlı bir şekilde ulaşın.

avoidAmaç, eğitim MOTORUNA AI 'nin sanal ortamda belirli bir durumu girmesini sağlamalıdır.

Bir avoid ifade aşağıdaki öğeleri içerir:

  • objectiveName: bir amaç adı.
  • testValue: hedefi denetlenecek değeri temsil eden bir ifade.
  • avoidRange: kaçınılması gereken değer kümesini tanımlayan bir ifade.
avoid objectiveName: testValue in avoidRange

Örnek:

# if the angle ever goes outside [-MaxAngle, MaxAngle], the
# episode terminates and is marked a failure

avoid Fall: Math.Abs(S.Angle) in Goal.RangeAbove(MaxAngle)

avoidTest değeri, Bölüm sırasında belirlenmiş aralığa hiçbir şekilde girmedikçe amaç başarılı olur .

avoidTest değeri, Bölüm sırasında herhangi bir noktada belirlenmiş aralığa girerse, amaç başarısız olur .

Eğitim altyapısı, amaçlar için avoid aşağıdaki ayrıntıları sağlar:

  1. Başarı oranı: bir DEĞERLENDIRMEDEKI, AI 'nin amacı elde ettiği bölüm kesri.
  2. Hedef memnuniyet oranı: bir değerlendirmedeki test bölümleri arasında amacı karşılamasına doğru ortalama ilerleme. %100 memnuniyet, AI 'nin hedefi başarıyla tamamladığı anlamına gelir.
  3. Hedef sağlamlık: öğrenilmiş ilke ne kadar güçlü, gürültü ve Perturbation. Hedefler için avoid , sağlamlık, test değeri ve oluşmaması gereken Aralık arasındaki en az uzaklığa göre orantılıdır. Negatif sağlamlık, amaç başarısız anlamına gelir.

Erken bölüm sonlandırma

Hedef tabanlı özgeçmiş erken bölüm sonlandırmayı destekler: Bölüm yineleme sınırına ulaşmadan önce bir eğitim bölümü sonlandırılıyor. Erken sonlandırma aşağıdaki koşullarda gerçekleşir:

  • Bir amaç başarısız olduğu için erken bölüm sonlandırma. Aşağıdaki koşullardan herhangi biri gerçekleştiğinde gerçekleşir:
    1. Bir avoid Amaç tetikler.
    2. Yan tümcesi içeren within k bir drive Amaç, yinelemeden k daha fazla bilgi için hedef bölgede olamaz.
  • Tüm hedefler başarılı olduğundan erken bölüm sonlandırma. Aşağıdaki koşulların Tümü karşılandığında gerçekleşir:
    1. Hedeflerin listesi bir reach amaç içerir.
    2. Hedeflerin listesi bir driveAmaç içermez.
    3. Tüm reach amaçlar başarılı olur.

Hedef aralıkları tanımlama

Ad alanı, Goal hedef aralıklarınızı tanımlamak için işlevler sağlar. Şu anda ad alanı sayısal eşiklere ve N boyutlu boşluklara yönelik işlevler içerir.

Tirme Tanımlı Aralık
Goal.Range(X, Y) XVe Y dahil değerler
Goal.RangeAbove(X) Büyük veya eşit değerlerX
Goal.RangeBelow(X) Değerden küçük veya eşit değerlerX
Goal.Box([m1, M1], [m2, M2]) Dikdörtgenin içindeki ve yanlarındaki [m1, M1] değerler [m2, M2]
Goal.Box([m1, M1], [m2, M2], [m3, M3]) 3B kutu içindeki kenarlar [m1, M1] , [m2, M2] ,, [m3, M3]
Goal.Box([m1, M1], [m2, M2], ..., [m8, M8]) Her boyuttaki i yan [m_i, M_i] yana n-dikdörtgen içindeki değerler (sekiz boyuta kadar)
Goal.Sphere(X, R) Bir 1B Sphere (line) içindeki ve Radius R ile () ortalanmış X değerler
Goal.Sphere([X, Y], R) Bir 2B Sphere içindeki değerler (Daire), radius R , noktadan ortalanmış ( X , Y )
Goal.Sphere([X, Y, Z], R) Bir 3B küre içindeki, radius R ile, nokta üzerinde ortalanmış değerler ( X , Y , Z )

Hedef test değerinin boyutu, belirtilen aralığın boyutuyla eşleşmelidir. Örneğin, amaç bir 3B küre olarak tanımlanmışsa, test değeri üç boyutlu alanda bir konuma karşılık gelmelidir:

reach [a, b, c] in Goal.Sphere([x, y, z], r)

İpucu

Aralık, bölüm arasında farklılık gösterebilir, Aralık parametrelerinin observable durumunun bir parçası olduğundan emin olun.

Amaç ağırlıkları

BonsaiEğitim altyapısı, tüm hedef hedeflerini karşılamak üzere AI 'yi karşılaştırarak eğitime başlar. Öğrenilen ilke tüm hedefleri karşılıyorsa, eğitim altyapısı ilkeyi gürültü ve perturbations 'e daha sağlam olacak şekilde teşvik eder. AI, her bir hedefin test değeri, amacın başarı aralığında daha fazla olacak şekilde davranır. Bu tabloda her bir amaç türü için artan sağlamlık anlamı gösterilmektedir:

Hedef türü Artan sağlamlık
avoid objectiveName: testValue in avoidRange testValue daha fazla avoidRange
drive objectiveName: testValue in targetRange testValue ortasından daha yakın targetRange
maximize objectiveName: testValue in targetRange testValue üzerinde daha yüksek targetRange
minimize objectiveName: testValue in targetRange testValue daha düşük targetRange
reach objectiveName: testValue in targetRange testValue ortasından daha yakın targetRange

Varsayılan olarak tüm hedefler eşit ölçüde önemli olarak değerlendirilir. Göreli hedef önemini belirtmek için anahtar sözcüğünü kullanın weight :

goal (S: SimState) {
    # make avoid falling more important than getting close to the target
    avoid Fall weight 4: Math.Abs(S.Angle) in Goal.RangeAbove(MaxAngle)
    
    # use the default weight of 1
    minimize CloseToTarget: Math.Abs(S.position - S.target_position) 
         in Goal.RangeBelow(TargetDistance)
}

Yukarıdaki kod, amacın kalınlığını avoid Fall , hedeften minimize CloseToTarget dört kat daha önemli olacak şekilde ayarlar. Eşit ağırlığa göre varsayılan değere göre, bu artış arttıkça Math.Abs(S.position - S.target_position) bıle AI, daha küçük tutmaya S.Angle teşvik eder.

Varsayılan değer olan 1 olarak ağırlıklar ve herhangi bir pozitif sayı olarak ayarlanabilir. Sabit ifadeler de kullanılabilir. Yalnızca görece ağırlıklar: 1, 1, 2, 4 ağırlıklarını kullanan dört amaç, 10, 10, 20, 40 ile eşdeğerdir.

Hedef eğitim parametreleri

Yan tümcesiyle hedef training için aşağıdaki eğitim parametrelerini ayarlayabilirsiniz:

Parametre Değerler Varsayılan Description
EpisodeIterationLimit Number.UInt32 1000 Eğitim Bölümü başına izin verilen toplam yineleme sayısı.

Örnek:

concept MyConcept(input: SimState): BrainAction {
  curriculum {
    training {
      EpisodeIterationLimit: 250
      TotalIterationLimit: 100000,
      LessonSuccessThreshold: 0.7,
    }
  }
}

EpisodeIterationLimit

Eğitim altyapısı eğitim bölümünü sonlandırır ve hiçbir Terminal koşuluna ulaşılmadığını yinelemelerden sonra EpisodeIterationLimit Yeni bir tane başlatır.