Adaptive learning rate

0 0 0

Người đăng: uwwu

Theo Viblo Asia

Chào các bạn, hôm nay mình sẽ nói về adaptive learning rate trong Deep learning 😎

Ý tưởng của Adaptive learning rate ? Và tại sao lại cần tới adaptive learning rate ?

image.png

Đầu tiên, các bạn nhìn vào ảnh bên phải (learning rate quá cao) và ảnh bên trái (leaning rate quá bé). Hai trường hợp này đều gây ra vấn đề cho quá trình training. Khi set lr quá cao, mô hình càng ngày càng đi xa khỏi vị trí optimal. Ngược lại, khi lr quá bé, mô hình tìm được điểm tối ưu, tuy nhiên mất nhiều thời gian (mà đôi khi chúng ta sẽ hết tài nguyên trước khi các tham số tới đích đến của mình như hình bên dưới 😛 image.png

Vậy thì, người ta mới nghĩ ra một hướng khác, là tại sao phải cho giá trị lr cố định (hoặc cao hoặc bé), mà không update nó. Vì thế nên chúng ta có Adaptive learning rate (Adaptive nghĩa là điều chỉnh). Trong đó, giá trị của các lr sẽ được giảm dần khi trong quá trình training. Các bạn có thể nhìn vào phần "just right" của ảnh đầu. Các learning rate được giảm từ từ, đảm bảo tính "đi nhanh" của model khi còn lâu mới tới optimal value, và "đi cẩn thận" khi sắp tới điểm tối ưu, vừa tiết kiệm tài nguyên gpu, thời gian, vừa tìm ra tham số tối ưu, còn gì bằng.

Các cách implement Adaptive learning rate

Oke, hi vọng khi đọc tới đây, bạn đã hòm hòm nắm được ý tưởng của Adaptive learning rate rồi. Bây giờ chúng ta sẽ đi tới phần làm thế nào để implement nó bây giờ 🤔

Cách 1: Gán thành một số mới sau một số lượng epoch nhất định

image.png

Đây là cách đơn giản nhất, ví dụ như ở hình trên:

  • ở 10 epochs đầu : 0.1
  • epochs 10-20: 0.05
  • epochs 20-35: 0.01 bla bla

Cách 2: Gán learning rate với một hàm số

Cách trên trông không được mượt cho lắm, mình sẽ tới với cách mới sau đây. Cụ thể, learning rate sẽ được gắn với một hàm liên tục. Có rất nhiều cách để chọn hàm:

Sử dụng AdaGrad

Thuật toán update tham số bằng công thức như sau:

θt+1=θtηGt+ϵgt\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{G_t + \epsilon}} \cdot g_t

Trong đó: gt: gradient tại iteration thứ t Gt: tổng gradient tích lũy Theta: learning rate Epsilon: hằng số thêm vào để tránh mẫu bằng 0 Như vậy, khi iteration càng lớn thì Gt càng lớn -> mẫu càng lớn -> learning rate càng nhỏ.

Tuy nhiên, AdaGrad không phải luôn hoạt động tốt trong mọi trường hợp. Vấn đề nằm ở Gt - gradient tích lũy, càng về sau quá trình training, Gt càng lớn. Gt ở mẫu, vì vậy mẫu càng lớn, phân số η​/sqrt(Gt + ϵ) càng nhỏ

-> tham số được update càng ít ít ít ít

-> mô hình hội tụ lâu lâu lâu lâu, thậm chí là không bao giờ : D

Như vậy, AdaGrad chỉ tốt cho các trường hợp điểm cực tiểu ở gần.

Sử dụng bản cải tiến của AdaGrad

Ưu điểm của AdaGrad là chia learning rate cho căn bậc hai của hàm tích lũy + epsilon. Nhưng đây cũng chính là yếu điểm của nó khi điểm cực tiểu ở xa. Câu hỏi đặt ra là, làm thế nào để vẫn giữ được tính chất của hàm tích lũy, mà không làm cho nó quá lớn dẫn tới learning rate quá nhỏ.

Cách cải thiện chính là dùng cửa sổ, nghĩa là thay vì lấy tích lũy ngay từ đầu thì chỉ lấy gradient của k lần gần nhất, hoặc giảm hệ số của các gradient (gradient càng xa hệ số càng bé). Để tìm hiểu thêm, các bạn có thể google thuật toán RMSProp.

Oke, bài viết của mình tới đây là kết thúc rồi, mình không chắc mình viết đúng hết nên các bạn nên double check nhé. Peace🌹

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu về DeepFaceLab công cụ để tạo ra Deepfake thật sự hoàn hảo

I.Làm thế nào 'Furious 7' đã đưa Paul Walker quá cố trở lại cuộc sống. Dưới đây là video. .

0 0 29

- vừa được xem lúc

Hiểu sâu về You Only Look One-YOLOv1

Object detection: bài toán phát hiện + nhận diện vật thể. Bước một là đi tìm vị trí của vật thể trong toàn ảnh rồi bao quanh vật thể ấy bằng một khung hình chữ nhật được gọi là bounding box.

0 0 25

- vừa được xem lúc

TOP 5 BLOG VỀ IT ĐÁNG ĐỌC

Vào những lúc rảnh rỗi, các bạn thường sẽ làm gì? Coi phim, đi chơi, ...Có ai như mình lúc rảnh thì tìm 1 chỗ yên tĩnh nào đó đeo tai phone nghe những bài nhạc chill và đọc truyện và tìm các blog hay

0 0 33

- vừa được xem lúc

Học với tôi(bebuoi1) : BLOG! -> Tại sao lại có cookie và session

Câu hỏi của mình : Tại sao lại có cookie và session trong khi đã có tài khoản mật khẩu . --Tk mk nó giống như 1 cái cccd rồi mà tại sao CÓ NGƯỜI NÓI COOKIE NÓ LẠI GIỐNG CCCD ĐỂ ĐỊNH DANH NHỈ.

0 0 16

- vừa được xem lúc

Tại Sao Sử Dụng Ứng Dụng Lark

Bạn muốn tìm hiểu cách sử dụng Lark Messenger đơn giản, hiệu quả nhất? Trong bài viết sau Tanca sẽ hướng dẫn bạn các bước từ cơ bản đến nâng cao, giúp bạn tận dụng tối đa công cụ giao tiếp Lark Messen

0 0 21

- vừa được xem lúc

Tóm Tắt : YOLOv10: Real-Time End-to-End Object Detection

Tổng quan những cải tiến chính của YOLOv10 bao gồm có:. . NMS-Free Training. Spatial-channel decoupled downspamling.

0 0 22