Khoảng cách l2

Để học Machine Learning thì trước hết ta cần có những công cụ Toán học. Bài viết sau đây nói về một số kiến thức cơ sở của Đại số Tuyến tính dùng trong Machine Learning.

Mục lục

0 chiều, 1 chiều, 2 chiều, và nhiều chiều

1. Các kiểu dữ liệu scalar và vector

2. Một số phép toán với vector

  • Phép cộng vector
  • Phép nhân scalar với vector
  • Phép nhân vô hướng

3. Vector dưới góc nhìn Hình học

4. Norm

5. Tích vô hướng dưới góc nhìn Hình học

Nguồn tham khảo

0 chiều, 1 chiều, 2 chiều, và nhiều chiều

1. Scalar và Vector

Từ rất xa xưa, con người đã luôn có nhu cầu về đo đạc, định lượng. Một trong những phép định lượng xuất hiện đầu tiên chính là phép đếm. Chẳng hạn, một người lái buôn sẽ có nhu cầu kiểm đếm lại số lượng những món hàng của ông ta. Kết quả của phép đếm này sẽ là một số tự nhiên, chẳng hạn như 7 con dê, hoặc không có con dê nào.

Đôi khi, những con số tròn trịa, nguyên vẹn như vậy không thể diễn tả hết được độ lớn của những đại lượng cần đo đạc. Lấy ví dụ, một đoạn đường có thể dài bằng 12 sải tay, cộng thêm một nửa sải tay nữa. Con số gắn cho độ dài đoạn đường này là 12.5. Những con số mà ta quan tâm về phần lẻ như vậy mang kiểu dữ liệu số thực (float, kí hiệu toán học là ). Các float có thể đóng vai trò là scalar, các int (số nguyên, kí hiệu toán học là ) cũng có thể là scalar, điều này tùy thuộc vào cách cài đặt chương trình của ta. Trong Machine Learning, ta thường sử dụng scalar là các float.

Mặc dù có khả năng nhưng mỗi scalar không nhất thiết thể hiện mức độ, số lượng cho một đại lượng nào đó, mà có thể hiểu đơn thuần như là một giá trị. Do đó ta không bắt buộc phải gắn ý nghĩa về định lượng và biểu diễn của những yếu tố trong cuộc sống với scalar. Điều tương tự cũng đúng cho những đối tượng vector, matrix, tensor được nhắc tới trong phần tiếp theo của bài viết. Vì thế, khi thực hiện phép toán với những đối tượng này, bạn không cần suy nghĩ quá nhiều về ý nghĩa trực quan của chúng. Như vậy, hãy nhớ: mỗi scalar dùng để lưu trữ một giá trị, chúng có thể chứa thông tin từ các vấn đề trong cuộc sống hoặc hơn thế nữa!

Chắc chắn rằng, có những thông tin không thể nào biểu diễn được chỉ với một scalar. Ví dụ như khi một người mua nhà, họ sẽ quan tâm đến nhiều yếu tố khác nhau của căn nhà: diện tích, số phòng ngủ, số tầng, hay vị trí trong thành phố của căn nhà ấy. Khi đó, ta sẽ viết thông tin của một căn nhà dưới dạng một bộ các scalar, mỗi scalar lại lưu trữ dữ liệu cho từng yếu tố nói trên. Ngôi nhà A có diện tích 100 m2, gồm 3 tầng và cách trung tâm thành phố 5 km có thể viết thành:

Bây giờ, ta xét một căn nhà khác như sau:

Căn nhà này sẽ là lựa chọn cho những người muốn có không gian sống rộng rãi hơn, với diện tích là 200 m2, số tầng và khoảng cách đến trung tâm thành phố vẫn lần lượt là 3 và 5 km. Dạng dữ liệu để biểu diễn những căn nhà như trên được gọi là vector. Như vậy ta đưa ra định nghĩa về vector:

Vector trong là một bộ số thực có thứ tự.

