อ่าน 3 นาที
การเรียนรู้แบบเพิ่มพูนตามประชากร
ในวิทยาศาสตร์คอมพิวเตอร์และ การเรียนรู้ ของเครื่องการเรียนรู้แบบเพิ่มขึ้นตามประชากร ( PBIL ) เป็นอัลกอริทึมการปรับให้เหมาะสม
การเรียนรู้แบบเพิ่มพูนตามประชากร
ในวิทยาศาสตร์คอมพิวเตอร์และ การเรียนรู้ ของเครื่องการเรียนรู้แบบเพิ่มขึ้นตามประชากร ( PBIL ) เป็นอัลกอริทึมการปรับให้เหมาะสม และอัลกอริทึมการประมาณการกระจายนี่เป็นประเภทของอัลกอริทึมทางพันธุกรรมที่จีโนไทป์ของประชากรทั้งหมด ( เวกเตอร์ความน่าจะเป็น ) ได้รับการพัฒนาแทนที่จะเป็นสมาชิกแต่ละคน[ 1 ]อัลกอริทึมนี้ได้รับการเสนอโดย Shumeet Baluja ในปี 1994 อัลกอริทึมนี้ง่ายกว่าอัลกอริทึมทางพันธุกรรมมาตรฐาน และในหลายกรณีให้ผลลัพธ์ที่ดีกว่าอัลกอริทึมทางพันธุกรรมมาตรฐาน[ 2 ] [ 3 ] [ 4 ]
อัลกอริทึม
ใน PBIL ยีนจะถูกแทนด้วยค่าจริงในช่วง [0,1] ซึ่งบ่งบอกถึงความน่าจะเป็นที่อัลลีลใดอัลลีล หนึ่ง จะปรากฏในยีนนั้น
อัลกอริทึม PBIL มีดังนี้:
- ประชากรถูกสร้างขึ้นจากเวกเตอร์ความน่าจะเป็น
- มีการประเมินและจัดอันดับสมรรถภาพทางกายของสมาชิกแต่ละคน
- ปรับปรุงจีโนไทป์ของประชากร (เวกเตอร์ความน่าจะเป็น) โดยอิงจากบุคคลที่มีความเหมาะสมที่สุด
- กลายพันธุ์
- ทำซ้ำขั้นตอนที่ 1–4
ซอร์สโค้ด
นี่เป็นส่วนหนึ่งของซอร์สโค้ดที่เขียนด้วยภาษา Javaในบทความนี้ใช้ learnRate = 0.1, negLearnRate = 0.075, mutProb = 0.02 และ mutShift = 0.05 โดย N = 100 และ ITER_COUNT = 1000 นั้นเพียงพอสำหรับปัญหาขนาดเล็ก
public void optimize () { final int totalBits = getTotalBits (); final double [] probVec = new double [ totalBits ] ; Arrays . fill ( probVec , 0.5 ); bestCost = POSITIVE_INFINITY ; for ( int i = 0 ; i < ITER_COUNT ; i ++ ) { // สร้างยีน N ตัว final boolean [][] genes = new [ N ][ totalBits ] ; for ( boolean [] gene : genes ) { for ( int k = 0 ; k < gene . length ; k ++ ) { if ( rand_nextDouble () < probVec [ k ] ) gene [ k ] = true ; } } }// คำนวณต้นทุนdouble สุดท้ายcosts = new double [ N ] ; for ( int j = 0 ; j < N ; j ++ ) { costs [ j ] = costFunc . cost ( toRealVec ( genes [ j ] , domains )); }// ค้นหายีนที่มีต้นทุนต่ำสุดและสูงสุดboolean [] minGene = null , maxGene = null ; double minCost = POSITIVE_INFINITY , maxCost = NEGATIVE_INFINITY ; for ( int j = 0 ; j < N ; j ++ ) { double cost = costs [ j ] ; if ( minCost > cost ) { minCost = cost ; minGene = genes [ j ] ; } if ( maxCost < cost ) { maxCost = cost ; maxGene = genes [ j ] ; } }// เปรียบเทียบกับยีนที่มีต้นทุนดีที่สุดถ้า( bestCost > minCost ) { bestCost = minCost ; bestGene = minGene ; }// อัปเดตเวกเตอร์ความน่าจะเป็นด้วยยีนที่มีต้นทุนสูงสุดและต่ำสุดสำหรับ( int j = 0 ; j < totalBits ; j ++ ) { ถ้า( minGene [ j ] == maxGene [ j ] ) { probVec [ j ] = probVec [ j ] * ( 1d - learnRate ) + ( minGene [ j ] ? 1d : 0d ) * learnRate ; } มิฉะนั้น{ final double learnRate2 = learnRate + negLearnRate ; probVec [ j ] = probVec [ j ] * ( 1d - learnRate2 ) + ( minGene [ j ] ? 1d : 0d ) * learnRate2 ; } }// การกลายพันธุ์สำหรับ( int j = 0 ; j < TotalBits ; j ++ ) { ถ้า( rand . nextDouble () < mutProb ) { probVec [ j ] = probVec [ j ] * ( 1d - mutShift ) + ( rand . nextBoolean () ? 1d : 0d ) * mutShift ; } } } }ดูเพิ่มเติม
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การเรียนรู้แบบเพิ่มพูนตามประชากร
ในวิทยาศาสตร์คอมพิวเตอร์และ การเรียนรู้ ของเครื่องการเรียนรู้แบบเพิ่มขึ้นตามประชากร ( PBIL ) เป็นอัลกอริทึมการปรับให้เหมาะสม
อัลกอริทึม
ใน PBIL ยีนจะถูกแทนด้วยค่าจริงในช่วง [0,1] ซึ่งบ่งบอกถึงความน่าจะเป็นที่อัลลีลใด อัลลีล หนึ่ง จะปรากฏใน ยีน นั้น
ซอร์สโค้ด
นี่เป็นส่วนหนึ่งของซอร์สโค้ดที่เขียนด้วย ภาษา Java ในบทความนี้ใช้ learnRate = 0.1, negLearnRate = 0.075, mutProb = 0.02 และ mutShift = 0.05 โดย N = 100 และ ITER_COUNT = 1000 นั้นเพียงพอสำหรับปัญหาขนาดเล็ก
ดูเพิ่มเติม
อัลกอริทึมการประมาณการกระจาย (EDA) ระบบจำแนกประเภทการเรียนรู้ (LCS) ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Population-based_incremental_learning&oldid=991682302 "