Mô hình Keras tốt nhất để phân loại nhiều lớp là gì?


30

Tôi đang làm việc trên nghiên cứu, nơi nhu cầu một classify ba sự kiện WINNER = ( win, draw, lose)

WINNER  LEAGUE  HOME    AWAY    MATCH_HOME  MATCH_DRAW  MATCH_AWAY  MATCH_U2_50 MATCH_O2_50
3         13    550      571          1.86        3.34        4.23       1.66     2.11
3         7     322     334           7.55         4.1         1.4       2.17     1.61

Mô hình hiện tại của tôi là:

def build_model(input_dim, output_classes):
    model = Sequential()
    model.add(Dense(input_dim=input_dim, output_dim=12, activation=relu))
    model.add(Dropout(0.5))
    model.add(Dense(output_dim=output_classes, activation='softmax'))
    model.compile(loss='categorical_crossentropy', optimizer='adadelta')
    return model
  1. Tôi không chắc đó là cách chính xác để phân loại nhiều lớp
  2. Thiết lập tốt nhất để phân loại nhị phân là gì?

EDIT: # 2 - Như thế?

model.add(Dense(input_dim=input_dim, output_dim=12, activation='sigmoid'))
model.add(Dropout(0.5))
model.add(Dense(output_dim=output_classes, activation='softmax'))
model.compile(loss='binary_crossentropy', optimizer='adadelta')

1
Bạn có nghĩa là "mô hình", hoặc chỉ đề cập đến sự lựa chọn của lớp cuối cùng activation='softmax'và lựa chọn biên dịch loss='categorical_crossentropy'? IMO, các lựa chọn của bạn cho những điều đó là tốt cho một mô hình để dự đoán nhiều lớp loại trừ lẫn nhau. Nếu bạn muốn tư vấn cho toàn bộ mô hình, điều đó khá khác biệt, và bạn nên giải thích thêm về mối quan tâm của bạn là gì, nếu không có quá nhiều điều để giải thích trong một câu trả lời.
Neil Slater

Tôi có nghĩa là về architecturecác lớp chủ yếu. Có lời khuyên nào cho câu hỏi số 2 của tôi không?
Tiếng Tây Ban Nha

1
Rất hiếm khi có cách "đúng" để xây dựng kiến ​​trúc, đó phải là thứ bạn thử nghiệm với các meta-param khác nhau và nên được điều khiển theo kết quả (bao gồm mọi giới hạn bạn có thể có đối với việc sử dụng tài nguyên cho thời gian đào tạo / sử dụng bộ nhớ, v.v.). Đối với # 2, bạn có thể có hai đầu ra với softmax tương tự như bây giờ hoặc bạn có thể có lớp đầu ra với một đầu ra activation='sigmoid'loss='binary_crossentropy'
Neil Slater

activation='sigmoid'trong lớp đầu ra . Lớp ẩn có thể giữ nguyên như 'relu'bạn muốn (mặc dù tôi có thể bắt đầu với 'tanh'vấn đề này, đó là sở thích cá nhân với rất ít sự hỗ trợ từ lý thuyết)
Neil Slater

Câu trả lời:


35

Các lựa chọn của bạn activation='softmax'trong lớp cuối cùng và lựa chọn biên dịch loss='categorical_crossentropy'là tốt cho một mô hình để dự đoán nhiều lớp loại trừ lẫn nhau.

Về các lựa chọn chung hơn, hiếm khi có một cách "đúng" để xây dựng kiến ​​trúc. Thay vào đó, đó phải là thứ bạn kiểm tra với các thông số meta khác nhau (chẳng hạn như kích thước lớp, số lớp, số lượng bỏ học) và nên được điều khiển theo kết quả (bao gồm mọi giới hạn bạn có thể có đối với việc sử dụng tài nguyên cho thời gian / bộ nhớ đào tạo sử dụng vv).

Sử dụng một bộ xác thực chéo để giúp chọn một kiến ​​trúc phù hợp. Sau khi hoàn thành, để có được thước đo chính xác hơn về hiệu suất chung của mô hình, bạn nên sử dụng một bộ kiểm tra riêng. Dữ liệu được tổ chức từ tập huấn luyện của bạn tách biệt với tập CV nên được sử dụng cho việc này. Một phân chia hợp lý có thể là 60/20/20 train / cv / test, tùy thuộc vào số lượng dữ liệu bạn có và số lượng bạn cần để báo cáo một con số chính xác cuối cùng.

Đối với Câu hỏi số 2, bạn có thể chỉ có hai đầu ra với một kết thúc mềm tương tự như bây giờ hoặc bạn có thể có lớp cuối cùng với một đầu ra activation='sigmoid'loss='binary_crossentropy'.

Hoàn toàn từ cảm nhận từ những gì có thể hoạt động với dữ liệu này, tôi sẽ khuyên bạn nên thử 'tanh'hoặc 'sigmoid'kích hoạt trong lớp ẩn, thay vào đó 'relu', và tôi cũng sẽ đề nghị tăng số lượng tế bào thần kinh ẩn (ví dụ 100) và giảm số lượng bỏ học ( ví dụ 0,2). Hãy cẩn thận: Cảm giác ruột trên kiến ​​trúc mạng thần kinh là không khoa học. Hãy thử nó, và kiểm tra nó.

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.