Trong một vector, mỗi phần tử đều có một địa chỉ (hoặc chỉ số) tương ứng, và có thể được truy cập thông qua địa chỉ ấy. Thông thường, ta sẽ kí hiệu một vector là hoặc như sau:

Khoảng cách l2

Hình 1. Vector cột

Khoảng cách l2

Hình 2. Vector hàng

Vector cột là vector được viết dưới dạng một cột, nhiều hàng. Vector hàng là vector có một hàng, nhiều cột. Ở hai hình trên, là các phần tử thứ của vector. Trong ngôn ngữ Python thì các phần tử của vector được đánh địa chỉ bắt đầu từ : Mình sẽ nói kĩ hơn về vấn đề này trong bài viết hướng dẫn sử dụng ma trận trong Python.

Lưu ý: trong blog, các vector sẽ được kí hiệu bởi các chữ cái thường in đậm như .

2. Một số phép toán với vector

Vậy chúng ta có thể làm gì với các kiểu dữ liệu vector? Đối với những scalar (cụ thể là các float), những phép toán cơ bản nhất có thể kể đến là phép cộng và phép nhân. Đối với vector, đầu tiên, chúng ta cũng sẽ định nghĩa các phép toán mang tên cộng và nhân.

Phép cộng vector

Đầu tiên là phép cộng. Vector là bộ số có thứ tự, do đó để cộng hai vector, người ta sẽ tìm những phần tử có cùng số thứ tự và cộng chúng lại với nhau.

Phát biểu một cách Toán học, phép cộng vector là phép toán hai ngôi trên tập hợp , được kí hiệu là và có định nghĩa như sau:

với và

Phép cộng vector có tính chất giao hoán và tính chất kết hợp. Với là các vector thuộc , ta có

  • Tính chất giao hoán:

  • Tính chất kết hợp:

Ngoài ra, có thể thấy tồn tại phần tử trung hòa của phép toán này, do

Phép nhân scalar với vector

Sau đây là một bài tập có lẽ bạn đã gặp ở tiểu học:

Hãy rút gọn công thức sau đây:

số

Đáp án của bài tập này là , là kí hiệu phép cộng số tất cả lần, với là một số tự nhiên. Ta cũng được học rằng, phép nhân có tính giao hoán, nghĩa là . Có định nghĩa cho lần một số , không lí do nào để ta không tự tin định nghĩa lần một số , khi không là một số tự nhiên.

Còn đây là một bài tập mình muốn dành cho bạn:

Hãy rút gọn công thức sau đây:

vector

Sử dụng kiến thức từ phần Phép cộng vector, bạn có thể tìm ra đáp án là

Thế nhưng, với một tư duy tương tự như ở phép nhân scalar, kết quả trên hoàn toàn có thể kí hiệu như sau:

Người ta gọi đây là phép nhân scalar với vector. Scalar được nhân vào vector có thể là int hoặc float. Ta đưa ra định nghĩa cho phép nhân scalar với vector:

với là một scalar, là một vector.

Sau đây là một số tính chất của phép nhân scalar với vector:

  • Tính chất kết hợp:

  • Tính phân phối đối với phép cộng vector:

  • Tính chất phân phối đối với phép cộng hai scalar:

với là các vector, là các scalar.

Phép nhân vô hướng

Trong phần này, mình sẽ giới thiệu về một phép nhân đối với hai vector, có tên gọi là phép nhân vô hướng, hay còn gọi là dot product (scalar product). Phép toán này có đầu vào là hai vector và đầu ra là một giá trị scalar. Ta kí hiệu phép toán này là và thực hiện như sau:

với và

Phép nhân vô hướng có thể được xem là một binary function và có tính chất giao hoán. Một vài tính chất khác của phép nhân vô hướng cũng được liệt kê dưới đây:

  • Tính chất giao hoán:

  • Tính kết hợp với phép nhân giữa scalar và vector:

  • Tính chất phân phối đối với phép cộng hai vector:

