การไหลตามเกรเดียนต์และเคอร์เนล
โครงการเรียนรู้เพนกวิน
โครงการใช้ข้อมูลเพนกวิน Palmer ที่สมบูรณ์ 342 แถว: ชุดฝึก 240 และชุดทดสอบ 102 แถว แถวฝึกที่เลือกกำหนดการปรับสเกลและพารามิเตอร์ CSV ต้นฉบับ
โครงการนี้ฝึกน้ำหนักด้วย softmax ต่างจากแล็บในหน้าแรกที่ใช้ค่าเฉลี่ยของสายพันธุ์ที่ใกล้ที่สุด ข้อมูลวัดเพนกวินชุดเดียวกัน แต่วิธีจำแนกต่างกัน คำทำนายอาจต่างกันได้
เคอร์เนลและการทำให้เป็นเชิงเส้น · เชื่อมเกรเดียนต์พารามิเตอร์หรือคุณลักษณะกับเมทริกซ์เคอร์เนล
โครงการมีข้อมูลและพารามิเตอร์จำนวนจำกัด ชุดทดสอบไม่ยืนยันขอบเขตประชากรหรือพิสูจน์ทฤษฎีบท
พิจารณาแนวคิดนี้ร่วมกับโครงการ สมมติฐานของต้นฉบับอาจต่างกัน ข้อมูลชุดนี้ไม่พิสูจน์ทฤษฎีบท
ข้อมูลเข้า: 12 × 2; ประเมินชุดทดสอบ: 102 · #58 · 40.6 มม., 193 มม.. คำตอบที่ทราบ: อาเดลี; ค่าทำนาย: อาเดลี · [≈0.7383, ≈0.2444, ≈0.01737].
ใช้ในส่วนต้นฉบับเหล่านี้: 2.1 มองผ่านความคล้ายคลึง
การไหลตามเกรเดียนต์เปลี่ยนพารามิเตอร์ในทิศลบของเกรเดียนต์ความเสี่ยง Dᵢ แต่ละตัวเป็นอนุพันธ์ของความสูญเสียเทียบกับค่าทำนาย
สำหรับแบบจำลองสมมติ Φ(x,θ) = θx และความสูญเสียกำลังสอง โค้ดคำนวณอัตราการเปลี่ยนพารามิเตอร์ ค่าทำนาย และความเสี่ยง ณ ขณะหนึ่ง
เคอร์เนลแสดงว่าการปรับพารามิเตอร์เปลี่ยนค่าทำนายที่ข้อมูลเข้าต่างกันอย่างไร
ตัวอย่างสูตรต้นฉบับ
ภาพประกอบ · คำนวณอัตรา ณ ขณะหนึ่งสำหรับแบบจำลองสเกลาร์เรียบหนึ่งแบบและตัวอย่างคงที่สองตัว ไม่ได้แก้วิถีทั้งหมดหรือแสดงว่าเคอร์เนลทั่วไปคงที่
สัญลักษณ์
- อนุพันธ์ความสูญเสียเทียบกับค่าทำนายบนตัวอย่างฝึก i
- ผลคูณจุดของเกรเดียนต์ผลลัพธ์ที่ข้อมูลเข้าสองค่า
ตัวอย่างสูตรต้นฉบับ
ตัวอย่างต้นฉบับนี้ใช้ข้อมูลเข้าและสมมติฐานของตัวเอง การแก้ไขไม่เปลี่ยนโครงการ
แก้ค่าหรือโค้ด แล้วกดรัน ตัวอย่างนี้เป็นการคำนวณจำนวนจำกัด ไม่ใช่การพิสูจน์ทฤษฎีบท
ลำดับข้อมูลในตัวอย่างนี้
โค้ดเปลี่ยนแล้ว กดรีเซ็ตเพื่อคืนลำดับข้อมูลของตัวอย่าง
คุณเลือก
input.theta= 1input.query= 1
ค่าเริ่มต้นในโค้ด
xs=[1, 2]ys=[2, 4]
คำนวณที่นี่
นิพจน์ผลลัพธ์: {
predictions,
lossDerivatives,
parameterRate,
kernelRow,
kernelMatrix,
predictionRate,
riskRate,
}
predictions=xs.map((x) => input.theta * x)ใช้:xs,input.thetalossDerivatives=predictions.map((value, i) => 2 * (value - ys[i]))ใช้:predictions,ysparameterRate=-xs.reduce((sum, x, i) => sum + x * lossDerivatives[i], 0) / xs.lengthใช้:xs,lossDerivativeskernelRow=xs.map((x) => input.query * x)ใช้:xs,input.querykernelMatrix=xs.map((xi) => xs.map((xj) => xi * xj))ใช้:xspredictionRate=-kernelRow.reduce((sum, value, i) => sum + value * lossDerivatives[i], 0) / xs.lengthใช้:kernelRow,lossDerivatives,xsriskRate=-xs.reduce( (sum, xi, i) => sum + xs.reduce( (inner, xj, j) => inner + lossDerivatives[i] * xi * xj * lossDerivatives[j], 0, ), 0, ) / xs.length ** 2ใช้:xs,lossDerivatives
ส่งกลับ
predictions- อาร์เรย์ (2 รายการ): [1, 2]
lossDerivatives- อาร์เรย์ (2 รายการ): [-2, -4]
parameterRate- 5
kernelRow- อาร์เรย์ (2 รายการ): [1, 2]
kernelMatrix- อาร์เรย์ (2 รายการ): [อาร์เรย์ (2 รายการ): [1, 2], อาร์เรย์ (2 รายการ): [2, 4]]
predictionRate- 5
riskRate- -25
อ่านตัวเลขจาก input แล้วคืนค่าผลลัพธ์ พื้นฐาน JavaScript.
ผลลัพธ์
ข้อความทางเทคนิค
ต้นฉบับใช้กฎลูกโซ่แสดงความเร็วพารามิเตอร์ ผลลัพธ์ และความเสี่ยงผ่าน D และเคอร์เนลสัมผัสประสาท แบบจำลองเชิงเส้นนี้มีเกรเดียนต์ ∂Φ/∂θ = x จึงมีเคอร์เนล K(x,x′) = xx′ สำหรับความสูญเสียกำลังสอง Dᵢ = 2(Φ(xᵢ,θ)−yᵢ) อัตราความเสี่ยงเท่ากับลบกำลังสองของเกรเดียนต์พารามิเตอร์ในตัวอย่างสเกลาร์นี้
แหล่งอ้างอิง: นิพจน์จากแหล่งต้นฉบับ