Là một người có nền tảng khoa học máy tính, tôi đã rất bối rối lần đầu tiên gặp những người trong lĩnh vực toán học khăng khăng rằng tensor không phải là ma trận. Bởi vì cả hai đều rõ ràng là các mảng đa chiều. Nhưng sau đó tôi nhận ra... các nhà toán học luôn sử dụng các ngôn ngữ kiểu mạnh trong đầu họ!
Đối với một nhà khoa học máy tính, cấu trúc, hàm, giao diện và ràng buộc đều được phân tách rõ ràng và có thể chuyển đổi lẫn nhau. Một tensor là một ma trận mà bạn đang xử lý như một tensor. Bạn có thể kết hợp chúng, một lớp là một gói của cả bốn, nhưng không bắt buộc.
Khi họ nói với bạn rằng vector không phải là danh sách các số, đó là vì họ đã tự rèn luyện mình để trở thành những người kiểm tra kiểu cho các ngôn ngữ logic có kiểu mạnh và đánh giá ngay lập tức. Các nhà toán học vận hành một cái gì đó mà về cơ bản là một trình kiểm tra kiểu ma thuật đã học trong đầu họ.
Người trong ngành CS chủ yếu chạy lisp và/hoặc C trong tâm trí, tùy thuộc vào việc chúng ta muốn trở thành trình thông dịch hay máy tính. Nếu chúng ta thực sự chạy một mô phỏng tâm lý kiểu mạnh, nó sẽ được đặt lên trên. Ngay cả Haskell cũng tách biệt khai báo kiểu với triển khai.
Nhưng toán học chỉ được thực hiện với các chữ ký kiểu! Họ làm mọi thứ với các macro kiểu mạnh! Nó giống như trường hợp giới hạn của các kiểu Hindley–Milner, nếu thực hiện mở rộng suy đoán để tìm các nén tốt hơn. Điều này cho phép các nhà toán học thực hiện biên dịch tối ưu hóa các chương trình, một cách trừu tượng.
Bây giờ khi tôi đang làm nhiều toán thực tế hơn, tôi thấy sức mạnh của cách tiếp cận này. Nhưng tôi nghĩ sức mạnh của cách tiếp cận CS không được đánh giá cao bởi những người làm toán. Bởi vì trí tuệ của CS là một tensor là một ma trận, nhưng một ma trận không phải là một tensor. Các biến là bất cứ thứ gì bạn có thể chuyển đổi chúng thành.
Các nhà toán học biết về các phép biến đổi, nhưng họ gọi chúng bằng những cái tên hài hước như "phép biến hình". Và họ sẽ thừa nhận, dưới áp lực, rằng nếu bạn có phép biến đổi thích hợp, bạn có thể sử dụng một vector như một phép quay của kích thước tương ứng.
Nhưng họ sẽ nói, bạn không sử dụng vector như một phép quay, bạn đã suy diễn một bivector dưới blah blah blah. Điều này đúng, nếu bạn là một trình kiểm tra kiểu siêu HM prolog. Nó không đúng nếu bạn là một trình biên dịch, một trình thông dịch, hoặc một máy tính.
Dù sao thì tôi vẫn cãi nhau với những người làm toán về điều đó vì thật nực cười khi phủ nhận rằng duck-typing hoạt động, nhưng họ đúng, nó vẫn yêu cầu sự thống nhất kiểu.
@St_Rev Và không, một tensor là loại con của ma trận, không phải ngược lại. Ma trận là đối tượng tổng quát hơn, tensor phải tuân theo nhiều ràng buộc hơn.
@SokobanHero Vậy vì một ánh xạ đa tuyến có thể luôn được hiện thực hóa dưới dạng ma trận (thực ra là một hypermatrix, vì mọi người dường như chỉ sử dụng ma trận để chỉ mảng n-dim hạng 2) và ngược lại trong một không gian nào đó, tôi nghĩ rằng việc đi theo cả hai hướng đều hợp lý.
20,76K