với là các vector, là một scalar.

3. Vector dưới góc nhìn Hình học

Chắc hẳn các bạn khi đọc bài này sẽ tự hỏi: tại sao những kiến thức chúng mình nói về vector không giống với những gì được dạy về vector trong lớp học nhỉ? Đoạn thẳng có điểm đầu và điểm cuối quen thuộc đâu rồi? Lẽ nào vì một sự nhầm lẫn mà có hai thứ khác nhau cùng được gọi là vector?

Sự thật không phải là như vậy. Trong những định nghĩa ở trên, vector được mình nói đến như là một kiểu dữ liệu, đồng thời là một đối tượng đại số. Vector trong chương trình phổ thông lại được miêu tả là đối tượng hình học có hướng và độ lớn. Việc hiểu vector từ cả hai góc nhìn giúp chúng ta có được khái niệm bao quát hơn về vector, và từ đó có thể sử dụng vector một cách hiệu quả.

Mỗi thế giới Toán học đều được xây dựng từ một khởi đầu. Ngay bây giờ, bạn sẽ là người xây dựng một thế giới Toán học với những định nghĩa hình học về vector.

Để bắt đầu, bạn hãy tưởng tượng về một không gian trống rỗng, chưa có bất kì phần tử nào.

Trong không gian rỗng mà bạn vừa tạo ra, bạn sẽ chấm một điểm gốc, tên gọi là . Qua điểm gốc này, bạn vẽ ra 3 trục đôi một vuông góc với nhau, lần lượt là . Với mỗi trục vừa vẽ, bạn lại chọn một hướng đi trên trục làm chiều dương.

Bây giờ, trên 3 trục này, bạn lấy cho mình 3 mũi tên nhỏ đặt tại , gọi là các vector đơn vị. Đến đây, bạn đã sẵn sàng xây dựng một vector. Hãy chọn một mũi tên có hướng nào đó xuất phát từ mà bạn thích. Mũi tên có hướng này có thể dễ dàng được thể hiện bởi một bộ số có thứ tự. Bạn làm điều này bằng cách hạ vuông góc mũi tên có hướng của mình xuống 3 trục , và sau đó là đo độ lớn của 3 hình chiếu này. Mỗi độ lớn sẽ được tính bằng độ co dãn của hình chiếu so với vector đơn vị trên trục tương ứng. 3 con số thu được có thể viết thành bộ số có thứ tự kiểu dữ liệu vector:

Khoảng cách l2

Hình 3. Vector trong không gian 3 chiều. Nguồn: Wikipedia

Vector là đối tượng mà ta chỉ quan tâm đến hướng và độ lớn. Do đó, nếu muốn viết một mũi tên có hướng không được đặt tại thành dạng vector, bạn chỉ cần tịnh tiến mũi tên của mình về gốc và thực hiện tương tự như trên.

Trong cách xác định vector nêu trên, các scalar được gọi là những thành phần scalar, hoặc là các tọa độ. Gốc có tọa độ là và được gọi là gốc tọa độ. Các tọa độ này là công cụ để ta có thể thông hiểu qua lại ý nghĩa đại số, ý nghĩa dữ liệu của vector với ý nghĩa hình học của nó.

Hai yếu tố làm nên một vector bao gồm hướng và độ lớn. Ta đã thấy được hướng của vector qua miêu tả trực quan về các mũi tên. Trong phần tiếp theo, ta sẽ tìm hiểu về những tiêu chuẩn trong việc đo đạc độ lớn của vector.

4. Norm

Như đã trình bày, chúng ta chỉ quan tâm về hướng và độ lớn của các vector. Để thuận tiện, ta có thể xem như các vector đều có điểm đầu đặt tại gốc tọa độ.

