✨Máy vectơ hỗ trợ

Máy vectơ hỗ trợ

Máy vectơ hỗ trợ (SVM - viết tắt tên tiếng Anh support vector machine) là một khái niệm trong thống kê và khoa học máy tính cho một tập hợp các phương pháp học có giám sát liên quan đến nhau để phân loại và phân tích hồi quy. SVM dạng chuẩn nhận dữ liệu vào và phân loại chúng vào hai lớp khác nhau. Do đó SVM là một thuật toán phân loại nhị phân. Với một bộ các ví dụ luyện tập thuộc hai thể loại cho trước, thuật toán luyện tập SVM xây dựng một mô hình SVM để phân loại các ví dụ khác vào hai thể loại đó. Một mô hình SVM là một cách biểu diễn các điểm trong không gian và lựa chọn ranh giới giữa hai thể loại sao cho khoảng cách từ các ví dụ luyện tập tới ranh giới là xa nhất có thể. Các ví dụ mới cũng được biểu diễn trong cùng một không gian và được thuật toán dự đoán thuộc một trong hai thể loại tùy vào ví dụ đó nằm ở phía nào của ranh giới.

Tổng quan về máy vectơ hỗ trợ

Một máy vectơ hỗ trợ xây dựng một siêu phẳng hoặc một tập hợp các siêu phẳng trong một không gian nhiều chiều hoặc vô hạn chiều, có thể được sử dụng cho phân loại, hồi quy, hoặc các nhiệm vụ khác. Một cách trực giác, để phân loại tốt nhất thì các siêu phẳng nằm ở càng xa các điểm dữ liệu của tất cả các lớp (gọi là hàm Biên) càng tốt, vì nói chung Biên càng lớn thì sai số tổng quát hóa của thuật toán phân loại càng bé.

Trong nhiều trường hợp, không thể phân chia các lớp dữ liệu một cách tuyến tính trong một không gian ban đầu được dùng để mô tả một vấn đề. Vì vậy, nhiều khi cần phải ánh xạ các điểm dữ liệu trong không gian ban đầu vào một không gian mới nhiều chiều hơn, để việc phân tách chúng trở nên dễ dàng hơn trong không gian mới. Để việc tính toán được hiệu quả, ánh xạ sử dụng trong thuật toán SVM chỉ đòi hỏi tích vô hướng của các vectơ dữ liệu trong không gian mới có thể được tính dễ dàng từ các tọa độ trong không gian cũ. Tích vô hướng này được xác định bằng một hàm hạt nhân K(x,y) phù hợp. Một siêu phẳng trong không gian mới được định nghĩa là tập hợp các điểm có tích vô hướng với một vectơ cố định trong không gian đó là một hằng số. Vectơ xác định một siêu phẳng sử dụng trong SVM là một tổ hợp tuyến tính của các vectơ dữ liệu luyện tập trong không gian mới với các hệ số αi. Với siêu phẳng lựa chọn như trên, các điểm x trong không gian đặc trưng được ánh xạ vào một siêu mặt phẳng là các điểm thỏa mãn:

i αi K(xi,x) = hằng số.

Ghi chú rằng nếu K(x,y) nhận giá trị ngày càng nhỏ khi y xa dần khỏi x thì mỗi số hạng của tổng trên được dùng để đo độ tương tự giữa x với điểm xi tương ứng trong dữ liệu luyện tập. Như vậy, tác dụng của tổng trên chính là so sánh khoảng cách giữa điểm cần dự đoán với các điểm dữ liệu đã biết. Lưu ý là tập hợp các điểm x được ánh xạ vào một siêu phẳng có thể có độ phức tạp tùy ý trong không gian ban đầu, nên có thể phân tách các tập hợp thậm chí không lồi trong không gian ban đầu.

Lịch sử

Thuật toán SVM ban đầu được tìm ra bởi Vladimir N. Vapnik và dạng chuẩn hiện nay sử dụng Biên mềm được tìm ra bởi Vapnik và Corinna Cortes năm 1995.

Đặt vấn đề

