Tất cả thử thách
Dễ 0 đã giải Tỷ lệ chấp nhận 0%

Một nơ-ron nhân tạo

Tính đầu ra của một nơ-ron, tổng có trọng số của các đầu vào cộng bias, rồi đưa qua sigmoid.

Bạn sẽ học được gì

  • Kết hợp đầu vào, trọng số và bias
  • Đưa tổng qua hàm kích hoạt
  • Thấy cách một nơ-ron đưa ra dự đoán

Đề bài

Xem bản gốc (English)

Một nơ-ron nhân tạo nhân từng đầu vào với một trọng số, cộng thêm bias, rồi đưa kết quả qua hàm kích hoạt:

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

đầu ra = sigmoid(z) = 1 / (1 + e^(-z))

Hãy cài đặt neuron_output(inputs, weights, bias).

Đầu vào

inputs: Các giá trị đầu vào.

weights: Mỗi đầu vào một trọng số (cùng độ dài với inputs).

bias: Bias của nơ-ron.

Đầu ra

Trả về đầu ra của nơ-ron, một số thực từ 0 đến 1.

Ràng buộc

1 ≤ độ dài của inputs = độ dài của weights ≤ 100

-10 ≤ mỗi đầu vào, trọng số và bias ≤ 10

Ví dụ

Ví dụ 1
Đầu vào:
bias = 0.5
inputs = [1.0, 2.0, 3.0]
weights = [0.2, 0.4, 0.6]

Kết quả mong đợi:
expected = 0.964429
Đầu vào:
double bias = 0.5;
std::vector<double> inputs = {1.0, 2.0, 3.0};
std::vector<double> weights = {0.2, 0.4, 0.6};

Kết quả mong đợi:
double expected = 0.964429;
Đầu vào:
double bias = 0.5;
double[] inputs = new double[] {1.0, 2.0, 3.0};
double[] weights = new double[] {0.2, 0.4, 0.6};

Kết quả mong đợi:
double expected = 0.964429;

Giải thích

z = 1×0.2 + 2×0.4 + 3×0.6 + 0.5 = 3.3, và sigmoid(3.3) ≈ 0.964429.

Ví dụ 2
Đầu vào:
bias = 0.0
inputs = [0.5, -1.0]
weights = [2.0, 1.0]

Kết quả mong đợi:
expected = 0.5
Đầu vào:
double bias = 0.0;
std::vector<double> inputs = {0.5, -1.0};
std::vector<double> weights = {2.0, 1.0};

Kết quả mong đợi:
double expected = 0.5;
Đầu vào:
double bias = 0.0;
double[] inputs = new double[] {0.5, -1.0};
double[] weights = new double[] {2.0, 1.0};

Kết quả mong đợi:
double expected = 0.5;

Giải thích

z = 0.5×2 + (-1)×1 + 0 = 0, và sigmoid(0) = 0.5: nơ-ron đang hoàn toàn lưỡng lự.

Hướng tiếp cận

Hãy tự thử trước, sau đó mở từng gợi ý một.

Gợi ý 1

Đây chỉ là tổng có trọng số của các input cộng bias, rồi qua một sigmoid.

Gợi ý 2

Ghép từng input với weight tương ứng và cộng dồn tích trước khi thêm bias.

Gợi ý 3

Lưu ý đầu ra cuối cùng phải đi qua sigmoid, không được trả về tổng thô.

Độ phức tạp mong đợi

thời gian O(n), bộ nhớ phụ O(1)

Tham khảo

Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.