คณิตศาสตร์สมัยใหม่ของการเรียนรู้เชิงลึกอธิบายสำหรับผู้ที่ไม่ใช่นักคณิตศาสตร์

เกรเดียนต์ทำให้เป็นมาตรฐานที่ฉายแล้ว

โครงการเรียนรู้เพนกวิน

โครงการใช้ข้อมูลเพนกวิน Palmer ที่สมบูรณ์ 342 แถว: ชุดฝึก 240 และชุดทดสอบ 102 แถว แถวฝึกที่เลือกกำหนดการปรับสเกลและพารามิเตอร์ CSV ต้นฉบับ

โครงการนี้ฝึกน้ำหนักด้วย softmax ต่างจากแล็บในหน้าแรกที่ใช้ค่าเฉลี่ยของสายพันธุ์ที่ใกล้ที่สุด ข้อมูลวัดเพนกวินชุดเดียวกัน แต่วิธีจำแนกต่างกัน คำทำนายอาจต่างกันได้

ทฤษฎีการหาค่าเหมาะสม · ศึกษาการลู่เข้าและรูปทรงของความสูญเสียภายใต้สมมติฐาน

โครงการมีข้อมูลและพารามิเตอร์จำนวนจำกัด ชุดทดสอบไม่ยืนยันขอบเขตประชากรหรือพิสูจน์ทฤษฎีบท

พิจารณาแนวคิดนี้ร่วมกับโครงการ สมมติฐานของต้นฉบับอาจต่างกัน ข้อมูลชุดนี้ไม่พิสูจน์ทฤษฎีบท

ข้อมูลเข้า: 12 × 2; ประเมินชุดทดสอบ: 102 · #58 · 40.6 มม., 193 มม.. คำตอบที่ทราบ: อาเดลี; ค่าทำนาย: อาเดลี · [≈0.7383, ≈0.2444, ≈0.01737].

ใช้ในส่วนต้นฉบับเหล่านี้: 2.3 เส้นทางการฝึกมีผล

ทำเวกเตอร์พารามิเตอร์ให้เป็นมาตรฐาน สร้างเมทริกซ์ฉาย คูณเกรเดียนต์มาร์จินเรียบ แล้วหารด้วยนอร์มพารามิเตอร์

สำหรับตัวอย่างหนึ่งตัว x=(1,0), y=1 และความสูญเสียเอ็กซ์โพเนนเชียล rβ(θ)=θ₁ เกรเดียนต์จึงเป็น (1,0)

การปรับที่ฉายแล้วอธิบายการเปลี่ยนทิศทางพารามิเตอร์

ตัวอย่างสูตรต้นฉบับ

dθ~(t)dt=Pθ~(t)∇θrβ(t)(θ~(t))β(t)เมื่อมีβ(t)≔∥θ(t)∥2และPθ≔Id−θθT,θ∈Rd.\frac{\mathrm{d}\tilde{\theta}(t)}{\mathrm{d}t}=P_{\tilde{\theta}(t)}\frac{\nabla_{\theta}r_{\beta(t)}(\tilde{\theta}(t))}{\beta(t)}\quad\text{เมื่อมี}\quad\beta(t)\coloneqq\|\theta(t)\|_{2}\quad\text{และ}\quad P_{\theta}\coloneqq\mathrm{I}_{d}-\theta\theta^{T},\quad\theta\in{\mathbb{R}}^{d}.

ภาพประกอบ · คำนวณสนามเวกเตอร์ฉายหนึ่งแบบ ไม่อินทิเกรตวิถีหรือพิสูจน์การลู่เข้าสู่มาร์จินสูงสุดทั่วไป

สัญลักษณ์

ββ
นอร์มพารามิเตอร์ที่ไม่เป็นศูนย์
θ~θ̃
เวกเตอร์พารามิเตอร์หารด้วยนอร์ม
PP
เมทริกซ์ฉายบนทิศทางตั้งฉากกับเวกเตอร์พารามิเตอร์หนึ่งหน่วย

ตัวอย่างสูตรต้นฉบับ

ตัวอย่างต้นฉบับนี้ใช้ข้อมูลเข้าและสมมติฐานของตัวเอง การแก้ไขไม่เปลี่ยนโครงการ

แก้ค่าหรือโค้ด แล้วกดรัน ตัวอย่างนี้เป็นการคำนวณจำนวนจำกัด ไม่ใช่การพิสูจน์ทฤษฎีบท

ลำดับข้อมูลในตัวอย่างนี้

คุณเลือก

  • input.u = 3
  • input.v = 4

ค่าเริ่มต้นในโค้ด

  • gradient = [1, 0]

คำนวณที่นี่

นิพจน์ผลลัพธ์: { beta, normalized, projection, gradient, rate }

  • theta = [input.u, input.v] ใช้: input.u, input.v
  • beta = Math.hypot(...theta) ใช้: theta
  • normalized = theta.map((value) => value / beta) ใช้: theta, beta
  • projection = normalized.map((value, i) => normalized.map((other, j) => (i === j ? 1 : 0) - value * other), ) ใช้: normalized
  • rate = projection.map( (row) => row.reduce((sum, value, i) => sum + value * gradient[i], 0) / beta, ) ใช้: projection, gradient, beta

ส่งกลับ

ผลลัพธ์ตัวอย่าง
beta
5
normalized
อาร์เรย์ (2 รายการ): [0.6, 0.8]
projection
อาร์เรย์ (2 รายการ): [อาร์เรย์ (2 รายการ): [0.64, -0.48], อาร์เรย์ (2 รายการ): [-0.48, 0.36]]
gradient
อาร์เรย์ (2 รายการ): [1, 0]
rate
อาร์เรย์ (2 รายการ): [0.128, -0.096]

อ่านตัวเลขจาก input แล้วคืนค่าผลลัพธ์ พื้นฐาน JavaScript.

ผลลัพธ์

เปิด JavaScript เพื่อรันตัวอย่างนี้

ข้อความทางเทคนิค

ต้นฉบับอนุมานวิวัฒนาการด้วยกฎลูกโซ่สำหรับพารามิเตอร์ไม่เป็นศูนย์ที่ทำให้เป็นมาตรฐาน ความสูญเสียเอ็กซ์โพเนนเชียลหนึ่งตัวอย่างที่เลือกมีมาร์จินเรียบเท่าพิกัดพารามิเตอร์แรก เกรเดียนต์จึงเป็น (1,0) พอดี

แหล่งอ้างอิง: นิพจน์จากแหล่งต้นฉบับ