พิจารณาพารามิเตอร์รูปร่างเล็กใกล้ 0 เช่นα = 1 / 100 ในช่วงระหว่าง 0 และα , E - αจะอยู่ที่ประมาณ1ดังนั้นแกมมาเป็น pdf ประมาณx α - 1 d x / Γ ( α ) สิ่งนี้สามารถรวมเข้ากับ CDF โดยประมาณ, F α ( x ) = x ααα=1/100αe−α1xα−1dx/Γ(α) ) เราจะเห็นพลัง1/α: เลขชี้กำลังจำนวนมาก สำหรับα=1/100นี้ทำให้โอกาสที่บางส่วนของอันเดอร์โฟล์ (ค่าความแม่นยำสองน้อยกว่า10-300มากกว่าหรือน้อยกว่า) นี่คือพล็อตของโอกาสในการรับอันเดอร์โฟลว์ในฐานะฟังก์ชันลอการิทึมฐานสิบของα:Fα(x)=xααΓ(α)1/αα=1/10010−300α
ทางออกหนึ่งคือการใช้ประโยชน์จากการประมาณนี้สำหรับการสร้างรูปแบบการบันทึก (Gamma): ผลลองสร้างรูปแบบแกมมาและถ้ามันมีขนาดเล็กเกินไปสร้างลอการิทึมจากการกระจายพลังงานโดยประมาณนี้ (ดังแสดงด้านล่าง) (ทำสิ่งนี้ซ้ำ ๆ จนกว่าบันทึกจะอยู่ในช่วง underflow เพื่อให้มันเป็นสิ่งทดแทนที่ถูกต้องสำหรับตัวแปร underflowing ดั้งเดิม) สำหรับการคำนวณ Dirichlet ให้ลบค่าสูงสุดของค่าลอการิทึมทั้งหมดจากค่าบันทึกแต่ละค่าโดยปริยาย แกมมาแปรปรวนดังนั้นมันจะไม่ส่งผลกระทบต่อค่า Dirichlet ปฏิบัติกับบันทึกผลลัพธ์ที่มีขนาดเล็กเกินไป (พูดน้อยกว่า -100) ว่าเป็นบันทึกของศูนย์จริง ยกกำลังบันทึกอื่น ๆ ตอนนี้คุณสามารถดำเนินการต่อได้โดยไม่ต้อง underflow
สิ่งนี้จะใช้เวลานานกว่าเดิม แต่อย่างน้อยมันก็ใช้ได้!
αC=log(Γ(α))+log(α)αC
เนื่องจากพารามิเตอร์สเกลช่วยลดความแปรปรวนเพียงอย่างเดียวจึงไม่มีปัญหาในการรองรับในขั้นตอนเหล่านี้ คุณไม่จำเป็นต้องใช้มันหากพารามิเตอร์สเกลทั้งหมดเหมือนกัน
แก้ไข
1/αB(α)Γ(α+1)(αxα−1)(yαe−ydy/Γ(α+1))z=xyy→z/xxxz∞0≤y≤1
pdf(z)=αΓ(α+1)∫∞z(xα/x)e−x(z/x)α−1dxdz=1Γ(α)zα−1e−zdz,
Γ(α)
0<α<1Γ(α+1)1/αΓ(α)