nhỏ|phải|H3 (màu xanh lá cây) không chia tách hai lớp dữ liệu. H1 (màu xanh lơ) phân tách hai lớp với Biên nhỏ và H2 (màu đỏ) phân tách với Biên cực đại. Phân loại thống kê là một nhiệm vụ phổ biến trong học máy. Trong mô hình học có giám sát, thuật toán được cho trước một số điểm dữ liệu cùng với nhãn của chúng thuộc một trong hai lớp cho trước. Mục tiêu của thuật toán là xác định xem một điểm dữ liệu mới sẽ được thuộc về lớp nào. Mỗi điểm dữ liệu được biểu diễn dưới dạng một vector p-chiều, và ta muốn biết liệu có thể chia tách hai lớp dữ liệu bằng một siêu phẳng p − 1 chiều. Đây gọi là phân loại tuyến tính. Có nhiều siêu phẳng có thể phân loại được dữ liệu. Một lựa chọn hợp lý trong chúng là siêu phẳng có Biên lớn nhất giữa hai lớp.

SVM tuyến tính

Ta có một tập huấn luyện \mathcal{D} gồm n điểm có dạng

:\mathcal{D} = \left{ (\mathbf{x}_i, y_i)\mid\mathbf{x}_i \in \mathbb{R}^p,\, yi \in {-1,1}\right}{i=1}^n

với yi mang giá trị 1 hoặc −1, xác định lớp của điểm \mathbf{x}_i . Mỗi \mathbf{x}_i là một vectơ thực p-chiều. Ta cần tìm siêu phẳng có Biên lớn nhất chia tách các điểm có y_i=1 và các điểm có y_i=-1. Mỗi siêu phẳng đều có thể được viết dưới dạng một tập hợp các điểm \mathbf{x} thỏa mãn nhỏ|phải|Siêu phẳng với Biên cực đại cho một SVM phân tách dữ liệu thuộc hai lớp. Các ví dụ nằm trên Biên được gọi là các vectơ hỗ trợ.

: \mathbf{w}\cdot\mathbf{x} - b=0,\,