Độ lớn của một vector, hay norm, là khoảng cách quy ước giữa điểm cuối của vector ấy và điểm gốc . Norm được tính dựa vào một công thức mà ta tự quy định. Mỗi vector đều có thể được đưa vào công thức ấy để tìm ra độ lớn tương ứng của chúng. Tuy nhiên, có một số quy tắc mà ta phải tuân thủ khi lập công thức norm.

Vì là độ lớn nên giá trị của norm bao giờ cũng không nhỏ hơn . Ngoài ra, để một công thức tính norm (kí hiệu là ) được công nhận là hợp lệ thì công thức ấy phải đảm bảo các tính chất:

  • khi và chỉ khi

với là các vector, là một scalar.

Với vector , ta thường sử dụng công thức norm sau:

Công thức này (với ) được gọi là công thức norm bậc của vector . Thông dụng nhất vẫn là công thức norm bậc 2, gắn với tên gọi là Euclidean norm. Câu chuyện sau đây nói về ý nghĩa của tên gọi này, bạn đọc có thể bỏ qua nếu cảm thấy không cần thiết.

Khoảng cách l2

Hình 4. Bản đồ bán đảo Đông Dương. Nguồn: Google Maps

Nhật Hoàng có một người bạn gái học tại Hà Nội. Một ngày kia, nhân dịp nghỉ lễ, Hoàng quyết định đặt vé máy bay đi từ Hồ Chí Minh đến Hà Nội để thăm bạn gái. Là một sinh viên ngành Khoa học Máy tính, Nhật Hoàng rất thích tìm tòi, tính toán. Để tính thời gian phải ngồi trên máy bay, bạn ấy tính khoảng cách giữa hai thành phố này.

Đầu tiên, Nhật Hoàng thiết kế một hệ trục tọa độ Decartes như sau: gốc tọa độ nằm tại thành phố Bangkok, các điểm A Hồ Chí Minh và B Hà Nội lần lượt có tọa độ là . Sử dụng định lý Pythagore cho tam giác vuông , Hoàng dễ dàng tính được:

Vế phải của công thức này, không gì khác, chính là công thức norm bậc 2 của vector . Như vậy, có thể thấy, công thức norm bậc 2 có ý nghĩa về khoảng cách trong hình học Euclide. Hình học Euclide chính là nguồn gốc của tên gọi Euclidean Norm.

Câu chuyện đến đây chưa kết thúc. Sau khi Hoàng đến Hà Nội, bạn gái của cậu ấy đòi cậu đèo đi ăn Bánh mỳ chảo Cột điện ở quận Cầu Giấy.

Khoảng cách l2

Hình 5. Một phần quận Cầu Giấy, Hà Nội. Nguồn: Google Maps

Do bạn gái học tại trường Đại học Khoa học và Công nghệ Hà Nội, Nhật Hoàng sẽ đón bạn ấy tại số 18 Hoàng Quốc Việt (điểm A) và cùng nhau đi đến quán Bánh mỳ chảo Cột điện ở phường Nghĩa Tân (điểm B). Lập hệ trục tọa độ với hai trục song song và vuông góc với đường Hoàng Quốc Việt, Hoàng có được tọa độ điểm là và tọa độ điểm . Nhờ đó, Nhật Hoàng có thể tính được quãng đường mà cậu và bạn gái sẽ đi qua:

Công thức ở vế phải là norm bậc 1 của vector . Công thức norm đặc biệt này thường được gọi là Mahattan norm, do quận Mahattan của thành phố New York có hệ thống đường đi song song và vuông góc với nhau, tạo thành những con đường như đoạn đường tại Hà Nội ở hình trên.

Nếu bạn để ý, tại câu chuyện phía trên, norm không đơn thuần là công thức tính độ lớn của một vector mà còn là công cụ hữu hiệu để tìm ra khoảng cách, độ khác biệt giữa hai vector bất kì (trong câu chuyện là những địa điểm). Norm làm được điều này bằng cách tính độ lớn của vector chênh lệch giữa hai vector đó. Trong các bài viết tiếp theo, bạn sẽ được làm quen với khái niệm hàm Loss, là độ mất mát, độ khác biệt giữa một vector và một vector mẫu. Nhưng tạm thời, hãy xem công thức sau đây như là công thức tính độ khác biệt:

