Tại sao chúng ta phải bình thường hóa đầu vào cho một mạng thần kinh nhân tạo?


151

Đây là một câu hỏi chính, liên quan đến lý thuyết về mạng lưới thần kinh:

Tại sao chúng ta phải bình thường hóa đầu vào cho một mạng thần kinh?

Tôi hiểu rằng đôi khi, ví dụ, khi các giá trị đầu vào không phải là số, một phép biến đổi nhất định phải được thực hiện, nhưng khi chúng ta có đầu vào số? Tại sao các số phải trong một khoảng nhất định?

Điều gì sẽ xảy ra nếu dữ liệu không được chuẩn hóa?


1
Tôi đang bỏ phiếu để đóng câu hỏi này ngoài chủ đề vì nó thuộc về Thống kê SE hoặc AI SE.
nbro

Câu trả lời:


101

Nó được giải thích tốt ở đây .

Nếu các biến đầu vào được kết hợp tuyến tính, như trong MLP [perceptionron đa lớp], thì hiếm khi cần phải chuẩn hóa các đầu vào, ít nhất là trên lý thuyết. Lý do là bất kỳ việc thay đổi kích thước của vectơ đầu vào đều có thể được phục hồi một cách hiệu quả bằng cách thay đổi các trọng số và độ lệch tương ứng, để lại cho bạn các đầu ra chính xác như bạn đã có trước đó. Tuy nhiên, có nhiều lý do thực tế tại sao tiêu chuẩn hóa đầu vào có thể giúp đào tạo nhanh hơn và giảm khả năng bị mắc kẹt trong tối ưu cục bộ. Ngoài ra, phân rã trọng lượng và ước tính Bayes có thể được thực hiện thuận tiện hơn với các đầu vào được tiêu chuẩn hóa.


2
Xin chào, trong MLPs, không thể tiêu chuẩn hóa các tính năng trong khi sử dụng tốc độ học tập không đổi gây ra tình trạng thừa / thiếu trong điều chỉnh backpropagation cho các kích thước khác nhau? Tôi đang tự hỏi từ bài đăng sau đây nếu điều này là độc quyền cho CNN, hoặc nếu MLP có thể chia sẻ vấn đề này: stats.stackexchange.com/questions/185853/ Lỗi
Austin

Vấn đề: Gradient Descent opt. quá trình có thể mất nhiều thời gian hơn. Tại sao? Khi các tính năng có tỷ lệ khác nhau (x1 = 0-1 và x2 = 0..1000), bề mặt hàm lỗi có thể bị kéo dài. Ý nghĩa: các thang đo khác nhau cho các độ mờ khác nhau (w1, w2). Nhưng tốc độ học tập là CÙNG cho tất cả các độ mờ -> các bước trong độ mờ kéo dài (w2) là rất nhỏ cho đến khi đạt đến mức tối thiểu cục bộ. Vấn đề: Không thể inc LR, vì nó sẽ bỏ qua min cục bộ trong mờ khác (w1). Xem bản demo tại youtube.com/watch?reload=9&v=UIp2CMI0748
Dekel

Dưới đây là một ví dụ tuyến tính, nơi mọi thứ rất tồi tệ mà không mở rộng: stackoverflow.com/q/59319643 . Bất cứ ý tưởng tại sao?
Luôn luôn học tập

61

Trong các mạng thần kinh, ý tưởng tốt không chỉ là bình thường hóa dữ liệu mà còn mở rộng chúng. Điều này nhằm mục đích tiếp cận nhanh hơn với cực tiểu toàn cầu ở bề mặt lỗi. Xem hình sau: lỗi bề mặt trước và sau khi chuẩn hóa

lỗi bề mặt trước và sau khi chia tỷ lệ

Hình ảnh được lấy từ khóa học coursera về mạng lưới thần kinh. Tác giả của khóa học là Geoffrey Hinton.


14
Thật tuyệt khi bạn tin vào tác giả của hình ảnh mà bạn đã đăng. Đồ họa rõ ràng được lấy từ khóa học coursera của Geoffrey Hinton .
Ricardo Cruz

5
Tôi thấy video này thực sự hữu ích trong việc giải thích sơ đồ ở trên, bản thân nó không rõ ràng.
chris838

21

Một số đầu vào cho NN có thể không có phạm vi giá trị 'được xác định tự nhiên'. Ví dụ: giá trị trung bình có thể chậm, nhưng liên tục tăng theo thời gian (ví dụ: một số bản ghi trong cơ sở dữ liệu).

