Ý tưởng là bạn muốn khởi tạo các trọng số theo cách đảm bảo luồng dữ liệu tiến và lùi tốt qua mạng. Đó là, bạn không muốn các kích hoạt liên tục bị thu hẹp hoặc tăng lên khi bạn phát triển qua mạng.
Hình ảnh này cho thấy các kích hoạt của Perceptionron 5 lớp ReLU theo 3 chiến lược khởi tạo khác nhau sau một lần vượt qua MNIST qua mạng.
Trong cả ba trường hợp, trọng số được rút ra từ phân phối chuẩn trung tâm bằng 0, được xác định bởi độ lệch chuẩn của nó. Bạn có thể thấy rằng nếu các trọng lượng ban đầu quá nhỏ (độ lệch chuẩn nhỏ) thì các kích hoạt sẽ bị nghẹt và nếu chúng quá lớn thì các kích hoạt sẽ phát nổ. Giá trị trung bình, gần đúng có thể được tìm thấy bằng cách đặt các trọng số sao cho phương sai của các kích hoạt và cập nhật độ dốc vẫn xấp xỉ như khi bạn đi qua mạng.
Tôi đã viết một bài đăng trên blog về khởi tạo trọng lượng đi vào chi tiết hơn, nhưng ý tưởng cơ bản là như sau.
Nếu biểu thị kích hoạt của lớp thứ , kích thước của lớp và các trọng số kết nối chúng với lớp thứ nhất , thì một có thể chỉ ra rằng đối với các hàm kích hoạt với chúng ta cóx(i)iniw(i)(i+1)ff′(s)≈1
Var(x(i+1))=niVar(x(i))Var(w(i))
Để đạt được do đó chúng ta phải áp đặt điều kiệnVar(x(i+1))=Var(x(i))
Var(w(i))=1ni.
Nếu chúng ta biểu thị bởi , trên đường chuyền ngược, chúng ta cũng muốn tương tự∂L∂x(i)jΔ(i)j
Var(Δ(i))=ni+1Var(Δ(i+1))Var(w(i)).
Trừ khi , chúng ta phải thỏa hiệp giữa hai điều kiện này và một lựa chọn hợp lý là trung bình điều hòani=ni+1
Var(w(i))=2ni+ni+1.
Nếu chúng tôi lấy mẫu trọng số từ phân phối bình thường chúng tôi đáp ứng điều kiện này với . Để phân phối đồng đều chúng ta nên lấy kể từ . Do đó, chúng tôi đã đến lúc khởi tạo Glorot. Ví dụ, đây là chiến lược khởi tạo mặc định cho các lớp chập dày đặc và 2D trong Keras.N(0,σ)σ=2ni+ni+1−−−−−√U(−a,a)a=6ni+ni+1−−−−−√Var(U(−a,a))=a2/3
Khởi tạo Glorot hoạt động khá tốt đối với các kích hoạt tầm thường và , nhưng không hoạt động tốt cho . May mắn thay, vì chỉ cần loại bỏ các đầu vào âm, nên nó sẽ loại bỏ một nửa phương sai và điều này dễ dàng được sửa đổi bằng cách nhân một trong hai điều kiện của chúng tôi với hai:tanhReLUf(s)=ReLU(s)
Var(w(i))=2ni.