Các cách sử dụng văn bản với mô hình Rừng Quyết định Tensorflow

Đây là trang Markdown tài liệu. Để biết thêm thông tin, hãy xem Tham khảo Markdown (go/documentation-reference) và Hướng dẫn về phong cách tài liệu (go/documentation-style).

Lý lịch

Các thuật toán học rừng quyết định hoạt động khác với các mô hình dựa trên độ dốc giảm dần như mạng lưới thần kinh hoặc các công cụ dự đoán tuyến tính. Những khác biệt này thể hiện qua nhiều quyết định lập mô hình khác nhau, nhưng đặc biệt rõ ràng khi tập dữ liệu chứa các tính năng phân loại có độ dài thay đổi, như các tính năng văn bản được mã hóa, có xu hướng yêu cầu kỹ thuật tính năng dành riêng cho kiến ​​trúc. Hướng dẫn này phác thảo sự cân bằng giữa các chiến lược kỹ thuật tính năng khác nhau cho các tính năng văn bản trong các mô hình nhóm quyết định.

Trong các phần sau, chúng tôi sẽ đề cập đến tập dữ liệu có các tính năng này và giả sử chúng tôi đang dự đoán liệu người dùng có định mua một sản phẩm cụ thể hay không:

Tính năng Tên người dùng Mua trước Tiêu đề sản phẩm Mô tả Sản phẩm
Dữ liệu mẫu 1234 [“TV”, “Chân không”] "Thiết bị dẫn wifi" “Bộ định tuyến này là…”


Trong ví dụ này, “Mua trước” là một tính năng văn bản thưa thớt (hoặc một tập hợp các mục được phân loại). “Tiêu đề sản phẩm” cũng vậy, nhưng không được mã hóa trong ví dụ này. “Mô tả sản phẩm” là một tính năng ngôn ngữ tự nhiên, có các thuộc tính khác với các tính năng khác, bởi vì chúng tôi mong đợi từ vựng sẽ lớn (hoặc không bị giới hạn), trật tự từ có ý nghĩa quan trọng và có các thuộc tính ngữ nghĩa và từ vựng khác vốn có của ngôn ngữ. Các chiến lược chúng tôi mô tả dưới đây phù hợp với tất cả các tính năng này nhưng sẽ có những cân nhắc khác nhau cho từng tính năng.

Tham khảo nhanh

Giải pháp tốt nhất, nếu chi phí đào tạo và suy luận không phải là vấn đề đáng lo ngại, là sử dụng cả bộ phân loại và phần nhúng được đào tạo trước cho từng tính năng văn bản, vì chúng có điểm mạnh và điểm yếu bổ sung cho nhau. Chúng tôi khuyên bạn nên làm điều này trừ khi có một trong những hạn chế được đề cập dưới đây.

Tốc độ suy luận Tốc độ luyện tập Khả năng ghi nhớ mối quan hệ token <> nhãn Sự khái quát
Nhiều danh mục Nhanh nhất (+) Nhanh nhất (+) Giới hạn Bị giới hạn (+)
đa nóng Nhanh (+) Nhanh (giả sử kích thước từ vựng tương đối nhỏ) (++) Tốt Bị giới hạn (+)
Bộ phân loại Nhanh nhất (+++) Chậm hơn (+) Tốt nhất Bị giới hạn (+)
nhúng Chậm nhất (giả sử các hoạt động mã hóa không tầm thường, như phép nhân ma trận) (+ đến +++) Nhanh nhất (giả sử kích thước từ vựng >> kích thước nhúng) (+++) Xấu Tốt (++ đến +++)

N-gram

N-gram (ví dụ: {"the", "cat", "is", "blue"} -> {"<start> the", "the cat", "cat is", "is blue", "blue < end>"}) có thể có ích trong nhiều trường hợp và nắm bắt thông tin từ vựng cục bộ. Chúng được hỗ trợ trong tất cả các phương pháp dưới đây, nhưng phải trả giá bằng kích thước từ vựng lớn hơn đáng kể, điều này có thể khiến chúng không thực tế do chi phí đào tạo.

Chiến lược nản lòng

Mã hóa một nóng / Nhiều nóng / Túi từ