Trong trường hợp như vậy, việc cung cấp giá trị thô này vào mạng của bạn sẽ không hoạt động tốt. Bạn sẽ dạy cho mạng của mình về các giá trị từ phần dưới của phạm vi, trong khi các đầu vào thực tế sẽ từ phần cao hơn của phạm vi này (và hoàn toàn có thể ở trên phạm vi, mà mạng đã học để làm việc với).

Bạn nên bình thường hóa giá trị này. Ví dụ, bạn có thể cho mạng biết giá trị đã thay đổi bao nhiêu kể từ đầu vào trước đó. Sự gia tăng này thường có thể được xác định với xác suất cao trong một phạm vi cụ thể, điều này làm cho nó trở thành một đầu vào tốt cho mạng.


Gợi ý hay về việc bình thường hóa các bộ đầu vào trước đó. Điều này giúp người dùng xác định hệ số chuẩn hóa tùy ý. Tuy nhiên tôi nghi ngờ mạng sẽ đào tạo chính xác hơn nếu hệ số chuẩn hóa là hằng số toàn cầu được áp dụng cho mỗi vectơ đầu vào.
davide

11

Nhìn vào mạng lưới thần kinh từ bên ngoài, nó chỉ là một hàm lấy một số đối số và tạo ra kết quả. Như với tất cả các chức năng, nó có một miền (tức là một tập hợp các đối số pháp lý). Bạn phải bình thường hóa các giá trị mà bạn muốn truyền vào mạng lưới thần kinh để đảm bảo rằng nó nằm trong miền. Như với tất cả các hàm, nếu các đối số không nằm trong miền, kết quả không được đảm bảo là phù hợp.

Hành vi chính xác của mạng lưới thần kinh đối với các đối số bên ngoài miền phụ thuộc vào việc triển khai mạng lưới thần kinh. Nhưng nhìn chung, kết quả là vô ích nếu các đối số không nằm trong miền.


16
Nếu bạn sử dụng chức năng kích hoạt thông thường (ReLu hoặc Sigmoid), tên miền luôn là toàn bộ không gian R ^ n. Vì vậy, đây không thể là lý do để bình thường hóa dữ liệu.
Joker123

1
Điều này cũng không giải thích tại sao hình ảnh được chuẩn hóa, vì chúng đã có miền 0-255
DollarAkshay

4

Có 2 lý do khiến chúng ta phải bình thường hóa các tính năng đầu vào trước khi đưa chúng vào mạng thần kinh:

Lý do 1 : Nếu một Featuretrong Datasetphạm vi lớn so với các quy mô khác thì tính năng quy mô lớn này sẽ chiếm ưu thế và do đó, Dự đoán của Mạng thần kinh sẽ không chính xác.

Ví dụ : Trong trường hợp Dữ liệu nhân viên, nếu chúng tôi xem xét Tuổi và Mức lương, Tuổi sẽ là Số có hai chữ số trong khi Mức lương có thể là 7 hoặc 8 chữ số (1 triệu, v.v.). Trong trường hợp đó, Mức lương sẽ chi phối Dự đoán về Mạng lưới thần kinh. Nhưng nếu chúng ta Bình thường hóa các Tính năng đó, Giá trị của cả hai Tính năng sẽ nằm trong Phạm vi từ (0 đến 1).

Lý do 2 : Tuyên truyền trước về Mạng nơ-ron liên quan đến Sản phẩm chấm có trọng lượng với các tính năng đầu vào. Vì vậy, nếu Giá trị rất cao (đối với Dữ liệu hình ảnh và Không hình ảnh), Tính toán đầu ra mất rất nhiều thời gian tính toán cũng như bộ nhớ. Tương tự là trường hợp trong Back Propagation. Do đó, Model hội tụ chậm, nếu Đầu vào không được chuẩn hóa.

Ví dụ : Nếu chúng tôi thực hiện Phân loại hình ảnh, Kích thước của hình ảnh sẽ rất lớn, vì Giá trị của mỗi Pixel nằm trong khoảng từ 0 đến 255. Chuẩn hóa trong trường hợp này là rất quan trọng.

Đề cập dưới đây là những trường hợp mà Chuẩn hóa là rất quan trọng:

  1. Phương tiện
  2. K-Gần-Hàng xóm
  3. Phân tích thành phần chính (PCA)
  4. Xuống dốc

2

Tôi tin rằng câu trả lời phụ thuộc vào kịch bản.

