[ad_1]
Trên thực tế, tất cả các mô hình học máy đều lưu trữ trọng số của chúng dưới dạng ma trận. Do đó, có một số hiểu biết về đại số tuyến tính sẽ rất hữu ích để có được trực giác về những gì đang xảy ra.
Bắt đầu với một số điều cơ bản và sau đó đi từ đó, chúng ta có các hàng và cột trong một ma trận
Đương nhiên, bạn càng có nhiều hàng, cột hoặc cả hai thì ma trận của bạn càng chiếm nhiều dữ liệu. Đôi khi, tồn tại mối quan hệ toán học giữa các hàng và/hoặc cột có thể được sử dụng để giảm khoảng trống cần thiết. Điều này tương tự như cách một hàm chiếm ít không gian hơn để biểu diễn so với việc giữ tất cả các điểm tọa độ mà nó biểu thị.
Xem ví dụ bên dưới để biết ma trận có thể rút gọn xuống chỉ còn 1 hàng. Điều này cho thấy ma trận 3×3 ban đầu có thứ hạng là 1.
Khi một ma trận có thể rút gọn được như trên thì ta nói rằng nó có hạng thấp hơn ma trận không thể rút gọn được như vậy. Bất kỳ ma trận nào có thứ hạng thấp hơn đều có thể được mở rộng trở lại ma trận lớn hơn như bên dưới
Để tinh chỉnh một mô hình, bạn cần một bộ dữ liệu chất lượng. Ví dụ: nếu muốn tinh chỉnh mô hình trò chuyện về ô tô, bạn sẽ cần một tập dữ liệu với hàng nghìn đoạn hội thoại chất lượng cao về ô tô.
Sau khi tạo dữ liệu, bạn sẽ lấy những dữ liệu đó và chạy chúng qua mô hình của mình để nhận được kết quả đầu ra cho từng dữ liệu. Sau đó, kết quả này được so sánh với kết quả dự kiến trong tập dữ liệu của bạn và chúng tôi tính toán sự khác biệt giữa hai kết quả. Thông thường, một hàm như entropy chéo (làm nổi bật sự khác biệt giữa 2 phân bố xác suất) được sử dụng để định lượng sự khác biệt này.
Bây giờ chúng ta lấy phần mất mát và sử dụng nó để sửa đổi trọng số mô hình. Chúng ta có thể coi điều này giống như tạo một ma trận ΔW mới có tất cả những thay đổi mà chúng ta muốn ma trận Wo biết. Chúng tôi lấy các trọng số và xác định cách chúng tôi sẽ thay đổi chúng để chúng mang lại cho chúng tôi kết quả tốt hơn trong hàm mất mát. Chúng tôi tìm ra cách điều chỉnh trọng số bằng cách thực hiện truyền ngược.
Nếu có đủ sự quan tâm, tôi sẽ viết một bài weblog riêng về phép toán đằng sau lan truyền ngược vì nó rất hấp dẫn. Hiện tại, chúng ta có thể nói một cách đơn giản rằng việc tính toán cần thiết để tìm ra sự thay đổi trọng lượng là rất tốn kém.
LoRA xoay quanh một giả thuyết quan trọng: trong khi ma trận trọng số của mô hình học máy có thứ hạng cao, thì các cập nhật trọng số được tạo trong quá trình tinh chỉnh lại có thứ hạng nội tại thấp. Nói cách khác, chúng ta có thể tinh chỉnh mô hình với ma trận nhỏ hơn nhiều so với ma trận chúng ta cần sử dụng nếu chúng ta huấn luyện nó từ đầu và không thấy bất kỳ sự suy giảm hiệu suất lớn nào.
Do đó, chúng tôi thiết lập phương trình cơ bản của mình như sau:
Chúng ta hãy xem xét từng biến ở trên. h là giá trị trọng số sau khi tinh chỉnh. Wo và ΔW vẫn giống như trước, nhưng các tác giả đã tạo ra một cách mới để định nghĩa ΔW. Để tìm ΔW, tác giả đã tạo 2 ma trận: A và B. A là ma trận có cùng kích thước cột với Wo và bắt đầu chứa nhiễu ngẫu nhiên, trong khi B có cùng kích thước hàng với Wo và được khởi tạo bằng tất cả 0. Các kích thước này rất quan trọng vì khi chúng ta nhân A và B với nhau, chúng sẽ tạo ra một ma trận có cùng kích thước với ΔW.
Thứ hạng của A và B là một siêu tham số được đặt trong quá trình tinh chỉnh. Điều này có nghĩa là chúng ta có thể chọn hạng 1 để tăng tốc độ đào tạo tối đa (trong khi vẫn thay đổi thành Wo) hoặc tăng quy mô xếp hạng để có khả năng tăng hiệu suất với chi phí lớn hơn.
Quay lại hình ảnh trước đó, hãy xem phép tính thay đổi như thế nào khi chúng ta sử dụng LoRA.
Hãy nhớ rằng tinh chỉnh có nghĩa là tạo ma trận ΔW chứa tất cả các thay đổi của chúng ta đối với ma trận Wo. Lấy ví dụ về đồ chơi, giả sử hạng của A và B là 1, với kích thước là 3. Do đó, chúng ta có một hình ảnh như dưới đây:
Vì mỗi ô trong ma trận chứa một trọng số có thể huấn luyện nên chúng ta sẽ hiểu ngay tại sao LoRA lại mạnh đến vậy: chúng ta đã giảm đáng kể số lượng trọng số có thể huấn luyện mà chúng ta cần tính toán. Do đó, mặc dù các phép tính để tìm các trọng số có thể huấn luyện riêng lẻ thường giữ nguyên, bởi vì chúng tôi tính toán số lần này ít hơn nhiều, nên chúng tôi đang tiết kiệm được TẤN thời gian và thời gian tính toán.
LoRA đã trở thành một phương pháp tiêu chuẩn công nghiệp để tinh chỉnh các mô hình. Ngay cả những công ty có nguồn lực dồi dào cũng đã công nhận LoRA là một cách hiệu quả về mặt chi phí để cải thiện mô hình của họ.
Khi chúng ta nhìn về tương lai, một lĩnh vực nghiên cứu thú vị sẽ là tìm ra thứ hạng tối ưu cho các ma trận LoRA này. Hiện tại chúng là siêu tham số, nhưng nếu có một siêu tham số lý tưởng thì thậm chí còn tiết kiệm được nhiều thời gian hơn. Hơn nữa, vì LoRA vẫn yêu cầu dữ liệu chất lượng cao nên một lĩnh vực nghiên cứu tốt khác là kết hợp dữ liệu tối ưu cho phương pháp LoRA.
Mặc dù dòng tiền đổ vào AI rất lớn nhưng chi tiêu cao không phải lúc nào cũng tương quan với lợi nhuận cao. Nhìn chung, các công ty càng có khả năng kiếm tiền càng xa thì họ càng có thể tạo ra những sản phẩm tốt hơn cho khách hàng của mình. Do đó, như một cách cải tiến sản phẩm rất tiết kiệm chi phí, LoRA xứng đáng trở thành một phần không thể thiếu trong không gian học máy.
Đây là thời điểm thú vị để xây dựng.
[ad_2]
Source link