मध्यम 0 हल किए गए 0% स्वीकृति

Gradients of a Single Neuron

Use the chain rule to find how the loss changes with each weight and the bias of a sigmoid neuron.

आप क्या सीखेंगे

  • Apply the chain rule to a neuron
  • Get gradients for each weight and the bias
  • Understand how learning signals flow

समस्या

अनुवाद दिखाएँ

To train a neuron we need to know how each weight affects the error. For one training example:

  • z = inputs · weights + bias
  • y = sigmoid(z) = 1 / (1 + e^(-z))
  • loss L = (y - target)²

By the chain rule, with delta = dL/dz = 2 × (y - target) × y × (1 - y):

  • dL/dw_i = delta × x_i
  • dL/dbias = delta

Implement neuron_gradients(inputs, weights, bias, target).

Input

inputs, weights: Lists of the same length n.

bias: The neuron's bias.

target: The correct output for this example (between 0 and 1).

Output

Return a list of n + 1 numbers: the gradient for each weight in order, then the gradient for the bias.

सीमाएँ

1 ≤ n ≤ 100

-10 ≤ each input, weight and bias ≤ 10

0 ≤ target ≤ 1

उदाहरण

उदाहरण 1
इनपुट:
bias = 0.0
inputs = [1.0, 2.0]
target = 1.0
weights = [0.5, -0.25]

अपेक्षित आउटपुट:
expected = [-0.25, -0.5, -0.25]
इनपुट:
double bias = 0.0;
std::vector<double> inputs = {1.0, 2.0};
double target = 1.0;
std::vector<double> weights = {0.5, -0.25};

अपेक्षित आउटपुट:
std::vector<double> expected = {-0.25, -0.5, -0.25};
इनपुट:
double bias = 0.0;
double[] inputs = new double[] {1.0, 2.0};
double target = 1.0;
double[] weights = new double[] {0.5, -0.25};

अपेक्षित आउटपुट:
double[] expected = new double[] {-0.25, -0.5, -0.25};

व्याख्या

z = 1×0.5 + 2×(-0.25) = 0, so y = 0.5. delta = 2 × (0.5 - 1) × 0.5 × 0.5 = -0.25. Gradients: [-0.25×1, -0.25×2, -0.25] = [-0.25, -0.5, -0.25].

उदाहरण 2
इनपुट:
bias = 0.0
inputs = [3.0]
target = 0.0
weights = [0.0]

अपेक्षित आउटपुट:
expected = [0.75, 0.25]
इनपुट:
double bias = 0.0;
std::vector<double> inputs = {3.0};
double target = 0.0;
std::vector<double> weights = {0.0};

अपेक्षित आउटपुट:
std::vector<double> expected = {0.75, 0.25};
इनपुट:
double bias = 0.0;
double[] inputs = new double[] {3.0};
double target = 0.0;
double[] weights = new double[] {0.0};

अपेक्षित आउटपुट:
double[] expected = new double[] {0.75, 0.25};

व्याख्या

z = 0 and y = 0.5. delta = 2 × (0.5 - 0) × 0.5 × 0.5 = 0.25, so the gradients are [0.25×3, 0.25] = [0.75, 0.25]. Positive gradients mean the weight should go down.

संदर्भ

यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।

दूसरों से सीखें

समुदाय समाधान

अभी तक कोई प्रकाशित समाधान नहीं। पहला साझा करने के लिए इस चुनौती को हल करें।