Cách kết hợp các tính năng đầu vào phân loại và liên tục để đào tạo mạng lưới thần kinh


16

Giả sử chúng ta có hai loại tính năng đầu vào, phân loại và liên tục. Dữ liệu phân loại có thể được biểu diễn dưới dạng mã A nóng, trong khi dữ liệu liên tục chỉ là một vectơ B trong không gian thứ N. Có vẻ như chỉ đơn giản là sử dụng concat (A, B) không phải là một lựa chọn tốt vì A, B là các loại dữ liệu hoàn toàn khác nhau. Ví dụ, không giống như B, không có thứ tự số trong A. Vì vậy, câu hỏi của tôi là làm thế nào để kết hợp hai loại dữ liệu đó hoặc có bất kỳ phương pháp thông thường nào để xử lý chúng.

Trong thực tế, tôi đề xuất một cấu trúc ngây thơ như được trình bày trong hình

nhập mô tả hình ảnh ở đây

Như bạn thấy, một vài lớp đầu tiên được sử dụng để thay đổi (hoặc ánh xạ) dữ liệu A thành một số đầu ra giữa trong không gian liên tục và sau đó nó được liên kết với dữ liệu B tạo thành một tính năng đầu vào mới trong không gian liên tục cho các lớp sau. Tôi tự hỏi liệu nó là hợp lý hay nó chỉ là một trò chơi "thử và sai". Cảm ơn bạn.

Câu trả lời:


5

Có ba cách tiếp cận chính để giải quyết điều này:

  1. Xây dựng hai mô hình riêng biệt và sau đó đào tạo một thuật toán đồng bộ nhận đầu ra của hai mô hình làm đầu vào
  2. Kết hợp tất cả dữ liệu vào một vectơ / tenxơ đơn như một bước tiền xử lý và sau đó huấn luyện một NN đầu vào đơn giản
  3. Kiến trúc NN đầu vào mà bạn đề xuất

Cách tiếp cận đồng bộ là tùy chọn chuyển tiếp thẳng nhất và sẽ mang lại kết quả tốt, tuy nhiên, nó sẽ không hoạt động tốt như tùy chọn mà bạn đề xuất vì mạng đồng bộ chỉ nhận được xác suất lớp từ hai mạng làm đầu vào và sẽ so sánh với tiếp cận bỏ lỡ các mối quan hệ phức tạp hơn giữa các loại dữ liệu.

Cách tiếp cận thứ hai về lý thuyết không khác với cách tiếp cận được đề xuất của bạn, với sự khác biệt là nó giả định rằng mạng sẽ tự nhận ra rằng đầu vào bao gồm hai loại dữ liệu (vì cả hai đều nằm trong cùng một vectơ / tenxơ ). Sẽ mất rất nhiều thời gian đào tạo để mạng tìm hiểu điều đó và bạn có thể bị mắc kẹt trong một cực tiểu địa phương trước khi điều đó thậm chí xảy ra.

Dựa trên kinh nghiệm cá nhân của tôi, mạng mà bạn đề xuất là lựa chọn tốt nhất và có thể có thời gian đào tạo ngắn nhất và một khi bạn có được kiến ​​trúc phù hợp, bạn sẽ thấy rất dễ dàng để đào tạo và duy trì (đào tạo lại) mạng trong sản xuất cũng như bạn sẽ chỉ phải đào tạo lại một mô hình duy nhất.



0

Tôi đã sử dụng cấu trúc ngây thơ do bạn đề xuất từ ​​khá lâu rồi. Trong một vấn đề được đóng khung tốt và có đủ dữ liệu, loại kiến ​​trúc này hoạt động khá tốt. Tuy nhiên đây là một vài điều mà tôi học được:

  1. Các thuật toán dựa trên cây (RF, XGB) thường hoạt động tốt với các lớp hỗn hợp trừ khi bạn có một số yêu cầu đầu ra cụ thể hoặc hàm mất mát, dễ thực hiện hơn thông qua các mạng thần kinh.
  2. Nếu việc sử dụng mạng thần kinh được quyết định, thì kiến ​​trúc này sẽ hoạt động tốt hơn so với các cách mã hóa chuỗi khác.
  3. Cách tiếp cận này cũng hoạt động với dữ liệu chuỗi thời gian đầu vào hỗn hợp - tốt hơn nhiều so với bất kỳ cách tiếp cận chuỗi thời gian cổ điển nào.

Thiết kế chính sẽ là lớp ghép và nơi bạn muốn đặt nó vào kiến ​​trúc. Ngoài ra, việc sử dụng các lớp nhúng cung cấp cho bạn lợi ích bổ sung của việc sử dụng các nhúng được học trong một số nhiệm vụ / trực quan hóa khác.

Những kiểu kiến ​​trúc này đã được sử dụng trong các cuộc thi Kaggle [1] và cũng được giảng dạy trong khóa học Fast.ai của Giáo sư Jeremy Howard [2].

  1. https://yashuseth.blog/2018/07/22/pytorch-neural-network-for-tabular-data-with-coolical-embeddings/
  2. https://www.fast.ai/2019/01/24/cference-v3/
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.