Bias Trong Thống Kê Là Gì

     

Bài này bản thân tổng hợp một số kĩ thuật để train model xuất sắc hơn, cũng như một số khái niệm bạn sẽ gặp khi thao tác làm việc với deep learning. Đầu tiên mình nói đến tầm quan trọng của vectorization, tiếp mình sẽ nói tới kĩ thuật mini-batch gradient descent với lượng dữ liệu lớn. Kế tiếp mình nói về bias, variance, cách reviews bias-variance trong mã sản phẩm và một trong những biện pháp để xử lý vấn đề high bias, high variance. Mình có giải thích về kinh nghiệm dropout để tránh overfitting. Phần cuối mình nói tới vanishing và exploding gradient, cũng tương tự giới thiệu một số trong những hàm activation function phổ cập và bí quyết chọn hàm activation.Bạn vẫn xem: Bias trong những thống kê là gì

Nội dung

Mini-batch gradient descent Bias và varianceDropoutActivation function

Vectorization

Ngay tự bài trước tiên về linear regression, mình đã trình làng về việc màn trình diễn và đo lường và thống kê dưới dạng vector. Việc biểu diễn bài toán dưới dạng vector vậy nên gọi là vectorization. Nó không chỉ có giúp code gọn gàng lại hơn nữa tăng tốc độ tính đoán một giải pháp đáng nói khi tiến hành các phép tính trên vector, ma trận so với for-loop.

Bạn đang xem: Bias trong thống kê là gì

View the code on Gist.

Bạn đang thấy nếu dùng for-loop mất hơn 4s nhằm nhân 2 vector trong khi dùng thư viện numpy để tính chỉ mất 0.01s. Vì sao lại như vậy nhỉ?

Giả sử bạn có 10 tấn hàng đề nghị vận gửi từ A cho B và bạn có một xe thiết lập với kỹ năng chở được 5 tấn mỗi lần. Vậy nếu chất đầy hàng mỗi lần chở thì chỉ việc 2 lần chạy là đưa hết số hàng. Tuy nhiên nếu những lần bạn chỉ hóa học 1 tấn sản phẩm lên xe nhằm chở đi thì xe đề nghị đi tới 10 lần để gửi hết số hàng.

Tương tự như vậy, khi nhân 2 vector nghỉ ngơi trên bạn cần thực hiện 10000000 phép tính nhân 2 số. đưa sử sản phẩm công nghệ tính rất có thể tính được tối đa 1000 phép tính nhân một lúc. Vấn đề bạn dùng for-loop giống như mỗi thời điểm bạn chỉ yêu thương cầu máy vi tính thực hiện tại một phép nhân, phải để nhân 2 vector sẽ nên 10000000 đơn vị chức năng thời gian. Tuy nhiên thư viện numpy sẽ tối ưu việc tính toán bằng cách yêu cầu máy tính thực hiện nay 1000 phép tính một lúc, tức là chỉ việc displaystylefrac100000001000 = 10000 1-1 vị thời gian để dứt phép nhân 2 vector. Vậy đề xuất là bài toán vectorization thường thì sẽ thống kê giám sát nhanh hơn.

Mini-batch gradient descent

Mini-batch gradient descent là gì

Ở trong thuật toán gradient descent, tại cách thứ hai khi ta tính đạo hàm của loss function với các biến. Trong bài xích linear regression, ta dùng toàn bộ các tài liệu trong dataset để tính đạo hàm rồi update bước 2:


*

Hình dưới là trình diễn biệc cập nhật hệ số trong gradient descent, điểm đỏ là giá chỉ trị bé dại nhất ta bắt buộc tìm, những điểm ở xung quanh cùng là giá trị khởi sinh sản của hệ số trong gradient descent. Ta rất có thể thấy vì không có nhiễu buộc phải batch gradient descent thì hệ số cập nhật trực tiếp theo sau 1 đường thẳng. Mini-batch thì mất quá nhiều thời gian hơn cùng còn đi chệch hướng mặc dù thì vẫn đến đạt điểm đỏ. Còn stochastic thì đi hơi lòng vòng nhằm đến đạt điểm đỏ cùng vì tài liệu quá nhiễu nên hoàn toàn có thể thuật toán gradient descent chỉ quanh điểm đỏ mà không tới được điểm đỏ (minimum point).


*

