Khái niệm AI với Python

Lan truyền xuôi và hàm mất mát trong Python

Mạng nơ-ron gồm nhiều lớp nơ-ron. Trong lan truyền xuôi, đầu vào đi qua từng lớp để tạo ra dự đoán, và hàm mất mát chấm điểm dự đoán đó cách đáp án đúng bao xa.

Khái niệm bằng lời đơn giản

Mạng nơ-ron gồm nhiều lớp nơ-ron. Trong lan truyền xuôi, đầu vào đi qua từng lớp để tạo ra dự đoán, và hàm mất mát chấm điểm dự đoán đó cách đáp án đúng bao xa.

Đưa đầu vào qua một mạng nơ-ron nhỏ từng lớp một, rồi đo sai số bằng bình phương sai số và cross-entropy.

Ý chính

  • Lớp dense nối mọi đầu vào với mọi nơ-ron trong lớp.
  • Đầu ra của lớp này là đầu vào của lớp kế tiếp.
  • Mất mát là một con số duy nhất, càng thấp thì dự đoán càng tốt.
  • Dùng bình phương sai số cho giá trị số và cross-entropy cho xác suất và phân lớp.

Khi nào nên sử dụng?

  • Hiểu điều gì diễn ra bên trong mạng nơ-ron và các thư viện AI.
  • Nắm ý tưởng trước khi tự cài đặt nó trong các thử thách tương ứng.
  • Chuẩn bị cho khóa học machine learning, phỏng vấn và dự án.

Xem trực quan

Đổi đầu vào và mục tiêu. Theo dõi các giá trị đi qua lớp ẩn và xem hai hàm mất mát phản ứng thế nào với dự đoán.

Code ví dụ

Chạy code →
main.py
import math

def dense(inputs, weights, biases, activation):
    # Each row of weights belongs to one neuron in the layer.
    return [activation(sum(x * w for x, w in zip(inputs, row)) + b) for row, b in zip(weights, biases)]

relu = lambda z: max(0.0, z)
sigmoid = lambda z: 1 / (1 + math.exp(-z))

x = [1.0, 2.0]
hidden = dense(x, [[0.5, -0.2], [0.3, 0.8]], [0.0, -0.5], relu)
output = dense(hidden, [[1.0, -1.0]], [0.2], sigmoid)
print("hidden layer:", [round(h, 3) for h in hidden])
print("prediction:", round(output[0], 3))

# A loss function measures how wrong the prediction is.
target = 1.0
mse = (output[0] - target) ** 2
bce = -(target * math.log(output[0]) + (1 - target) * math.log(1 - output[0]))
print("squared error:", round(mse, 3))
print("cross-entropy:", round(bce, 3))

Kết quả dự kiến

hidden layer: [0.1, 1.4]
prediction: 0.25
squared error: 0.563
cross-entropy: 1.387

Cách hoạt động

dense() tính một lớp, trong đó mỗi hàng trọng số là một nơ-ron. Lớp ẩn dùng ReLU, lớp đầu ra dùng sigmoid để cho ra xác suất. Bình phương sai số và cross-entropy đều đo khoảng cách giữa dự đoán 0.25 và mục tiêu 1.0; huấn luyện sẽ cố làm chúng nhỏ đi.

Thay đổi giá trị và chạy chương trình bằng trình chạy Python online của CodeUtility mà không cần cài Python.

Bài tập mở rộng

Hãy sửa code theo các bài tập dưới đây để hiểu rõ cách hoạt động thay vì chỉ sao chép kết quả.

  1. Đổi đầu vào hoặc trọng số và đoán kết quả trước khi chạy.
  2. In các giá trị trung gian để theo dõi từng bước tính toán.
  3. Giải các thử thách được liên kết bên dưới để tự cài đặt ý tưởng.
Chạy trong Python IDE →

Luyện tập với thử thách

Áp dụng kiến thức của bài học này để giải một bài toán thực tế. Mỗi thử thách chạy ngay trên trình duyệt, có kiểm thử tức thì và AI nhận xét.

Tất cả thử thách