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ụ
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ả.
- Đổi đầu vào hoặc trọng số và đoán kết quả trước khi chạy.
- In các giá trị trung gian để theo dõi từng bước tính toán.
- Giải các thử thách được liên kết bên dưới để tự cài đặt ý tưởng.
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.
- Lan truyền xuôi qua một lớp dense Tính đầu ra của một lớp nơ-ron kết nối đầy đủ với hàm kích hoạt tùy chọn. Trung bình
- Lan truyền xuôi trong mạng hai lớp Đưa đầu vào qua một lớp ẩn ReLU và một lớp đầu ra sigmoid. Trung bình
- Hàm mất mát: MSE, MAE và cross-entropy Đo mức sai của dự đoán bằng sai số bình phương trung bình, sai số tuyệt đối trung bình hoặc binary cross-entropy. Dễ