Mã hóa một lần là một chiến lược cổ điển để làm đậm đặc văn bản thưa thớt. Ở đây, chúng tôi giả sử một tiện ích mở rộng trong đó tính năng văn bản thưa thớt được biểu thị bằng nhiều điểm nóng (1 giây cho tất cả các mã thông báo được chứa) hoặc vector hóa dựa trên số lượng (số lượng cho mỗi mã thông báo trong từ vựng).

Ví dụ: nếu từ vựng có 4 mục và được lập chỉ mục như [“TV”, “Chân không”, “Wifi”, “Bộ định tuyến”] thì tính năng “Mua trước” sẽ là một vectơ dày đặc <1, 1, 0, 0 >. Nếu tính đến số lượng và tính năng là [“TV”, “TV”, “Chân không”] thì nó sẽ là <2, 1, 0, 0>.

Ưu điểm

  • Vì việc phân chia rừng quyết định được học dựa trên các đặc điểm riêng lẻ nên việc này ít tốn kém hơn trong thời gian đào tạo so với các tập phân loại.
  • Không giống như trước đây, không cần bất kỳ phần cắt hoặc phần đệm nào và mã thông báo có cùng ngữ nghĩa trong các ví dụ (tức là “TV” sẽ không đổi trong các phần tách bất kể vị trí).

Nhược điểm

  • Chiến lược này thường dẫn đến sự phân chia thưa thớt và mất cân bằng cao, điều này có thể làm cho các thuật toán học DF hội tụ chậm hơn hoặc dưới chuẩn. Điều này là do:
    • Cần nhiều sự chia tách hơn để tìm hiểu cùng một thông tin
    • Cây thưa thớt có tổng quát kém hơn cây cân bằng, thường dẫn đến mô hình kém chính xác hơn.
  • Không tính đến thông tin vị trí. Điều này có thể ảnh hưởng đến hiệu suất của các tính năng ngôn ngữ tự nhiên.
  • Học cách phân chia số trên dữ liệu phân loại là chưa tối ưu; có những tối ưu hóa để tìm kiếm sự phân chia theo phân loại không được tận dụng ở đây.
  • Độ phức tạp tính toán trong quá trình huấn luyện tăng tỷ lệ tuyến tính với số lượng mục từ vựng (mỗi mục sẽ được sử dụng dưới dạng đặc điểm số). Trong thực tế, trừ khi tập dữ liệu rất nhỏ (trong trường hợp đó, từ vựng lớn có thể khuyến khích trang bị quá mức), điều này khiến cho việc đào tạo từ vựng > 5k mục rất chậm.
  • Mức tiêu thụ bộ nhớ huấn luyện sẽ là 1 byte (đối với một lần nóng) hoặc 4 byte (đối với số lượng) cho mỗi mục từ vựng trên mỗi ví dụ, vì tại thời điểm lập chỉ mục, dữ liệu sẽ được lưu trữ dưới dạng phiên bản dày đặc của dữ liệu thưa thớt. Điều này có thể phát triển cực kỳ lớn đối với các từ vựng và bộ dữ liệu lớn hơn.

Nhiều tính năng phân loại có độ dài cố định

Vì các tính năng phân loại có thể được học một cách hiệu quả bằng thuật toán nhóm quyết định, nên một cách tự nhiên để sử dụng mã thông báo thưa thớt là đệm/cắt sao cho có số lượng mã thông báo đầu vào cố định cho mỗi ví dụ và mỗi vị trí mã thông báo là một tính năng riêng biệt và độc lập. Trong ví dụ trên, nếu “Mua trước” có tối đa 5 mã thông báo, chúng tôi có thể tạo các tính năng f1...f5 đại diện cho mã thông báo 1-5 và loại bỏ mọi mã thông báo > 5, đồng thời thêm các giá trị còn thiếu cho các ví dụ có < 5.

Ưu điểm

  • Điều này là hiệu quả để đào tạo.
  • Điều này có thể không ảnh hưởng đến chất lượng mô hình nếu có sự chênh lệch thấp về số lượng mã thông báo trên mỗi ví dụ và các mã thông báo là độc lập.
  • Điều này có thể nắm bắt ngữ nghĩa bổ sung (như đơn đặt hàng trong ví dụ) một cách tự nhiên hơn các phương pháp khác.

