Öğretici: seçici kavramları
Seçici kavramı, birkaç seçenek kavramındanbirinden sonuç seçerek ve döndürerek çıkış üreten kavramlardır. Seçici, öğrenilen bir kavram gibi normal durum bilgilerine göre bir sonuç seçer.
Seçiciler, aşağıdakiler doğru olduğunda faydalıdır:
- Genel bir sorunu çözmek için çeşitli beceri veya stratejilerin gerekli olduğunu bilirsiniz.
- Her bir bileşen becerilerinin her birini ayrı ayrı tasarlayabilir, programlayabilirsiniz ve eğitebilirsiniz.
- AI 'nin her bir yeteneğin ne zaman kullanılması gerektiğini nasıl saptayacağınızı öğrenmek istersiniz.
Seçiciler yalnızca kullanılabilir seçeneklerden seçim yapmanız gerekir. bu nedenle, tüm ilgili becerileri öğrenen ve ne zaman kullanılabilecekleri tek bir ilkeden daha sağlam ve daha hızlı bir şekilde eğitmeniz yeterlidir. Seçiciler, öğrenilen kavramlarla programlanmış veya içeri aktarılan becerileri de karıştıralım.
Bu öğreticide, seçici kavramlarını tanımlama, eğitme ve değerlendirme hakkında bilgi edineceksiniz.
1. Adım: arasından seçim yapmak istediğiniz becerileri veya stratejileri tanımlama
Bu adımda, seçim yapmak için seçicinin seçenek kavramlarını tanımlayacaksınız. Tüm seçenek kavramları aynı çıkış türünü (eylem) üretmelidir, bu nedenle seçici benzer şekilde yapılandırılmış sonuçlardan seçim yapılır.
Aşağıdaki kod, Cartpole örneğine dayalıdır. Cartpole sorunu, AI 'nin bir sepeti bir hedef bölgeye taşımasını ister, bu da sepet merkezinde sağ bir kutuplu olarak dengelenebilir. Sorunu çözmek için, öğrenilen bir kavram geliştirmek yerine, AI 'nin doğru ve ayrı ayrı gidip iki seçenekten birini belirlemek için bir seçici kavramı kullanarak, sepeti taşımak için iki seçenekten birini tercih edersiniz.
Bu GoLeft kavram, direği doğru tutarken sepetini sola taşıuyor:
concept GoLeft(ComputeDelta): Action {
curriculum {
source CartpoleSim
goal (state: SimState) {
avoid FallOver:
Math.Abs(state.pole_angle) in Goal.RangeAbove(MaxPoleAngle)
# There isn't a specific "close enough" threshold, so using
# Goal.RangeBelow(0) to encourage the system to minimize as well as it can
minimize DistToTarget:
Math.Abs(state.target_pole_position - state.cart_position) in Goal.RangeBelow(0)
}
training {
EpisodeIterationLimit: 200,
}
lesson One {
# Because we're using relative positions, just need to randomize initial position to be far and close to the target.
# "GoLeft" starts the cart to the right of the target.
scenario {
initial_cart_position: number<0 .. MaxPosition>,
target_pole_position: 0
}
}
}
}
Bu GoRight kavram, direği doğru tutarken sepetini sağa taşıuyor:
concept GoRight(ComputeDelta): Action {
curriculum {
source CartpoleSim
goal (state: SimState) {
avoid FallOver:
Math.Abs(state.pole_angle) in Goal.RangeAbove(MaxPoleAngle)
# There isn't a specific "close enough" threshold, so using
# Goal.RangeBelow(0) to encourage the system to minimize as well as it can
minimize DistToTarget:
Math.Abs(state.target_pole_position - state.cart_position) in Goal.RangeBelow(0)
}
training {
EpisodeIterationLimit: 200,
}
lesson One {
# Because we're using relative positions, just need to randomize initial position to be far and close to the target.
# "GoRight" starts the cart to the left of the target.
scenario {
initial_cart_position: number<-MaxPosition .. 0>,
target_pole_position: 0
}
}
}
}
2. Adım: seçici ekleme
Seçenek kavramları tanımlandığına göre, standart kavram söz dizimini kullanarak seçici kavramlarınız için bir özgeçmiş tanımlamanız gerekir:
output concept PickOne(ComputeDelta): Action {
select GoRight
select GoLeft
curriculum {
source CartpoleSim
training {
EpisodeIterationLimit: 200,
NoProgressIterationLimit: 1000000,
}
goal (state: SimState) {
avoid FallOver: Math.Abs(state.pole_angle) in Goal.RangeAbove(MaxPoleAngle)
minimize DistToTarget: Math.Abs(state.target_pole_position - state.cart_position) in Goal.RangeBelow(0)
}
lesson One {
# Because we're using relative positions, just need to randomize initial position to be far and close to the target
# "PickOne" starts at a random position within the full range.
scenario {
initial_cart_position: number<-MaxPosition .. MaxPosition>,
target_pole_position: 0
}
}
}
Not
Hangi kavramı kullanacağınızı seçerken doğrudan bir kural programlayabilirsiniz, öğrenilmiş bir seçici yerine programlanmış bir kavram kullanabilirsiniz. Örnek:
programmed function(state: LearningState, left_action: Action, right_action: Action) : Action {
if state.distance_to_target > 0 { return right_action }
else { return left_action }
}
3. Adım: kavramları eğitme
Her bir seçeneğin, seçiciye eğitim vermeden önce çalışmadıklarından emin olmak için, öğrenilen kavramları ayrı ayrı eğitmeniz ve her bir seçeneğin performansını değerlendirmeniz gerekir.
Aşağıdaki ekran görüntüsünde, eğitim için mürekkep dosyası ve eğitim planı ComputeDelta , ardından GoLeft ve GoRight daha sonra gösterilmektedir PickOne .
Bonsai
öğretimi Kullanıcı arabirimi "Aria-describedby =" 1,-0 "Data-LinkType =" göreli yol ">
BonsaiKodlama panelinde örnek mürekkep oluşturma kodu ile eğitim Kullanıcı arabiriminin ekran görüntüsü ve ComputeDelta, GoLeft, GoRight ve PickOne kavramlarını eğitilecek sırada görüntüleyen bir eğitim diyagramı.
İpucu
Bir kavramı değiştirmek istiyorsanız, ınkini değiştirmeniz ve besepyı yeniden eğitmeniz yeterlidir. Bonsai otomatik olarak yeni bir beseponu oluşturur ve değişikliğin etkilenmeden etkilenen kavramlar için tüm eğitim ilerlemesini korur. Örneğin, StopCart cartpole örneğine bir kavram ekleyebilir, eğit ve sonra select StopCart seçiciye ekleyebilirsiniz. Beyinyi yeniden eğitmeniz durumunda, seçicinin yeniden eğmasını zorlar, ancak veya içermez GoLeftGoRight .
4. Adım: değerlendirme
Seçicinin normal değerlendirme işlemini kullanarak nasıl öğrenmesini araştırmak için özel değerlendirmeler kullanın. Seçici kavramlarını değerlendirmek, seçilen kavramı ve sonuçta elde edilen eylemi gösterir.
Değerlendirme hakkında daha fazla bilgi edinmek için, beyde değerlendirme verilerini değerlendir öğreticisine bakın.