Giá trị thật tài liệu (ground truth) trọng điểm tâm những đường tròn. Những dấu X là các giá trị dự đoán. Ta thấy nếu như high bias thì giá trị dự kiến rất xa tâm. Tuy vậy nếu high variance thì các giá trị dự kiến phân tán rộng dẫn đến việc ra quý hiếm thực tế. => Ta mong muốn low bias và low variance.


*

Dropout giảm bớt việc overfitting

Overfitting là mô hình đang dùng quá tinh vi so với mô hình thật của dữ liệu. Khi ta sử dụng dropout như hình trên thì rõ ràng mô hình mặt phải dễ dàng và đơn giản hơn => kị overfitting.

Xem thêm: Tổng Hợp Đại Từ Nhân Xưng Tiếng Anh Là Gì, Đai Từ Nhân Xưng Trong Tiếng Anh (Phải Xem)

Thêm vào đó, vì từng bước một khi train mã sản phẩm thì tự nhiên (1-p%) những node bị loại bỏ nên model không thể dựa vào vào bất kì node làm sao của layer trước mà thế vào kia có xu thế trải hầu hết weight, y hệt như trong L2 regularization => tránh được overfitting.

Lời khuyên khi dùng dropout

Hệ số phường nên ở khoảng tầm . Nếu p. Quá nhỏ thì không có chức năng chống overfitting, mặc dù nếu p. Quá béo thì ngay gần như thải trừ layer đấy và tất cả dễ dẫn mang đến underfitting. Yêu cầu dùng model lớn, phức hợp hơn vày ta gồm dropout chống overfitting. Dropout chỉ nên dùng cho fully connected layer, không nhiều khi được sử dụng cho ConvNet layer Hệ số p. ở những layer đề xuất tỉ lệ với con số node vào FC layer đó.

Activation function

Non-linear activation function

Hàm activation function được sử dụng sau cách tính tổng linear trong neural network hoặc sau convolutional layer vào CNN. Với hàm activation là non-linear function.

Linear function là gì? Theo wiki, “a linear function from the real numbers lớn the real numbers is a function whose graph is a line in the plane “, tóm lại linear function là 1 trong những đường trực tiếp dạng y = a*x + b. Vậy sẽ như thế nào nếu hàm activation trong neural network là một trong linear function?

Giả sử hàm activation dạng y = f(x) = 2*x + 3 cùng neural network như sau:


*

*

Hàm sigmoid

Đạo hàm hàm sigmoid

displaystyle sigma(x)frac11+e^-x => fracd(sigma(x))dx = sigma(x) * (1 - sigma(x)), vì displaystyle sigma(x) > 0 =>sigma(x) * (1 - sigma(x))

ví dụ như displaystyle (frac14)^20 = 9 * 10^-13 nên nếu khách hàng nhìn vào bí quyết (1) sống trên thì ở hồ hết layer thứ nhất sẽ bị vanishing gradient,

Tanh activation function
Hàm ReLU

Hàm relu (rectified linear unit): displaystyle y = max(0, x)

Nhận xét:

Hàm ReLU activation đơn giản và dễ dàng để tính => thời gian train model nhanh hơn.Đạo hàm là 1 với x >= 0 nên không biến thành vanishing gradient.

Tuy nhiên với những node có giá trị nhỏ hơn 0, qua ReLU activation đã thành 0, hiện tượng kỳ lạ đấy hotline là “Dying ReLU“. Nếu những node bị gửi thành 0 thì sẽ không có chân thành và ý nghĩa với cách linear activation ở lớp tiếp sau và các hệ số tương ứng từ node đấy cũng không được update với gradient descent. => Leaky ReLU ra đời.

Leaky ReLU
Hàm Leaky ReLU

Hàm Leaky ReLU có những điểm giỏi của hàm ReLU và giải quyết và xử lý được sự việc Dying ReLU bằng cách xét một độ dốc nhỏ cho các giá trị âm thay vì chưng để quý giá là 0.

Xem thêm: Khái Niệm Hệ Thống Chính Trị, Mô Hình Tổ Chức Hệ Thống Chính Trị

Lời khuyên: khoác định nên dùng ReLU làm hàm activation. Không nên dùng hàm sigmoid.

Bài 11: Object detection với Faster R-CNNBài 9: Transfer learning cùng data augmentation