Nhược điểm

  • Thêm ngữ nghĩa vào các mã thông báo đệm “bị thiếu” sẽ đóng vai trò gây nhiễu cho mô hình. Điều này sẽ đặc biệt rõ ràng nếu có sự khác biệt lớn về số lượng mã thông báo trên mỗi ví dụ, điều này có thể xảy ra chẳng hạn với tính năng “Mô tả sản phẩm”.
  • Các cây đã học sẽ rất nhạy cảm với thứ tự, tức là nếu đặc điểm là [“A”, “B”] thì dự đoán sẽ khác với dự đoán cho [“B”, “A”] và nếu đặc điểm sau chưa bao giờ được nhìn thấy trong dữ liệu, mô hình sẽ không thể khái quát hóa từ mô hình trước. Nói chung, điều này sẽ đòi hỏi nhiều dữ liệu hơn để tìm hiểu tính bất biến của vị trí.
  • Theo mặc định, mỗi mã thông báo sẽ được biểu thị bằng một tính năng có từ vựng khác nhau. Ngay cả khi bạn buộc việc triển khai phải xem xét cùng một tập hợp các mục từ vựng cho mỗi tính năng, f1=”TV” sẽ là một mục từ vựng khác với f2=”TV.” Điều này có nghĩa là thuật toán sẽ kém hiệu quả hơn trong việc tìm hiểu mối quan hệ giữa mã thông báo “TV” và nhãn -- nó sẽ phải tìm hiểu riêng biệt cho từng vị trí mã thông báo.

Chiến lược tốt hơn

Bộ phân loại

