Đạo hàm vết ma trận trong học sâu (Matrix Calculus Trace Derivative)
Trong lý thuyết tối ưu hóa và mạng nơ-ron, hàm mất mát (loss function) thường được biểu diễn gọn gàng qua toán tử vết ma trận (Trace tr(·)).
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: einsum-tensor-operations-llm, batched-matrix-multiplication-bmm.
Nội dung đề bài
Mô tả bài toán
Trong lý thuyết tối ưu hóa và mạng nơ-ron, hàm mất mát (loss function) thường được biểu diễn gọn gàng qua toán tử vết ma trận (Trace tr(·)). Các công thức đạo hàm vết kinh điển:
- Đạo hàm tuyến tính:
∂∂ X tr(A X) = AT
- Đạo hàm toàn phương (Quadratic trace form):
∂∂ X tr(XT B X) = (B + BT) X (Đặc biệt nếu B đối xứng thì bằng 2 B X).
- Bình phương chuẩn Frobenius:
|X|F2 = tr(XT X) ⇒ ∂∂ X |X|F2 = 2 X
Hãy viết hàm matrix_trace_derivatives(A: np.ndarray, B: np.ndarray, X: np.ndarray) -> dict:
- Nhận vào 3 ma trận NumPy vuông A, B, X ∈ RN × N.
- Tính toán và trả về dictionary gồm 3 ma trận đạo hàm theo X:
"grad_linear": ∂∂ X tr(A X) = AT"grad_quadratic": ∂∂ X tr(XT B X) = (B + BT) X"grad_frobenius": ∂∂ X |X|F2 = 2 X- Tất cả ma trận kết quả có kiểu dữ liệu
np.float64. NémValueErrornếu các ma trận không vuông hoặc không cùng kích thước.
Input
- Hàm
matrix_trace_derivatives(A,B,X): Các tham số đầu vào chứa dữ liệu Tensor/mảng NumPy hoặc giá trị siêu tham số tương ứng.
Output
- Hàm
matrix_trace_derivatives: Trả về kết quả kiểudicttheo đúng đặc tả kỹ thuật và kích thước quy định.
Ràng buộc
- Thời gian chạy tối đa: 6000ms.
- Giới hạn bộ nhớ: 512MB.
- Dữ liệu đầu vào hợp lệ theo đúng kiểu dữ liệu và miền giá trị được mô tả.
Ví dụ 1
Input
A = np.array([[1.0, 2.0], [3.0, 4.0]])
B = np.array([[1.0, 0.0], [0.0, 1.0]])
X = np.array([[2.0, 1.0], [0.0, 3.0]])
matrix_trace_derivatives(A, B, X)Output
{
'grad_linear': [[1., 3.],
[2., 4.]],
'grad_quadratic': [[4., 2.],
[0., 6.]],
'grad_frobenius': [[4., 2.],
[0., 6.]]
}Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Ví dụ 2
Input
A = np.random.randn(3, 3)
B = np.array([[1.0, 2.0, 3.0], [0.0, 1.0, 4.0], [5.0, 6.0, 1.0]])
X = np.random.randn(3, 3)
matrix_trace_derivatives(A, B, X)Output
{
'grad_linear': [[-1.2243, -0.5805, 0.3947],
[-0.209 , 0.5886, -1.1959],
[-0.8505, 1.6699, 0.4446]],
'grad_quadratic': [[ 1.4551, 0.5669, -6.0714],
[ 1.2132, 1.406 , -7.8464],
[ 9.478 , -11.8882, 3.6357]],
'grad_frobenius': [[ 2.3933, -1.2196, -0.268 ],
[ 0.0294, -1.5698, 1.2966],
[-0.2419, 0.8391, -1.775 ]]
}Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
