Có hai bài viết gần đây về một số tính chất hình học của các mạng nơ ron sâu với các phi tuyến tuyến tính từng phần (bao gồm kích hoạt ReLU):
- Về số lượng các khu vực tuyến tính của mạng lưới thần kinh sâu của Montufar, Pascanu, Cho và Bengio.
- Về số lượng các vùng phản ứng của các mạng chuyển tiếp nguồn cấp dữ liệu sâu với các kích hoạt tuyến tính khôn ngoan của Pascanu, Montufar và Bengio.
Họ cung cấp một số lý thuyết và sự nghiêm ngặt cần thiết khi nói đến mạng lưới thần kinh.
Trung tâm phân tích của họ xung quanh ý tưởng rằng:
các mạng sâu có thể tách không gian đầu vào của chúng thành các vùng phản ứng tuyến tính theo cấp số nhân hơn so với các đối tác nông của chúng, mặc dù sử dụng cùng một số đơn vị tính toán.
Do đó, chúng ta có thể giải thích các mạng nơ ron sâu với các kích hoạt tuyến tính từng phần khi phân vùng không gian đầu vào thành một loạt các vùng và trên mỗi vùng là một số siêu mặt tuyến tính.
Trong đồ họa mà bạn đã tham chiếu, lưu ý rằng các nhóm (x, y) khác nhau có các siêu phẳng tuyến tính trên chúng (dường như là các mặt phẳng nghiêng hoặc các mặt phẳng). Vì vậy, chúng tôi thấy giả thuyết từ hai bài viết trên hoạt động trong đồ họa được tham chiếu của bạn.
Hơn nữa, họ nêu (nhấn mạnh từ các đồng tác giả):
các mạng sâu có thể xác định số lượng vùng lân cận đầu vào theo cấp số nhân bằng cách ánh xạ chúng tới đầu ra chung của một số lớp ẩn trung gian. Các tính toán được thực hiện trên các kích hoạt của lớp trung gian này được nhân rộng nhiều lần, một lần trong mỗi khu phố được xác định. Điều này cho phép các mạng tính toán các hàm tìm kiếm rất phức tạp ngay cả khi chúng được xác định với tương đối ít tham số.
Về cơ bản, đây là cơ chế cho phép các mạng sâu có các biểu diễn tính năng cực kỳ mạnh mẽ và đa dạng mặc dù có số lượng tham số ít hơn so với các đối tác nông của chúng. Đặc biệt, các mạng nơ ron sâu có thể tìm hiểu số mũ của các vùng tuyến tính này. Lấy ví dụ, Định lý 8 từ bài viết được tham chiếu đầu tiên, trong đó nêu rõ:
Ln0kkL - 1kn0
Đây là một lần nữa cho các mạng thần kinh sâu với kích hoạt tuyến tính từng phần, như ReLUs chẳng hạn. Nếu bạn đã sử dụng các kích hoạt giống như sigmoid, bạn sẽ có các bề mặt siêu hình sin trông mượt mà hơn. Hiện nay, rất nhiều nhà nghiên cứu sử dụng ReLU hoặc một số biến thể của ReLU (ReLU bị rò rỉ, PReLU, ELU, RReLU, danh sách vẫn tiếp tục) vì cấu trúc tuyến tính piecewise của họ cho phép tạo độ dốc ngược tốt hơn so với các đơn vị sigmoidal có thể bão hòa tốt hơn khu vực tiệm cận) và tiêu diệt hiệu quả gradient.
Kết quả theo cấp số nhân này là rất quan trọng, nếu không thì tuyến tính từng phần có thể không thể biểu diễn một cách hiệu quả các loại hàm phi tuyến mà chúng ta phải học khi nói về thị giác máy tính hoặc các tác vụ học máy cứng khác. Tuy nhiên, chúng tôi có kết quả theo cấp số nhân này và do đó, các mạng sâu này có thể (về lý thuyết) có thể học tất cả các loại phi tuyến bằng cách xấp xỉ chúng với một số lượng lớn các vùng tuyến tính.
y= f( x1, x2)
Nếu bạn muốn kiểm tra trực giác của mình, có rất nhiều gói học sâu tuyệt vời có sẵn trong những ngày này: Theano (Lasagne, No Learn và Keras được xây dựng trên nó), TensorFlow, một loạt các gói khác tôi chắc chắn tôi sẽ rời đi ngoài. Những gói học sâu này sẽ tính toán backpropagation cho bạn. Tuy nhiên, đối với một vấn đề quy mô nhỏ hơn như vấn đề bạn đã đề cập, thực sự nên tự mình viết mã backpropagation, chỉ cần thực hiện một lần và tìm hiểu cách kiểm tra độ dốc. Nhưng như tôi đã nói, nếu bạn chỉ muốn dùng thử và hình dung nó, bạn có thể bắt đầu khá nhanh với các gói học sâu này.
Nếu một người có thể đào tạo mạng đúng cách (chúng tôi sử dụng đủ điểm dữ liệu, khởi tạo mạng đúng cách, đào tạo tốt, thì đây là vấn đề hoàn toàn khác của chính nó), sau đó, một cách để hình dung những gì mạng của chúng tôi đã học, trong trường hợp này , một siêu mặt, là chỉ vẽ biểu đồ siêu mặt của chúng ta trên một lưới xy hoặc lưới và trực quan hóa nó.
Nếu trực giác trên là chính xác, thì sử dụng lưới sâu với ReLU, mạng sâu của chúng ta sẽ học được số lượng vùng theo cấp số nhân, mỗi vùng có siêu mặt tuyến tính riêng. Tất nhiên, toàn bộ vấn đề là bởi vì chúng ta có nhiều theo cấp số nhân, các phép tính gần đúng tuyến tính có thể trở nên rất tốt và chúng ta không nhận thấy sự lởm chởm của tất cả, vì chúng ta đã sử dụng một mạng đủ sâu / đủ lớn.