Bộ phân loại ( https://arxiv.org/pdf/2009.09991.pdf ) là biểu diễn tính năng mặc định của TF-DF cho văn bản thưa thớt. Một tập hợp phân loại thực chất là một tập hợp các từ, bỏ qua các từ trùng lặp và thứ tự. Ví dụ: tính năng “TV là tốt nhất” sẽ được biểu thị bằng tập hợp phân loại {“tốt nhất”, “là”, “the”, “TV}.

Bộ chia tập hợp phân loại gốc, theo điểm chuẩn trên nhiều tác vụ khác nhau (xem bài viết), thường hoạt động tốt hơn các tính năng phân loại đa điểm nóng và có độ dài cố định. Về lý thuyết, cả phân tách tập hợp phân loại và phân tách boolean trên các tính năng được mã hóa một lần đều có thể tìm hiểu cùng một thông tin. Tuy nhiên, hãy lấy ví dụ sau, trong đó cây đang cố gắng học chức năng sau:

if description contains “high” AND “speed” AND “gaming”:
  return True

Trong trường hợp này, bộ chia tập hợp phân loại gốc sẽ học 1 phép chia, trong đó {“high”, “speed”, “gaming”} => True.

Một cách trình bày hấp dẫn sẽ yêu cầu 3 phần phân chia, ở mức “cao”, “phân chia” và “chơi game” và sẽ cần tìm các nút lá hợp lý cho tất cả các điểm phân tách có thể có của các danh mục đó (tức là “cao” chứ không phải “tốc độ”). Trong thực tế, mã hóa một lần dẫn đến cây mất cân bằng cao và không thể tối ưu hóa hiệu quả bằng các thuật toán học rừng quyết định hoạt động tốt nhất.

Ưu điểm

  • Tốt nhất trong việc tìm hiểu thông tin từ ngữ dành cho rừng quyết định.
  • Phân phối hiệu quả cao (có thể được phân phối bằng QuickScorer, có thể phân phối các cây lớn với thời gian lên đến dưới micro giây cho mỗi ví dụ). Độ phức tạp về thời gian cung cấp là tuyến tính theo số lượng mục trong tập phân loại của mỗi ví dụ, trong thực tế nhỏ hơn nhiều so với kích thước từ vựng.
  • Tối ưu hóa một từ vựng duy nhất cho mỗi tính năng để chia sẻ ngữ nghĩa.

Nhược điểm

  • Chi phí đào tạo một thang phân chia tập hợp phân loại với kích thước num_examples * vocab, do đó, tương tự như thuật toán one-hot, kích thước từ vựng có thể huấn luyện có thể khá nhỏ (N nghìn) trong cài đặt thực tế. Lưu ý rằng tốc độ huấn luyện này có thể được cải thiện bằng cách điều chỉnh tỷ lệ lấy mẫu của thuật toán tham lam, nhưng nó có thể đạt được chất lượng dưới mức tối ưu.

Nhúng

Mạng thần kinh đã thể hiện hiệu suất hiện đại trên nhiều nhiệm vụ NLP khác nhau và các phần nhúng được đào tạo trước được sử dụng dưới dạng các tính năng số theo kinh nghiệm cũng hoạt động tốt với các thuật toán rừng quyết định, mặc dù các tính năng này được sử dụng rất khác nhau trong nội bộ. Lưu ý rằng ở đây chúng tôi đề cập đến “nhúng” như bất kỳ mã hóa mạng thần kinh nào, ví dụ như đầu ra của các lớp biến áp/tích chập/tái phát.

Việc sử dụng các phần nhúng được đào tạo trước hoạt động tốt với các mạng thần kinh một phần vì việc khởi tạo không gian vectơ trong đó các mã thông báo hoặc câu tương tự gần nhau trong không gian euclide đã cho thấy khả năng truyền tốt qua các tác vụ NLP và độ dốc từ quá trình khởi tạo đó nhỏ hơn và hội tụ nhanh hơn hơn là khởi tạo hoàn toàn ngẫu nhiên. Tuy nhiên, cây quyết định sử dụng các phần nhúng làm các đối tượng số riêng lẻ và tìm hiểu các phân vùng được căn chỉnh theo trục của các đối tượng riêng lẻ đó 1 . Điều này có nghĩa là gần như không thể sử dụng cùng một thông tin ngữ nghĩa -- chẳng hạn, một tích số chấm hoặc phép nhân ma trận không thể được biểu diễn bằng một tập hợp các phần tách được căn chỉnh theo trục. Hơn nữa, không giống như các mạng thần kinh, có thể cập nhật các phần nhúng thông qua việc giảm độ dốc trong quá trình đào tạo, các thuật toán học nhóm quyết định mặc định là không thể phân biệt được, có nghĩa là các phần nhúng phải được giữ cố định. Lưu ý rằng có công việc (ví dụ : https://arxiv.org/pdf/2007.14761.pdf ) về các khu rừng quyết định khác biệt. Tuy nhiên, có lẽ một phần vì trên thực tế không phải tất cả các bit thông tin trong quá trình nhúng đều thực sự được sử dụng, ngay cả bởi mạng lưới thần kinh, chiến lược này vẫn hoạt động tốt với các khu rừng quyết định.

Ưu điểm:

  • Có thể xử lý các kích thước từ vựng lớn hơn nhiều - vì việc nhúng thực sự là sự cô đặc hóa thành một số lượng nhỏ các kích thước nhúng, nên số lượng tính năng đầu vào của nhóm quyết định khó có thể tăng lên đáng kể.
  • Về mặt lý thuyết, có thể khái quát hóa tốt hơn vì các phần nhúng tương tự có thể chia sẻ các bộ phân vùng. Lưu ý rằng một lưu ý lớn ở đây là, như đã đề cập ở trên, các phép biến đổi cơ sở hoặc phép quay trong không gian vectơ có thể có hai phần nhúng tương tự nhưng hoàn toàn khác nhau trong không gian được phân vùng theo trục cho các khu rừng quyết định.
  • Có thể gói gọn thứ tự lặp lại/từ một cách tự nhiên, chẳng hạn như nếu bộ mã hóa chứa các cấu trúc chập, sự chú ý hoặc RNN.
  • Có thể tận dụng thông tin từ một tập dữ liệu khác (đào tạo trước cho việc học chuyển giao).

Nhược điểm

  • Không giỏi ghi nhớ thông tin -- việc phân chia có thể gây ra sự phân loại mờ hoặc độ nhạy cao đối với cách diễn đạt (ví dụ: “bộ định tuyến tuyệt vời” so với “bộ định tuyến tuyệt vời”) sẽ tạo ra các phần nhúng khác nhau, có thể gần giống nhau trong không gian euclide nhưng không nhất thiết phải có các phần tương tự. đặc điểm số học.
  • Phân phối chậm nhất vì quá trình chuyển tiếp bộ mã hóa đầy đủ cần được thực hiện tại thời điểm suy luận. Độ trễ thực tế phụ thuộc nhiều vào kiến ​​trúc tạo ra phần nhúng; tức là, bộ mã hóa máy biến áp thường sẽ chậm hơn nhiều so với việc tra cứu bảng nhúng thô với tính năng tổng hợp trung bình.

Ghi chú


  1. Việc bật tính năng phân tách xiên có thể cho phép tìm hiểu thông tin được căn chỉnh không theo trục, nhưng nó vẫn sẽ dựa trên cơ sở từng thứ nguyên.