Neural Network Fundamental 3: Forward Propagation In A Deep Network, Loss Function
Phần trước tôi đã trình bày biểu diễn của mạng neural với 2 lớp, ở phần này tôi sẽ trình bày tiếp mạng neural với nhiều lớp Trên là ví dụ cho mạng neural có 4 lớp (ta không đếm lớp input) . Tổng quát hóa cho mạng có L lớp ta có các ký hiệu sau L: số lớp, ở ví dụ trên L = 4 n[l]n^{[l]} ...
Phần trước tôi đã trình bày biểu diễn của mạng neural với 2 lớp, ở phần này tôi sẽ trình bày tiếp mạng neural với nhiều lớp Trên là ví dụ cho mạng neural có 4 lớp (ta không đếm lớp input) . Tổng quát hóa cho mạng có L lớp ta có các ký hiệu sau
- L: số lớp, ở ví dụ trên L = 4
- n[l]n^{[l]}n[l]: số node ở lớp l trong đó ta đánh số từ lớp input có l = 0. Ví dụ trên thì n[1]=5n^{[1]} = 5n[1]=5, n[2]=5n^{[2]} = 5n[2]=5, n[L]=n^{[L]} = n[L]= số node ở lớp output =1= 1=1
- a[l]a^{[l]}a[l]: activation vector ở lớp thứ n a[l]=g(z[l])a^{[l]} = g(z^{[l]})a[l]=g(z[l]), a[0]=xa^{[0]} = xa[0]=x (vector input), a[L]=y^a^{[L]} = hat y a[L]=y^
- w[l]w^{[l]}w[l]: weight matrix để chuyển từ z[l−1]z^{[l - 1]}z[l−1] tới z[l]z^{[l]}z[l]
- b[l]b^{[l]}b[l] bias vector để chuyển từ z[l−1]z^{[l - 1]}z[l−1] tới z[l]z^{[l]}z[l]
Các bài trước đã trình bày binary classification phân loại có hay không, phần này sẽ trình bày multi-class classification, một loại phân loại phổ quát hơn. Multi-class classification là từ input ta phân loại ra n class khác nhau. Ví dụ input là một matrix chứa các pixel của một bức ảnh, ta phân loại bức ảnh đó theo 1 loại trong số: ảnh chó, ảnh người, ảnh mèo, ảnh ô tô, ảnh xe đạp. Muốn vậy ở lớp output ta sẽ có n node mà mỗi node biểu hiện xác suất của loại c nếu ta biết được input x: p(y=c∣x)p(y = c|x)p(y=c∣x) Khi ấy hàm softmax rất thích hợp để sử dụng như là activation function ở output layer
o(a)=softmax(a)=[exp(a1)∑iexp(ai)...exp(aC)∑iexp(ai)]⊺o(a) = softmax(a) = egin{bmatrix}frac{exp(a_1)}{sum_{i}exp(a_i)} & ... & frac{exp(a_C)}{sum_{i}exp(a_i)} end{bmatrix}^intercalo(a)=softmax(a)=[∑iexp(ai)exp(a1)...∑iexp(ai)exp(aC)]⊺
Trông có vẻ phức tạp nhưng ta hãy phân tích một chút
- Input là 1 vector, output cũng là 1 vector
- Phần tử thứ nhất: tử số là eee mũ số thứ nhất của vector cũ, mẫu số là tổng của eee mũ của tất cả các phần tử của vector cũ. Các phần tử tiếp theo cũng tương tự
Hàm softmax thích hợp để biểu diễn xác suất của mỗi class vì
- Các phần tử đều >0>0>0 và ≤1leq1≤1
- Tổng của tất cả phẩn tử =1= 1=1
Ví dụ ở bài toán phân loại ảnh chó, ảnh người, ảnh mèo, ảnh ô tô, ảnh xe đạp ở trên, sau khi áp dụng softmax ở output layer ta có vector [0.80.050.050.050.05]⊺egin{bmatrix}0.8&0.05&0.05&0.05&0.05end{bmatrix}^intercal[0.80.050.050.050.05]⊺ Ta biết xác suất là ảnh chó là 0.8, là ảnh người là 0.05... Do đó ta có thể kết luận là ảnh chó vì có xác xuất lớn hơn các loại còn lại.
Thực hiện việc tính toán với từng hidden layer → ightarrow→ output layer tương tự như với mạng neural có 2 lớp.
-
Với hidden layer thứ nhất: z[1]=W[1]a[0]+b[1](a[0]=x)z^{[1]} = W^{[1]}a^{[0]} + b^{[1]} quad (a^{[0]} = x)z[1]=W[1]a[0]+b[1](a[0]=x)
a[1]=g(z[1])a^{[1]} = g(z^{[1]})a[1]=g(z[1]) -
Hidden layer thứ hai: z[2]=W[2]a[1]+b[2]z^{[2]} = W^{[2]}a^{[1]} + b^{[2]}z[2]=W[2]a[1]+b[2]
a[2]=g(z[2])a^{[2]} = g(z^{[2]})a[2]=g(z[2]) -
Tổng quát hóa cho layer n: z[l]=W[l]a[l−1]+b[l]z^{[l]} = W^{[l]}a^{[l - 1]} + b^{[l]}z[l]=W[l]a[l−1]+b[l]
a[l]=g(z[l])a^{[l]} = g(z^{[l]})a[l]=g(z[l]) -
Thực hiện vector hóa cho tất cả các training example for l = 1..L Z[l]=W[l]A[l−1]+b[l]Z^{[l]} = W^{[l]}A^{[l - 1]} + b^{[l]}Z[l]=W[l]A[l−1]+b[l]
A[l]=g(Z[l])A^{[l]} = g(Z^{[l]})A[l]=g(Z[l])Trong đó A[0]=XA^{[0]} = XA[0]=X là matrix các training example xếp thành cột như đã nói ở phần trước Z[l]Z^{[l]}Z[l] là matrix có được khi xếp các vector z của layer 1 của mỗi training example vào mỗi cột Z[l]=[∣z[l](1)∣∣z[l](2)∣⋯∣z[l](m)∣]Z^{[l]} =egin{bmatrix}{{vertatop z^{[l](1)}}atopvert}{{vertatop z^{[l](2)}}atopvert} cdots {{vertatop z^{[l](m)}}atopvert} end{bmatrix} Z[l]=[∣z[l](1)∣∣z[l](2)∣⋯∣z[l](m)∣] VD: z[1](1)z^{[1](1)}z