với và là hai vector cần tính độ khác biệt.

Để kết thúc phần này, mình xin giới thiệu maximum norm, hay còn gọi là infinity norm (trong ngữ cảnh công thức ):

Sử dụng những kiến thức về giải tích, bạn có giải thích được vì sao đây lại là công thức ứng với không?

5. Tích vô hướng dưới góc nhìn Hình học

Cũng tương tự với vector, ở những phần trước của bài viết, bạn đọc đã được tiếp cận với khía cạnh thao tác trên dữ liệu và đại số của tích vô hướng. Để có cái nhìn trực quan về ý nghĩa Hình học, chúng ta hãy bắt đầu với không gian 2 chiều thực, hay còn gọi là mặt phẳng Euclide.

Trong mặt phẳng, góc là những gì nằm giữa hai đường thẳng cắt nhau tại một điểm, và do đó, là một khái niệm mang tính trực quan. Tích vô hướng trong hình học được định nghĩa thông qua một hàm của góc là hàm cos:

với là các vector, là góc giữa và .

Khoảng cách l2

Hình 6. Góc giữa hai vector. Nguồn: Wikipedia

Từ công thức này, ta có một số nhận xét cho những trường hợp đặc biệt.

Với , do nên . Khi điều này xảy ra, ta gọi và là hai vector trực giao, hay vuông góc với nhau. Ở chiều ngược lại, nếu hai vector là trực giao thì ta biết tích vô hướng của chúng là .

Với , ta lại có . Như vậy, nếu thay bởi , ta được

tương đương với

Bạn có nhận ra công thức tính Euclidean norm mà mình đã giới thiệu ở phương trình này không?

Đi xa hơn không gian 2 chiều, ở không gian nhiều chiều, khái niệm về góc trở nên trừu tượng và không còn trực quan nữa. Đại số là công cụ để ta vượt qua rào cản trừu tượng đó và đưa ra những định nghĩa không còn phụ thuộc vào hình vẽ, trực giác. Góc giữa hai vector trong không gian nhiều chiều có thể được tính thông qua công thức

Như vậy, qua phần 1 của bài viết Machine Learning và Đại số Tuyến tính, ta đã điểm qua scalar, vector dưới khía cạnh dữ liệu và các phép toán liên quan. Đồng thời, khái niệm norm và ý nghĩa hình học của vector và phép nhân vô hướng cũng đã được đưa ra. Đây là những kiến thức có vai trò nền tảng trong Khoa học Dữ liệu cũng như Machine Learning, do đó bạn cần nắm rõ chúng để hiểu được những ý tưởng xa hơn trong lĩnh vực này.

Phần tiếp theo của bài viết sẽ nói về matrix và tensor, hai kiểu dữ liệu có vai trò quan trọng không kém scalar và vector trong Machine Learning. Những bí ẩn về tên gọi 0 chiều, 1 chiều, 2 chiều, và nhiều chiều sẽ được mở ra!

(còn tiếp)

Nguồn tham khảo

  • Báck khoa Toàn thư mở Wikipedia;
  • Tài liệu giới thiệu về Đại số Tuyến tính, MaSSP Computer Science 2018;
  • Tài liệu Đại số Tuyến tính, PiMA 2018;
  • [Ma trận] Một số khái niệm cơ bản, Do Minh Hai.

Trong bài viết vừa rồi, những định nghĩa được đưa ra dựa trên nhiều nguồn tham khảo trên Internet và cả góc nhìn cá nhân của các tác giả, do đó có thể là không chuẩn xác. Bạn đọc có bất kì đóng góp nào xin vui lòng liên hệ Facebook page của blog hoặc tài khoản Facebook cá nhân của Minh.

Share this:

  • Twitter
  • Facebook

Like this:

Like Loading...