Coi NN (mạng nơ ron) là toán tử F, sao cho F (đầu vào) = đầu ra . Trong trường hợp mối quan hệ này là tuyến tính sao cho đầu ra F (A *) = A * , thì bạn có thể chọn để đầu vào / đầu ra không được chuẩn hóa ở dạng thô hoặc bình thường hóa cả hai để loại bỏ A. Rõ ràng giả định tuyến tính này là đã vi phạm trong các tác vụ phân loại hoặc gần như bất kỳ tác vụ nào đưa ra xác suất, trong đó đầu ra F (A *) = 1 *

Trong thực tế, chuẩn hóa cho phép các mạng không thể điều khiển được có thể điều chỉnh được, điều này rất quan trọng đối với các nhà thí nghiệm / lập trình viên. Tuy nhiên, tác động chính xác của chuẩn hóa sẽ không chỉ phụ thuộc vào kiến ​​trúc / thuật toán mạng mà còn phụ thuộc vào thống kê trước cho đầu vào và đầu ra.

Hơn nữa, NN thường được triển khai để giải quyết các vấn đề rất khó khăn theo kiểu hộp đen, điều đó có nghĩa là vấn đề tiềm ẩn có thể có công thức thống kê rất kém, khiến cho việc đánh giá tác động của bình thường hóa trở nên khó khăn, gây ra lợi thế kỹ thuật (trở nên khó khăn) để chi phối tác động của nó trên các số liệu thống kê.

Theo nghĩa thống kê, chuẩn hóa loại bỏ biến thể được cho là không có nguyên nhân trong dự đoán đầu ra, để ngăn NN học biến thể này như một công cụ dự đoán ( NN không thấy biến thể này, do đó không thể sử dụng biến thể này ).


2

Khi bạn sử dụng các tính năng đầu vào không chuẩn hóa, chức năng mất có thể có các thung lũng rất dài. Khi tối ưu hóa với độ dốc giảm dần, điều này trở thành một vấn đề vì độ dốc sẽ dốc đối với một số tham số. Điều đó dẫn đến những dao động lớn trong không gian tìm kiếm, khi bạn đang nảy giữa các sườn dốc. Để bù đắp, bạn phải ổn định tối ưu hóa với tỷ lệ học tập nhỏ.

Hãy xem xét các tính năng x1 và x2, trong đó phạm vi tương ứng từ 0 đến 1 và 0 đến 1 triệu. Nó chỉ ra các tỷ lệ cho các tham số tương ứng (giả sử, w1 và w2) cũng sẽ lớn.

Bình thường hóa có xu hướng làm cho chức năng mất đối xứng / hình cầu hơn. Đây là những cách dễ dàng hơn để tối ưu hóa vì độ dốc có xu hướng hướng tới mức tối thiểu toàn cầu và bạn có thể thực hiện các bước lớn hơn.


1

Lý do chuẩn hóa là cần thiết là bởi vì nếu bạn nhìn vào cách một bước thích ứng tiến hành ở một nơi trong miền của hàm và bạn chỉ đơn giản chuyển vấn đề sang tương đương với bước tương tự được dịch bởi một số giá trị lớn theo hướng nào đó theo tên miền, sau đó bạn nhận được kết quả khác nhau. Nó tập trung vào câu hỏi thích ứng một đoạn tuyến tính với một điểm dữ liệu. Mảnh này nên di chuyển bao nhiêu mà không quay và nó sẽ xoay bao nhiêu để đáp ứng với điểm huấn luyện đó? Thật vô nghĩa khi có một quy trình thích ứng thay đổi trong các phần khác nhau của miền! Vì vậy, bình thường hóa là cần thiết để giảm sự khác biệt trong kết quả đào tạo. Tôi chưa viết điều này, nhưng bạn chỉ có thể nhìn vào toán học cho một hàm tuyến tính đơn giản và cách nó được đào tạo bởi một điểm đào tạo ở hai nơi khác nhau. Vấn đề này có thể đã được sửa chữa ở một số nơi, nhưng tôi không quen với chúng. Trong ALN, vấn đề đã được khắc phục và tôi có thể gửi cho bạn một tờ giấy nếu bạn viết thư cho wwarmstrong AT Shaw.ca


-9

Các lớp ẩn được sử dụng phù hợp với sự phức tạp của dữ liệu của chúng tôi. Nếu chúng ta có dữ liệu đầu vào có thể phân tách tuyến tính thì chúng ta không cần sử dụng lớp ẩn, ví dụ như cổng OR nhưng nếu chúng ta có dữ liệu không tách rời tuyến tính thì chúng ta cần sử dụng lớp ẩn ví dụ cổng logic ExOR. Số lượng nút được lấy ở bất kỳ lớp nào phụ thuộc vào mức độ xác nhận chéo của đầu ra của chúng tôi.

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.