Định nghĩa và lý giải tổng quan về Backpropagation

deep-learning

#1

Anh/chị các bạn giải thích giúp em/mình về backpropagation. Mình thực sự đọc nhưng vẫn chưa nắm rõ được vấn đề này? mong mn ns rõ 1 cách tổng quan về nó ạ?


#2

Week 5 trong khóa Machine Learning của thầy andrew Ng có giải thích rất dễ hiểu về neural network. Bạn có thể tham khảo.


#3

Hiểu đơn giản, nó là quá trình tối ưu lại các tham số dựa trên gradient descent, mỗi 1 lần Back propagation như vật, tham số của mạng sẽ được tối ưu thêm 1 tý


#4

Chưa chuẩn nhé.

Backprogapation là quá trình tính gradient cho hệ số của từng layer kể từ layer cuối cùng.

Gradient Descent hoặc các thuật toán liên quan sử dụng các gradient này để cập nhật hệ số.


#5

back-propagation là để tính giá trị gradient cho từ trọng số của mô hình của bạn dựa vào giá trị của hàm loss. Gradient descent là thuật toán dùng để cập nhật trọng số của mô hình để mô hình tốt hơn dựa vào gradient được tính bằng back-propagation, ví dụ như Stochastic gradient descent, Momentum, Adam, Adagrad,… Theo mình hiểu là như vậy


#6

Đây là hình mình lấy từ bài viết này: https://towardsdatascience.com/how-to-build-your-own-neural-network-from-scratch-in-python-68998a08e4f6 Bạn có thể vào đây đọc thì sẽ rõ hơn.

Theo mình nghĩ thì thế này. Ban đầu ta có bộ tham số (weights, bias), sau khi dùng feed-forward thì đến cuối bạn sẽ tính ra được loss function ứng với bộ tham số đó. Như hình bạn cũng thấy, giá trị của loss function là cái để đánh giá bộ tham số của bạn tốt thế nào. Nếu bộ tham số của ta chưa phải là tối ưu thì ta cần phải giảm đi.

Và giảm như thế nào thì phải nhờ vào đạo hàm. Đạo hàm chính là hướng đi của hàm số. Khi dùng back-propagation chính là ta đang đi tính đạo hàm của loss function theo weights và bias. Khi chưa tối ưu thì kiểu gì khi tính đạo hàm cũng ra âm vì nó phải giảm để về giá trị tối ưu. Sau khi tính được đạo hàm thì sẽ chỉnh lại giá trị của weights và bias bằng cách cộng thêm giá trị âm này vào. Cứ làm như thế đến khi giá trị tối ưu thì thôi.

Lưu ý là:

  • Vì không thể tính thẳng đạo hàm của loss function theo weights và bias nên phải dùng chain rule.
  • Giá trị tham số của ta tốt quá cũng không tốt, vì có thể gây ra overfitting…

Theo mình hiểu là như vậy. Nếu có sai sót gì thì mong mọi người chỉ cho. =)


#7

Đây là một số chỗ bạn nói không chính xác (mình có bold để nhấn mạnh), mình khuyến khích bạn tìm hiểu lại đạo hàm (trên Wikipedia chẳng hạn) rồi đọc ngay bài Gradient Descent trên blog của anh Tiệp để hiểu.


#8

Cảm ơn cậu đã chỉ cho tớ. Tớ đã đi tìm hiểu và suy nghĩ lại thì thấy bị hiểu sai nghiêm trọng thật. Sau khi ngẫm lại thì tớ rút ra được thế này, không biết đã đúng chưa.

  • Đạo hàm là mô tả sự biến thiên của hàm số tại 1 điểm (Wiki). Tức là khi tính ra giá trị đạo hàm tại 1 điểm thì biết được hàm số đang có chiều tăng hay giảm.
  • Khi chưa tối ưu thì đạo hàm có thể âm hoặc dương.
  • Bộ tham số tăng lên hay giảm đi là do điều chỉnh tối ưu loss function chứ ko phải là cứ phải giảm nó đi.

#9

Đạo hàm là mô tả sự biến thiên của hàm số tại 1 điểm (Wiki). Tức là khi tính ra giá trị đạo hàm tại 1 điểm thì biết được hàm số đang có chiều tăng hay giảm.

Đạo hàm giúp cho ta biết được hướng + tốc độ thay đổi của hàm số tại điểm hiện tại. Trong hàm đa biến, thì gọi là gradient.

Khi chưa tối ưu thì đạo hàm có thể âm hoặc dương.

Chính xác là đạo hàm/gradient bằng 0 tại điểm cực tiểu hoặc cực đại (local optimal), nhưng tại điểm đó thì chưa chắc đã là tối ưu (global optimal).

Bộ tham số tăng lên hay giảm đi là do điều chỉnh tối ưu loss function chứ ko phải là cứ phải giảm nó đi.

Tăng lên hay giảm đi thì là do giá trị gradient tại điểm hiện tại quyết định (theo thuật toán gradient descent), gradient chỉ ra cho ta hướng để dẫn đến local optimum, ta dựa vào hướng đấy để update lại tham số/biến.


#10

Bạn có thể tham khảo thêm ở trang http://neuralnetworksanddeeplearning.com/chap2.html

Mình thấy giải thích khá dễ hiểu :slight_smile:


#11

Bạn có thể xem thêm giải thích của bạn syha, tuy nhiên theo mình thì việc hiểu đạo hàm tương đương hệ số góc của tiếp tuyến với hàm số f sẽ giúp bạn có cái nhìn trực quan hơn (về cả độ lớn và dấu, và tại sao phải di chuyển ngược với dấu của đạo hàm).

Bên cạnh đó, cho trường hợp bạn muốn hiểu tại sao mô hình lại bị underfiting hay overfitting, thì bạn nên tìm đọc về Tradeoff giữa Bias và Variance.


#12

Mình cảm ơn các bạn đã giải đáp.


#13

Bạn tick vào câu trả lời bạn thấy hợp lý nhất để đánh dấu câu hỏi đã được trả lời nhé. Cảm ơn bạn.


#14

Vâng nhưng em không phải chủ topic này nên không đánh dấu được ạ.


#15

Trong chương MULTILAYER NEURAL NETWORK VÀ BACKPROPAGATION sách anh Tiệp viết, có giải thích về cái này.

Không dễ hiểu, nhưng đầy đủ. Bạn xem qua xem.


#16

Mình thì hiểu đơn giản hơn. Ko quan tâm nhiều lắm đến Backpropagation hoạt động thế nào. Nhưng nó là phương pháp để tính đạo hàm. Mà đạo hàm thì dùng để tối ưu mô hình. Có bài viết này về Backpropagation bạn tham khảo xem:


#17

Mình cx đọc rồi nhưng hơi chưa hiểu nen mình ms hỏi ý.


#18

Vậy có bài này viết dễ hiểu hơn https://medium.com/binaryandmore/beginners-guide-to-deriving-and-implementing-backpropagation-e3c1a5a1e536

Đặc biệt 2 cái flowchart minh họa cho forward và back là đáng giá nhất bài này. Còn phần lý thuyết toán và code bỏ qua cũng dc