Hàm mất cho phân đoạn ngữ nghĩa


9

Áp dụng cho việc sử dụng sai các thuật ngữ kỹ thuật. Tôi đang làm việc trên một dự án phân đoạn ngữ nghĩa thông qua các mạng thần kinh tích chập (CNNs); cố gắng thực hiện một kiến ​​trúc kiểu Encoder-Decoder, do đó đầu ra có cùng kích thước với đầu vào.

Làm thế nào để bạn thiết kế các nhãn? Những gì mất chức năng nên áp dụng? Đặc biệt là trong tình huống mất cân bằng hạng nặng (nhưng tỷ lệ giữa các lớp là thay đổi từ hình ảnh sang hình ảnh).

Vấn đề liên quan đến hai lớp (đối tượng quan tâm và nền tảng). Tôi đang sử dụng Keras với phụ trợ kéo căng.

Cho đến nay, tôi sẽ thiết kế các đầu ra dự kiến ​​có cùng kích thước với các hình ảnh đầu vào, áp dụng ghi nhãn theo pixel. Lớp cuối cùng của mô hình có kích hoạt softmax (cho 2 lớp) hoặc kích hoạt sigmoid (để thể hiện xác suất các pixel thuộc về lớp đối tượng). Tôi gặp rắc rối với việc thiết kế một hàm mục tiêu phù hợp cho một nhiệm vụ như vậy, thuộc loại:

function(y_pred,y_true),

đồng ý với Keras .

Xin vui lòng, cố gắng cụ thể với kích thước của tenxơ liên quan (đầu vào / đầu ra của mô hình). Bất kỳ suy nghĩ và đề xuất được nhiều đánh giá cao. Cảm ơn bạn !


Hãy đọc arxiv.org/pdf/1511.00561.pdf "Chúng tôi sử dụng mất entropy chéo là chức năng mục tiêu để đào tạo mạng."
Cô Palmer

Câu trả lời:


5

Entropy chéo chắc chắn là con đường để đi. Tôi không biết Keras nhưng TF có cái này: https://www.tensorflow.org/api_docs/python/tf/nn/sigmoid_cross_entropy_with_logits

Đây là một bài báo trực tiếp thực hiện điều này: Mạng đầy đủ kết hợp cho phân đoạn ngữ nghĩa của Shelhamer et al.

Bài báo U-Net cũng là một triển khai ý tưởng rất thành công, sử dụng các kết nối bỏ qua để tránh mất độ phân giải không gian. Bạn có thể tìm thấy nhiều triển khai này trong mạng.

Từ kinh nghiệm cá nhân của tôi, trước tiên bạn có thể muốn bắt đầu với mạng bộ giải mã mã hóa đơn giản, nhưng không sử dụng các bước (hoặc strides = 1), nếu không, bạn sẽ mất rất nhiều độ phân giải vì quá trình lấy mẫu không hoàn hảo. Đi với kích thước hạt nhân nhỏ. Tôi không biết ứng dụng cụ thể của bạn nhưng ngay cả một mạng 2-3 lớp ẩn sẽ cho kết quả rất tốt. Sử dụng 32-64 kênh ở mỗi lớp. Bắt đầu đơn giản, 2 lớp ẩn, mỗi kênh 32 kênh, hạt nhân 3x3, stride = 1 và thử nghiệm các tham số theo cách cô lập để xem hiệu quả của chúng. Giữ kích thước luôn bằng với kích thước đầu vào cho người bắt đầu để tránh mất độ phân giải. Sau đó, bạn có thể bật các bước tiến và lấy mẫu và thực hiện các ý tưởng như U-Net. U-Net hoạt động rất tốt cho phân đoạn hình ảnh y tế.

αβ


Tôi không phải là chuyên gia trong lĩnh vực này, nhưng các lớp không nên độc quyền trong cài đặt này? Nếu có, mất softmax sẽ là lựa chọn tốt hơn? tensorflow.org/api_docs/python/tf/nn/...
Harald Thomson

1
@HaraldThomson, Phân khúc là một vấn đề nhị phân. Nhiều người sử dụng softmax cho các vấn đề nhị phân, nhưng nó hoàn toàn không cần thiết và quá mức cần thiết. Thay vì có hai nút đầu ra, hãy có một nút đầu ra đại diện cho P (y = 1), sau đó sử dụng entropy chéo.
Ricardo Cruz

2

Sử dụng Dice giảm cân và mất entropy chéo có trọng số. Mất xúc xắc là rất tốt cho phân khúc. Các trọng số bạn có thể bắt đầu phải là các tần số của lớp được đảo ngược, ví dụ như lấy một mẫu có nghĩa là 50-100, tìm số pixel trung bình thuộc về mỗi lớp và làm cho các lớp đó có trọng số 1 / trung bình. Bạn có thể phải tự thực hiện xúc xắc nhưng nó đơn giản. Ngoài ra, bạn có thể nhìn vào mất xúc xắc ngược và mất tiêu điểm


-1

Hãy để tôi cụ thể hơn lúc đầu, và sau đó tổng quát hơn. Tôi xin lỗi nếu tôi hiểu lầm bạn.

Tôi nghĩ rằng bạn đang nói về việc cần một mạng thần kinh tự động mã hóa bởi vì bạn đã đề cập đến mã hóa và giải mã, và bạn đã đề cập đến kích thước đầu vào giống như kích thước đầu ra. Nếu vậy, thì hàm mất mát của bạn dựa trên việc tái tạo vectơ đầu vào, nhưng cũng nén dữ liệu thành một vectơ ngắn hơn trong lớp ẩn giữa. Các lựa chọn sẽ đạt được sai số bình phương trung bình tối thiểu (đối với hồi quy) hoặc tỷ lệ logloss hoặc phân loại sai (để phân loại). Tuy nhiên, CNN không phải là thứ tôi đã thấy được sử dụng trong bộ mã hóa tự động, nhưng tôi nghĩ nó sẽ có thể và hữu ích để làm điều đó trong trường hợp bất biến dịch chuyển là quan trọng, chẳng hạn như phát hiện cạnh và đối tượng trong ảnh.

Tổng quát hơn, dường như bạn đang xây dựng một mô hình học máy rất phức tạp kể từ khi bạn đề cập đến CNN. CNN và các mô hình học sâu khác là một số mô hình học máy phức tạp nhất tồn tại.

Tuy nhiên, việc chọn kích thước, nhãn và chức năng mất giống như học máy cơ bản. Tôi nghĩ rằng bạn có thể ở trong đầu của bạn với học tập sâu. Bạn đã tham gia một lớp học về máy cũ đơn giản trước?


Điều này thậm chí còn cần thiết? Ví dụ, xem phương pháp Pixon .
Carl

đó là một cách tiếp cận hợp lệ: arxiv.org/pdf/1511.00561.pdf
Hoa hậu Palmer

"CNN và các mô hình học tập sâu khác là một số mô hình học máy phức tạp nhất tồn tại.". Tôi có xu hướng không đồng ý. Bản thân mô hình có thể phức tạp nhưng thực sự rất đơn giản để sử dụng với rất ít hiểu biết về lý thuyết. Đó là lý do của toàn bộ sự cường điệu về DL, ít lý thuyết, mô hình dễ viết và độ chính xác rất cao ...
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.