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

เครือข่ายในรูปต้นฉบับ

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

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

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

กฎทำนายและชั้นของเครือข่าย · อธิบายหรือใช้กฎทำนาย ชั้น และพารามิเตอร์

โครงการใช้กฎเชิงเส้นกับสองคุณลักษณะ น้ำหนักที่ฝึกให้คะแนนหรือมวลที่ปรับสเกล

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

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

ใช้ในส่วนต้นฉบับเหล่านี้: 1.2 เรียนรู้จากตัวอย่าง · 3.3 วิธีอื่นในการวัดความสามารถในการแทนฟังก์ชัน

รูปต้นฉบับมีข้อมูลเข้า 3 ค่า ชั้นซ่อนกว้าง 4 และ 6 และผลลัพธ์ 1 ค่า แต่ละชั้นมีเมทริกซ์น้ำหนักและเวกเตอร์ไบแอส

ชั้นแรกมี 16 พารามิเตอร์ ชั้นที่สอง 30 และชั้นผลลัพธ์ 7 รวม 53

รูปร่างกำหนดว่าการดำเนินการของชั้นเครือข่ายประกอบกันอย่างไร

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

Φa ⁣:R3×R53↦R\Phi_{{a}}\colon{\mathbb{R}}^{3}\times{\mathbb{R}}^{53}\mapsto{\mathbb{R}}

ภาพประกอบ · สถาปัตยกรรมตรงกับรูปต้นฉบับ น้ำหนัก ไบแอส และข้อมูลเข้าเชิงตัวเลขเป็นข้อมูลสมมติสำหรับการสาธิต

สัญลักษณ์

NN
ความกว้างชั้น [3,4,6,1]
W(ℓ)W^{(ℓ)}
น้ำหนักมีหนึ่งแถวต่อหน่วยและหนึ่งคอลัมน์ต่อค่าชั้นก่อน
b(ℓ)b^{(ℓ)}
ไบแอสหนึ่งค่าต่อผลลัพธ์ของชั้น
Φi(ℓ)Φ^{(ℓ)}_i
ค่าก่อนกระตุ้นของหน่วย i ในชั้น ℓ
Φˉi(ℓ)Φ̄^{(ℓ)}_i
ค่าหลังการกระตุ้นที่สอดคล้องกัน

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

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

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

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

คุณเลือก

  • input.x = 1

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

  • widths = [3, 4, 6, 1]

คำนวณที่นี่

นิพจน์ผลลัพธ์: { x, widths, counts, total: counts.reduce((a, b) => a + b, 0), firstPre, first, secondPre, second, output, }

  • x = [input.x, 0, 0] ใช้: input.x
  • matrices = widths .slice(1) .map((rows, i) => Array.from({ length: rows }, (_, r) => Array.from({ length: widths[i] }, (_, c) => (r === 0 && c === 0 ? 1 : 0)), ), ) ใช้: widths
  • biases = widths.slice(1).map((size) => Array(size).fill(0)) ใช้: widths
  • firstPre = affine(matrices[0], biases[0], x) ใช้: affine, matrices, biases, x
  • first = firstPre.map((value) => Math.max(0, value)) ใช้: firstPre
  • secondPre = affine(matrices[1], biases[1], first) ใช้: affine, matrices, biases, first
  • second = secondPre.map((value) => Math.max(0, value)) ใช้: secondPre
  • output = affine(matrices[2], biases[2], second) ใช้: affine, matrices, biases, second

มีนิพจน์เพิ่มเติมในโค้ด

ส่งกลับ

ผลลัพธ์ตัวอย่าง
x
อาร์เรย์ (3 รายการ): [1, 0, 0]
widths
อาร์เรย์ (4 รายการ): [3, 4, 6, 1]
counts
อาร์เรย์ (3 รายการ): [16, 30, 7]
total
53
firstPre
อาร์เรย์ (4 รายการ): [1, 0, 0, 0]
first
อาร์เรย์ (4 รายการ): [1, 0, 0, 0]
secondPre
อาร์เรย์ (6 รายการ): [1, 0, 0, 0, …]
second
อาร์เรย์ (6 รายการ): [1, 0, 0, 0, …]
… (9 รายการ)

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

ผลลัพธ์

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

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

แต่ละชั้นคูณค่าก่อนหน้าด้วย W แล้วบวก b ตัวอย่างใช้ ReLU กับค่าก่อนกระตุ้นของชั้นซ่อน พารามิเตอร์ 53 ค่าในต้นฉบับรวมน้ำหนักและไบแอสที่เป็นศูนย์ จำนวนขึ้นกับตำแหน่งที่มี ไม่ใช่ตำแหน่งที่ไม่เป็นศูนย์

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