โจทย์ทั้งหมด
ง่าย 0 ข้อที่แก้แล้ว อัตราผ่าน 0%

นิวรอนเทียมหนึ่งตัว

คำนวณเอาต์พุตของนิวรอนหนึ่งตัว: ผลรวมถ่วงน้ำหนักของอินพุตบวกไบแอส แล้วส่งผ่าน sigmoid

สิ่งที่คุณจะได้เรียนรู้

  • รวมอินพุต น้ำหนัก และ bias
  • ส่งผลรวมผ่านฟังก์ชันกระตุ้น
  • เห็นว่านิวรอนทำนายผลอย่างไร

โจทย์

นิวรอนเทียมจะนำอินพุตแต่ละตัวคูณกับน้ำหนัก บวกไบแอส แล้วส่งผลลัพธ์ผ่านฟังก์ชันกระตุ้น:

z = x₁×w₁ + x₂×w₂ + … + xₙ×wₙ + bias

เอาต์พุต = sigmoid(z) = 1 / (1 + e^(-z))

จงเขียน neuron_output(inputs, weights, bias)

อินพุต

inputs: ค่าอินพุต

weights: น้ำหนักหนึ่งค่าต่ออินพุตหนึ่งตัว (ความยาวเท่ากับ inputs)

bias: ไบแอสของนิวรอน

เอาต์พุต

คืนค่าเอาต์พุตของนิวรอน เป็นเลขทศนิยมระหว่าง 0 ถึง 1

เงื่อนไข

1 ≤ ความยาวของ inputs = ความยาวของ weights ≤ 100

-10 ≤ อินพุต น้ำหนัก และไบแอสแต่ละค่า ≤ 10

ตัวอย่าง

ตัวอย่างที่ 1
อินพุต:
bias = 0.5
inputs = [1.0, 2.0, 3.0]
weights = [0.2, 0.4, 0.6]

ผลลัพธ์ที่คาดหวัง:
expected = 0.964429
อินพุต:
double bias = 0.5;
std::vector<double> inputs = {1.0, 2.0, 3.0};
std::vector<double> weights = {0.2, 0.4, 0.6};

ผลลัพธ์ที่คาดหวัง:
double expected = 0.964429;
อินพุต:
double bias = 0.5;
double[] inputs = new double[] {1.0, 2.0, 3.0};
double[] weights = new double[] {0.2, 0.4, 0.6};

ผลลัพธ์ที่คาดหวัง:
double expected = 0.964429;

คำอธิบาย

z = 1×0.2 + 2×0.4 + 3×0.6 + 0.5 = 3.3 และ sigmoid(3.3) ≈ 0.964429

ตัวอย่างที่ 2
อินพุต:
bias = 0.0
inputs = [0.5, -1.0]
weights = [2.0, 1.0]

ผลลัพธ์ที่คาดหวัง:
expected = 0.5
อินพุต:
double bias = 0.0;
std::vector<double> inputs = {0.5, -1.0};
std::vector<double> weights = {2.0, 1.0};

ผลลัพธ์ที่คาดหวัง:
double expected = 0.5;
อินพุต:
double bias = 0.0;
double[] inputs = new double[] {0.5, -1.0};
double[] weights = new double[] {2.0, 1.0};

ผลลัพธ์ที่คาดหวัง:
double expected = 0.5;

คำอธิบาย

z = 0.5×2 + (-1)×1 + 0 = 0 และ sigmoid(0) = 0.5: นิวรอนยังตัดสินใจไม่ได้พอดี

แนวทางการแก้

ลองทำเองก่อน แล้วค่อยเปิดคำใบ้ทีละข้อ

คำใบ้ 1

นี่คือ weighted sum ของอินพุตบวก bias แล้วตามด้วย sigmoid หนึ่งครั้ง

คำใบ้ 2

จับคู่แต่ละอินพุตกับ weight ที่สอดคล้อง แล้วสะสมผลคูณก่อนบวก bias

คำใบ้ 3

ระวังว่าผลลัพธ์สุดท้ายต้องผ่าน sigmoid ไม่ใช่คืนค่าเป็นผลรวมดิบ

ความซับซ้อนที่คาดหวัง

เวลา O(n), หน่วยความจำเพิ่ม O(1)

แหล่งอ้างอิง

โจทย์นี้ปรับให้เหมาะกับ CodeUtility กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน

เรียนรู้จากคนอื่น

แนวทางจากชุมชน

ยังไม่มีวิธีทำที่เผยแพร่ ลองแก้โจทย์นี้เพื่อแชร์วิธีแรก