Có nên sử dụng CNN để phân loại tín hiệu 1D không?


20

Tôi đang làm việc trên phân loại giai đoạn giấc ngủ. Tôi đọc một số bài viết nghiên cứu về chủ đề này, nhiều người trong số họ đã sử dụng phương pháp SVM hoặc tập hợp. Có phải là một ý tưởng tốt để sử dụng mạng thần kinh tích chập để phân loại tín hiệu EEG một chiều?
Tôi là người mới với loại công việc này. Xin lỗi nếu tôi hỏi điều gì sai?


Tín hiệu 1D có thể được chuyển đổi thành tín hiệu 2D bằng cách chia tín hiệu thành các khung và lấy FFT của từng khung. Đối với âm thanh này là khá hiếm.
MSalters

Câu trả lời:


23

Tôi đoán rằng bằng tín hiệu 1D, bạn có nghĩa là dữ liệu chuỗi thời gian, trong đó bạn giả sử sự phụ thuộc tạm thời giữa các giá trị. Trong những trường hợp như vậy, mạng nơ ron tích chập (CNN) là một trong những cách tiếp cận có thể. Phổ biến phương pháp mạng nơron nhất để dữ liệu đó là sử dụng mạng thần kinh tái phát (RNN), nhưng bạn có thể lựa chọn sử dụng CNNs, hoặc phương pháp lai (mạng thần kinh gần như tái phát, QRNN) như đã trình bày bởi Bradbury et al (2016) , và cũng có thể minh họa trên hình của họ dưới đây. Ngoài ra còn có các cách tiếp cận khác, như sử dụng sự chú ý một mình, như trong mạng Transformer được mô tả bởi Vaswani et al (2017) , trong đó thông tin về thời gian được truyền qua các tính năng của loạt Fourier .

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

Với RNN , bạn sẽ sử dụng một ô lấy trạng thái ẩn trước đó và giá trị đầu vào hiện tại, để trả về đầu ra và trạng thái ẩn khác, để thông tin chảy qua các trạng thái ẩn . Với CNN, bạn sẽ sử dụng cửa sổ trượt có chiều rộng nào đó, trông sẽ có các mẫu (đã học) nhất định trong dữ liệu và xếp chồng các cửa sổ đó lên nhau, để các cửa sổ cấp cao hơn sẽ tìm các mẫu trong cấp thấp hơn hoa văn. Sử dụng các cửa sổ trượt như vậy có thể hữu ích cho việc tìm kiếm những thứ như lặp lại các mẫu trong dữ liệu (ví dụ: các mẫu theo mùa). Các lớp QRNN trộn cả hai cách tiếp cận. Trên thực tế, một trong những lợi thế của kiến ​​trúc CNN và QRNN là chúng nhanh hơn RNN .


11

Bạn chắc chắn có thể sử dụng CNN để phân loại tín hiệu 1D. Vì bạn quan tâm đến phân loại giai đoạn giấc ngủ, xem bài báo này . Mạng lưới thần kinh sâu của nó được gọi là DeepS ngủNet và sử dụng kết hợp các lớp chập 1D và LSTM để phân loại tín hiệu EEG thành các giai đoạn ngủ.

Đây là kiến ​​trúc:

DeepS ngủNet

Có hai phần vào mạng:

  • Các lớp học đại diện: Điều này bao gồm hai mạng tích chập song song. Sự khác biệt chính giữa hai mạng là kích thước hạt nhân và kích thước cửa sổ gộp tối đa. Bên trái, một kích thước sử dụng kernel = (nơi là tỷ lệ lấy mẫu của tín hiệu) trong khi một trong những những ứng dụng đúng kernel size = . Trực giác đằng sau điều này là một mạng cố gắng học các tính năng "tốt" (hoặc tần số cao) và mạng còn lại cố gắng học các tính năng "thô" (hoặc tần số thấp).Fs/2FsFs×4
  • Các lớp học tuần tự: Các lớp nhúng (hoặc các tính năng đã học) từ các lớp chập được nối và đưa vào các lớp LSTM để tìm hiểu các phụ thuộc tạm thời giữa các lớp nhúng.

Cuối cùng, có một lớp softmax 5 chiều để phân loại chuỗi thời gian thành một trong năm lớp tương ứng với các giai đoạn ngủ.


4

Tôi muốn nhấn mạnh việc sử dụng phương pháp lai xếp chồng (CNN + RNN) để xử lý các chuỗi dài :

  • Như bạn có thể biết, CNN 1D không nhạy cảm với thứ tự dấu thời gian (không vượt quá quy mô địa phương); tất nhiên, bằng cách xếp chồng nhiều lớp chập và gộp lại với nhau, các lớp cuối cùng có thể quan sát các chuỗi con dài hơn của đầu vào ban đầu. Tuy nhiên, đó có thể không phải là một cách tiếp cận hiệu quả để mô hình các phụ thuộc dài hạn. Mặc dù, CNN rất nhanh so với RNN.

  • Mặt khác, RNN rất nhạy cảm với thứ tự dấu thời gian và do đó có thể mô hình hóa các phụ thuộc thời gian rất tốt. Tuy nhiên, họ được biết là yếu trong việc mô hình hóa các phụ thuộc rất dài hạn, trong đó dấu thời gian có thể có sự phụ thuộc tạm thời với dấu thời gian rất xa trong đầu vào. Hơn nữa, chúng rất chậm khi số lượng dấu thời gian cao.

Vì vậy, một cách tiếp cận hiệu quả có thể là kết hợp các CNN và RNN theo cách này: đầu tiên chúng tôi sử dụng các lớp chập và gộp để giảm tính chiều của đầu vào. Điều này sẽ cung cấp cho chúng tôi một đại diện khá nén của đầu vào ban đầu với các tính năng cấp cao hơn. Sau đó, chúng ta có thể cung cấp chuỗi 1D ngắn hơn này cho RNN để xử lý thêm. Vì vậy, chúng tôi đang tận dụng tốc độ của CNN cũng như khả năng đại diện của RNN cùng một lúc. Mặc dù, giống như bất kỳ phương pháp nào khác, bạn nên thử nghiệm điều này trên trường hợp sử dụng và bộ dữ liệu cụ thể của bạn để tìm hiểu xem nó có hiệu quả hay không.

Dưới đây là một minh họa sơ bộ của phương pháp này:

--------------------------
-                        -
-   long 1D sequence     -
-                        -
--------------------------
            |
            |
            v
==========================
=                        =
=  Conv + Pooling layers =
=                        =
==========================
            |
            |
            v
---------------------------
-                         -
- Shorter representations -
-     (higher-level       -
-      CNN features)      -
-                         -
---------------------------
            |
            |
            v
===========================
=                         = 
=  (stack of) RNN layers  =
=                         =
===========================
            |
            |
            v
===============================
=                             =
= classifier, regressor, etc. =
=                             =
===============================

4

FWIW, tôi sẽ khuyên bạn nên kiểm tra Mạng kết hợp tạm thời từ bài viết này (Tôi không phải là tác giả). Họ có một ý tưởng gọn gàng để sử dụng CNN cho dữ liệu chuỗi thời gian, nhạy cảm với thứ tự thời gian và có thể mô hình hóa các chuỗi dài tùy ý (nhưng không có bộ nhớ).

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

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.