với \cdot ký hiệu cho tích vô hướng và {\mathbf{w là một vectơ pháp tuyến của siêu phẳng. Tham số \tfrac{b}{|\mathbf{w}|} xác định khoảng cách giữa gốc tọa độ và siêu phẳng theo hướng vectơ pháp tuyến {\mathbf{w.

Chúng ta cần chọn {\mathbf{wb để cực đại hóa Biên, hay khoảng cách giữa hai siêu mặt song song ở xa nhau nhất có thể trong khi vẫn phân chia được dữ liệu. Các siêu mặt ấy được xác định bằng

: \mathbf{w}\cdot\mathbf{x} - b=1\,

: \mathbf{w}\cdot\mathbf{x} - b=-1.\,

Để ý rằng nếu dữ liệu huấn luyện có thể được chia tách một cách tuyến tính, thì ta có thể chọn hai siêu phẳng của Biên sao cho không có điểm nào ở giữa chúng và sau đó tăng khoảng cách giữa chúng đến tối đa có thể. Bằng hình học, ta tìm được khoảng cách giữa hai siêu phẳng là \tfrac{2}{|\mathbf{w}|}. Vì vậy ta muốn cực tiểu hóa giá trị |\mathbf{w}|. Để đảm bảo không có điểm dữ liệu nào trong Biên, ta thêm vào các điều kiện sau:

Với mỗi i ta có

: \mathbf{w}\cdot\mathbf{x}_i - b \ge 1\qquad\text{ cho }\mathbf{x}_i thuộc lớp thứ nhất

hoặc

: \mathbf{w}\cdot\mathbf{x}_i - b \le -1\qquad\text{ cho }\mathbf{x}_i thuộc lớp thứ hai

Có thể viết gọn lại như sau với mọi 1 \le i \le n:

: y_i(\mathbf{w}\cdot\mathbf{x}_i - b) \ge 1, \qquad\qquad(1)

Tóm lại, ta có bài toán tối ưu hóa sau:

Cực tiểu hóa (theo {\mathbf{w},b})

: |\mathbf{w}|

với điều kiện (với mọi i = 1, \dots, n)

: y_i(\mathbf{w}\cdot\mathbf{x_i} - b) \ge 1. \,

Dạng ban đầu

Bài toán tối ưu ở mục trên tương đối khó giải vì hàm mục tiêu phụ thuộc vào ||w||, là một hàm có khai căn. Tuy nhiên có thể thay ||w|| bằng hàm mục tiêu \tfrac{1}{2}|\mathbf{w}|^2 (hệ số 1/2 để tiện cho các biến đổi toán học sau này) mà không làm thay đổi lời giải (lời giải của bài toán mới và bài toán ban đầu có cùng w và b). Đây là một bài toán quy hoạch toàn phương. Cụ thể hơn:

Cực tiểu hóa (theo {\mathbf{w},b})

: \frac{1}{2}|\mathbf{w}|^2

với điều kiện (với mọi i = 1, \dots, n)

: y_i(\mathbf{w}\cdot\mathbf{x_i} - b) \ge 1.

Bằng cách thêm các nhân tử Lagrange \boldsymbol{\alpha}, bài toán trên trở thành

: \min{\mathbf{w},b } \max{\boldsymbol{\alpha}\geq 0 } \left{ \frac{1}{2}|\mathbf{w}|^2 - \sum_{i=1}^{n}{\alpha_i[y_i(\mathbf{w}\cdot \mathbf{x_i} - b)-1]} \right}

nghĩa là ta cần tìm một điểm yên ngựa. Khi đó, tất cả các điểm không nằm trên Biên, nghĩa là y_i(\mathbf{w}\cdot\mathbf{x_i} - b) - 1 > 0 đều không ảnh hưởng đến giá trị hàm mục tiêu vì ta có thể chọn \alpha_i bằng không.

Có thể giải bài toán này bằng các kĩ thuật thông thường cho quy hoạch toàn phương. Theo điều kiện Karush–Kuhn–Tucker, lời giải có thể được viết dưới dạng tổ hợp tuyến tính của các vectơ luyện tập

: \mathbf{w} = \sum_{i=1}^n{\alpha_i y_i\mathbf{x_i.

Chỉ có một vài \alpha_i nhận giá trị lớn hơn 0. Các điểm \mathbf{x_i} tương ứng là các vectơ hỗ trợ nằm trên Biên và thỏa mãn y_i(\mathbf{w}\cdot\mathbf{x_i} - b) = 1. Từ điều kiện này, ta nhận thấy : \mathbf{w}\cdot\mathbf{x_i} - b = 1 / y_i = y_i \iff b = \mathbf{w}\cdot\mathbf{x_i} - yi từ đó ta suy ra được giá trị b. Trên thực tế, một cách thức tốt hơn để tính b là tính giá trị trung bình từ tất cả N{SV} vectơ hỗ trợ: : b = \frac{1}{N{SV \sum{i=1}^{N_{SV{(\mathbf{w}\cdot\mathbf{x_i} - y_i)}

Dạng đối ngẫu

Nếu viết điều kiện phân loại dưới dạng đối ngẫu không điều kiện thì sẽ dễ dàng nhận thấy siêu phẳng với Biên lớn nhất, và do đó nhiệm vụ phân loại, chỉ phụ thuộc vào các điểm luyện tập nằm trên Biên, còn gọi là các vectơ hỗ trợ.

|\mathbf{w}|^2 = w\cdot w\mathbf{w} = \sum_{i=1}^n{\alpha_i y_i\mathbf{x_i, ta nhận thấy bài toán đối ngẫu của SVM là chính là bài toán tối ưu hóa sau:

Cực đại hóa (theo \alphai) :\tilde{L}(\mathbf{\alpha})=\sum{i=1}^n \alphai - \frac{1}{2}\sum{i, j} \alpha_i \alpha_j y_i y_j \mathbf{x}_i^T \mathbf{x}j=\sum{i=1}^n \alphai - \frac{1}{2}\sum{i, j} \alpha_i \alpha_j y_i y_j k(\mathbf{x}_i, \mathbf{x}_j)

với điều kiện (với mọi i = 1, \dots, n)

:\alpha_i \geq 0,\,

và điều kiện sau ứng với việc cực tiểu hóa theo b

: \sum_{i=1}^n \alpha_i y_i = 0. Ở đây hàm hạt nhân được định nghĩa là k(\mathbf{x}_i,\mathbf{x}_j)=\mathbf{x}_i\cdot\mathbf{x}_j.

Sau khi giải xong, có thể tính \mathbf{w} từ các giá trị \alpha tìm được như sau:

:\mathbf{w} = \sum_i \alpha_i y_i \mathbf{x}_i.

Biên mềm

Năm 1995, Corinna Cortes và Vladimir N. Vapnik đề xuất một ý tưởng mới cho phép thuật toán gán nhãn sai cho một số ví dụ luyện tập. Các hàm phạt phi tuyến cũng được sử dụng, đặc biệt là để giảm ảnh hưởng của các trường hợp ngoại lệ, tuy nhiên nếu không lựa chọn hàm phạt cẩn thận thì bài toán trở thành không lồi, và việc tìm lời giải tối ưu toàn cục thường là rất khó.

👁️ 0 | 🔗 | 💖 | ✨ | 🌍 | ⌚
**Máy vectơ hỗ trợ** (**SVM** - viết tắt tên tiếng Anh **support vector machine**) là một khái niệm trong thống kê và khoa học máy tính cho một tập hợp các phương pháp học có
phải|nhỏ|250x250px|Ma trận biến đổi _A_ tác động bằng việc kéo dài vectơ _x_ mà không làm đổi phương của nó, vì thế _x_ là một vectơ riêng của _A_. Trong đại số tuyến tính, một
thumb|Hai mẫu thử nghiệm của máy bay [[Dassault Mirage G, chiếc trên có cánh đang cụp và chiếc dưới có cánh đang xòe.]] thumb|3 chiếc F-111 của Không quân Úc với cánh có góc xòe
Máy tính lượng tử là hệ thống có thể thực thi vô số phép tính phức tạp cùng một lúc mà một máy tính thông thường có thể phải mất hàng triệu năm mới xong.
nhỏ| Một [[Vịt cổ xanh|con le le, trông giống như một con vịt và bơi như một con vịt.]] **Nhận dạng vịt** (), hoặc **phép thử vịt** hay **kiểm thử vịt** là một hình thức
Hiệu ứng từ điện trở lớn trong các màng đa lớp Fe/Cr (Fert et al.) **Từ điện trở**, hay còn gọi tắt là **từ trở**, là tính chất của một số vật liệu, có thể
phải|Mỗi phần tử của một ma trận thường được ký hiệu bằng một biến với hai chỉ số ở dưới. Ví dụ, a2,1 biểu diễn phần tử ở hàng thứ hai và cột thứ nhất
**Kỹ thuật tạo lệnh** hoặc **kỹ thuật ra lệnh** (prompt engineering) là quá trình cấu trúc một **văn bản đầu vào** cho AI tạo sinh giải thích và diễn giải. Một **văn bản đầu vào**
Nguồn gốc của video game nằm trong quá trình phát triển với ống phóng tia âm cực -dựa trên hệ thống phòng thủ tên lửa vào cuối những năm 1940. Các chương trình này sau
thumb|GeForce 6600GT (NV43) nhỏ|Các bộ phận của một GPU **Bộ phận xử lý đồ họa** (**GPU**, **graphics processing unit**) là một vi mạch chuyên dụng được thiết kế để thao tác và truy cập bộ
Trong đồ họa máy tính, **dò tia** là kỹ thuật tạo ra một hình ảnh bằng cách dò đường đi của ánh sáng thông qua các điểm ảnh trên một mặt phẳng ảnh và mô
**_Cấm thư ma thuật Index_**, hay còn được biết với tên gốc là loạt light novel do Kamachi Kazuma sáng tác và Haimura Kiyotaka minh hoạ. Được xuất bản bởi ASCII Media Works dưới ấn
**Máy tính** **Portable** **IBM 5100** là một máy tính portable (một trong những máy tính đầu tiên) được giới thiệu vào tháng 9 năm 1975, sáu năm trước khi máy tính cá nhân của IBM
thumb|right|Ảnh chụp màn hình trang chính của Wikipedia tiếng Việt tháng 12 năm 2020 **Ảnh chụp màn hình** (tiếng Anh: _screenshot_, _screen capture_ hay _screen grab_) là một hình ảnh thu lại những gì được
**Super Nintendo Entertainment System** (**SNES**), viết tắt là **Super NES** hoặc **Super Nintendo**, là một máy chơi trò chơi điện tử tại gia 16 bit do Nintendo phát triển và đưa ra thị trường năm
**Electronic Arts Inc.** (**EA**) là một công ty trò chơi điện tử của Mỹ có trụ sở chính tại Redwood City, California. Đây là công ty trò chơi lớn thứ hai ở châu Mỹ và
**An ninh mạng (cybersecurity), an ninh máy tính (computer security), bảo mật công nghệ thông tin (IT security)** là việc bảo vệ **hệ thống mạng máy tính** khỏi các hành vi trộm cắp hoặc làm
**PCI** (tiếng Anh: **_P**eripheral **C**omponent **I**nterconnect_) trong khoa học máy tính là một chuẩn để truyền dữ liệu giữa các thiết bị ngoại vi đến một bo mạch chủ (thông qua chip cầu nam). Kết
là một bộ anime truyền hình Nhật Bản dài 13 tập được sản xuất bởi P.A. Works và Aniplex, do Seiji Kishi làm đạo diễn. Cốt truyện được sáng tác đầu tiên bởi Maeda Jun,
nhỏ|Hình ảnh sử dụng các hiệu ứng của CAD **Computer-aided design**, viết tắt là CAD trong tiếng Anh (thiết kế được sự hỗ trợ của máy tính), được dùng rộng rãi trong các thiết bị
**Pygame** là một bộ mô-đun Python đa nền tảng được thiết kế để viết trò chơi điện tử. Nó bao gồm đồ họa máy tính và thư viện âm thanh được thiết kế để sử
liên kết=link=Special:FilePath/Super PI Mod1.5 XS.png|thế=|nhỏ|Super PI hoàn thành phép tính 1.048.576 (hay 220) chữ số của số pi **Super PI** là một chương trình máy tính thực hiện tính toán số pi đến một số
**SVG** (viết tắt của **Scalable Vector Graphics**) là một ngôn ngữ đánh dấu (_markup language_) XML và dùng để miêu tả các hình ảnh đồ họa véc tơ hai chiều, tĩnh và hoạt hình, thường
thumb|Ổ trục vòng bi **Ổ đỡ trục** hay gọi tắt là **ổ đỡ** hay **ổ trục** (tiếng Anh: _bearing_) là một cơ cấu cơ khí. Nó có 2 dạng chính là ổ lăn (vòng bi)
Trong viễn thông (_telecommunication_), **mã Hamming** là một mã sửa lỗi tuyến tính (_linear error-correcting code_), được đặt tên theo tên của người phát minh ra nó, [./Https://en.wikipedia.org/wiki/Richard_Hamming Richard Hamming]. Mã Hamming có thể phát
thumb|right|Quang học nghiên cứu hiện tượng [[tán sắc của ánh sáng.]] **Quang học** là một ngành của vật lý học nghiên cứu các tính chất và hoạt động của ánh sáng, bao gồm tương tác
**Đại số** là một nhánh của toán học nghiên cứu những hệ thống trừu tượng nhất định gọi là cấu trúc đại số và sự biến đổi biểu thức trong các hệ thống này. Đây
nhỏ|Hình 1- Bơm ly tâm Warman ứng dụng trong máy chế biến than **Bơm ly tâm** là loại máy thủy lực cánh dẫn, nhờ bánh công tác (cánh quạt) cơ năng của máy chuyển sang
**Vắc-xin** (, ) là một chế phẩm sinh học cung cấp khả năng miễn dịch thu được chủ động đối với một bệnh truyền nhiễm cụ thể. Vắc xin thường chứa tác nhân giống vi
Trong vật lý học, **thuyết tương đối hẹp** (**SR**, hay còn gọi là **thuyết tương đối đặc biệt** hoặc **STR**) là một lý thuyết vật lý đã được xác nhận bằng thực nghiệm và chấp
nhỏ|Ma trận của biến đổi tuyến tính Trong đại số tuyến tính, một phép biến đổi tuyến tính có thể được biểu diễn bằng ma trận. Nếu _T_ là một biến đổi tuyến tính ánh
**Định dạng tập tin hình ảnh** là phương tiện chuẩn hóa để tổ chức và lưu trữ hình ảnh kỹ thuật số. Định dạng tập tin hình ảnh có thể lưu trữ dữ liệu ở
nhỏ|Tỷ lệ của những người đã nhận ít nhất một liều vắc xin COVID-19 thumb|Thông tin cơ bản về vắc xin chống COVID-19 **Vắc xin COVID-19** là vắc-xin nhằm cung cấp khả năng miễn dịch
**James Clerk Maxwell** (13 tháng 6 năm 1831 – 5 tháng 11 năm 1879) là một nhà toán học, một nhà vật lý học người Scotland. Thành tựu nổi bật nhất của ông đó là thiết
**CorelDRAW** là một phần mềm biên tập đồ họa vector được phát triển và tiếp thị bởi Corel Corporation ở Ottawa, Canada. Đây cũng là tên của Bộ công cụ đồ họa Corel. Phiên bản
**Amalie Emmy Noether** (, ; ; 23 tháng 3 năm 1882 – 14 tháng 4 năm 1935) là một nhà toán học người Đức nổi tiếng vì những đóng góp nền tảng và đột phá
[[Phương trình nổi tiếng của Einstein dựng tại Berlin năm 2006.]] **Thuyết tương đối** miêu tả cấu trúc của không gian và thời gian trong một thực thể thống nhất là không thời gian cũng
Con quay hồi chuyển. Gyroscope frame:Khung con quay; Gimbal: khớp vạn năng; Rotor:đĩa quay; Spin axis:trục quay **Con quay hồi chuyển** là một thiết bị dùng để đo đạc hoặc duy trì phương hướng, dựa
**Adobe Illustrator** là trình chỉnh sửa đồ họa vector được phát triển và tiếp thị bởi Adobe Inc. Được thiết kế ban đầu cho Apple Macintosh, việc phát triển Adobe Illustrator bắt đầu vào năm
Triều lên (nước lớn) và triều xuống (nước ròng) tại [[vịnh Fundy.]] **Thủy triều** là hiện tượng nước biển, nước sông... lên xuống trong một chu kỳ thời gian phụ thuộc biến chuyển thiên văn.
nhỏ|Các mảng kiến tạo trên thế giới được vẽ vào nửa sau của thế kỷ 19. **Kiến tạo mảng** (tiếng Anh: **plate tectonics**; tiếng Hy Lạp: τέκτων _tektōn_, nghĩa là "người xây dựng", "thợ nề")
**Sukhoi Su-30 MKI** (MKI nghĩa là _Modernizirovannyi Kommercheskiy Indiski_ trong tiếng Nga) (Cyrillic: Модернизированный Коммерческий Индийский), "Modernized Commercial for India - Hiện đại hóa thương mại cho Ấn Độ"), tên ký hiệu của NATO **Flanker-H**.
**Tàu khu trục lớp Atago** (tiếng Nhật: あたご型護衛艦) là một lớp tàu khu trục tên lửa (**DDG**) được trang bị hệ thống chiến đấu Aegis (AWS) thuộc biên chế của Lực lượng Phòng vệ trên
phải|Phương trình biểu diễn đường cong có thể viết dưới dạng tham số của tọa độ x và y. Trong toán học, **phương trình tham số** xác định bởi hệ các hàm số của một
nhỏ|phải|Lợn cũng được xem là ổ bệnh với việc chứa nhiều bệnh truyền nhiễm có thể lây truyền cho con người là vật nuôi khác **Ổ bệnh** (_Natural reservoir_) hay **ổ dịch** (_Disease reservoir_) hay
**Tàu khu trục lớp Maya** (**lớp 27DDG,** tiếng Nhật: **まや型護衛艦**) là một biến thể cải tiến của tàu khu trục lớp Atago, đã hoạt động trong biên chế Lực lượng Phòng vệ trên biển Nhật
nhỏ|218x218px|3 + 2 = 5 quả [[táo, một ví dụ phổ biến trong sách giáo khoa]] **Phép cộng** (tiếng Anh: **Addition**) thường được biểu thị bằng ký hiệu cộng "+" là một trong bốn phép
**DAT / EM Systems International** là một công ty có trụ sở tại Alaska phát triển các ứng dụng lập bản đồ kỹ thuật số để trích xuất và chỉnh sửa địa hình vector 3D
**Norbert Wiener** (26 tháng 11 năm 1894 - 18 tháng 3 năm 1964) là một nhà toán học và triết học Mỹ. Ông là Giáo sư Toán học tại MIT. Được biết đến như một
, hay còn được gọi là **lớp 19DD**, là một lớp tàu khu trục (**DD**) được phát triển bởi Mitsubishi Heavy Industries (MHI) cho Lực lượng Phòng vệ Biển Nhật Bản (JMSDF). Dự án lớp