Backpropagation với softmax và crossentropy

2021-08-17

Trong bài trước chúng ta đã tìm hiểu về hàm softmax. Trong này chúng ta sẽ đi phân tích thuật toán backpropagation với hàm softmax và crossentropy- thuật toán được ứng dụng trong mạng Neural Network rất thành công.

Chain rule

Trước này chúng ta đã biết cách tính đạo hàm cho hàm đơn giản như:

dx2dx=2x      dexdx=ex

Đối với các hàm phức hợp:

z1=z1(x1,x2)      z2=z2(x1,x2)      p=p(z1,z2)

trong đó z1,z2 khả vi. Khi đó chain rule có thể được hiểu như sau:

px=pz1z1x+pz2z2x

Tổng quát: nếu có hai hàm f(x)g(x) khả vi

  • h(x)=(fg)(x) cũng khả vi:
h(x)=f(g(x)) g(x)
  • y=f(u)u=g(x) khi đó:
dydx=dydu dudx

Ví dụ h(x)=f(x) g(x) ta có:

hx=hffx+hggx

Cross entropy

Trong bài toán multiclass classification chúng ta có giá trị thực tế yi, giá trị dự đoán y^i (đầu ra hàm softmax). Khi đó cross entropy loss được xác định như sau.

L=iyilog(y^i) y^(z)i=ezik=1nezk

Đi xác định đạo hàm của loss theo các predicted nodes (units).

Lzi=kyklog(y^k)zi=kyklog(y^k)y^k×y^kzi=kyk1y^k×y^kzi

Nhớ lại bài trước, đạo hàm của softmax theo từng thành phần

y^kzi=y^k(δkiy^i)

với

δki={1ifk=i0ifki

Do đó (3) tương đương với:

Lzi=kyk1y^k×y^k(δkiy^i)=yi1y^i×y^i(1y^i)kiyk1y^k×y^k(y^i)=yi(1y^i)+kiyky^i=yi+yiy^i+kiyky^i=yi+y^i(yi+kiyk)

Do tổng các phần tử của softmax bằng 1 hay kyk=yi+kiyk=1 nên chúng ta có:

Lzi=y^iyi    (4)

Kí hiệu wpq là weight kết nối units thứ p của layer trước với unit thứ q của output layer, ap là giá trị đầu ra của unit thứ p của layer trước, chúng ta có:

zk=iwikai+bkzkwpq=iaiwikwpq=iaiδipδkq=δkqap    (5)

Có biểu thức cuối do i theo chạy theo số units của layer trước và δip=1 khi i=p.

Chốt lại từ (4) và (5) chúng ta có:

Lwpq=kLzkzkwpq=k(y^kyk)δkqap=ap(y^qyq)

hay

Lwij=ai(y^jyj)

Như vậy chúng ta đã làm từng bước tính đạo hàm của loss so với weights cho output layer. Một cách tổng quát hơn.

Lwpq=iLy^iy^iwpq y^iwpq=ky^izkzkwpq

Kết hợp lại sẽ có:

Lwpq=i[Ly^i(ky^izkzkwpq)]

trong đó i,k đều chạy trong số units của output layer.

Đi vào một ví dụ cụ thể xem thế nào.

softmax layer

L=y1logy^1y2logy^2 y^1=ez1ez1+ez2 y^2=ez2ez1+ez2 z1=w11a1+w21a2+w31a3+b1 z2=w12a1+w22a2+w32a3+b2

Chúng ta sẽ đi tính đạo hàm của loss theo w21b1. Chúng ta đánh dấu đường đi (liên quan) cho dễ hiểu.

Phân quan tâm

Ly^1=y1y^1      Ly^2=y2y^2 y^1z1=y^1(1y^1)      y^2z1=y^1y^2 z1w21=a2      z1b1=1

Cuối cùng áp dụng chain rule cho w21 ta có:

Lw21=Ly^1y^1z1z1w21+Ly^2y^2z1z1w21=y1y^1[y^1(1y^1)]a2+y2y^2(y^2y^1)a2=a2(y1+y1y^1+y2y^1)=a2(y^1(y1+y2)y1)=a2(y^1y1)

Đối với b1 ta có:

Lb1=Ly^1y^1z1z1b1+Ly^2y^2z1z1b1=y1y^1[y^1(1y^1)]+y2y^2(y^2y^1)=y1+y1y^1+y2y^1=y^1(y1+y2)y1=y^1y1

Như vậy chúng ta đã cùng tìm hiểu backpropagation algorithm cho hệ số của output layer. Hy vọng các bạn tìm thấy điều gì hữu ích từ bài viết.

Tài liệu tham khảo

  1. https://peterroelants.github.io/posts/neural-network-implementation-part02/
  2. https://stats.stackexchange.com/questions/235528/backpropagation-with-softmax-cross-entropy
  3. https://en.wikipedia.org/wiki/Chain_rule#Higher_dimensions
  4. https://eli.thegreenplace.net/2016/the-softmax-function-and-its-derivative/